_lwp_wait(S)
_lwp_wait --
wait for termination of a sibling LWP
Synopsis
#include <sys/types.h>
#include <sys/lwp.h>
int _lwp_wait(lwpid_t wait_for, lwpid_t *departed_lwp);
Parameters
wait_for-
LWP ID of the sibling LWP to wait for
departed_lwp-
pointer to the LWP ID of the terminated sibling LWP
Description
_lwp_wait waits for termination of a sibling lightweight process (LWP).
and, if the value of the pointer departed_lwp is non-NULL,
_lwp_wait sets the location pointed to by departed_lwp to the identifier
of the terminated sibling LWP.
Only LWPs created without the LWP_DETACHED
flag can be _lwp_waited for.
wait_for parameter
wait_for is the LWP ID of a sibling LWP.
If wait_for is equal to the identifier of
a currently existing sibling LWP,
the function waits until that LWP terminates.
If wait_for is equal to (lwpid_t)0,
_lwp_wait will return when any sibling LWP exits and this LWP
was successful in waiting for it.
If wait_for has already terminated,
_lwp_wait returns immediately.
If wait_for has already been _lwp_waited for,
or otherwise is not known by the implementation,
an error indication is returned.
departed_lwp parameter
If the value of the pointer departed_lwp is non-NULL,
the location pointed to by departed_lwp is set to the identifier
of the terminated sibling LWP.
At most one LWP can successfully return from an _lwp_wait
due to the termination of a given departed_lwp.
If more than one LWP is waiting for a specific departed_lwp,
one is successful and the others return ESRCH.
Return values
_lwp_wait returns zero on success, and if the value of the
pointer departed_lwp
is non-NULL sets the location pointed
to by departed_lwp to the identifier
of the terminated sibling LWP. On failure, _lwp_wait returns an error
number, as described below.
Errors
If any of the following conditions is detected,
_lwp_wait returns the corresponding value:
EINTR-
The _lwp_wait was interrupted by a signal.
If any of the following conditions occur,
_lwp_wait returns the appropriate value:
ESRCH-
No LWP can be found in the current process with identity wait_for,
or there is an LWP with identity wait_for but it was created
with the LWP_DETACHED flag set.
EDEADLK-
The calling LWP is attempting to _lwp_wait for itself.
EDEADLK-
The calling LWP is waiting for any LWP and there is only one LWP in the
process.
References
_lwp_exit(S),
waitid(S).
Notices
Lightweight processes (LWPs) are internal interfaces and are subject
to change.
Their use should be avoided.
© 2005 The SCO Group, Inc. All rights reserved.
SCO OpenServer Release 6.0.0 - 01 June 2005