124 kstat_named_t rsxdrcall;
125 kstat_named_t rsdupchecks;
126 kstat_named_t rsdupreqs;
127 } clts_rsstat_tmpl = {
128 { "calls", KSTAT_DATA_UINT64 },
129 { "badcalls", KSTAT_DATA_UINT64 },
130 { "nullrecv", KSTAT_DATA_UINT64 },
131 { "badlen", KSTAT_DATA_UINT64 },
132 { "xdrcall", KSTAT_DATA_UINT64 },
133 { "dupchecks", KSTAT_DATA_UINT64 },
134 { "dupreqs", KSTAT_DATA_UINT64 }
135 };
136
137 static uint_t clts_rsstat_ndata =
138 sizeof (clts_rsstat_tmpl) / sizeof (kstat_named_t);
139
140 #define CLONE2STATS(clone_xprt) \
141 (struct rpc_clts_server *)(clone_xprt)->xp_master->xp_p2
142
143 #define RSSTAT_INCR(stats, x) \
144 atomic_add_64(&(stats)->x.value.ui64, 1)
145
146 /*
147 * Create a transport record.
148 * The transport record, output buffer, and private data structure
149 * are allocated. The output buffer is serialized into using xdrmem.
150 * There is one transport record per user process which implements a
151 * set of services.
152 */
153 /* ARGSUSED */
154 int
155 svc_clts_kcreate(file_t *fp, uint_t sendsz, struct T_info_ack *tinfo,
156 SVCMASTERXPRT **nxprt)
157 {
158 SVCMASTERXPRT *xprt;
159 struct rpcstat *rpcstat;
160
161 if (nxprt == NULL)
162 return (EINVAL);
163
164 rpcstat = zone_getspecific(rpcstat_zone_key, curproc->p_zone);
|
124 kstat_named_t rsxdrcall;
125 kstat_named_t rsdupchecks;
126 kstat_named_t rsdupreqs;
127 } clts_rsstat_tmpl = {
128 { "calls", KSTAT_DATA_UINT64 },
129 { "badcalls", KSTAT_DATA_UINT64 },
130 { "nullrecv", KSTAT_DATA_UINT64 },
131 { "badlen", KSTAT_DATA_UINT64 },
132 { "xdrcall", KSTAT_DATA_UINT64 },
133 { "dupchecks", KSTAT_DATA_UINT64 },
134 { "dupreqs", KSTAT_DATA_UINT64 }
135 };
136
137 static uint_t clts_rsstat_ndata =
138 sizeof (clts_rsstat_tmpl) / sizeof (kstat_named_t);
139
140 #define CLONE2STATS(clone_xprt) \
141 (struct rpc_clts_server *)(clone_xprt)->xp_master->xp_p2
142
143 #define RSSTAT_INCR(stats, x) \
144 atomic_inc_64(&(stats)->x.value.ui64)
145
146 /*
147 * Create a transport record.
148 * The transport record, output buffer, and private data structure
149 * are allocated. The output buffer is serialized into using xdrmem.
150 * There is one transport record per user process which implements a
151 * set of services.
152 */
153 /* ARGSUSED */
154 int
155 svc_clts_kcreate(file_t *fp, uint_t sendsz, struct T_info_ack *tinfo,
156 SVCMASTERXPRT **nxprt)
157 {
158 SVCMASTERXPRT *xprt;
159 struct rpcstat *rpcstat;
160
161 if (nxprt == NULL)
162 return (EINVAL);
163
164 rpcstat = zone_getspecific(rpcstat_zone_key, curproc->p_zone);
|