diff options
author | Justus Winter <4winter@informatik.uni-hamburg.de> | 2015-08-27 19:48:00 +0200 |
---|---|---|
committer | Justus Winter <4winter@informatik.uni-hamburg.de> | 2015-08-27 19:48:00 +0200 |
commit | 67ac13ead93a994cd02c175a9602a28f895c930c (patch) | |
tree | 0b2383778e212734e419e3671ce2f219259264a4 /debian/patches/flavio0002-no-continuation.patch.patch | |
parent | 08b9024ae1c79edd1a5b77676538d6daf56c3b35 (diff) |
add patch series
Diffstat (limited to 'debian/patches/flavio0002-no-continuation.patch.patch')
-rw-r--r-- | debian/patches/flavio0002-no-continuation.patch.patch | 172 |
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 + |