NewMadeleine

Documentation

« back to PM2 home.
nm_onesided_private.h
Go to the documentation of this file.
1/*
2 * NewMadeleine
3 * Copyright (C) 2006-2022 (see AUTHORS file)
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or (at
8 * your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * General Public License for more details.
14 */
15
22#ifndef NM_ONESIDED_PRIVATE_H
23#define NM_ONESIDED_PRIVATE_H
24
26
27#include <stdint.h>
28
29typedef uint32_t nm_onesided_flag_t;
30
31#define NM_ONESIDED_OP_PUT ((nm_onesided_flag_t)0x01)
32#define NM_ONESIDED_OP_GET ((nm_onesided_flag_t)0x02)
33#define NM_ONESIDED_OP_FENCE ((nm_onesided_flag_t)0x03)
34#define NM_ONESIDED_OP_QUEUE ((nm_onesided_flag_t)0x04)
35#define NM_ONESIDED_OP_MASK ((nm_onesided_flag_t)0x0F)
37#define NM_ONESIDED_FLAG_TARGET_COMPLETION ((nm_onesided_flag_t)0x10)
38
39
49
58
60
69
71#define NM_ONESIDED_TARGET_COMPLETION_MAX 64
72
83
84PUK_ALLOCATOR_TYPE(nm_onesided_target_completion, struct nm_onesided_target_completion_s);
85
86PUK_DLFQ_TYPE(nm_onesided_queue_entry, void*, NULL);
87PUK_VECT_TYPE(nm_onesided_queue, struct nm_onesided_queue_entry_dlfq_s*);
88
91{
95 struct nm_data_s data;
96 nm_sr_req_allocator_t req_allocator;
97 nm_onesided_target_completion_allocator_t completion_allocator;
98 struct nm_onesided_queue_vect_s queues;
101};
102
103#endif /* NM_ONESIDED_PRIVATE_H */
nm_status_t nm_cond_status_t
status with synchronization (wait/signal)
PUK_ALLOCATOR_TYPE(nm_sr_req, nm_sr_request_t)
#define NM_ONESIDED_TARGET_COMPLETION_MAX
maximum size for target-side completion data
uint32_t nm_onesided_flag_t
PUK_DLFQ_TYPE(nm_onesided_queue_entry, void *, NULL)
struct nm_onesided_request_s __attribute__
PUK_VECT_TYPE(nm_onesided_queue, struct nm_onesided_queue_entry_dlfq_s *)
uint64_t nm_len_t
data length used by nmad
Definition nm_types.h:68
uint32_t nm_seq_t
Sequence number for packets on a given gate/tag.
Definition nm_types.h:102
a data descriptor, used to pack/unpack data from app layout to/from contiguous buffers
Definition nm_data.h:196
header used on the wire for onesided requests
nm_len_t size
size of the onsided data (not incuding target-side completion)
nm_seq_t seq
seq number for target-side completion
nm_onesided_flag_t flags
uintptr_t addr
remote address (or queue id for enqueue)
uint8_t target_size
size of target-side completion data
a send request for onesided
struct nm_onesided_header_s header
struct nm_data_s target_data
an instance of interface 'onesided'
nm_onesided_target_completion_allocator_t completion_allocator
struct nm_data_s data
struct nm_onesided_queue_vect_s queues
struct nm_onesided_request_s request
persistent request for recv
nm_sr_req_allocator_t req_allocator
data descriptor for recv; persistant accross handlers for RECV_DATA and FINALIZED
struct nm_onesided_target_completion_s * p_target
target-side completion for the current request
nm_cond_status_t done
nm_session_t p_session
status of a target-side completion
nm_len_t target_size
size of the completion data
char target_buf[64]
data for the completion request
nm_len_t op_size
size of the onesided operation
nm_onesided_flag_t op
opcode of the associated onesided operation
uintptr_t addr
address of the onesided operation
a request used for target-side completions
nm_onesided_flag_t op
opcode of the associated onesided operation
nm_len_t size
size of the onesided operation
nm_sr_request_t local_req
local request to inject data into the target-side completion
uintptr_t addr
address of the onesided operation
internal defintion of the sendrecv request