From dc7fb22c0782a3017832ec8d4372b56204bff418 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Mon, 27 Jan 2003 02:02:20 +0000 Subject: [PATCH] Forgot to resume the kernel_daemon thread. Actually never unlocked the daemon's lock (always called mutex_lock() instead of mutex_unlock()...). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2568 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kernel/core/kernel_daemon.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/kernel/core/kernel_daemon.c b/src/kernel/core/kernel_daemon.c index ef007854c9..30a83ddb78 100644 --- a/src/kernel/core/kernel_daemon.c +++ b/src/kernel/core/kernel_daemon.c @@ -47,7 +47,7 @@ kernel_daemon(void *data) if (((iteration + daemon->offset) % daemon->frequency) == 0) daemon->function(daemon->arg, iteration); } - mutex_lock(&gDaemonMutex); + mutex_unlock(&gDaemonMutex); iteration++; snooze(100000); // 0.1 seconds @@ -71,7 +71,7 @@ unregister_kernel_daemon(void (*function)(void *, int), void *arg) break; } } - mutex_lock(&gDaemonMutex); + mutex_unlock(&gDaemonMutex); // if we've iterated through the whole list, we didn't // find the daemon, and "daemon" is NULL @@ -114,7 +114,7 @@ register_kernel_daemon(void (*function)(void *, int), void *arg, int frequency) daemon->offset = 0; list_add_item(&gDaemons, daemon); - mutex_lock(&gDaemonMutex); + mutex_unlock(&gDaemonMutex); return B_OK; } @@ -123,10 +123,13 @@ register_kernel_daemon(void (*function)(void *, int), void *arg, int frequency) status_t kernel_daemon_init(void) { + thread_id thread; + if (mutex_init(&gDaemonMutex, "kernel daemon") < B_OK) return B_ERROR; list_init(&gDaemons); - return spawn_kernel_thread(&kernel_daemon, "kernel daemon", B_LOW_PRIORITY, NULL); + thread = spawn_kernel_thread(&kernel_daemon, "kernel daemon", B_LOW_PRIORITY, NULL); + return resume_thread(thread); }