mirror of git://git.musl-libc.org/musl
reorganize thread exit code, make pthread_exit call cancellation handlers
This commit is contained in:
parent
f38c154be2
commit
50e26f09eb
|
@ -1,25 +0,0 @@
|
|||
#include "pthread_impl.h"
|
||||
|
||||
#undef pthread_self
|
||||
|
||||
void pthread_exit(void *result)
|
||||
{
|
||||
int i;
|
||||
struct pthread *self = pthread_self();
|
||||
self->result = result;
|
||||
|
||||
a_dec(&libc.threads_minus_1);
|
||||
if (libc.threads_minus_1 < 0)
|
||||
exit(0);
|
||||
|
||||
LOCK(&self->exitlock);
|
||||
|
||||
if (self->tsd_used) for (i=0; i<PTHREAD_KEYS_MAX; i++)
|
||||
if (self->tsd[i] && libc.tsd_keys[i])
|
||||
libc.tsd_keys[i](self->tsd[i]);
|
||||
|
||||
if (self->detached && self->map_base)
|
||||
__unmapself(self->map_base, self->map_size);
|
||||
|
||||
__syscall_exit(0);
|
||||
}
|
Loading…
Reference in New Issue