summaryrefslogtreecommitdiff
path: root/debian/patches/flavio0002-no-continuation.patch.patch
diff options
context:
space:
mode:
authorJustus Winter <4winter@informatik.uni-hamburg.de>2015-08-27 19:48:00 +0200
committerJustus Winter <4winter@informatik.uni-hamburg.de>2015-08-27 19:48:00 +0200
commit67ac13ead93a994cd02c175a9602a28f895c930c (patch)
tree0b2383778e212734e419e3671ce2f219259264a4 /debian/patches/flavio0002-no-continuation.patch.patch
parent08b9024ae1c79edd1a5b77676538d6daf56c3b35 (diff)
add patch series
Diffstat (limited to 'debian/patches/flavio0002-no-continuation.patch.patch')
-rw-r--r--debian/patches/flavio0002-no-continuation.patch.patch172
1 files changed, 172 insertions, 0 deletions
diff --git a/debian/patches/flavio0002-no-continuation.patch.patch b/debian/patches/flavio0002-no-continuation.patch.patch
new file mode 100644
index 0000000..5fe2813
--- /dev/null
+++ b/debian/patches/flavio0002-no-continuation.patch.patch
@@ -0,0 +1,172 @@
+From 2b087e83630c2ee3bae765c8ae76c217b6eddd26 Mon Sep 17 00:00:00 2001
+From: Justus Winter <4winter@informatik.uni-hamburg.de>
+Date: Thu, 27 Aug 2015 19:47:38 +0200
+Subject: [PATCH gnumach 2/2] no-continuation.patch
+
+---
+ kern/machine.c | 8 ++++----
+ kern/profile.c | 2 +-
+ kern/sched_prim.c | 8 ++++----
+ kern/sched_prim.h | 2 ++
+ kern/task.c | 4 ++--
+ kern/thread.c | 2 +-
+ kern/thread.h | 2 +-
+ 7 files changed, 15 insertions(+), 13 deletions(-)
+
+diff --git a/kern/machine.c b/kern/machine.c
+index eced768..3f7a7f7 100644
+--- a/kern/machine.c
++++ b/kern/machine.c
+@@ -270,7 +270,7 @@ Retry:
+ assert_wait((event_t) processor, TRUE);
+ processor_unlock(processor);
+ splx(s);
+- thread_block((void(*)()) 0);
++ thread_block(thread_no_continuation);
+ goto Retry;
+ }
+
+@@ -299,7 +299,7 @@ Retry:
+ assert_wait((event_t)processor, TRUE);
+ processor_unlock(processor);
+ splx(s);
+- thread_block((void (*)()) 0);
++ thread_block(thread_no_continuation);
+ s = splsched();
+ processor_lock(processor);
+ }
+@@ -415,7 +415,7 @@ void processor_doaction(processor_t processor)
+ */
+ this_thread = current_thread();
+ thread_bind(this_thread, processor);
+- thread_block((void (*)()) 0);
++ thread_block(thread_no_continuation);
+
+ pset = processor->processor_set;
+ #if MACH_HOST
+@@ -572,7 +572,7 @@ Restart_pset:
+ thread_deallocate(prev_thread);
+ thread_bind(this_thread, PROCESSOR_NULL);
+
+- thread_block((void (*)()) 0);
++ thread_block(thread_no_continuation);
+ return;
+ }
+
+diff --git a/kern/profile.c b/kern/profile.c
+index 1fd265f..1381b1a 100644
+--- a/kern/profile.c
++++ b/kern/profile.c
+@@ -213,7 +213,7 @@ thread_t th;
+ thread_wakeup((event_t) profile_thread);
+ assert_wait((event_t) &buf_entry->wakeme, TRUE);
+ splx(s);
+- thread_block((void (*)()) 0);
++ thread_block(thread_no_continuation);
+ } else {
+ splx(s);
+ kmem_free(kernel_map, vm_buf_entry, sizeof(struct buf_to_send));
+diff --git a/kern/sched_prim.c b/kern/sched_prim.c
+index e8f260e..580ca43 100644
+--- a/kern/sched_prim.c
++++ b/kern/sched_prim.c
+@@ -454,7 +454,7 @@ void thread_sleep(
+ {
+ assert_wait(event, interruptible); /* assert event */
+ simple_unlock(lock); /* release the lock */
+- thread_block((void (*)()) 0); /* block ourselves */
++ thread_block(thread_no_continuation); /* block ourselves */
+ }
+
+ /*
+@@ -617,7 +617,7 @@ boolean_t thread_invoke(
+ thread_unlock(new_thread);
+ thread_wakeup(TH_EV_STATE(new_thread));
+
+- if (continuation != (void (*)()) 0) {
++ if (continuation != thread_no_continuation) {
+ (void) spl0();
+ call_continuation(continuation);
+ /*NOTREACHED*/
+@@ -630,7 +630,7 @@ boolean_t thread_invoke(
+ */
+ thread_lock(new_thread);
+ if ((old_thread->stack_privilege != current_stack()) &&
+- (continuation != (void (*)()) 0))
++ (continuation != thread_no_continuation))
+ {
+ switch (new_thread->state & TH_SWAP_STATE) {
+ case TH_SWAPPED:
+@@ -915,7 +915,7 @@ void thread_dispatch(
+
+ thread_lock(thread);
+
+- if (thread->swap_func != (void (*)()) 0) {
++ if (thread->swap_func != thread_no_continuation) {
+ assert((thread->state & TH_SWAP_STATE) == 0);
+ thread->state |= TH_SWAPPED;
+ stack_free(thread);
+diff --git a/kern/sched_prim.h b/kern/sched_prim.h
+index 62698dc..bb1865c 100644
+--- a/kern/sched_prim.h
++++ b/kern/sched_prim.h
+@@ -52,6 +52,8 @@ typedef void *event_t; /* wait event */
+
+ typedef void (*continuation_t)(void); /* continuation */
+
++#define thread_no_continuation ((continuation_t) 0) /* no continuation */
++
+ /*
+ * Exported interface to sched_prim.c.
+ */
+diff --git a/kern/task.c b/kern/task.c
+index 9a3d848..e9e6ba2 100644
+--- a/kern/task.c
++++ b/kern/task.c
+@@ -377,7 +377,7 @@ kern_return_t task_terminate(
+ task_unlock(task);
+ thread_force_terminate(thread);
+ thread_deallocate(thread);
+- thread_block((void (*)()) 0);
++ thread_block(thread_no_continuation);
+ task_lock(task);
+ }
+ task_unlock(task);
+@@ -893,7 +893,7 @@ task_assign(
+ task->assign_active = TRUE;
+ assert_wait((event_t)&task->assign_active, TRUE);
+ task_unlock(task);
+- thread_block((void (*)()) 0);
++ thread_block(thread_no_continuation);
+ task_lock(task);
+ }
+
+diff --git a/kern/thread.c b/kern/thread.c
+index e524688..3e90079 100644
+--- a/kern/thread.c
++++ b/kern/thread.c
+@@ -1348,7 +1348,7 @@ kern_return_t thread_suspend(
+ while (thread->state & TH_UNINT) {
+ assert_wait(TH_EV_STATE(thread), TRUE);
+ thread_unlock(thread);
+- thread_block(NULL);
++ thread_block(thread_no_continuation);
+ thread_lock(thread);
+ }
+ if (thread->user_stop_count++ == 0) {
+diff --git a/kern/thread.h b/kern/thread.h
+index 22b12fa..7106fd2 100644
+--- a/kern/thread.h
++++ b/kern/thread.h
+@@ -100,7 +100,7 @@ struct thread {
+ vm_offset_t stack_privilege;/* reserved kernel stack */
+
+ /* Swapping information */
+- void (*swap_func)(); /* start here after swapin */
++ continuation_t swap_func; /* start here after swapin */
+
+ /* Blocking information */
+ event_t wait_event; /* event we are waiting on */
+--
+2.1.4
+