blob: 5375b25ea6c3a3fd92ee4bd6fd301f3c05d7af07 [file] [log] [blame]
<assertions>
<assertion id="1" tag="ref:XSH6:33023:33024">
The function
void pthread_exit(void *value_ptr);
terminates the calling thread and makes the value 'value_ptr' available
to any successful join with the terminating thread.
</assertion>
<assertion id="2" tag="ref:XSH6:33024:33026">
Any cancelation cleanup handlers that have been pushed and not yet popped
shall be popped and executed in the reverse order that they were pushed.
</assertion>
<assertion id="3" tag="ref:XSH6:33026:33028">
After all cancelation cleanup handlers have been executed, if the thread
has any thread-specific data, appriopriate destructor functions shall
be called in an unspecified order.
</assertion>
<assertion id="4" tag="ref:XSH6:33028:33030">
Thread termination does not release any application visible process
resources include, but not limited to, mutexes and file descriptors, nor
does it perform any process-level cleanup actions, including but not
limited to, calling any atexit() routines that may exist.
</assertion>
<assertion id="5" tag="ref:XSH6:33031:33033">
An implicit call to pthread_exit() is made when a thread other than the
thread in which main() was first invoked returns from the start routine that
was used to create it. The function's return value shall serve as the
thread's exit status.
</assertion>
<assertion id="6" tag="ref:XSH6:33040:33042">
The process shall exit with an exit status of 0 after the last thread has
been terminated. The behavior shall be as if the implemenation called exit()
with a zero argument at thread termination time.
The pthread_exit() function cannot return to its called.
</assertion>
</assertions>