Lines Matching refs:hi
43 ilb_handle_impl_t *hi = (ilb_handle_impl_t *)h; in i_ilb_socket_set_err() local
47 hi->h_valid = B_FALSE; in i_ilb_socket_set_err()
48 hi->h_error = err; in i_ilb_socket_set_err()
54 ilb_handle_impl_t *hi = NULL; in ilb_open() local
63 hi = calloc(sizeof (*hi), 1); in ilb_open()
64 if (hi == NULL) in ilb_open()
67 if (cond_init(&hi->h_cv, USYNC_THREAD, NULL) != 0) { in ilb_open()
72 if (mutex_init(&hi->h_lock, USYNC_THREAD | LOCK_ERRORCHECK, NULL) in ilb_open()
78 hi->h_busy = B_FALSE; in ilb_open()
102 hi->h_socket = s; in ilb_open()
103 hi->h_valid = B_TRUE; in ilb_open()
110 *hp = (ilb_handle_t)hi; in ilb_open()
112 free(hi); in ilb_open()
121 ilb_handle_impl_t *hi = (ilb_handle_impl_t *)h; in ilb_close() local
126 if (mutex_lock(&hi->h_lock) != 0) in ilb_close()
130 if (hi->h_closing) { in ilb_close()
133 hi->h_closing = B_TRUE; in ilb_close()
134 hi->h_error = ILB_STATUS_HANDLE_CLOSING; in ilb_close()
138 while (hi->h_waiter > 0) { in ilb_close()
139 if (cond_wait(&hi->h_cv, &hi->h_lock) != 0) { in ilb_close()
140 (void) mutex_unlock(&hi->h_lock); in ilb_close()
146 (void) close(hi->h_socket); in ilb_close()
147 (void) mutex_destroy(&hi->h_lock); in ilb_close()
148 (void) cond_destroy(&hi->h_cv); in ilb_close()
149 free(hi); in ilb_close()
173 ilb_handle_impl_t *hi = (ilb_handle_impl_t *)h; in i_ilb_do_comm() local
179 if (mutex_lock(&hi->h_lock) != 0) in i_ilb_do_comm()
182 hi->h_waiter++; in i_ilb_do_comm()
183 while (hi->h_busy) { in i_ilb_do_comm()
184 if (cond_wait(&hi->h_cv, &hi->h_lock) != 0) { in i_ilb_do_comm()
185 hi->h_waiter--; in i_ilb_do_comm()
186 (void) cond_signal(&hi->h_cv); in i_ilb_do_comm()
187 (void) mutex_unlock(&hi->h_lock); in i_ilb_do_comm()
192 if (!hi->h_valid || hi->h_closing) { in i_ilb_do_comm()
193 hi->h_waiter--; in i_ilb_do_comm()
194 (void) cond_signal(&hi->h_cv); in i_ilb_do_comm()
195 (void) mutex_unlock(&hi->h_lock); in i_ilb_do_comm()
196 return (hi->h_error); in i_ilb_do_comm()
199 hi->h_busy = B_TRUE; in i_ilb_do_comm()
200 (void) mutex_unlock(&hi->h_lock); in i_ilb_do_comm()
202 s = hi->h_socket; in i_ilb_do_comm()
222 (void) mutex_lock(&hi->h_lock); in i_ilb_do_comm()
223 hi->h_busy = B_FALSE; in i_ilb_do_comm()
224 hi->h_waiter--; in i_ilb_do_comm()
225 (void) cond_signal(&hi->h_cv); in i_ilb_do_comm()
226 (void) mutex_unlock(&hi->h_lock); in i_ilb_do_comm()