about summary refs log tree commit diff
path: root/src/sched
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2012-05-03 23:18:26 -0400
committerRich Felker <dalias@aerifal.cx>2012-05-03 23:18:26 -0400
commit61be1cfec1f5da66c68f92a6939e3a38e673c9d6 (patch)
tree5d1221bd675bf7e33c6b53b5e974bd2bf1983756 /src/sched
parentb959d04644d99f27d9f10344e76c079a12bc1ffd (diff)
downloadmusl-61be1cfec1f5da66c68f92a6939e3a38e673c9d6.tar.gz
musl-61be1cfec1f5da66c68f92a6939e3a38e673c9d6.tar.xz
musl-61be1cfec1f5da66c68f92a6939e3a38e673c9d6.zip
implement stub versions of sched_*
these actually work, but for now they prohibit actually setting
priority levels and report min/max priority as 0.
Diffstat (limited to 'src/sched')
-rw-r--r--src/sched/sched_get_priority_max.c11
-rw-r--r--src/sched/sched_getparam.c7
-rw-r--r--src/sched/sched_getscheduler.c7
-rw-r--r--src/sched/sched_rr_get_interval.c8
-rw-r--r--src/sched/sched_setparam.c8
-rw-r--r--src/sched/sched_setscheduler.c8
-rw-r--r--src/sched/sched_yield.c10
7 files changed, 59 insertions, 0 deletions
diff --git a/src/sched/sched_get_priority_max.c b/src/sched/sched_get_priority_max.c
new file mode 100644
index 00000000..64cbca93
--- /dev/null
+++ b/src/sched/sched_get_priority_max.c
@@ -0,0 +1,11 @@
+#include <sched.h>
+
+int sched_get_priority_max(int policy)
+{
+	return 0;
+}
+
+int sched_get_priority_min(int policy)
+{
+	return 0;
+}
diff --git a/src/sched/sched_getparam.c b/src/sched/sched_getparam.c
new file mode 100644
index 00000000..65be1075
--- /dev/null
+++ b/src/sched/sched_getparam.c
@@ -0,0 +1,7 @@
+#include <sched.h>
+#include "syscall.h"
+
+int sched_getparam(pid_t pid, struct sched_param *param)
+{
+	return syscall(SYS_sched_getparam, pid, param);
+}
diff --git a/src/sched/sched_getscheduler.c b/src/sched/sched_getscheduler.c
new file mode 100644
index 00000000..4c922f69
--- /dev/null
+++ b/src/sched/sched_getscheduler.c
@@ -0,0 +1,7 @@
+#include <sched.h>
+#include "syscall.h"
+
+int sched_getscheduler(pid_t pid)
+{
+	return syscall(SYS_sched_getscheduler, pid);
+}
diff --git a/src/sched/sched_rr_get_interval.c b/src/sched/sched_rr_get_interval.c
new file mode 100644
index 00000000..43bc4904
--- /dev/null
+++ b/src/sched/sched_rr_get_interval.c
@@ -0,0 +1,8 @@
+#include <sched.h>
+#include "syscall.h"
+
+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
new file mode 100644
index 00000000..07d61aea
--- /dev/null
+++ b/src/sched/sched_setparam.c
@@ -0,0 +1,8 @@
+#include <sched.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);
+}
diff --git a/src/sched/sched_setscheduler.c b/src/sched/sched_setscheduler.c
new file mode 100644
index 00000000..acf5dc25
--- /dev/null
+++ b/src/sched/sched_setscheduler.c
@@ -0,0 +1,8 @@
+#include <sched.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, sched, &def);
+}
diff --git a/src/sched/sched_yield.c b/src/sched/sched_yield.c
new file mode 100644
index 00000000..6c0742b4
--- /dev/null
+++ b/src/sched/sched_yield.c
@@ -0,0 +1,10 @@
+#include <sched.h>
+#include "syscall.h"
+#include "libc.h"
+
+int __yield()
+{
+	return syscall(SYS_sched_yield);
+}
+
+weak_alias(__yield, sched_yield);