Lines Matching +full:wakeup +full:- +full:method
1 /*-
2 * SPDX-License-Identifier: BSD-3-Clause
4 * Copyright (c) 2002 Poul-Henning Kamp
8 * This software was developed for the FreeBSD Project by Poul-Henning Kamp
10 * under DARPA/SPAWAR contract N66001-01-C-8035 ("CBOSS"), as part of the
92 td->td_pflags &= ~TDP_GEOM; in g_waitidle()
127 pp = args->pp; in g_attr_changed_event()
134 LIST_FOREACH_SAFE(cp, &pp->consumers, consumers, next_cp) { in g_attr_changed_event()
135 if (cp->geom->attrchanged != NULL) in g_attr_changed_event()
136 cp->geom->attrchanged(cp, args->attr); in g_attr_changed_event()
151 args->pp = pp; in g_attr_changed()
152 args->attr = attr; in g_attr_changed()
165 pp, pp->name, error); in g_orphan_provider()
167 ("g_orphan_provider(%p(%s), 0) error must be non-zero\n", in g_orphan_provider()
168 pp, pp->name)); in g_orphan_provider()
170 pp->error = error; in g_orphan_provider()
172 KASSERT(!(pp->flags & G_PF_ORPHAN), in g_orphan_provider()
173 ("g_orphan_provider(%p(%s)), already an orphan", pp, pp->name)); in g_orphan_provider()
174 pp->flags |= G_PF_ORPHAN; in g_orphan_provider()
177 wakeup(&g_wait_event); in g_orphan_provider()
193 g_trace(G_T_TOPOLOGY, "g_orphan_register(%s)", pp->name); in g_orphan_register()
197 wf = pp->flags & G_PF_WITHER; in g_orphan_register()
198 pp->flags &= ~G_PF_WITHER; in g_orphan_register()
202 * Don't be surprised if they self-destruct. in g_orphan_register()
204 LIST_FOREACH_SAFE(cp, &pp->consumers, consumers, cp2) { in g_orphan_register()
205 KASSERT(cp->geom->orphan != NULL, in g_orphan_register()
207 cp->geom->name, cp->geom->class->name)); in g_orphan_register()
209 * XXX: g_dev_orphan method does deferred destroying in g_orphan_register()
211 * call the orphan method. Check consumer's flags to in g_orphan_register()
214 if (cp->flags & G_CF_ORPHAN) in g_orphan_register()
216 cp->flags |= G_CF_ORPHAN; in g_orphan_register()
217 cp->geom->orphan(cp); in g_orphan_register()
219 if (LIST_EMPTY(&pp->consumers) && wf) in g_orphan_register()
222 pp->flags |= wf; in g_orphan_register()
224 cp = LIST_FIRST(&pp->consumers); in g_orphan_register()
227 if (pp->geom->flags & G_GEOM_WITHER) in g_orphan_register()
251 wakeup(&g_pending_events); in one_event()
254 ep->flag |= EV_INPROGRESS; in one_event()
257 ep->func(ep->arg, 0); in one_event()
262 ep->flag &= ~EV_INPROGRESS; in one_event()
263 if (ep->flag & EV_WAKEUP) { in one_event()
264 ep->flag |= EV_DONE; in one_event()
265 wakeup(ep); in one_event()
291 "-", 0); in g_run_events()
312 if (ep->flag & EV_INPROGRESS) in g_cancel_event()
315 if (ep->ref[n] == NULL) in g_cancel_event()
317 if (ep->ref[n] != ref) in g_cancel_event()
321 ep->func(ep->arg, EV_CANCEL); in g_cancel_event()
323 if (ep->flag & EV_WAKEUP) { in g_cancel_event()
324 ep->flag |= (EV_DONE|EV_CANCELED); in g_cancel_event()
325 wakeup(ep); in g_cancel_event()
333 wakeup(&g_pending_events); in g_cancel_event()
354 ep->flag = wuflag; in g_post_event_ep_va()
360 ep->ref[n] = p; in g_post_event_ep_va()
363 ep->func = func; in g_post_event_ep_va()
364 ep->arg = arg; in g_post_event_ep_va()
369 wakeup(&g_wait_event); in g_post_event_ep_va()
372 if ((td->td_pflags & TDP_KTHREAD) == 0) { in g_post_event_ep_va()
373 td->td_pflags |= TDP_GEOM; in g_post_event_ep_va()
428 wakeup(&g_wait_event); in g_do_wither()
455 while (!(ep->flag & EV_DONE)) in g_waitfor_event()
457 if (ep->flag & EV_CANCELED) in g_waitfor_event()