Lines Matching refs:state

78  * will clear out on its own.  Any remaining per-process state which remains
81 * The structures associated with signalfd state are designed to operate
132 * Protects global state in signalfd_devi, signalfd_minor, signalfd_softstate,
139 static list_t signalfd_state; /* global list of state */
144 signalfd_state_enter_locked(signalfd_state_t *state)
146 ASSERT(MUTEX_HELD(&state->sfd_lock));
147 ASSERT(state->sfd_count > 0);
148 VERIFY(state->sfd_valid == B_TRUE);
150 state->sfd_count++;
154 signalfd_state_release(signalfd_state_t *state, boolean_t force_invalidate)
156 mutex_enter(&state->sfd_lock);
159 state->sfd_valid = B_FALSE;
162 ASSERT(state->sfd_count > 0);
163 if (state->sfd_count == 1) {
164 VERIFY(state->sfd_valid == B_FALSE);
165 mutex_exit(&state->sfd_lock);
172 list_remove(&signalfd_state, state);
176 list_remove(&signalfd_state, state);
179 kmem_free(state, sizeof (*state));
182 state->sfd_count--;
183 mutex_exit(&state->sfd_lock);
187 signalfd_wake_list_add(sigfd_proc_state_t *pstate, signalfd_state_t *state)
193 if (pw->spw_state == state)
200 mutex_enter(&state->sfd_lock);
201 signalfd_state_enter_locked(state);
202 pw->spw_state = state;
203 mutex_exit(&state->sfd_lock);
210 signalfd_wake_list_rm(sigfd_proc_state_t *pstate, signalfd_state_t *state)
216 if (pw->spw_state == state) {
224 signalfd_state_release(state, B_FALSE);
242 signalfd_state_t *state = pw->spw_state;
245 signalfd_state_release(state, B_FALSE);
277 signalfd_state_t *state = pw->spw_state;
280 signalfd_state_release(state, B_FALSE);
289 * signal state elements so that we don't have to look at every file descriptor
312 signalfd_state_t *state = pw->spw_state;
315 mutex_enter(&state->sfd_lock);
316 if (!state->sfd_valid) {
318 } else if (sigismember(&state->sfd_set, sig)) {
321 mutex_exit(&state->sfd_lock);
325 mutex_exit(&state->sfd_lock);
345 signalfd_state_t *state, **sstate;
361 state = kmem_zalloc(sizeof (*state), KM_SLEEP);
362 state->sfd_valid = B_TRUE;
363 state->sfd_count = 1;
364 list_insert_head(&signalfd_state, (void *)state);
367 *sstate = state;
496 signalfd_state_t *state, **sstate;
507 state = *sstate;
512 mutex_enter(&state->sfd_lock);
513 set = state->sfd_set;
514 mutex_exit(&state->sfd_lock);
534 mutex_enter(&state->sfd_lock);
535 set = state->sfd_set;
536 mutex_exit(&state->sfd_lock);
568 signalfd_state_t *state, **sstate;
575 state = *sstate;
577 mutex_enter(&state->sfd_lock);
579 if (signalfd_sig_pending(p, t, state->sfd_set) != 0)
582 mutex_exit(&state->sfd_lock);
613 pw = signalfd_wake_list_add(pstate, state);
625 signalfd_state_t *state, **sstate;
630 state = *sstate;
638 mutex_enter(&state->sfd_lock);
639 sigutok(&mask, &state->sfd_set);
640 mutex_exit(&state->sfd_lock);
655 signalfd_state_t *state, **sstate;
661 state = *sstate;
663 /* Make sure state is removed from this proc's pollwake list. */
668 pw = signalfd_wake_list_rm(pstate, state);
687 signalfd_state_release(state, B_TRUE);
711 cmn_err(CE_WARN, "signalfd failed to create soft state");