[haiku-commits] r34770 - haiku/trunk/src/system/kernel/device_manager
- From: ingo_weinhold@xxxxxx
- To: haiku-commits@xxxxxxxxxxxxx
- Date: Fri, 25 Dec 2009 12:46:15 +0100 (CET)
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