extern tVFS_Driver gDevFS_Info;
// === PROTOTYPES ===
+#if 0
int VFS_Init(void);
-char *VFS_GetTruePath(char *Path);
+char *VFS_GetTruePath(const char *Path);
void VFS_GetMemPath(char *Dest, void *Base, Uint Length);
-tVFS_Driver *VFS_GetFSByName(char *Name);
+tVFS_Driver *VFS_GetFSByName(const char *Name);
int VFS_AddDriver(tVFS_Driver *Info);
+#endif
void VFS_UpdateDriverFile(void);
// === EXPORTS ===
// === GLOBALS ===
tVFS_Node NULLNode = {0};
-tSpinlock siDriverListLock = 0;
+tShortSpinlock slDriverListLock;
tVFS_Driver *gVFS_Drivers = NULL;
char *gsVFS_DriverFile = NULL;
int giVFS_DriverFileID = 0;
giVFS_DriverFileID = SysFS_RegisterFile("VFS/Drivers", NULL, 0);
if( VFS_Mount("root", "/", "rootfs", "") != 0 ) {
- Panic("Unable to mount root (Where the **** is rootfs?)");
+ Log_KernelPanic("VFS", "Unable to mount root (Where the **** is rootfs?)");
return -1;
}
VFS_MkDir("/Devices");
VFS_MkDir("/Mount");
VFS_Mount("dev", "/Devices", "devfs", "");
-
+
+ Log_Debug("VFS", "Setting max files");
CFGINT(CFG_VFS_MAXFILES) = 32;
return 0;
}
/**
- * \fn char *VFS_GetTruePath(char *Path)
+ * \fn char *VFS_GetTruePath(const char *Path)
* \brief Gets the true path (non-symlink) of a file
*/
-char *VFS_GetTruePath(char *Path)
+char *VFS_GetTruePath(const char *Path)
{
tVFS_Node *node;
char *ret, *tmp;
tmp = VFS_GetAbsPath(Path);
if(tmp == NULL) return NULL;
- node = VFS_ParsePath(tmp, &ret);
+ //Log(" VFS_GetTruePath: tmp = '%s'", tmp);
+ node = VFS_ParsePath(tmp, &ret, NULL);
free(tmp);
+ //Log(" VFS_GetTruePath: node=%p, ret='%s'", node, ret);
if(!node) return NULL;
- if(node->Close) node->Close(node);
+ if(node->Type->Close) node->Type->Close(node);
return ret;
}
void VFS_GetMemPath(char *Dest, void *Base, Uint Length)
{
Dest[0] = '$';
- itoa( &Dest[1], (Uint)Base, 16, BITS/4, '0' );
+ itoa( &Dest[1], (tVAddr)Base, 16, BITS/4, '0' );
Dest[BITS/4+1] = ':';
itoa( &Dest[BITS/4+2], Length, 16, BITS/4, '0' );
Dest[BITS/2+2] = '\0';
}
/**
- * \fn tVFS_Driver *VFS_GetFSByName(char *Name)
+ * \fn tVFS_Driver *VFS_GetFSByName(const char *Name)
* \brief Gets a filesystem structure given a name
*/
-tVFS_Driver *VFS_GetFSByName(char *Name)
+tVFS_Driver *VFS_GetFSByName(const char *Name)
{
tVFS_Driver *drv = gVFS_Drivers;
{
if(!Info) return -1;
- LOCK( &siDriverListLock );
+ SHORTLOCK( &slDriverListLock );
Info->Next = gVFS_Drivers;
gVFS_Drivers = Info;
- RELEASE( &siDriverListLock );
+ SHORTREL( &slDriverListLock );
VFS_UpdateDriverFile();