diff options
author | Lukas Larsson <[email protected]> | 2013-03-14 15:42:19 +0100 |
---|---|---|
committer | Lukas Larsson <[email protected]> | 2014-02-24 15:15:55 +0100 |
commit | 200fbe924466720bd2a8c5eb05b05d67b0a2414c (patch) | |
tree | e78056a1247d75978646b629cd0e01688e65ff58 /erts/emulator/beam/erl_driver.h | |
parent | fdcdaca338849d7f63d4300e489318f6ee275d82 (diff) | |
download | otp-200fbe924466720bd2a8c5eb05b05d67b0a2414c.tar.gz otp-200fbe924466720bd2a8c5eb05b05d67b0a2414c.tar.bz2 otp-200fbe924466720bd2a8c5eb05b05d67b0a2414c.zip |
Added support for ENEA OSE
This port has support for both non-smp and smp.
It contains a new way to do io checking in which erts_poll_wait
receives the payload of the polled entity. This has implications
for all linked-in drivers.
Diffstat (limited to 'erts/emulator/beam/erl_driver.h')
-rw-r--r-- | erts/emulator/beam/erl_driver.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/erts/emulator/beam/erl_driver.h b/erts/emulator/beam/erl_driver.h index ab9ee63104..9ede2982de 100644 --- a/erts/emulator/beam/erl_driver.h +++ b/erts/emulator/beam/erl_driver.h @@ -271,6 +271,13 @@ typedef struct ErlDrvCond_ ErlDrvCond; typedef struct ErlDrvRWLock_ ErlDrvRWLock; typedef int ErlDrvTSDKey; +/* + * Potential OSE signals + */ +#ifdef __OSE__ +typedef union SIGNAL OseSignal; +#endif + /* * @@ -346,6 +353,9 @@ typedef struct erl_drv_entry { /* Called on behalf of driver_select when it is safe to release 'event'. A typical unix driver would call close(event) */ +#ifdef __OSE__ + int (*resolve_signal)(OseSignal* sig, int* mode); +#endif /* When adding entries here, dont forget to pad in obsolete/driver.h */ } ErlDrvEntry; @@ -680,6 +690,14 @@ EXTERN char *driver_dl_error(void); EXTERN int erl_drv_putenv(char *key, char *value); EXTERN int erl_drv_getenv(char *key, char *value, size_t *value_size); +#ifdef __OSE__ +EXTERN OseSignal *erl_drv_ose_get_output_signal(ErlDrvEvent ev); +EXTERN OseSignal *erl_drv_ose_get_input_signal(ErlDrvEvent ev); +EXTERN ErlDrvEvent erl_drv_ose_event_alloc(SIGSELECT sig,int id); +EXTERN void erl_drv_ose_event_free(ErlDrvEvent ev); +EXTERN void erl_drv_ose_event_fetch(ErlDrvEvent ev, SIGSELECT *sig,int *id); +#endif + #endif /* !ERL_DRIVER_TYPES_ONLY */ #ifdef WIN32_DYNAMIC_ERL_DRIVER |