1 /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
2 * vim:expandtab:shiftwidth=8:tabstop=8:
9 #include <lnet/api-support.h>
11 /* This ghastly hack to allows me to include lib-types.h It doesn't affect any
12 * assertions generated here (but fails-safe if it ever does) */
17 #include <lnet/lib-types.h>
19 #define IBNAL_USE_FMR 1
20 #include "viblnd_wire.h"
23 #define strnlen(s, i) strlen(s)
26 #define BLANK_LINE() \
33 printf (" /* "c" */\n"); \
37 #define STRINGIFY(a) #a
39 #define CHECK_DEFINE(a) \
41 printf (" CLASSERT ("#a" == "STRINGIFY(a)");\n"); \
44 #define CHECK_VALUE(a) \
46 printf (" CLASSERT ("#a" == %d);\n", a); \
49 #define CHECK_MEMBER_OFFSET(s,m) \
51 CHECK_VALUE((int)offsetof(s, m)); \
54 #define CHECK_MEMBER_SIZEOF(s,m) \
56 CHECK_VALUE((int)sizeof(((s *)0)->m)); \
59 #define CHECK_MEMBER(s,m) \
61 CHECK_MEMBER_OFFSET(s, m); \
62 CHECK_MEMBER_SIZEOF(s, m); \
65 #define CHECK_STRUCT(s) \
68 COMMENT ("Checks for struct "#s); \
69 CHECK_VALUE((int)sizeof(s)); \
73 system_string (char *cmdline, char *str, int len)
86 int fd = fileno(stdout);
88 rc = dup2(fds[1], fd);
92 exit(system(cmdline));
94 } else if ((int)pid < 0) {
97 FILE *f = fdopen (fds[0], "r");
104 if (fgets(str, len, f) == NULL)
107 if (waitpid(pid, &rc, 0) != pid)
110 if (!WIFEXITED(rc) ||
111 WEXITSTATUS(rc) != 0)
114 if (strnlen(str, len) == len)
117 if (str[strlen(str) - 1] == '\n')
118 str[strlen(str) - 1] = 0;
125 main (int argc, char **argv)
130 system_string("uname -a", unameinfo, sizeof(unameinfo));
131 system_string("gcc -v 2>&1 | tail -1", gccinfo, sizeof(gccinfo));
133 printf ("void vibnal_assert_wire_constants (void)\n"
135 " /* Wire protocol assertions generated by 'wirecheck'\n"
138 "\n", unameinfo, gccinfo);
142 COMMENT ("Constants...");
143 CHECK_DEFINE (IBNAL_MSG_MAGIC);
144 CHECK_DEFINE (IBNAL_MSG_VERSION);
146 CHECK_DEFINE (IBNAL_MSG_CONNREQ);
147 CHECK_DEFINE (IBNAL_MSG_CONNACK);
148 CHECK_DEFINE (IBNAL_MSG_NOOP);
149 CHECK_DEFINE (IBNAL_MSG_IMMEDIATE);
150 CHECK_DEFINE (IBNAL_MSG_PUT_REQ);
151 CHECK_DEFINE (IBNAL_MSG_PUT_NAK);
152 CHECK_DEFINE (IBNAL_MSG_PUT_ACK);
153 CHECK_DEFINE (IBNAL_MSG_PUT_DONE);
154 CHECK_DEFINE (IBNAL_MSG_GET_REQ);
155 CHECK_DEFINE (IBNAL_MSG_GET_DONE);
157 CHECK_DEFINE (IBNAL_REJECT_CONN_RACE);
158 CHECK_DEFINE (IBNAL_REJECT_NO_RESOURCES);
159 CHECK_DEFINE (IBNAL_REJECT_FATAL);
161 CHECK_STRUCT (kib_connparams_t);
162 CHECK_MEMBER (kib_connparams_t, ibcp_queue_depth);
163 CHECK_MEMBER (kib_connparams_t, ibcp_max_msg_size);
164 CHECK_MEMBER (kib_connparams_t, ibcp_max_frags);
166 CHECK_STRUCT (kib_immediate_msg_t);
167 CHECK_MEMBER (kib_immediate_msg_t, ibim_hdr);
168 CHECK_MEMBER (kib_immediate_msg_t, ibim_payload[13]);
170 CHECK_DEFINE (IBNAL_USE_FMR);
172 CHECK_STRUCT (kib_rdma_desc_t);
173 CHECK_MEMBER (kib_rdma_desc_t, rd_addr);
174 CHECK_MEMBER (kib_rdma_desc_t, rd_nob);
175 CHECK_MEMBER (kib_rdma_desc_t, rd_key);
177 CHECK_STRUCT (kib_rdma_frag_t);
178 CHECK_MEMBER (kib_rdma_frag_t, rf_nob);
179 CHECK_MEMBER (kib_rdma_frag_t, rf_addr_lo);
180 CHECK_MEMBER (kib_rdma_frag_t, rf_addr_hi);
182 CHECK_STRUCT (kib_rdma_desc_t);
183 CHECK_MEMBER (kib_rdma_desc_t, rd_key);
184 CHECK_MEMBER (kib_rdma_desc_t, rd_nfrag);
185 CHECK_MEMBER (kib_rdma_desc_t, rd_frags[13]);
187 CHECK_STRUCT (kib_putreq_msg_t);
188 CHECK_MEMBER (kib_putreq_msg_t, ibprm_hdr);
189 CHECK_MEMBER (kib_putreq_msg_t, ibprm_cookie);
191 CHECK_STRUCT (kib_putack_msg_t);
192 CHECK_MEMBER (kib_putack_msg_t, ibpam_src_cookie);
193 CHECK_MEMBER (kib_putack_msg_t, ibpam_dst_cookie);
194 CHECK_MEMBER (kib_putack_msg_t, ibpam_rd);
196 CHECK_STRUCT (kib_get_msg_t);
197 CHECK_MEMBER (kib_get_msg_t, ibgm_hdr);
198 CHECK_MEMBER (kib_get_msg_t, ibgm_cookie);
199 CHECK_MEMBER (kib_get_msg_t, ibgm_rd);
201 CHECK_STRUCT (kib_completion_msg_t);
202 CHECK_MEMBER (kib_completion_msg_t, ibcm_cookie);
203 CHECK_MEMBER (kib_completion_msg_t, ibcm_status);
205 CHECK_STRUCT (kib_msg_t);
206 CHECK_MEMBER (kib_msg_t, ibm_magic);
207 CHECK_MEMBER (kib_msg_t, ibm_version);
208 CHECK_MEMBER (kib_msg_t, ibm_type);
209 CHECK_MEMBER (kib_msg_t, ibm_credits);
210 CHECK_MEMBER (kib_msg_t, ibm_nob);
211 CHECK_MEMBER (kib_msg_t, ibm_cksum);
212 CHECK_MEMBER (kib_msg_t, ibm_srcnid);
213 CHECK_MEMBER (kib_msg_t, ibm_srcstamp);
214 CHECK_MEMBER (kib_msg_t, ibm_dstnid);
215 CHECK_MEMBER (kib_msg_t, ibm_dststamp);
216 CHECK_MEMBER (kib_msg_t, ibm_seq);
217 CHECK_MEMBER (kib_msg_t, ibm_u.connparams);
218 CHECK_MEMBER (kib_msg_t, ibm_u.immediate);
219 CHECK_MEMBER (kib_msg_t, ibm_u.putreq);
220 CHECK_MEMBER (kib_msg_t, ibm_u.putack);
221 CHECK_MEMBER (kib_msg_t, ibm_u.get);
222 CHECK_MEMBER (kib_msg_t, ibm_u.completion);