sm_freeq
struct sm_freeq *allocq, *releq;
mutex_exit(&sm->sm_freeq[1].smq_mtx);
&sm->sm_freeq[0].smq_mtx);
mutex_exit(&sm->sm_freeq[0].smq_mtx);
struct sm_freeq *freeq;
freeq = &sm->sm_freeq[0];
freeq = &sm->sm_freeq[1];
mutex_init(&sm->sm_freeq[0].smq_mtx, NULL, MUTEX_DEFAULT, NULL);
mutex_init(&sm->sm_freeq[1].smq_mtx, NULL, MUTEX_DEFAULT, NULL);
sm->sm_allocq = &sm->sm_freeq[0];
sm->sm_releq = &sm->sm_freeq[1];
struct sm_freeq *releq;
struct sm_freeq *releq;
if (releq == &sm->sm_freeq[0])
mutex_enter(&sm->sm_freeq[0].smq_mtx);
mutex_exit(&sm->sm_freeq[0].smq_mtx);
struct sm_freeq sm_freeq[2]; /* alloc and release queues */
struct sm_freeq *sm_allocq; /* current allocq */
struct sm_freeq *sm_releq; /* current releq */