From 9197f6ea9af095eebbbf42e4ceca5ef762467276 Mon Sep 17 00:00:00 2001 From: Sverker Eriksson Date: Wed, 20 Feb 2019 16:04:58 +0100 Subject: erts: Add enif_set_pid_undefined & enif_is_pid_undefined --- erts/doc/src/erl_nif.xml | 42 +++++++++++++++++++++++++++++++++++++----- 1 file changed, 37 insertions(+), 5 deletions(-) (limited to 'erts/doc') diff --git a/erts/doc/src/erl_nif.xml b/erts/doc/src/erl_nif.xml index d58ebd3171..ac873d0c8c 100644 --- a/erts/doc/src/erl_nif.xml +++ b/erts/doc/src/erl_nif.xml @@ -783,14 +783,16 @@ typedef struct {

A process identifier (pid). In contrast to pid terms (instances of ERL_NIF_TERM), ErlNifPids are self-contained and not bound to any environment. - ErlNifPid is an opaque type.

+ ErlNifPid is an opaque type. It can be copied, moved + in memory, forgotten, and so on.

ErlNifPort

A port identifier. In contrast to port ID terms (instances of ERL_NIF_TERM), ErlNifPorts are self-contained and not bound to any environment. - ErlNifPort is an opaque type.

+ ErlNifPort is an opaque type. It can be copied, moved + in memory, forgotten, and so on.

ErlNifResourceType @@ -1392,6 +1394,9 @@ enif_free_iovec(iovec);]]> initializes the pid variable *pid from it and returns true. Otherwise returns false. No check is done to see if the process is alive.

+

enif_get_local_pid will return false if argument + term is the atom + undefined.

@@ -1870,6 +1875,17 @@ enif_inspect_iovec(env, max_elements, term, &tail, &iovec); + + int + enif_is_pid_undefined(const ErlNifPid* pid) + Determine if pid is undefined. + +

Returns true if pid has been set as undefined by + enif_set_pid_undefined + .

+
+
+ int enif_is_port(ErlNifEnv* env, ERL_NIF_TERM term) @@ -2259,7 +2275,8 @@ enif_inspect_iovec(env, max_elements, term, &tail, &iovec); Make a pid term. -

Makes a pid term from *pid.

+

Makes a pid term or the atom + undefined from *pid.

@@ -2625,7 +2642,9 @@ enif_map_iterator_destroy(env, &iter);

Argument caller_env is the environment of the calling process or callback. Must only be NULL if calling from a custom thread.

Returns 0 on success, < 0 if no down callback is - provided, and > 0 if the process is no longer alive.

+ provided, and > 0 if the process is no longer alive or if + target_pid is + undefined.

This function is only thread-safe when the emulator with SMP support is used. It can only be used in a non-SMP emulator from a NIF-calling thread.

@@ -3080,7 +3099,9 @@ enif_map_iterator_destroy(env, &iter); enif_select_write introduced in erts-11.0 (OTP-22.0).

-

Argument pid may be NULL to indicate the calling process.

+

Argument pid may be NULL to indicate the calling + process. It must not be set as + undefined.

Argument obj is a resource object obtained from enif_alloc_resource. The purpose of the resource objects is as a container of the event object @@ -3270,6 +3291,17 @@ if (retval & ERL_NIF_SELECT_STOP_CALLED) { + + void + enif_set_pid_undefined(ErlNifPid* pid) + Set pid as undefined. + +

Sets an ErlNifPid + variable as undefined. See + enif_is_pid_undefined.

+ + + unsigned enif_sizeof_resource(void* obj) -- cgit v1.2.3