Lines Matching refs:ep
228 struct g_event *ep;
245 ep = TAILQ_FIRST(&g_events);
246 if (ep == NULL) {
250 if (ep->flag & EV_INPROGRESS) {
254 ep->flag |= EV_INPROGRESS;
257 ep->func(ep->arg, 0);
260 TAILQ_REMOVE(&g_events, ep, events);
261 ep->flag &= ~EV_INPROGRESS;
262 if (ep->flag & EV_WAKEUP) {
263 ep->flag |= EV_DONE;
265 wakeup(ep);
268 g_free(ep);
299 struct g_event *ep, *epn;
310 TAILQ_FOREACH_SAFE(ep, &g_events, events, epn) {
311 if (ep->flag & EV_INPROGRESS)
314 if (ep->ref[n] == NULL)
316 if (ep->ref[n] != ref)
318 TAILQ_REMOVE(&g_events, ep, events);
319 ep->func(ep->arg, EV_CANCEL);
321 if (ep->flag & EV_WAKEUP) {
322 ep->flag |= (EV_DONE|EV_CANCELED);
323 wakeup(ep);
325 g_free(ep);
338 struct g_event *ep;
346 ep = g_malloc(sizeof *ep, flag | M_ZERO);
347 if (ep == NULL)
349 ep->flag = wuflag;
355 ep->ref[n] = p;
358 ep->func = func;
359 ep->arg = arg;
361 TAILQ_INSERT_TAIL(&g_events, ep, events);
365 *epp = ep;
405 struct g_event *ep;
412 error = g_post_event_x(func, arg, flag, EV_WAKEUP, &ep, ap);
418 while (!(ep->flag & EV_DONE))
419 msleep(ep, &g_eventlock, PRIBIO, "g_waitfor_event", hz);
420 if (ep->flag & EV_CANCELED)
424 g_free(ep);