VFS - Rework to remove function pointers from tVFS_Node
[tpg/acess2.git] / Kernel / vfs / fs / devfs.c
index b7379ad..b3f4a57 100644 (file)
@@ -8,27 +8,33 @@
 #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, 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;
        

UCC git Repository :: git.ucc.asn.au