mirror of
https://github.com/fluencelabs/musl
synced 2025-05-29 07:31:53 +00:00
linux's sched_* syscalls actually implement the TPS (thread scheduling) functionality, not the PS (process scheduling) functionality which the sched_* functions are supposed to have. omitting support for the PS option (and having the sched_* interfaces fail with ENOSYS rather than omitting them, since some broken software assumes they exist) seems to be the only conforming way to do this on linux.
18 lines
361 B
C
18 lines
361 B
C
#include "pthread_impl.h"
|
|
|
|
int pthread_getschedparam(pthread_t t, int *restrict policy, struct sched_param *restrict param)
|
|
{
|
|
int r;
|
|
__lock(t->killlock);
|
|
if (t->dead) {
|
|
r = ESRCH;
|
|
} else {
|
|
r = -__syscall(SYS_sched_getparam, t->tid, ¶m);
|
|
if (!r) {
|
|
*policy = __syscall(SYS_sched_getscheduler, t->tid);
|
|
}
|
|
}
|
|
__unlock(t->killlock);
|
|
return r;
|
|
}
|