aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/erl_driver.h
diff options
context:
space:
mode:
authorPatrik Nyblom <[email protected]>2013-08-16 17:14:25 +0200
committerPatrik Nyblom <[email protected]>2013-08-23 17:03:20 +0200
commit6d1f1d43aa0a9e0a2cb275ef760339c49518fc69 (patch)
treec51d17da4e41d64eddb42a4918a3f9d2b5967ded /erts/emulator/beam/erl_driver.h
parent7204e78d8d16e41769cfd4b7b4051545052c335e (diff)
downloadotp-6d1f1d43aa0a9e0a2cb275ef760339c49518fc69.tar.gz
otp-6d1f1d43aa0a9e0a2cb275ef760339c49518fc69.tar.bz2
otp-6d1f1d43aa0a9e0a2cb275ef760339c49518fc69.zip
Create better distribution of files over async threads
The actual port id is used to create a key from the pointer value which is the ErlDrvPort. To do this a new driver api function driver_async_port_key is added and the driver API minor version is updated. The documentation is updated and the faulty description of how to spread ports over async threads is updated to use the new API. Testcase also added.
Diffstat (limited to 'erts/emulator/beam/erl_driver.h')
-rw-r--r--erts/emulator/beam/erl_driver.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/erts/emulator/beam/erl_driver.h b/erts/emulator/beam/erl_driver.h
index e280563de1..1ab6e17f56 100644
--- a/erts/emulator/beam/erl_driver.h
+++ b/erts/emulator/beam/erl_driver.h
@@ -133,7 +133,7 @@ typedef struct {
#define ERL_DRV_EXTENDED_MARKER (0xfeeeeeed)
#define ERL_DRV_EXTENDED_MAJOR_VERSION 2
-#define ERL_DRV_EXTENDED_MINOR_VERSION 1
+#define ERL_DRV_EXTENDED_MINOR_VERSION 2
/*
* The emulator will refuse to load a driver with different major
@@ -638,6 +638,8 @@ EXTERN int erl_drv_send_term(ErlDrvTermData port,
int len);
/* Async IO functions */
+EXTERN unsigned int driver_async_port_key(ErlDrvPort port);
+
EXTERN long driver_async(ErlDrvPort ix,
unsigned int* key,
void (*async_invoke)(void*),