#include <fs_devfs.h>
// === 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, const char *Name);
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 ===
/**
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 )
gDevFS_RootNode.Size ++;
ret = giDevFS_NextID ++;
}
- RELEASE( &glDevFS_ListLock );
+ SHORTREL( &glDevFS_ListLock );
return ret;
}
{
tDevFS_Driver *prev = NULL, *dev;
- LOCK( &glDevFS_ListLock );
+ SHORTLOCK( &glDevFS_ListLock );
// Search list for device
for(dev = gDevFS_Drivers;
dev && dev != 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;
}
}
/**
- * \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, const char *Name)