diff options
author | Sverker Eriksson <[email protected]> | 2010-06-03 12:41:28 +0000 |
---|---|---|
committer | Erlang/OTP <[email protected]> | 2010-06-03 12:41:28 +0000 |
commit | 8335159b919cc330e1c529464b6bbf89edbbe0a0 (patch) | |
tree | 7616c514cd3c809de4674cb146fd432afb2e85a7 /erts/emulator/test/nif_SUITE_data/nif_mod.h | |
parent | 95ee37bc47ae9ff6eb26b7364f7ec953f894fc46 (diff) | |
download | otp-8335159b919cc330e1c529464b6bbf89edbbe0a0.tar.gz otp-8335159b919cc330e1c529464b6bbf89edbbe0a0.tar.bz2 otp-8335159b919cc330e1c529464b6bbf89edbbe0a0.zip |
OTP-8555 Send message from NIF
New NIF features:
Send messages from a NIF, or from thread created by NIF, to any local
process (enif_send)
Store terms between NIF calls (enif_alloc_env, enif_make_copy)
Create binary terms with user defined memory management
(enif_make_resource_binary)
Diffstat (limited to 'erts/emulator/test/nif_SUITE_data/nif_mod.h')
-rw-r--r-- | erts/emulator/test/nif_SUITE_data/nif_mod.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/erts/emulator/test/nif_SUITE_data/nif_mod.h b/erts/emulator/test/nif_SUITE_data/nif_mod.h index 0eaf91d6e1..cd0ecf4b54 100644 --- a/erts/emulator/test/nif_SUITE_data/nif_mod.h +++ b/erts/emulator/test/nif_SUITE_data/nif_mod.h @@ -20,3 +20,15 @@ typedef struct ErlNifResourceType* rt_arr[RT_MAX]; }NifModPrivData; +#define NifModPrivData_release(NMPD) \ + do { \ + int is_last; \ + enif_mutex_lock((NMPD)->mtx); \ + is_last = (--(NMPD)->ref_cnt == 0); \ + enif_mutex_unlock((NMPD)->mtx); \ + if (is_last) { \ + enif_mutex_destroy((NMPD)->mtx); \ + enif_free((NMPD)); \ + } \ + }while (0) + |