diff options
Diffstat (limited to 'c_src/nif_helpers.h')
-rw-r--r-- | c_src/nif_helpers.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/c_src/nif_helpers.h b/c_src/nif_helpers.h index 06eb787..d359f50 100644 --- a/c_src/nif_helpers.h +++ b/c_src/nif_helpers.h @@ -106,4 +106,15 @@ return atom_undefined; \ } +// Threaded NIFs. + +typedef void* nif_thread_arg; + +void* nif_create_main_thread(char*); +ERL_NIF_TERM nif_thread_cast(ErlNifEnv*, void (*f)(nif_thread_arg*), int a, ...); +ERL_NIF_TERM nif_thread_call(ErlNifEnv*, ERL_NIF_TERM (*f)(ErlNifEnv*, nif_thread_arg*), int a, ...); + +#define NIF_CAST_HANDLER(f) void f(nif_thread_arg* args) +#define NIF_CALL_HANDLER(f) ERL_NIF_TERM f(ErlNifEnv* env, nif_thread_arg* args) + #endif |