Lines Matching refs:cbufp
60 kcf_cbuf_elem_t *cbufp; in crypto_bufcall_alloc() local
62 cbufp = kmem_zalloc(sizeof (kcf_cbuf_elem_t), KM_SLEEP); in crypto_bufcall_alloc()
63 mutex_init(&cbufp->kc_lock, NULL, MUTEX_DEFAULT, NULL); in crypto_bufcall_alloc()
64 cv_init(&cbufp->kc_cv, NULL, CV_DEFAULT, NULL); in crypto_bufcall_alloc()
65 cbufp->kc_state = CBUF_FREE; in crypto_bufcall_alloc()
67 return (cbufp); in crypto_bufcall_alloc()
82 kcf_cbuf_elem_t *cbufp = (kcf_cbuf_elem_t *)bc; in crypto_bufcall_free() local
84 mutex_enter(&cbufp->kc_lock); in crypto_bufcall_free()
85 if (cbufp->kc_state != CBUF_FREE) { in crypto_bufcall_free()
86 mutex_exit(&cbufp->kc_lock); in crypto_bufcall_free()
89 mutex_exit(&cbufp->kc_lock); in crypto_bufcall_free()
91 mutex_destroy(&cbufp->kc_lock); in crypto_bufcall_free()
92 cv_destroy(&cbufp->kc_cv); in crypto_bufcall_free()
93 kmem_free(cbufp, sizeof (kcf_cbuf_elem_t)); in crypto_bufcall_free()
107 kcf_cbuf_elem_t *cbufp; in crypto_bufcall() local
109 cbufp = (kcf_cbuf_elem_t *)bc; in crypto_bufcall()
110 if (cbufp == NULL || func == NULL) { in crypto_bufcall()
115 mutex_enter(&cbufp->kc_lock); in crypto_bufcall()
116 if (cbufp->kc_state != CBUF_FREE) { in crypto_bufcall()
117 mutex_exit(&cbufp->kc_lock); in crypto_bufcall()
122 cbufp->kc_state = CBUF_WAITING; in crypto_bufcall()
123 cbufp->kc_func = func; in crypto_bufcall()
124 cbufp->kc_arg = arg; in crypto_bufcall()
125 cbufp->kc_prev = cbufp->kc_next = NULL; in crypto_bufcall()
128 cbuf_list_head = cbuf_list_tail = cbufp; in crypto_bufcall()
130 cbuf_list_tail->kc_next = cbufp; in crypto_bufcall()
131 cbufp->kc_prev = cbuf_list_tail; in crypto_bufcall()
132 cbuf_list_tail = cbufp; in crypto_bufcall()
140 mutex_exit(&cbufp->kc_lock); in crypto_bufcall()
155 kcf_cbuf_elem_t *cbufp = (kcf_cbuf_elem_t *)bc; in crypto_unbufcall() local
158 mutex_enter(&cbufp->kc_lock); in crypto_unbufcall()
160 if (cbufp->kc_state == CBUF_WAITING) { in crypto_unbufcall()
161 kcf_cbuf_elem_t *nextp = cbufp->kc_next; in crypto_unbufcall()
162 kcf_cbuf_elem_t *prevp = cbufp->kc_prev; in crypto_unbufcall()
173 cbufp->kc_state = CBUF_FREE; in crypto_unbufcall()
174 } else if (cbufp->kc_state == CBUF_RUNNING) { in crypto_unbufcall()
181 while (cbufp->kc_state == CBUF_RUNNING) in crypto_unbufcall()
182 cv_wait(&cbufp->kc_cv, &cbufp->kc_lock); in crypto_unbufcall()
183 mutex_exit(&cbufp->kc_lock); in crypto_unbufcall()
188 mutex_exit(&cbufp->kc_lock); in crypto_unbufcall()
212 kcf_cbuf_elem_t *cbufp; in kcf_run_cbufcalls() local
226 while ((cbufp = cbuf_list_head) != NULL) { in kcf_run_cbufcalls()
229 mutex_enter(&cbufp->kc_lock); in kcf_run_cbufcalls()
230 cbuf_list_head = cbufp->kc_next; in kcf_run_cbufcalls()
231 cbufp->kc_state = CBUF_RUNNING; in kcf_run_cbufcalls()
232 mutex_exit(&cbufp->kc_lock); in kcf_run_cbufcalls()
235 (*cbufp->kc_func)(cbufp->kc_arg); in kcf_run_cbufcalls()
237 mutex_enter(&cbufp->kc_lock); in kcf_run_cbufcalls()
238 cbufp->kc_state = CBUF_FREE; in kcf_run_cbufcalls()
239 cv_broadcast(&cbufp->kc_cv); in kcf_run_cbufcalls()
240 mutex_exit(&cbufp->kc_lock); in kcf_run_cbufcalls()