diff --git a/kernel-src/include/kernel/event.h b/kernel-src/include/kernel/event.h new file mode 100644 index 00000000..3ec97041 --- /dev/null +++ b/kernel-src/include/kernel/event.h @@ -0,0 +1,25 @@ +#ifndef _EVENT_H +#define _EVENT_H + +#include + +typedef pollheader_t eventheader_t; + +typedef struct { + polldesc_t polldesc; + polldata_t polldata; +} eventlistener_t; + +#define EVENT_INITHEADER(e) POLL_INITHEADER(e) +#define EVENT_INITLISTENER(e) { \ + poll_initdesc(&(e)->polldesc, 0); \ + (e)->polldesc.data = &(e)->polldata; \ + (e)->polldata.desc = &(e)->polldesc; \ + } + +#define EVENT_ATTACH(e, h) poll_add(h, &(e)->polldata, POLLPRI) +#define EVENT_WAIT(e, t) poll_dowait(&(e)->polldesc, t) +#define EVENT_SIGNAL(h) poll_event(h, POLLPRI) +#define EVENT_DETACHALL(e) poll_leave(&(e)->polldesc) + +#endif