[haiku-commits] r34770 - haiku/trunk/src/system/kernel/device_manager

Author: bonefish
Date: 2009-12-25 12:46:15 +0100 (Fri, 25 Dec 2009)
New Revision: 34770
Changeset: http://dev.haiku-os.org/changeset/34770/haiku

Modified:
   haiku/trunk/src/system/kernel/device_manager/IOScheduler.cpp
   haiku/trunk/src/system/kernel/device_manager/IOScheduler.h
Log:
Already assigned the IOScheduler's ID in the constructor and use it in the
names of its threads.


Modified: haiku/trunk/src/system/kernel/device_manager/IOScheduler.cpp
===================================================================
--- haiku/trunk/src/system/kernel/device_manager/IOScheduler.cpp        
2009-12-24 21:04:19 UTC (rev 34769)
+++ haiku/trunk/src/system/kernel/device_manager/IOScheduler.cpp        
2009-12-25 11:46:15 UTC (rev 34770)
@@ -8,6 +8,7 @@
 #include "IOScheduler.h"
 
 #include <unistd.h>
+#include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 
@@ -103,7 +104,7 @@
        :
        fDMAResource(resource),
        fName(NULL),
-       fID(-1),
+       fID(IOSchedulerRoster::Default()->NextID()),
        fSchedulerThread(-1),
        fRequestNotifierThread(-1),
        fOperationArray(NULL),
@@ -215,14 +216,20 @@
        // start threads
        char buffer[B_OS_NAME_LENGTH];
        strlcpy(buffer, name, sizeof(buffer));
-       strlcat(buffer, " scheduler", sizeof(buffer));
+       strlcat(buffer, " scheduler ", sizeof(buffer));
+       size_t nameLength = strlen(buffer);
+       snprintf(buffer + nameLength, sizeof(buffer) - nameLength, "%" B_PRId32,
+               fID);
        fSchedulerThread = spawn_kernel_thread(&_SchedulerThread, buffer,
                B_NORMAL_PRIORITY + 2, (void *)this);
        if (fSchedulerThread < B_OK)
                return fSchedulerThread;
 
        strlcpy(buffer, name, sizeof(buffer));
-       strlcat(buffer, " notifier", sizeof(buffer));
+       strlcat(buffer, " notifier ", sizeof(buffer));
+       nameLength = strlen(buffer);
+       snprintf(buffer + nameLength, sizeof(buffer) - nameLength, "%" B_PRId32,
+               fID);
        fRequestNotifierThread = spawn_kernel_thread(&_RequestNotifierThread,
                buffer, B_NORMAL_PRIORITY + 2, (void *)this);
        if (fRequestNotifierThread < B_OK)
@@ -887,7 +894,6 @@
 IOSchedulerRoster::AddScheduler(IOScheduler* scheduler)
 {
        AutoLocker<IOSchedulerRoster> locker(this);
-       scheduler->SetID(fNextID++);
        fSchedulers.Add(scheduler);
        locker.Unlock();
 
@@ -929,6 +935,14 @@
 }
 
 
+int32
+IOSchedulerRoster::NextID()
+{
+       AutoLocker<IOSchedulerRoster> locker(this);
+       return fNextID++;
+}
+
+
 IOSchedulerRoster::IOSchedulerRoster()
        :
        fNextID(1),

Modified: haiku/trunk/src/system/kernel/device_manager/IOScheduler.h
===================================================================
--- haiku/trunk/src/system/kernel/device_manager/IOScheduler.h  2009-12-24 
21:04:19 UTC (rev 34769)
+++ haiku/trunk/src/system/kernel/device_manager/IOScheduler.h  2009-12-25 
11:46:15 UTC (rev 34770)
@@ -81,7 +81,6 @@
                        const char*                     Name() const    { 
return fName; }
 
                        int32                           ID() const              
{ return fID; }
-                       void                            SetID(int32 id) { fID = 
id; }
 
                        void                            Dump() const;
 
@@ -173,6 +172,8 @@
                                                                        
IORequest* request = NULL,
                                                                        
IOOperation* operation = NULL);
 
+                       int32                           NextID();
+
 private:
                                                                
IOSchedulerRoster();
                                                                
~IOSchedulerRoster();


Other related posts:

  • » [haiku-commits] r34770 - haiku/trunk/src/system/kernel/device_manager - ingo_weinhold