summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/libc_r/uthread/pthread_private.h30
-rw-r--r--lib/libc_r/uthread/uthread_yield.c14
-rw-r--r--lib/libkse/thread/thr_private.h30
-rw-r--r--lib/libkse/thread/thr_yield.c14
-rw-r--r--lib/libpthread/thread/thr_private.h30
-rw-r--r--lib/libpthread/thread/thr_yield.c14
6 files changed, 66 insertions, 66 deletions
diff --git a/lib/libc_r/uthread/pthread_private.h b/lib/libc_r/uthread/pthread_private.h
index e0a0511..7d5bf89 100644
--- a/lib/libc_r/uthread/pthread_private.h
+++ b/lib/libc_r/uthread/pthread_private.h
@@ -52,6 +52,7 @@
#include <signal.h>
#include <sys/types.h>
#include <sys/time.h>
+#include <sched.h>
/*
* Kernel fatal error handler macro.
@@ -158,30 +159,15 @@ struct pthread_cleanup {
void *routine_arg;
};
-/*
- * Scheduling definitions.
- */
-enum schedparam_policy {
- SCHED_RR,
- SCHED_IO,
- SCHED_FIFO,
- SCHED_OTHER
-};
-
struct pthread_attr {
- enum schedparam_policy schedparam_policy;
- int prio;
- int suspend;
- int flags;
- void *arg_attr;
- void (*cleanup_attr) ();
- void *stackaddr_attr;
- size_t stacksize_attr;
-};
-
-struct sched_param {
+ int schedparam_policy;
int prio;
- void *no_data;
+ int suspend;
+ int flags;
+ void *arg_attr;
+ void (*cleanup_attr) ();
+ void *stackaddr_attr;
+ size_t stacksize_attr;
};
/*
diff --git a/lib/libc_r/uthread/uthread_yield.c b/lib/libc_r/uthread/uthread_yield.c
index a88a948..877f5e6 100644
--- a/lib/libc_r/uthread/uthread_yield.c
+++ b/lib/libc_r/uthread/uthread_yield.c
@@ -34,6 +34,20 @@
#include <pthread.h>
#include "pthread_private.h"
+int
+sched_yield(void)
+{
+ /* Reset the accumulated time slice value for the current thread: */
+ _thread_run->slice_usec = -1;
+
+ /* Schedule the next thread: */
+ _thread_kern_sched(NULL);
+
+ /* Always return no error. */
+ return(0);
+}
+
+/* Draft 4 yield */
void
pthread_yield(void)
{
diff --git a/lib/libkse/thread/thr_private.h b/lib/libkse/thread/thr_private.h
index e0a0511..7d5bf89 100644
--- a/lib/libkse/thread/thr_private.h
+++ b/lib/libkse/thread/thr_private.h
@@ -52,6 +52,7 @@
#include <signal.h>
#include <sys/types.h>
#include <sys/time.h>
+#include <sched.h>
/*
* Kernel fatal error handler macro.
@@ -158,30 +159,15 @@ struct pthread_cleanup {
void *routine_arg;
};
-/*
- * Scheduling definitions.
- */
-enum schedparam_policy {
- SCHED_RR,
- SCHED_IO,
- SCHED_FIFO,
- SCHED_OTHER
-};
-
struct pthread_attr {
- enum schedparam_policy schedparam_policy;
- int prio;
- int suspend;
- int flags;
- void *arg_attr;
- void (*cleanup_attr) ();
- void *stackaddr_attr;
- size_t stacksize_attr;
-};
-
-struct sched_param {
+ int schedparam_policy;
int prio;
- void *no_data;
+ int suspend;
+ int flags;
+ void *arg_attr;
+ void (*cleanup_attr) ();
+ void *stackaddr_attr;
+ size_t stacksize_attr;
};
/*
diff --git a/lib/libkse/thread/thr_yield.c b/lib/libkse/thread/thr_yield.c
index a88a948..877f5e6 100644
--- a/lib/libkse/thread/thr_yield.c
+++ b/lib/libkse/thread/thr_yield.c
@@ -34,6 +34,20 @@
#include <pthread.h>
#include "pthread_private.h"
+int
+sched_yield(void)
+{
+ /* Reset the accumulated time slice value for the current thread: */
+ _thread_run->slice_usec = -1;
+
+ /* Schedule the next thread: */
+ _thread_kern_sched(NULL);
+
+ /* Always return no error. */
+ return(0);
+}
+
+/* Draft 4 yield */
void
pthread_yield(void)
{
diff --git a/lib/libpthread/thread/thr_private.h b/lib/libpthread/thread/thr_private.h
index e0a0511..7d5bf89 100644
--- a/lib/libpthread/thread/thr_private.h
+++ b/lib/libpthread/thread/thr_private.h
@@ -52,6 +52,7 @@
#include <signal.h>
#include <sys/types.h>
#include <sys/time.h>
+#include <sched.h>
/*
* Kernel fatal error handler macro.
@@ -158,30 +159,15 @@ struct pthread_cleanup {
void *routine_arg;
};
-/*
- * Scheduling definitions.
- */
-enum schedparam_policy {
- SCHED_RR,
- SCHED_IO,
- SCHED_FIFO,
- SCHED_OTHER
-};
-
struct pthread_attr {
- enum schedparam_policy schedparam_policy;
- int prio;
- int suspend;
- int flags;
- void *arg_attr;
- void (*cleanup_attr) ();
- void *stackaddr_attr;
- size_t stacksize_attr;
-};
-
-struct sched_param {
+ int schedparam_policy;
int prio;
- void *no_data;
+ int suspend;
+ int flags;
+ void *arg_attr;
+ void (*cleanup_attr) ();
+ void *stackaddr_attr;
+ size_t stacksize_attr;
};
/*
diff --git a/lib/libpthread/thread/thr_yield.c b/lib/libpthread/thread/thr_yield.c
index a88a948..877f5e6 100644
--- a/lib/libpthread/thread/thr_yield.c
+++ b/lib/libpthread/thread/thr_yield.c
@@ -34,6 +34,20 @@
#include <pthread.h>
#include "pthread_private.h"
+int
+sched_yield(void)
+{
+ /* Reset the accumulated time slice value for the current thread: */
+ _thread_run->slice_usec = -1;
+
+ /* Schedule the next thread: */
+ _thread_kern_sched(NULL);
+
+ /* Always return no error. */
+ return(0);
+}
+
+/* Draft 4 yield */
void
pthread_yield(void)
{
OpenPOWER on IntegriCloud