Already assigned the IOScheduler's ID in the constructor and use it in the

names of its threads.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34770 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Ingo Weinhold
2009-12-25 11:46:15 +00:00
parent f60c232ee4
commit ade3a199a6
2 changed files with 20 additions and 5 deletions
@@ -8,6 +8,7 @@
#include "IOScheduler.h"
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -103,7 +104,7 @@ IOScheduler::IOScheduler(DMAResource* resource)
:
fDMAResource(resource),
fName(NULL),
fID(-1),
fID(IOSchedulerRoster::Default()->NextID()),
fSchedulerThread(-1),
fRequestNotifierThread(-1),
fOperationArray(NULL),
@@ -215,14 +216,20 @@ IOScheduler::Init(const char* name)
// 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 @@ void
IOSchedulerRoster::AddScheduler(IOScheduler* scheduler)
{
AutoLocker<IOSchedulerRoster> locker(this);
scheduler->SetID(fNextID++);
fSchedulers.Add(scheduler);
locker.Unlock();
@@ -929,6 +935,14 @@ IOSchedulerRoster::Notify(uint32 eventCode, const IOScheduler* scheduler,
}
int32
IOSchedulerRoster::NextID()
{
AutoLocker<IOSchedulerRoster> locker(this);
return fNextID++;
}
IOSchedulerRoster::IOSchedulerRoster()
:
fNextID(1),
@@ -81,7 +81,6 @@ public:
const char* Name() const { return fName; }
int32 ID() const { return fID; }
void SetID(int32 id) { fID = id; }
void Dump() const;
@@ -173,6 +172,8 @@ public:
IORequest* request = NULL,
IOOperation* operation = NULL);
int32 NextID();
private:
IOSchedulerRoster();
~IOSchedulerRoster();