mirror of
https://github.com/Mathewnd/Astral.git
synced 2026-11-01 23:18:21 +00:00
kernel: simple allocationless event abstraction on top of poll
This commit is contained in:
@@ -0,0 +1,25 @@
|
|||||||
|
#ifndef _EVENT_H
|
||||||
|
#define _EVENT_H
|
||||||
|
|
||||||
|
#include <kernel/poll.h>
|
||||||
|
|
||||||
|
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
|
||||||
Reference in New Issue
Block a user