diff options
author | Lukas Larsson <[email protected]> | 2014-01-10 17:17:58 +0100 |
---|---|---|
committer | Lukas Larsson <[email protected]> | 2014-02-24 15:16:03 +0100 |
commit | c64851d619fb916362abc8db9c28534eff39f53c (patch) | |
tree | 2407b3e10442243777c2a5e0f8d509d169cbd278 /erts/emulator/sys/common/erl_poll.h | |
parent | 6930aacf7236bbf1db67c8ad1bc1953127ac43f9 (diff) | |
download | otp-c64851d619fb916362abc8db9c28534eff39f53c.tar.gz otp-c64851d619fb916362abc8db9c28534eff39f53c.tar.bz2 otp-c64851d619fb916362abc8db9c28534eff39f53c.zip |
ose: Rewrite resolve_signal API for ose drivers
This new API has less impact on the check_io code and
also removes the callback from ErlDrvEntry. The downside
is that you have to give the resolve function when creating
each event.
Also the mode if the resolve was removed as this mimics the
win32 code and decreases complexity.
Diffstat (limited to 'erts/emulator/sys/common/erl_poll.h')
-rw-r--r-- | erts/emulator/sys/common/erl_poll.h | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/erts/emulator/sys/common/erl_poll.h b/erts/emulator/sys/common/erl_poll.h index e1ea8fb207..ce8dcd3f90 100644 --- a/erts/emulator/sys/common/erl_poll.h +++ b/erts/emulator/sys/common/erl_poll.h @@ -106,6 +106,23 @@ typedef Uint32 ErtsPollEvents; #define ERTS_POLL_EV_ERR 4 #define ERTS_POLL_EV_NVAL 8 +#ifdef __OSE__ + +typedef struct ErtsPollOseMsgList_ { + struct ErtsPollOseMsgList_ *next; + union SIGNAL *data; +} ErtsPollOseMsgList; + +struct erts_sys_fd_type { + SIGSELECT signo; + ErlDrvOseEventId id; + ErtsPollOseMsgList *msgs; + ErlDrvOseEventId (*resolve_signal)(union SIGNAL *sig); + ethr_mutex mtx; +}; + +#endif + #elif ERTS_POLL_USE_EPOLL /* --- epoll ------------------------------- */ #include <sys/epoll.h> @@ -229,9 +246,6 @@ ErtsPollEvents ERTS_POLL_EXPORT(erts_poll_control)(ErtsPollSet, ErtsPollEvents, int on, int* wake_poller -#ifdef __OSE__ - ,int (*decode)(OseSignal* sig, int* mode) -#endif ); void ERTS_POLL_EXPORT(erts_poll_controlv)(ErtsPollSet, ErtsPollControlEntry [], |