summaryrefslogtreecommitdiff
path: root/src/sched
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2012-11-11 15:38:04 -0500
committerRich Felker <dalias@aerifal.cx>2012-11-11 15:38:04 -0500
commit1e21e78bf7a5c24c217446d8760be7b7188711c2 (patch)
tree83920f2f5aad8bc090ddb55e57f74e062743e592 /src/sched
parente9b885ee550e8a3eabc9d11c469baf1cfaf64f55 (diff)
downloadmusl-1e21e78bf7a5c24c217446d8760be7b7188711c2.tar.gz
musl-1e21e78bf7a5c24c217446d8760be7b7188711c2.tar.bz2
musl-1e21e78bf7a5c24c217446d8760be7b7188711c2.tar.xz
musl-1e21e78bf7a5c24c217446d8760be7b7188711c2.zip
add support for thread scheduling (POSIX TPS option)
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.
Diffstat (limited to 'src/sched')
-rw-r--r--src/sched/sched_get_priority_max.c5
-rw-r--r--src/sched/sched_getparam.c3
-rw-r--r--src/sched/sched_getscheduler.c3
-rw-r--r--src/sched/sched_rr_get_interval.c1
-rw-r--r--src/sched/sched_setparam.c4
-rw-r--r--src/sched/sched_setscheduler.c4
6 files changed, 11 insertions, 9 deletions
diff --git a/src/sched/sched_get_priority_max.c b/src/sched/sched_get_priority_max.c
index 64cbca93..30ae5100 100644
--- a/src/sched/sched_get_priority_max.c
+++ b/src/sched/sched_get_priority_max.c
@@ -1,11 +1,12 @@
#include <sched.h>
+#include "syscall.h"
int sched_get_priority_max(int policy)
{
- return 0;
+ return syscall(SYS_sched_get_priority_max, policy);
}
int sched_get_priority_min(int policy)
{
- return 0;
+ return syscall(SYS_sched_get_priority_min, policy);
}
diff --git a/src/sched/sched_getparam.c b/src/sched/sched_getparam.c
index 65be1075..76f10e49 100644
--- a/src/sched/sched_getparam.c
+++ b/src/sched/sched_getparam.c
@@ -1,7 +1,8 @@
#include <sched.h>
+#include <errno.h>
#include "syscall.h"
int sched_getparam(pid_t pid, struct sched_param *param)
{
- return syscall(SYS_sched_getparam, pid, param);
+ return __syscall_ret(-ENOSYS);
}
diff --git a/src/sched/sched_getscheduler.c b/src/sched/sched_getscheduler.c
index 4c922f69..394e508b 100644
--- a/src/sched/sched_getscheduler.c
+++ b/src/sched/sched_getscheduler.c
@@ -1,7 +1,8 @@
#include <sched.h>
+#include <errno.h>
#include "syscall.h"
int sched_getscheduler(pid_t pid)
{
- return syscall(SYS_sched_getscheduler, pid);
+ return __syscall_ret(-ENOSYS);
}
diff --git a/src/sched/sched_rr_get_interval.c b/src/sched/sched_rr_get_interval.c
index 43bc4904..4b01028f 100644
--- a/src/sched/sched_rr_get_interval.c
+++ b/src/sched/sched_rr_get_interval.c
@@ -5,4 +5,3 @@ int sched_rr_get_interval(pid_t pid, struct timespec *ts)
{
return syscall(SYS_sched_rr_get_interval, pid, ts);
}
-
diff --git a/src/sched/sched_setparam.c b/src/sched/sched_setparam.c
index 07d61aea..18623ee4 100644
--- a/src/sched/sched_setparam.c
+++ b/src/sched/sched_setparam.c
@@ -1,8 +1,8 @@
#include <sched.h>
+#include <errno.h>
#include "syscall.h"
int sched_setparam(pid_t pid, const struct sched_param *param)
{
- static const struct sched_param def;
- return syscall(SYS_sched_setparam, pid, &def);
+ return __syscall_ret(-ENOSYS);
}
diff --git a/src/sched/sched_setscheduler.c b/src/sched/sched_setscheduler.c
index 19580660..4435f216 100644
--- a/src/sched/sched_setscheduler.c
+++ b/src/sched/sched_setscheduler.c
@@ -1,8 +1,8 @@
#include <sched.h>
+#include <errno.h>
#include "syscall.h"
int sched_setscheduler(pid_t pid, int sched, const struct sched_param *param)
{
- static const struct sched_param def;
- return syscall(SYS_sched_setscheduler, pid, 0, &def);
+ return __syscall_ret(-ENOSYS);
}