summaryrefslogtreecommitdiff
path: root/debian/patches/upstreamme0001-kern-new-function-thread_sleep_lock.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/upstreamme0001-kern-new-function-thread_sleep_lock.patch')
-rw-r--r--debian/patches/upstreamme0001-kern-new-function-thread_sleep_lock.patch59
1 files changed, 59 insertions, 0 deletions
diff --git a/debian/patches/upstreamme0001-kern-new-function-thread_sleep_lock.patch b/debian/patches/upstreamme0001-kern-new-function-thread_sleep_lock.patch
new file mode 100644
index 0000000..2729c6c
--- /dev/null
+++ b/debian/patches/upstreamme0001-kern-new-function-thread_sleep_lock.patch
@@ -0,0 +1,59 @@
+From e9ce90462680d53e9918aeb45ed53a33af6867d3 Mon Sep 17 00:00:00 2001
+From: Justus Winter <4winter@informatik.uni-hamburg.de>
+Date: Sat, 25 Jul 2015 01:46:53 +0200
+Subject: [PATCH gnumach 01/10] kern: new function `thread_sleep_lock'
+
+* kern/sched_prim.c (thread_sleep_lock): New function.
+* kern/sched_prim.h (thread_sleep_lock): New delcaration.
+---
+ kern/sched_prim.c | 18 ++++++++++++++++++
+ kern/sched_prim.h | 4 ++++
+ 2 files changed, 22 insertions(+)
+
+diff --git a/kern/sched_prim.c b/kern/sched_prim.c
+index e8f260e..e354a21 100644
+--- a/kern/sched_prim.c
++++ b/kern/sched_prim.c
+@@ -458,6 +458,24 @@ void thread_sleep(
+ }
+
+ /*
++ * thread_sleep_lock:
++ *
++ * Cause the current thread to wait until the specified event
++ * occurs. The specified lock is unlocked before releasing
++ * the cpu. (This is a convenient way to sleep without manually
++ * calling assert_wait).
++ */
++void thread_sleep_lock(
++ event_t event,
++ lock_t lock,
++ boolean_t interruptible)
++{
++ assert_wait(event, interruptible); /* assert event */
++ lock_done(lock); /* release the lock */
++ thread_block((void (*)()) 0); /* block ourselves */
++}
++
++/*
+ * thread_bind:
+ *
+ * Force a thread to execute on the specified processor.
+diff --git a/kern/sched_prim.h b/kern/sched_prim.h
+index 62698dc..83d4594 100644
+--- a/kern/sched_prim.h
++++ b/kern/sched_prim.h
+@@ -69,6 +69,10 @@ extern void thread_sleep(
+ event_t event,
+ simple_lock_t lock,
+ boolean_t interruptible);
++extern void thread_sleep_lock(
++ event_t event,
++ lock_t lock,
++ boolean_t interruptible);
+ extern void thread_wakeup(void); /* for function pointers */
+ extern void thread_wakeup_prim(
+ event_t event,
+--
+2.1.4
+