aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/sys/common/erl_check_io.h
diff options
context:
space:
mode:
authorSverker Eriksson <[email protected]>2016-11-23 15:58:15 +0100
committerSverker Eriksson <[email protected]>2016-11-30 20:26:47 +0100
commit0763a36867a702e3075b682973a079e0390144ce (patch)
tree2fffe305a52e44ed0df4b445a691d4a78380738e /erts/emulator/sys/common/erl_check_io.h
parent16b9292ff0914f77ee7ab7e169def914a190f79b (diff)
downloadotp-0763a36867a702e3075b682973a079e0390144ce.tar.gz
otp-0763a36867a702e3075b682973a079e0390144ce.tar.bz2
otp-0763a36867a702e3075b682973a079e0390144ce.zip
erts: Add enif_select & enif_open_resource_type_x
Diffstat (limited to 'erts/emulator/sys/common/erl_check_io.h')
-rw-r--r--erts/emulator/sys/common/erl_check_io.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/erts/emulator/sys/common/erl_check_io.h b/erts/emulator/sys/common/erl_check_io.h
index 14f1ea3f43..242e7cfcf5 100644
--- a/erts/emulator/sys/common/erl_check_io.h
+++ b/erts/emulator/sys/common/erl_check_io.h
@@ -34,6 +34,8 @@
int driver_select_kp(ErlDrvPort, ErlDrvEvent, int, int);
int driver_select_nkp(ErlDrvPort, ErlDrvEvent, int, int);
+int enif_select_kp(ErlNifEnv*, ErlNifEvent, enum ErlNifSelectFlags, void*, Eterm);
+int enif_select_nkp(ErlNifEnv*, ErlNifEvent, enum ErlNifSelectFlags, void*, Eterm);
int driver_event_kp(ErlDrvPort, ErlDrvEvent, ErlDrvEventData);
int driver_event_nkp(ErlDrvPort, ErlDrvEvent, ErlDrvEventData);
Uint erts_check_io_size_kp(void);
@@ -136,4 +138,20 @@ typedef struct {
ErtsIoTask iniotask;
ErtsIoTask outiotask;
} ErtsDrvSelectDataState;
+
+struct erts_nif_select_event {
+ Eterm pid;
+ Eterm immed;
+ Uint32 refn[ERTS_REF_NUMBERS];
+ Sint32 ddeselect_cnt; /* 0: No delayed deselect in progress
+ * 1: Do deselect before next poll
+ * >1: Countdown of ignored events
+ */
+};
+
+typedef struct {
+ struct erts_nif_select_event in;
+ struct erts_nif_select_event out;
+} ErtsNifSelectDataState;
+
#endif /* #ifndef ERL_CHECK_IO_INTERNAL__ */