From 1e21e78bf7a5c24c217446d8760be7b7188711c2 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Sun, 11 Nov 2012 15:38:04 -0500 Subject: 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. --- include/pthread.h | 4 ++++ include/sched.h | 3 +++ include/spawn.h | 5 +++++ 3 files changed, 12 insertions(+) (limited to 'include') diff --git a/include/pthread.h b/include/pthread.h index 74d86006..660a64d9 100644 --- a/include/pthread.h +++ b/include/pthread.h @@ -91,6 +91,10 @@ int pthread_setcanceltype(int, int *); void pthread_testcancel(void); int pthread_cancel(pthread_t); +int pthread_getschedparam(pthread_t, int *__restrict, struct sched_param *__restrict); +int pthread_setschedparam(pthread_t, int, const struct sched_param *); +int pthread_setschedprio(pthread_t, int); + int pthread_once(pthread_once_t *, void (*)(void)); int pthread_mutex_init(pthread_mutex_t *__restrict, const pthread_mutexattr_t *__restrict); diff --git a/include/sched.h b/include/sched.h index 3df4c7bd..994260d0 100644 --- a/include/sched.h +++ b/include/sched.h @@ -32,6 +32,9 @@ int sched_yield(void); #define SCHED_OTHER 0 #define SCHED_FIFO 1 #define SCHED_RR 2 +#define SCHED_BATCH 3 +#define SCHED_IDLE 5 +#define SCHED_RESET_ON_FORK 0x40000000 #ifdef _GNU_SOURCE #define CSIGNAL 0x000000ff diff --git a/include/spawn.h b/include/spawn.h index a28ae691..92b77f79 100644 --- a/include/spawn.h +++ b/include/spawn.h @@ -55,6 +55,11 @@ int posix_spawnattr_getsigmask(const posix_spawnattr_t *__restrict, sigset_t *__ int posix_spawnattr_setsigdefault(posix_spawnattr_t *__restrict, const sigset_t *__restrict); int posix_spawnattr_getsigdefault(const posix_spawnattr_t *__restrict, sigset_t *__restrict); +int posix_spawnattr_setschedparam(posix_spawnattr_t *__restrict, const struct sched_param *__restrict); +int posix_spawnattr_getschedparam(const posix_spawnattr_t *__restrict, struct sched_param *__restrict); +int posix_spawnattr_setschedpolicy(posix_spawnattr_t *__restrict, int); +int posix_spawnattr_getschedpolicy(const posix_spawnattr_t *__restrict, int *); + int posix_spawn_file_actions_init(posix_spawn_file_actions_t *); int posix_spawn_file_actions_destroy(posix_spawn_file_actions_t *); -- cgit v1.2.1