OLD | NEW |
1 #include "pthread_impl.h" | 1 #include "pthread_impl.h" |
2 #include <threads.h> | 2 #include <threads.h> |
3 | 3 |
4 int __pthread_join(pthread_t, void **); | 4 int __pthread_join(pthread_t, void**); |
5 | 5 |
6 static int __pthread_detach(pthread_t t) | 6 static int __pthread_detach(pthread_t t) { |
7 { | 7 /* Cannot detach a thread that's already exiting */ |
8 » /* Cannot detach a thread that's already exiting */ | 8 if (a_swap(t->exitlock, 1)) |
9 » if (a_swap(t->exitlock, 1)) | 9 return __pthread_join(t, 0); |
10 » » return __pthread_join(t, 0); | 10 t->detached = 2; |
11 » t->detached = 2; | 11 __unlock(t->exitlock); |
12 » __unlock(t->exitlock); | 12 return 0; |
13 » return 0; | |
14 } | 13 } |
15 | 14 |
16 weak_alias(__pthread_detach, pthread_detach); | 15 weak_alias(__pthread_detach, pthread_detach); |
17 weak_alias(__pthread_detach, thrd_detach); | 16 weak_alias(__pthread_detach, thrd_detach); |
OLD | NEW |