X-Git-Url: http://nsz.repo.hu/git/?p=musl;a=blobdiff_plain;f=src%2Fthread%2Fpthread_atfork.c;h=95fce20798e83bd0a0362b4b743ea24dcc9a4fef;hp=a7a82016d84736cb81de03dbaf53d0c91734cde9;hb=4750cf4202c29a895639b89099a7bdbe9ae422b6;hpb=e7655ed37bc9c2d79d921af4f287ee5cf2788661 diff --git a/src/thread/pthread_atfork.c b/src/thread/pthread_atfork.c index a7a82016..95fce207 100644 --- a/src/thread/pthread_atfork.c +++ b/src/thread/pthread_atfork.c @@ -8,14 +8,14 @@ static struct atfork_funcs { struct atfork_funcs *prev, *next; } *funcs; -static int lock; +static int lock[2]; void __fork_handler(int who) { struct atfork_funcs *p; if (!funcs) return; if (who < 0) { - LOCK(&lock); + LOCK(lock); for (p=funcs; p; p = p->next) { if (p->prepare) p->prepare(); funcs = p; @@ -26,7 +26,7 @@ void __fork_handler(int who) else if (who && p->child) p->child(); funcs = p; } - UNLOCK(&lock); + UNLOCK(lock); } } @@ -35,7 +35,7 @@ int pthread_atfork(void (*prepare)(void), void (*parent)(void), void (*child)(vo struct atfork_funcs *new = malloc(sizeof *new); if (!new) return -1; - LOCK(&lock); + LOCK(lock); new->next = funcs; new->prev = 0; new->prepare = prepare; @@ -43,6 +43,6 @@ int pthread_atfork(void (*prepare)(void), void (*parent)(void), void (*child)(vo new->child = child; if (funcs) funcs->prev = new; funcs = new; - UNLOCK(&lock); + UNLOCK(lock); return 0; }