Author: bonefish Date: 2010-04-29 17:23:29 +0200 (Thu, 29 Apr 2010) New Revision: 36531 Changeset: http://dev.haiku-os.org/changeset/36531/haiku Modified: haiku/trunk/src/add-ons/kernel/generic/dpc/dpc.c haiku/trunk/src/system/kernel/cache/block_cache.cpp haiku/trunk/src/system/kernel/heap.cpp haiku/trunk/src/system/kernel/kernel_daemon.cpp haiku/trunk/src/system/kernel/low_resource_manager.cpp haiku/trunk/src/system/kernel/slab/Slab.cpp haiku/trunk/src/system/kernel/thread.cpp haiku/trunk/src/system/kernel/vm/vm_page.cpp Log: Replaced no longer necessary send_signal_etc() work-arounds for resume_thread(). Modified: haiku/trunk/src/add-ons/kernel/generic/dpc/dpc.c =================================================================== --- haiku/trunk/src/add-ons/kernel/generic/dpc/dpc.c 2010-04-29 15:10:37 UTC (rev 36530) +++ haiku/trunk/src/add-ons/kernel/generic/dpc/dpc.c 2010-04-29 15:23:29 UTC (rev 36531) @@ -12,7 +12,6 @@ #include <KernelExport.h> -#include <signal.h> #include <stdio.h> #include <stdlib.h> @@ -60,7 +59,7 @@ release_spinlock(&queue->lock); restore_interrupts(former); - + dpc.function(dpc.arg); } @@ -69,7 +68,7 @@ while (queue->count--) { dpc = queue->slots[queue->head]; queue->head = (queue->head++) % queue->size; - dpc.function(dpc.arg); + dpc.function(dpc.arg); } // Now, let's die quietly, ignored by all... sigh. @@ -85,20 +84,20 @@ { char str[64]; dpc_queue *queue; - + if (!handle) return B_BAD_VALUE; queue = malloc(sizeof(dpc_queue) + DPC_QUEUE_SIZE * sizeof(dpc_slot)); if (!queue) return B_NO_MEMORY; - + queue->head = queue->tail = 0; queue->size = DPC_QUEUE_SIZE; queue->count = 0; B_INITIALIZE_SPINLOCK(&queue->lock); // Init the spinlock - snprintf(str, sizeof(str), "%.*s_wakeup_sem", + snprintf(str, sizeof(str), "%.*s_wakeup_sem", (int) sizeof(str) - 11, name); queue->wakeup_sem = create_sem(0, str); @@ -107,7 +106,7 @@ free(queue); return status; } - + // Fire a kernel thread to actually handle (aka call them!) // the queued/deferred procedure calls queue->thread = spawn_kernel_thread(dpc_thread, name, priority, queue); @@ -117,7 +116,7 @@ free(queue); return status; } - send_signal_etc(queue->thread, SIGCONT, B_DO_NOT_RESCHEDULE); + resume_thread(queue->thread); *handle = queue; @@ -139,10 +138,10 @@ // Close the queue: queue_dpc() should knows we're closing: former = disable_interrupts(); acquire_spinlock(&queue->lock); - + thread = queue->thread; queue->thread = -1; - + release_spinlock(&queue->lock); restore_interrupts(former); @@ -151,7 +150,7 @@ wait_for_thread(thread, &exit_value); free(queue); - + return B_OK; } @@ -162,14 +161,14 @@ dpc_queue *queue = handle; cpu_status former; status_t status = B_OK; - + if (!queue || !function) return B_BAD_VALUE; // Try to be safe being called from interrupt handlers: former = disable_interrupts(); acquire_spinlock(&queue->lock); - + if (queue->thread < 0) { // Queue thread is dying... status = B_CANCELED; @@ -180,7 +179,7 @@ queue->slots[queue->tail].function = function; queue->slots[queue->tail].arg = arg; queue->tail = (queue->tail++) % queue->size; - queue->count++; + queue->count++; } release_spinlock(&queue->lock); @@ -191,7 +190,7 @@ // Notice that interrupt handlers should returns B_INVOKE_SCHEDULER to // shorten DPC latency as much as possible... status = release_sem_etc(queue->wakeup_sem, 1, B_DO_NOT_RESCHEDULE); - + return status; } @@ -217,7 +216,7 @@ 0, std_ops }, - + new_dpc_queue, delete_dpc_queue, queue_dpc Modified: haiku/trunk/src/system/kernel/cache/block_cache.cpp =================================================================== --- haiku/trunk/src/system/kernel/cache/block_cache.cpp 2010-04-29 15:10:37 UTC (rev 36530) +++ haiku/trunk/src/system/kernel/cache/block_cache.cpp 2010-04-29 15:23:29 UTC (rev 36531) @@ -7,7 +7,6 @@ #include <block_cache.h> #include <unistd.h> -#include <signal.h> #include <stdlib.h> #include <string.h> #include <errno.h> @@ -2602,7 +2601,7 @@ sNotifierWriterThread = spawn_kernel_thread(&block_notifier_and_writer, "block notifier/writer", B_LOW_PRIORITY, NULL); if (sNotifierWriterThread >= B_OK) - send_signal_etc(sNotifierWriterThread, SIGCONT, B_DO_NOT_RESCHEDULE); + resume_thread(sNotifierWriterThread); #if DEBUG_BLOCK_CACHE add_debugger_command_etc("block_caches", &dump_caches, Modified: haiku/trunk/src/system/kernel/heap.cpp =================================================================== --- haiku/trunk/src/system/kernel/heap.cpp 2010-04-29 15:10:37 UTC (rev 36530) +++ haiku/trunk/src/system/kernel/heap.cpp 2010-04-29 15:23:29 UTC (rev 36531) @@ -15,7 +15,6 @@ #include <int.h> #include <kernel.h> #include <lock.h> -#include <signal.h> #include <string.h> #include <team.h> #include <thread.h> @@ -2176,7 +2175,7 @@ dprintf("heap_init_post_thread(): created VIP heap: %p\n", sVIPHeap); - send_signal_etc(sHeapGrowThread, SIGCONT, B_DO_NOT_RESCHEDULE); + resume_thread(sHeapGrowThread); #endif // !USE_SLAB_ALLOCATOR_FOR_MALLOC Modified: haiku/trunk/src/system/kernel/kernel_daemon.cpp =================================================================== --- haiku/trunk/src/system/kernel/kernel_daemon.cpp 2010-04-29 15:10:37 UTC (rev 36530) +++ haiku/trunk/src/system/kernel/kernel_daemon.cpp 2010-04-29 15:23:29 UTC (rev 36531) @@ -7,7 +7,6 @@ #include <kernel_daemon.h> #include <new> -#include <signal.h> #include <stdlib.h> #include <KernelExport.h> @@ -75,7 +74,7 @@ if (fThread < 0) return fThread; - send_signal_etc(fThread, SIGCONT, B_DO_NOT_RESCHEDULE); + resume_thread(fThread); fUnregisterCondition.Init(this, name); return B_OK; @@ -144,7 +143,7 @@ locker.Unlock(); entry.Wait(); - + locker.Lock(); } } Modified: haiku/trunk/src/system/kernel/low_resource_manager.cpp =================================================================== --- haiku/trunk/src/system/kernel/low_resource_manager.cpp 2010-04-29 15:10:37 UTC (rev 36530) +++ haiku/trunk/src/system/kernel/low_resource_manager.cpp 2010-04-29 15:23:29 UTC (rev 36531) @@ -8,7 +8,6 @@ #include <low_resource_manager.h> #include <new> -#include <signal.h> #include <stdio.h> #include <stdlib.h> @@ -364,7 +363,7 @@ thread_id thread = spawn_kernel_thread(&low_resource_manager, "low resource manager", B_LOW_PRIORITY, NULL); - send_signal_etc(thread, SIGCONT, B_DO_NOT_RESCHEDULE); + resume_thread(thread); add_debugger_command("low_resource", &dump_handlers, "Dump list of low resource handlers"); Modified: haiku/trunk/src/system/kernel/slab/Slab.cpp =================================================================== --- haiku/trunk/src/system/kernel/slab/Slab.cpp 2010-04-29 15:10:37 UTC (rev 36530) +++ haiku/trunk/src/system/kernel/slab/Slab.cpp 2010-04-29 15:23:29 UTC (rev 36531) @@ -11,7 +11,6 @@ #include <algorithm> #include <new> -#include <signal.h> #include <stdlib.h> #include <string.h> @@ -809,5 +808,5 @@ return; } - send_signal_etc(objectCacheResizer, SIGCONT, B_DO_NOT_RESCHEDULE); + resume_thread(objectCacheResizer); } Modified: haiku/trunk/src/system/kernel/thread.cpp =================================================================== --- haiku/trunk/src/system/kernel/thread.cpp 2010-04-29 15:10:37 UTC (rev 36530) +++ haiku/trunk/src/system/kernel/thread.cpp 2010-04-29 15:23:29 UTC (rev 36531) @@ -2162,7 +2162,7 @@ B_DISPLAY_PRIORITY, NULL); if (undertakerThread < 0) panic("Failed to create undertaker thread!"); - send_signal_etc(undertakerThread, SIGCONT, B_DO_NOT_RESCHEDULE); + resume_thread(undertakerThread); // set up some debugger commands add_debugger_command_etc("threads", &dump_thread_list, "List all threads", Modified: haiku/trunk/src/system/kernel/vm/vm_page.cpp =================================================================== --- haiku/trunk/src/system/kernel/vm/vm_page.cpp 2010-04-29 15:10:37 UTC (rev 36530) +++ haiku/trunk/src/system/kernel/vm/vm_page.cpp 2010-04-29 15:23:29 UTC (rev 36531) @@ -8,7 +8,6 @@ */ -#include <signal.h> #include <string.h> #include <stdlib.h> @@ -2955,7 +2954,7 @@ thread_id thread = spawn_kernel_thread(&page_scrubber, "page scrubber", B_LOWEST_ACTIVE_PRIORITY, NULL); - send_signal_etc(thread, SIGCONT, B_DO_NOT_RESCHEDULE); + resume_thread(thread); // start page writer @@ -2963,7 +2962,7 @@ thread = spawn_kernel_thread(&page_writer, "page writer", B_NORMAL_PRIORITY + 1, NULL); - send_signal_etc(thread, SIGCONT, B_DO_NOT_RESCHEDULE); + resume_thread(thread); // start page daemon @@ -2971,7 +2970,7 @@ thread = spawn_kernel_thread(&page_daemon, "page daemon", B_NORMAL_PRIORITY, NULL); - send_signal_etc(thread, SIGCONT, B_DO_NOT_RESCHEDULE); + resume_thread(thread); return B_OK; }