4 #include "build_check.h"
6 #include <libcfs/libcfs.h>
7 #include <portals/errno.h>
9 /* This implementation uses the same type for API function return codes and
10 * the completion status in an event */
11 #define PTL_NI_OK PTL_OK
12 typedef ptl_err_t ptl_ni_fail_t;
14 typedef __u32 ptl_uid_t;
15 typedef __u32 ptl_jid_t;
16 typedef __u64 ptl_nid_t;
17 typedef __u32 ptl_netid_t;
18 typedef __u32 ptl_pid_t;
19 typedef __u32 ptl_pt_index_t;
20 typedef __u32 ptl_ac_index_t;
21 typedef __u64 ptl_match_bits_t;
22 typedef __u64 ptl_hdr_data_t;
23 typedef __u32 ptl_size_t;
25 #define PTL_TIME_FOREVER (-1)
28 unsigned long nal_idx; /* which network interface */
29 __u64 cookie; /* which thing on that interface */
32 typedef ptl_handle_any_t ptl_handle_ni_t;
33 typedef ptl_handle_any_t ptl_handle_eq_t;
34 typedef ptl_handle_any_t ptl_handle_md_t;
35 typedef ptl_handle_any_t ptl_handle_me_t;
37 #define PTL_INVALID_HANDLE \
38 ((const ptl_handle_any_t){.nal_idx = -1, .cookie = -1})
39 #define PTL_EQ_NONE PTL_INVALID_HANDLE
41 static inline int PtlHandleIsEqual (ptl_handle_any_t h1, ptl_handle_any_t h2)
43 return (h1.nal_idx == h2.nal_idx && h1.cookie == h2.cookie);
46 #define PTL_UID_ANY ((ptl_uid_t) -1)
47 #define PTL_JID_ANY ((ptl_jid_t) -1)
48 #define PTL_NID_ANY ((ptl_nid_t) -1)
49 #define PTL_PID_ANY ((ptl_pid_t) -1)
50 #define PTL_NETID_ANY ((ptl_netid_t) -1)
54 ptl_pid_t pid; /* node id / process id */
74 ptl_handle_eq_t eq_handle;
77 /* Options for the MD structure */
78 #define PTL_MD_OP_PUT (1 << 0)
79 #define PTL_MD_OP_GET (1 << 1)
80 #define PTL_MD_MANAGE_REMOTE (1 << 2)
82 #define PTL_MD_TRUNCATE (1 << 4)
83 #define PTL_MD_ACK_DISABLE (1 << 5)
84 #define PTL_MD_IOVEC (1 << 6)
85 #define PTL_MD_MAX_SIZE (1 << 7)
86 #define PTL_MD_KIOV (1 << 8)
87 #define PTL_MD_EVENT_START_DISABLE (1 << 9)
88 #define PTL_MD_EVENT_END_DISABLE (1 << 10)
90 /* For compatibility with Cray Portals */
91 #define PTL_MD_LUSTRE_COMPLETION_SEMANTICS 0
94 #define PTL_MD_THRESH_INF (-1)
96 /* NB lustre portals uses struct iovec internally! */
97 typedef struct iovec ptl_md_iovec_t;
100 cfs_page_t *kiov_page;
101 unsigned int kiov_len;
102 unsigned int kiov_offset;
112 PTL_EVENT_REPLY_START,
117 PTL_EVENT_SEND_START,
123 #define PTL_SEQ_BASETYPE long
124 typedef unsigned PTL_SEQ_BASETYPE ptl_seq_t;
125 #define PTL_SEQ_GT(a,b) (((signed PTL_SEQ_BASETYPE)((a) - (b))) > 0)
128 * cygwin need the pragma line, not clear if it's needed in other places.
132 #pragma pack(push, 4)
135 ptl_event_kind_t type;
136 ptl_process_id_t initiator;
139 ptl_pt_index_t pt_index;
140 ptl_match_bits_t match_bits;
144 ptl_handle_md_t md_handle;
146 ptl_hdr_data_t hdr_data;
148 ptl_ni_fail_t ni_fail_type;
152 volatile ptl_seq_t sequence;
163 typedef void (*ptl_eq_handler_t)(ptl_event_t *event);
164 #define PTL_EQ_HANDLER_NONE NULL
190 typedef int ptl_sr_value_t;
192 typedef int ptl_interface_t;
193 #define PTL_IFACE_DEFAULT (-1)