From e045a8c0df58a7ab163fc79ce39437046b244112 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Sun, 3 Jan 2010 18:54:52 +0000 Subject: [PATCH] * Solved the problem independently from the list. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34876 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/kernel/kernel_daemon.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/system/kernel/kernel_daemon.cpp b/src/system/kernel/kernel_daemon.cpp index 833daadce2..9c1509e3d9 100644 --- a/src/system/kernel/kernel_daemon.cpp +++ b/src/system/kernel/kernel_daemon.cpp @@ -174,19 +174,16 @@ KernelDaemon::_NextDaemon(struct daemon& marker) { struct daemon* daemon; - if (marker.GetDoublyLinkedListLink()->next == NULL - && marker.GetDoublyLinkedListLink()->previous == NULL - && fDaemons.Head() != &marker) { - // Marker is not part of the list yet, just return the first entry + if (marker.arg == NULL) { + // The marker is not part of the list yet, just return the first entry daemon = fDaemons.Head(); } else { daemon = marker.GetDoublyLinkedListLink()->next; fDaemons.Remove(&marker); - - marker.GetDoublyLinkedListLink()->next = NULL; - marker.GetDoublyLinkedListLink()->previous = NULL; } + marker.arg = daemon; + if (daemon != NULL) fDaemons.Insert(daemon->GetDoublyLinkedListLink()->next, &marker); @@ -200,6 +197,8 @@ KernelDaemon::_DaemonThread() struct daemon marker; int32 iteration = 0; + marker.arg = NULL; + while (true) { RecursiveLocker locker(fLock);