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