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

View File

@ -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

View File

@ -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<Volume*> fVolumes;
Locker fVolumeLock;
String fName;
team_id fTeam;
FSCapabilities fCapabilities;
RequestPort* fNotificationPort;
thread_id fNotificationThread;

View File

@ -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);