From fa1b5a713c4c914751768fc0d8cab888803e145e Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Sun, 15 Mar 2009 02:45:09 +0000 Subject: [PATCH] Get and store the userland team running the file system. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29539 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../userlandfs/kernel_add_on/FileSystem.cpp | 27 ++++++++++--------- .../userlandfs/kernel_add_on/FileSystem.h | 6 +++-- .../kernel_add_on/FileSystemInitializer.cpp | 8 +++++- 3 files changed, 26 insertions(+), 15 deletions(-) diff --git a/src/add-ons/kernel/file_systems/userlandfs/kernel_add_on/FileSystem.cpp b/src/add-ons/kernel/file_systems/userlandfs/kernel_add_on/FileSystem.cpp index 81dcbb3555..da994d3a97 100644 --- a/src/add-ons/kernel/file_systems/userlandfs/kernel_add_on/FileSystem.cpp +++ b/src/add-ons/kernel/file_systems/userlandfs/kernel_add_on/FileSystem.cpp @@ -28,17 +28,19 @@ struct FileSystem::SelectSyncMap // constructor FileSystem::FileSystem() - : fVolumes(), - fVolumeLock(), - fName(), - fNotificationPort(NULL), - fNotificationThread(-1), - fPortPool(), - fSelectSyncs(NULL), - fSettings(NULL), - fUserlandServerTeam(-1), - fInitialized(false), - fTerminating(false) + : + fVolumes(), + fVolumeLock(), + fName(), + fTeam(-1), + fNotificationPort(NULL), + fNotificationThread(-1), + fPortPool(), + fSelectSyncs(NULL), + fSettings(NULL), + fUserlandServerTeam(-1), + fInitialized(false), + fTerminating(false) { } @@ -67,7 +69,7 @@ FileSystem::~FileSystem() // Init status_t -FileSystem::Init(const char* name, Port::Info* infos, int32 count, +FileSystem::Init(const char* name, team_id team, Port::Info* infos, int32 count, const FSCapabilities& capabilities) { PRINT(("FileSystem::Init(\"%s\", %p, %ld)\n", name, infos, count)); @@ -81,6 +83,7 @@ FileSystem::Init(const char* name, Port::Info* infos, int32 count, if (!fName.SetTo(name)) return B_NO_MEMORY; + fTeam = team; fCapabilities = capabilities; // create the select sync entry map diff --git a/src/add-ons/kernel/file_systems/userlandfs/kernel_add_on/FileSystem.h b/src/add-ons/kernel/file_systems/userlandfs/kernel_add_on/FileSystem.h index 85f6f57d95..716ce750e7 100644 --- a/src/add-ons/kernel/file_systems/userlandfs/kernel_add_on/FileSystem.h +++ b/src/add-ons/kernel/file_systems/userlandfs/kernel_add_on/FileSystem.h @@ -25,11 +25,12 @@ public: FileSystem(); ~FileSystem(); - status_t Init(const char* name, Port::Info* infos, - int32 infoCount, + status_t Init(const char* name, team_id team, + Port::Info* infos, int32 infoCount, const FSCapabilities& capabilities); const char* GetName() const; + team_id GetTeam() const { return fTeam; } const FSCapabilities& GetCapabilities() const; inline bool HasCapability(uint32 capability) const; @@ -65,6 +66,7 @@ private: Vector fVolumes; Locker fVolumeLock; String fName; + team_id fTeam; FSCapabilities fCapabilities; RequestPort* fNotificationPort; thread_id fNotificationThread; diff --git a/src/add-ons/kernel/file_systems/userlandfs/kernel_add_on/FileSystemInitializer.cpp b/src/add-ons/kernel/file_systems/userlandfs/kernel_add_on/FileSystemInitializer.cpp index df6acbbd1b..850174e501 100644 --- a/src/add-ons/kernel/file_systems/userlandfs/kernel_add_on/FileSystemInitializer.cpp +++ b/src/add-ons/kernel/file_systems/userlandfs/kernel_add_on/FileSystemInitializer.cpp @@ -123,12 +123,18 @@ FileSystemInitializer::_Init(port_id port) RETURN_ERROR(B_BAD_DATA); } + // get the port's team + port_info portInfo; + status_t error = get_port_info(port, &portInfo); + if (error != B_OK) + RETURN_ERROR(error); + // create and init the FileSystem fFileSystem = new(std::nothrow) FileSystem; if (!fFileSystem) return B_NO_MEMORY; - status_t error = fFileSystem->Init(fName, info->portInfos, + error = fFileSystem->Init(fName, portInfo.team, info->portInfos, info->portInfoCount, info->capabilities); if (error != B_OK) RETURN_ERROR(error);