X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Fvfs%2Ffs%2Fdevfs.c;h=b3f4a57917bf7cedd06b9f10df00d13b71cd080d;hb=5f2024e5977e0cca0993a20dad5ab794c94d5711;hp=b7379ad51ef3b03f4b50610ceb2dbae4b50a46d3;hpb=60149f3ea48a795f9fbb15149e87d3a41aa136bf;p=tpg%2Facess2.git diff --git a/Kernel/vfs/fs/devfs.c b/Kernel/vfs/fs/devfs.c index b7379ad5..b3f4a579 100644 --- a/Kernel/vfs/fs/devfs.c +++ b/Kernel/vfs/fs/devfs.c @@ -8,27 +8,33 @@ #include // === PROTOTYPES === +#if 0 int DevFS_AddDevice(tDevFS_Driver *Device); void DevFS_DelDevice(tDevFS_Driver *Device); -tVFS_Node *DevFS_InitDevice(char *Device, char **Options); +#endif +tVFS_Node *DevFS_InitDevice(const char *Device, const char **Options); char *DevFS_ReadDir(tVFS_Node *Node, int Pos); -tVFS_Node *DevFS_FindDir(tVFS_Node *Node, char *Name); +tVFS_Node *DevFS_FindDir(tVFS_Node *Node, const char *Name); // === GLOBALS === tVFS_Driver gDevFS_Info = { "devfs", 0, DevFS_InitDevice, NULL, NULL }; +tVFS_NodeType gDevFS_DirType = { + .TypeName = "DevFS-Dir", + .ReadDir = DevFS_ReadDir, + .FindDir = DevFS_FindDir + }; tVFS_Node gDevFS_RootNode = { .Size = 0, .Flags = VFS_FFLAG_DIRECTORY, .NumACLs = 1, .ACLs = &gVFS_ACL_EveryoneRX, - .ReadDir = DevFS_ReadDir, - .FindDir = DevFS_FindDir + .Type = &gDevFS_DirType }; tDevFS_Driver *gDevFS_Drivers = NULL; int giDevFS_NextID = 1; -tSpinlock glDevFS_ListLock; +tShortSpinlock glDevFS_ListLock; // === CODE === /** @@ -39,7 +45,7 @@ int DevFS_AddDevice(tDevFS_Driver *Device) int ret = 0; tDevFS_Driver *dev; - LOCK( &glDevFS_ListLock ); + SHORTLOCK( &glDevFS_ListLock ); // Check if the device is already registered or the name is taken for( dev = gDevFS_Drivers; dev; dev = dev->Next ) @@ -63,7 +69,7 @@ int DevFS_AddDevice(tDevFS_Driver *Device) gDevFS_RootNode.Size ++; ret = giDevFS_NextID ++; } - RELEASE( &glDevFS_ListLock ); + SHORTREL( &glDevFS_ListLock ); return ret; } @@ -75,7 +81,7 @@ void DevFS_DelDevice(tDevFS_Driver *Device) { tDevFS_Driver *prev = NULL, *dev; - LOCK( &glDevFS_ListLock ); + SHORTLOCK( &glDevFS_ListLock ); // Search list for device for(dev = gDevFS_Drivers; dev && dev != Device; @@ -94,15 +100,14 @@ void DevFS_DelDevice(tDevFS_Driver *Device) Log_Warning("DevFS", "Attempted to unregister device %p '%s' which was not registered", Device, Device->Name); - RELEASE( &glDevFS_ListLock ); + SHORTREL( &glDevFS_ListLock ); } /** - * \fn tVFS_Node *DevFS_InitDevice(char *Device, char **Options) * \brief Initialise the DevFS and detect double-mounting, or just do nothing * \note STUB */ -tVFS_Node *DevFS_InitDevice(char *Device, char **Options) +tVFS_Node *DevFS_InitDevice(const char *Device, const char **Options) { return &gDevFS_RootNode; } @@ -128,10 +133,10 @@ char *DevFS_ReadDir(tVFS_Node *Node, int Pos) } /** - * \fn tVFS_Node *DevFS_FindDir(tVFS_Node *Node, char *Name) + * \fn tVFS_Node *DevFS_FindDir(tVFS_Node *Node, const char *Name) * \brief Get an entry from the devices directory */ -tVFS_Node *DevFS_FindDir(tVFS_Node *Node, char *Name) +tVFS_Node *DevFS_FindDir(tVFS_Node *Node, const char *Name) { tDevFS_Driver *dev;