132 kstat_named_t rscalls;
133 kstat_named_t rsbadcalls;
134 kstat_named_t rsnullrecv;
135 kstat_named_t rsbadlen;
136 kstat_named_t rsxdrcall;
137 kstat_named_t rsdupchecks;
138 kstat_named_t rsdupreqs;
139 } cots_rsstat_tmpl = {
140 { "calls", KSTAT_DATA_UINT64 },
141 { "badcalls", KSTAT_DATA_UINT64 },
142 { "nullrecv", KSTAT_DATA_UINT64 },
143 { "badlen", KSTAT_DATA_UINT64 },
144 { "xdrcall", KSTAT_DATA_UINT64 },
145 { "dupchecks", KSTAT_DATA_UINT64 },
146 { "dupreqs", KSTAT_DATA_UINT64 }
147 };
148
149 #define CLONE2STATS(clone_xprt) \
150 ((struct cots_master_data *)(clone_xprt)->xp_master->xp_p2)->cmd_stats
151 #define RSSTAT_INCR(s, x) \
152 atomic_add_64(&(s)->x.value.ui64, 1)
153
154 /*
155 * Pointer to a transport specific `ready to receive' function in rpcmod
156 * (set from rpcmod).
157 */
158 void (*mir_start)(queue_t *);
159 uint_t *svc_max_msg_sizep;
160
161 /*
162 * the address size of the underlying transport can sometimes be
163 * unknown (tinfo->ADDR_size == -1). For this case, it is
164 * necessary to figure out what the size is so the correct amount
165 * of data is allocated. This is an itterative process:
166 * 1. take a good guess (use T_MINADDRSIZE)
167 * 2. try it.
168 * 3. if it works then everything is ok
169 * 4. if the error is ENAMETOLONG, double the guess
170 * 5. go back to step 2.
171 */
172 #define T_UNKNOWNADDRSIZE (-1)
|
132 kstat_named_t rscalls;
133 kstat_named_t rsbadcalls;
134 kstat_named_t rsnullrecv;
135 kstat_named_t rsbadlen;
136 kstat_named_t rsxdrcall;
137 kstat_named_t rsdupchecks;
138 kstat_named_t rsdupreqs;
139 } cots_rsstat_tmpl = {
140 { "calls", KSTAT_DATA_UINT64 },
141 { "badcalls", KSTAT_DATA_UINT64 },
142 { "nullrecv", KSTAT_DATA_UINT64 },
143 { "badlen", KSTAT_DATA_UINT64 },
144 { "xdrcall", KSTAT_DATA_UINT64 },
145 { "dupchecks", KSTAT_DATA_UINT64 },
146 { "dupreqs", KSTAT_DATA_UINT64 }
147 };
148
149 #define CLONE2STATS(clone_xprt) \
150 ((struct cots_master_data *)(clone_xprt)->xp_master->xp_p2)->cmd_stats
151 #define RSSTAT_INCR(s, x) \
152 atomic_inc_64(&(s)->x.value.ui64)
153
154 /*
155 * Pointer to a transport specific `ready to receive' function in rpcmod
156 * (set from rpcmod).
157 */
158 void (*mir_start)(queue_t *);
159 uint_t *svc_max_msg_sizep;
160
161 /*
162 * the address size of the underlying transport can sometimes be
163 * unknown (tinfo->ADDR_size == -1). For this case, it is
164 * necessary to figure out what the size is so the correct amount
165 * of data is allocated. This is an itterative process:
166 * 1. take a good guess (use T_MINADDRSIZE)
167 * 2. try it.
168 * 3. if it works then everything is ok
169 * 4. if the error is ENAMETOLONG, double the guess
170 * 5. go back to step 2.
171 */
172 #define T_UNKNOWNADDRSIZE (-1)
|