int
pthread_suspend_np(
pthread_t thread
)
int
pthread_resume_np(
pthread_t thread
)
)
function suspends the
thread
given as argument.
If
thread
is the currently running thread as returned by
pthread_self(3),
the function fails and returns
EDEADLK
.
Otherwise, it removes the named thread from the running queue, and
adds it to the suspended queue.
The
thread
will remain blocked until
pthread_resume_np(
)
is called on it.
pthread_resume_np()
resumes the
thread
given as argument, if it was suspended.
)
function returns 0 on success and an error number indicating the
reason for the failure.
The
pthread_resume_np(
)
function always returns 0.
)
shall fail if:
EDEADLK
]
pthread_resume_np()
never fails.
)
implementations may allow suspending the current thread.
This is dangerous, because the semantics of the function would then
require the scheduler to schedule another thread, causing a thread
context switch.
Since that context switch can happen in a signal handler by someone
calling
pthread_suspend_np(
)
in a signal handler, this is currently not allowed.
In
pthread_resume_np()
we don't check if the
thread
argument is not already suspended.
Some implementations might return an error condition if
pthread_resume_np(
)
is called on a non-suspended thread.