Lines Matching refs:state

57 	eventfd_state_t *state;  in eventfd_open()  local
75 state = ddi_get_soft_state(eventfd_softstate, minor); in eventfd_open()
78 state->efd_next = eventfd_state; in eventfd_open()
79 eventfd_state = state; in eventfd_open()
90 eventfd_state_t *state; in eventfd_read() local
98 state = ddi_get_soft_state(eventfd_softstate, minor); in eventfd_read()
100 mutex_enter(&state->efd_lock); in eventfd_read()
102 while (state->efd_value == 0) { in eventfd_read()
104 mutex_exit(&state->efd_lock); in eventfd_read()
108 if (!cv_wait_sig_swap(&state->efd_cv, &state->efd_lock)) { in eventfd_read()
109 mutex_exit(&state->efd_lock); in eventfd_read()
119 val = oval = state->efd_value; in eventfd_read()
121 if (state->efd_semaphore) { in eventfd_read()
122 state->efd_value--; in eventfd_read()
125 state->efd_value = 0; in eventfd_read()
134 if (state->efd_bwriters != 0) { in eventfd_read()
135 cv_broadcast(&state->efd_cv); in eventfd_read()
137 mutex_exit(&state->efd_lock); in eventfd_read()
145 pollwakeup(&state->efd_pollhd, POLLWRNORM | POLLOUT); in eventfd_read()
155 eventfd_state_t *state; in eventfd_write() local
169 state = ddi_get_soft_state(eventfd_softstate, minor); in eventfd_write()
171 mutex_enter(&state->efd_lock); in eventfd_write()
173 while (val > EVENTFD_VALMAX - state->efd_value) { in eventfd_write()
175 mutex_exit(&state->efd_lock); in eventfd_write()
179 state->efd_bwriters++; in eventfd_write()
180 if (!cv_wait_sig_swap(&state->efd_cv, &state->efd_lock)) { in eventfd_write()
181 state->efd_bwriters--; in eventfd_write()
182 mutex_exit(&state->efd_lock); in eventfd_write()
185 state->efd_bwriters--; in eventfd_write()
191 state->efd_value = (oval = state->efd_value) + val; in eventfd_write()
198 cv_broadcast(&state->efd_cv); in eventfd_write()
200 mutex_exit(&state->efd_lock); in eventfd_write()
206 pollwakeup(&state->efd_pollhd, POLLRDNORM | POLLIN); in eventfd_write()
217 eventfd_state_t *state; in eventfd_poll() local
221 state = ddi_get_soft_state(eventfd_softstate, minor); in eventfd_poll()
223 mutex_enter(&state->efd_lock); in eventfd_poll()
225 if (state->efd_value > 0) in eventfd_poll()
228 if (state->efd_value < EVENTFD_VALMAX) in eventfd_poll()
233 *phpp = &state->efd_pollhd; in eventfd_poll()
236 mutex_exit(&state->efd_lock); in eventfd_poll()
245 eventfd_state_t *state; in eventfd_ioctl() local
248 state = ddi_get_soft_state(eventfd_softstate, minor); in eventfd_ioctl()
252 mutex_enter(&state->efd_lock); in eventfd_ioctl()
253 state->efd_semaphore ^= 1; in eventfd_ioctl()
254 mutex_exit(&state->efd_lock); in eventfd_ioctl()
270 eventfd_state_t *state, **sp; in eventfd_close() local
273 state = ddi_get_soft_state(eventfd_softstate, minor); in eventfd_close()
275 if (state->efd_pollhd.ph_list != NULL) { in eventfd_close()
276 pollwakeup(&state->efd_pollhd, POLLERR); in eventfd_close()
277 pollhead_clean(&state->efd_pollhd); in eventfd_close()
285 for (sp = &eventfd_state; *sp != state; sp = &((*sp)->efd_next)) in eventfd_close()