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
This commit is contained in:
Ingo Weinhold
2009-03-15 02:45:09 +00:00
parent 888b341a2e
commit fa1b5a713c
3 changed files with 26 additions and 15 deletions
@@ -28,17 +28,19 @@ struct FileSystem::SelectSyncMap
// constructor // constructor
FileSystem::FileSystem() FileSystem::FileSystem()
: fVolumes(), :
fVolumeLock(), fVolumes(),
fName(), fVolumeLock(),
fNotificationPort(NULL), fName(),
fNotificationThread(-1), fTeam(-1),
fPortPool(), fNotificationPort(NULL),
fSelectSyncs(NULL), fNotificationThread(-1),
fSettings(NULL), fPortPool(),
fUserlandServerTeam(-1), fSelectSyncs(NULL),
fInitialized(false), fSettings(NULL),
fTerminating(false) fUserlandServerTeam(-1),
fInitialized(false),
fTerminating(false)
{ {
} }
@@ -67,7 +69,7 @@ FileSystem::~FileSystem()
// Init // Init
status_t 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) const FSCapabilities& capabilities)
{ {
PRINT(("FileSystem::Init(\"%s\", %p, %ld)\n", name, infos, count)); 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)) if (!fName.SetTo(name))
return B_NO_MEMORY; return B_NO_MEMORY;
fTeam = team;
fCapabilities = capabilities; fCapabilities = capabilities;
// create the select sync entry map // create the select sync entry map
@@ -25,11 +25,12 @@ public:
FileSystem(); FileSystem();
~FileSystem(); ~FileSystem();
status_t Init(const char* name, Port::Info* infos, status_t Init(const char* name, team_id team,
int32 infoCount, Port::Info* infos, int32 infoCount,
const FSCapabilities& capabilities); const FSCapabilities& capabilities);
const char* GetName() const; const char* GetName() const;
team_id GetTeam() const { return fTeam; }
const FSCapabilities& GetCapabilities() const; const FSCapabilities& GetCapabilities() const;
inline bool HasCapability(uint32 capability) const; inline bool HasCapability(uint32 capability) const;
@@ -65,6 +66,7 @@ private:
Vector<Volume*> fVolumes; Vector<Volume*> fVolumes;
Locker fVolumeLock; Locker fVolumeLock;
String fName; String fName;
team_id fTeam;
FSCapabilities fCapabilities; FSCapabilities fCapabilities;
RequestPort* fNotificationPort; RequestPort* fNotificationPort;
thread_id fNotificationThread; thread_id fNotificationThread;
@@ -123,12 +123,18 @@ FileSystemInitializer::_Init(port_id port)
RETURN_ERROR(B_BAD_DATA); 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 // create and init the FileSystem
fFileSystem = new(std::nothrow) FileSystem; fFileSystem = new(std::nothrow) FileSystem;
if (!fFileSystem) if (!fFileSystem)
return B_NO_MEMORY; return B_NO_MEMORY;
status_t error = fFileSystem->Init(fName, info->portInfos, error = fFileSystem->Init(fName, portInfo.team, info->portInfos,
info->portInfoCount, info->capabilities); info->portInfoCount, info->capabilities);
if (error != B_OK) if (error != B_OK)
RETURN_ERROR(error); RETURN_ERROR(error);