mirror of
https://github.com/opnsense/src.git
synced 2026-06-09 00:32:25 -04:00
Add a new flag, EV_CANCELED, and use it to make g_waitfor_event() return
EAGAIN if an event got canceled.
This commit is contained in:
parent
eb8c9e95a5
commit
c8589ad169
1 changed files with 5 additions and 1 deletions
|
|
@ -72,6 +72,7 @@ struct g_event {
|
|||
|
||||
#define EV_DONE 0x80000
|
||||
#define EV_WAKEUP 0x40000
|
||||
#define EV_CANCELED 0x20000
|
||||
|
||||
void
|
||||
g_waitidle(void)
|
||||
|
|
@ -230,6 +231,7 @@ g_cancel_event(void *ref)
|
|||
ep->func(ep->arg, EV_CANCEL);
|
||||
if (ep->flag & EV_WAKEUP) {
|
||||
ep->flag |= EV_DONE;
|
||||
ep->flag |= EV_CANCELED;
|
||||
wakeup(ep);
|
||||
} else {
|
||||
g_destroy_event(ep);
|
||||
|
|
@ -310,8 +312,10 @@ g_waitfor_event(g_event_t *func, void *arg, int flag, ...)
|
|||
do
|
||||
tsleep(ep, PRIBIO, "g_waitfor_event", hz);
|
||||
while (!(ep->flag & EV_DONE));
|
||||
if (ep->flag & EV_CANCELED)
|
||||
error = EAGAIN;
|
||||
g_destroy_event(ep);
|
||||
return (0);
|
||||
return (error);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
|||
Loading…
Reference in a new issue