1 /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
2 * vim:expandtab:shiftwidth=8:tabstop=8:
8 #include <portals/api-support.h>
9 #include <portals/lib-types.h>
11 #define IBNAL_USE_FMR 1
12 #include "vibnal_wire.h"
15 #define strnlen(s, i) strlen(s)
18 #define BLANK_LINE() \
25 printf (" /* "c" */\n"); \
29 #define STRINGIFY(a) #a
31 #define CHECK_DEFINE(a) \
33 printf (" CLASSERT ("#a" == "STRINGIFY(a)");\n"); \
36 #define CHECK_VALUE(a) \
38 printf (" CLASSERT ("#a" == %d);\n", a); \
41 #define CHECK_MEMBER_OFFSET(s,m) \
43 CHECK_VALUE((int)offsetof(s, m)); \
46 #define CHECK_MEMBER_SIZEOF(s,m) \
48 CHECK_VALUE((int)sizeof(((s *)0)->m)); \
51 #define CHECK_MEMBER(s,m) \
53 CHECK_MEMBER_OFFSET(s, m); \
54 CHECK_MEMBER_SIZEOF(s, m); \
57 #define CHECK_STRUCT(s) \
60 COMMENT ("Checks for struct "#s); \
61 CHECK_VALUE((int)sizeof(s)); \
65 system_string (char *cmdline, char *str, int len)
78 int fd = fileno(stdout);
80 rc = dup2(fds[1], fd);
84 exit(system(cmdline));
86 } else if ((int)pid < 0) {
89 FILE *f = fdopen (fds[0], "r");
96 if (fgets(str, len, f) == NULL)
99 if (waitpid(pid, &rc, 0) != pid)
102 if (!WIFEXITED(rc) ||
103 WEXITSTATUS(rc) != 0)
106 if (strnlen(str, len) == len)
109 if (str[strlen(str) - 1] == '\n')
110 str[strlen(str) - 1] = 0;
117 main (int argc, char **argv)
122 system_string("uname -a", unameinfo, sizeof(unameinfo));
123 system_string("gcc -v 2>&1 | tail -1", gccinfo, sizeof(gccinfo));
125 printf ("void vibnal_assert_wire_constants (void)\n"
127 " /* Wire protocol assertions generated by 'wirecheck'\n"
130 "\n", unameinfo, gccinfo);
134 COMMENT ("Constants...");
135 CHECK_DEFINE (IBNAL_MSG_MAGIC);
136 CHECK_DEFINE (IBNAL_MSG_VERSION);
138 CHECK_DEFINE (IBNAL_MSG_CONNREQ);
139 CHECK_DEFINE (IBNAL_MSG_CONNACK);
140 CHECK_DEFINE (IBNAL_MSG_NOOP);
141 CHECK_DEFINE (IBNAL_MSG_IMMEDIATE);
142 CHECK_DEFINE (IBNAL_MSG_PUT_REQ);
143 CHECK_DEFINE (IBNAL_MSG_PUT_NAK);
144 CHECK_DEFINE (IBNAL_MSG_PUT_ACK);
145 CHECK_DEFINE (IBNAL_MSG_PUT_DONE);
146 CHECK_DEFINE (IBNAL_MSG_GET_REQ);
147 CHECK_DEFINE (IBNAL_MSG_GET_DONE);
149 CHECK_STRUCT (kib_connparams_t);
150 CHECK_MEMBER (kib_connparams_t, ibcp_queue_depth);
151 CHECK_MEMBER (kib_connparams_t, ibcp_max_msg_size);
152 CHECK_MEMBER (kib_connparams_t, ibcp_max_frags);
154 CHECK_STRUCT (kib_immediate_msg_t);
155 CHECK_MEMBER (kib_immediate_msg_t, ibim_hdr);
156 CHECK_MEMBER (kib_immediate_msg_t, ibim_payload[13]);
158 CHECK_DEFINE (IBNAL_USE_FMR);
160 CHECK_STRUCT (kib_rdma_desc_t);
161 CHECK_MEMBER (kib_rdma_desc_t, rd_addr);
162 CHECK_MEMBER (kib_rdma_desc_t, rd_nob);
163 CHECK_MEMBER (kib_rdma_desc_t, rd_key);
165 CHECK_STRUCT (kib_rdma_frag_t);
166 CHECK_MEMBER (kib_rdma_frag_t, rf_nob);
167 CHECK_MEMBER (kib_rdma_frag_t, rf_addr_lo);
168 CHECK_MEMBER (kib_rdma_frag_t, rf_addr_hi);
170 CHECK_STRUCT (kib_rdma_desc_t);
171 CHECK_MEMBER (kib_rdma_desc_t, rd_key);
172 CHECK_MEMBER (kib_rdma_desc_t, rd_nfrag);
173 CHECK_MEMBER (kib_rdma_desc_t, rd_frags[13]);
175 CHECK_STRUCT (kib_putreq_msg_t);
176 CHECK_MEMBER (kib_putreq_msg_t, ibprm_hdr);
177 CHECK_MEMBER (kib_putreq_msg_t, ibprm_cookie);
179 CHECK_STRUCT (kib_putack_msg_t);
180 CHECK_MEMBER (kib_putack_msg_t, ibpam_src_cookie);
181 CHECK_MEMBER (kib_putack_msg_t, ibpam_dst_cookie);
182 CHECK_MEMBER (kib_putack_msg_t, ibpam_rd);
184 CHECK_STRUCT (kib_get_msg_t);
185 CHECK_MEMBER (kib_get_msg_t, ibgm_hdr);
186 CHECK_MEMBER (kib_get_msg_t, ibgm_cookie);
187 CHECK_MEMBER (kib_get_msg_t, ibgm_rd);
189 CHECK_STRUCT (kib_completion_msg_t);
190 CHECK_MEMBER (kib_completion_msg_t, ibcm_cookie);
191 CHECK_MEMBER (kib_completion_msg_t, ibcm_status);
193 CHECK_STRUCT (kib_msg_t);
194 CHECK_MEMBER (kib_msg_t, ibm_magic);
195 CHECK_MEMBER (kib_msg_t, ibm_version);
196 CHECK_MEMBER (kib_msg_t, ibm_type);
197 CHECK_MEMBER (kib_msg_t, ibm_credits);
198 CHECK_MEMBER (kib_msg_t, ibm_nob);
199 CHECK_MEMBER (kib_msg_t, ibm_cksum);
200 CHECK_MEMBER (kib_msg_t, ibm_srcnid);
201 CHECK_MEMBER (kib_msg_t, ibm_srcstamp);
202 CHECK_MEMBER (kib_msg_t, ibm_dstnid);
203 CHECK_MEMBER (kib_msg_t, ibm_dststamp);
204 CHECK_MEMBER (kib_msg_t, ibm_seq);
205 CHECK_MEMBER (kib_msg_t, ibm_u.connparams);
206 CHECK_MEMBER (kib_msg_t, ibm_u.immediate);
207 CHECK_MEMBER (kib_msg_t, ibm_u.putreq);
208 CHECK_MEMBER (kib_msg_t, ibm_u.putack);
209 CHECK_MEMBER (kib_msg_t, ibm_u.get);
210 CHECK_MEMBER (kib_msg_t, ibm_u.completion);