Lines Matching refs:ringp

188 	rdsv3_af_thr_t *ringp;
193 ringp = rdsv3_af_thr_create(fn, data, flag, hcagp);
194 if (ringp == NULL)
201 (void) rdsv3_af_thr_bind(ringp, cpuid);
204 if (ringp->aft_intr) {
206 (void) ddi_intr_set_affinity(ringp->aft_intr, cpuid);
208 (void) ddi_intr_set_affinity(ringp->aft_intr,
212 return (ringp);
219 rdsv3_af_thr_t *ringp;
224 ringp = kmem_zalloc(sizeof (rdsv3_af_thr_t), KM_NOSLEEP);
225 if (ringp == NULL)
228 ringp->aft_grp = hcagp;
229 mutex_init(&ringp->aft_lock, NULL, MUTEX_DEFAULT, NULL);
230 cv_init(&ringp->aft_async, NULL, CV_DEFAULT, NULL);
235 ringp->aft_worker = thread_create(NULL, 0,
236 rdsv3_af_thr_worker, ringp, 0, &p0, TS_RUN, pri);
237 ringp->aft_data = data;
238 ringp->aft_drain_func = (rdsv3_af_thr_drain_func_t)fn;
241 ringp->aft_cpuid = -1;
242 ringp->aft_state = 0;
243 ringp->aft_cflag = flag;
248 (void) rdsv3_af_thr_bind(ringp, hcagp->g_hca_cpuid);
250 (void) rdsv3_af_thr_bind(ringp, hcagp->g_hca_cpuid);
255 RDSV3_DPRINTF2("rdsv3_af_thr_create", "af_thr %p ic %p", ringp, data);
256 return (ringp);
260 rdsv3_af_thr_destroy(rdsv3_af_thr_t *ringp)
262 RDSV3_DPRINTF2("rdsv3_af_thr_destroy", "af_thr %p", ringp);
265 mutex_enter(&ringp->aft_lock);
266 while (ringp->aft_state & AFT_PROC) {
267 mutex_exit(&ringp->aft_lock);
269 mutex_enter(&ringp->aft_lock);
271 ringp->aft_state |= AFT_CONDEMNED;
272 if (!(ringp->aft_state & AFT_PROC)) {
273 cv_signal(&ringp->aft_async);
275 mutex_exit(&ringp->aft_lock);
279 rdsv3_af_thr_fire(rdsv3_af_thr_t *ringp)
281 mutex_enter(&ringp->aft_lock);
282 ringp->aft_state |= AFT_ARMED;
283 if (!(ringp->aft_state & AFT_PROC)) {
284 cv_signal(&ringp->aft_async);
286 mutex_exit(&ringp->aft_lock);
290 rdsv3_af_thr_worker(rdsv3_af_thr_t *ringp)
292 kmutex_t *lock = &ringp->aft_lock;
293 kcondvar_t *async = &ringp->aft_async;
296 RDSV3_DPRINTF4("rdsv3_af_thr_worker", "Enter af_thr %p", ringp);
301 while (!(ringp->aft_state & (AFT_ARMED | AFT_CONDEMNED))) {
306 ringp->aft_state &= ~AFT_ARMED;
312 if (ringp->aft_state & AFT_CONDEMNED)
314 ASSERT(!(ringp->aft_state & AFT_PROC));
315 ringp->aft_state |= AFT_PROC;
316 mutex_exit(&ringp->aft_lock);
318 ringp->aft_drain_func(ringp->aft_data);
320 mutex_enter(&ringp->aft_lock);
321 ringp->aft_state &= ~AFT_PROC;
325 RDSV3_DPRINTF2("rdsv3_af_thr_worker", "Exit af_thr %p", ringp);
326 cv_destroy(&ringp->aft_async);
327 mutex_destroy(&ringp->aft_lock);
328 kmem_free(ringp, sizeof (rdsv3_af_thr_t));
339 rdsv3_af_thr_bind(rdsv3_af_thr_t *ringp, processorid_t cpuid)
354 mutex_enter(&ringp->aft_lock);
355 ringp->aft_state |= AFT_BOUND;
356 if (ringp->aft_cpuid != -1)
358 ringp->aft_cpuid = cpuid;
359 mutex_exit(&ringp->aft_lock);
362 thread_affinity_clear(ringp->aft_worker);
365 ringp, cpuid);
366 thread_affinity_set(ringp->aft_worker, cpuid);
374 rdsv3_af_thr_unbind(rdsv3_af_thr_t *ringp)
378 mutex_enter(&ringp->aft_lock);
379 if (!(ringp->aft_state & AFT_BOUND)) {
380 ASSERT(ringp->aft_cpuid == -1);
381 mutex_exit(&ringp->aft_lock);
385 ringp->aft_cpuid = -1;
386 ringp->aft_state &= ~AFT_BOUND;
387 thread_affinity_clear(ringp->aft_worker);
388 mutex_exit(&ringp->aft_lock);