X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Fthread%2Fpthread_getschedparam.c;h=c098befb1b7f042efefbf63d516a26577ac3f27d;hb=595416b11dfbc82d40a59d0edd7e3b04ba7a2d6d;hp=3053c1865e0a1f1d2c6c8ea16d30ecdcddfb4a7d;hpb=b17c75a4d539d7ec5b81cc7ce7ce6b065a87e7a6;p=musl diff --git a/src/thread/pthread_getschedparam.c b/src/thread/pthread_getschedparam.c index 3053c186..c098befb 100644 --- a/src/thread/pthread_getschedparam.c +++ b/src/thread/pthread_getschedparam.c @@ -1,10 +1,13 @@ #include "pthread_impl.h" +#include "lock.h" int pthread_getschedparam(pthread_t t, int *restrict policy, struct sched_param *restrict param) { int r; - __lock(t->killlock); - if (t->dead) { + sigset_t set; + __block_app_sigs(&set); + LOCK(t->killlock); + if (!t->tid) { r = ESRCH; } else { r = -__syscall(SYS_sched_getparam, t->tid, param); @@ -12,6 +15,7 @@ int pthread_getschedparam(pthread_t t, int *restrict policy, struct sched_param *policy = __syscall(SYS_sched_getscheduler, t->tid); } } - __unlock(t->killlock); + UNLOCK(t->killlock); + __restore_sigs(&set); return r; }