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.
This commit is contained in:
Rich Felker 2012-11-11 15:38:04 -05:00
commit 1e21e78bf7
23 changed files with 159 additions and 13 deletions

View file

@ -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);
}

View file

@ -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);
}

View file

@ -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);
}

View file

@ -5,4 +5,3 @@ int sched_rr_get_interval(pid_t pid, struct timespec *ts)
{
return syscall(SYS_sched_rr_get_interval, pid, ts);
}

View file

@ -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);
}

View file

@ -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);
}