diff options
author | Lukas Larsson <[email protected]> | 2015-07-14 11:07:33 +0200 |
---|---|---|
committer | Lukas Larsson <[email protected]> | 2015-12-15 10:05:43 +0100 |
commit | 91c1876f70870f450f7e8fd3b02f2396067e3cb8 (patch) | |
tree | 7b934e29cae28d7ab4467f4d37aaa6d769100555 /erts/emulator | |
parent | 4b98e710b9c45481c1cdc7a4ee68f7ce7fca908a (diff) | |
download | otp-91c1876f70870f450f7e8fd3b02f2396067e3cb8.tar.gz otp-91c1876f70870f450f7e8fd3b02f2396067e3cb8.tar.bz2 otp-91c1876f70870f450f7e8fd3b02f2396067e3cb8.zip |
erts: Add erl_drv_set_pid
OTP-13087
Diffstat (limited to 'erts/emulator')
-rw-r--r-- | erts/emulator/beam/erl_driver.h | 3 | ||||
-rw-r--r-- | erts/emulator/beam/io.c | 11 |
2 files changed, 14 insertions, 0 deletions
diff --git a/erts/emulator/beam/erl_driver.h b/erts/emulator/beam/erl_driver.h index 5f2115ef7f..3d663655a2 100644 --- a/erts/emulator/beam/erl_driver.h +++ b/erts/emulator/beam/erl_driver.h @@ -694,6 +694,9 @@ EXTERN int erl_drv_getenv(char *key, char *value, size_t *value_size); /* spawn start init ack */ EXTERN void erl_drv_init_ack(ErlDrvPort ix, ErlDrvData res); +/* set the pid seen in port_info */ +EXTERN void erl_drv_set_os_pid(ErlDrvPort ix, ErlDrvSInt pid); + #endif /* !ERL_DRIVER_TYPES_ONLY */ #ifdef WIN32_DYNAMIC_ERL_DRIVER diff --git a/erts/emulator/beam/io.c b/erts/emulator/beam/io.c index 409df846e9..2a3759212e 100644 --- a/erts/emulator/beam/io.c +++ b/erts/emulator/beam/io.c @@ -2789,6 +2789,17 @@ erl_drv_init_ack(ErlDrvPort ix, ErlDrvData res) { } } +void +erl_drv_set_os_pid(ErlDrvPort ix, ErlDrvSInt pid) { + Port *port = erts_drvport2port(ix); + + if (port == ERTS_INVALID_ERL_DRV_PORT) + return; + + port->os_pid = (SWord)pid; + +} + void erts_init_io(int port_tab_size, int port_tab_size_ignore_files, int legacy_port_tab) |