// === IMPORTS ==
extern tVFS_Node gInitRD_RootNode;
+extern const int giInitRD_NumFiles;
+extern tVFS_Node * const gInitRD_FileList[];
// === PROTOTYPES ===
int InitRD_Install(char **Arguments);
-tVFS_Node *InitRD_InitDevice(char *Device, char **Arguments);
+tVFS_Node *InitRD_InitDevice(const char *Device, const char **Arguments);
void InitRD_Unmount(tVFS_Node *Node);
+tVFS_Node *InitRD_GetNodeFromINode(tVFS_Node *Root, Uint64 Inode);
Uint64 InitRD_ReadFile(tVFS_Node *Node, Uint64 Offset, Uint64 Size, void *Buffer);
char *InitRD_ReadDir(tVFS_Node *Node, int ID);
-tVFS_Node *InitRD_FindDir(tVFS_Node *Node, char *Name);
+tVFS_Node *InitRD_FindDir(tVFS_Node *Node, const char *Name);
void InitRD_DumpDir(tVFS_Node *Node, int Indent);
// === GLOBALS ===
MODULE_DEFINE(0, 0x0A, FS_InitRD, InitRD_Install, NULL);
tVFS_Driver gInitRD_FSInfo = {
- "initrd", 0, InitRD_InitDevice, InitRD_Unmount, NULL
+ "initrd", 0, InitRD_InitDevice, InitRD_Unmount, InitRD_GetNodeFromINode
};
/**
*/
int InitRD_Install(char **Arguments)
{
+ Log_Notice("InitRD", "Installed");
VFS_AddDriver( &gInitRD_FSInfo );
return MODULE_ERR_OK;
/**
* \brief Mount the InitRD
*/
-tVFS_Node *InitRD_InitDevice(char *Device, char **Arguments)
+tVFS_Node *InitRD_InitDevice(const char *Device, const char **Arguments)
{
#if DUMP_ON_MOUNT
InitRD_DumpDir( &gInitRD_RootNode, 0 );
#endif
+ Log_Notice("InitRD", "Mounted (%i files)", giInitRD_NumFiles);
return &gInitRD_RootNode;
}
{
}
+/**
+ */
+tVFS_Node *InitRD_GetNodeFromINode(tVFS_Node *Root, Uint64 Inode)
+{
+ if( Inode >= giInitRD_NumFiles ) return NULL;
+ return gInitRD_FileList[Inode];
+}
+
/**
* \brief Read from a file
*/
/**
* \brief Find an element in a directory
*/
-tVFS_Node *InitRD_FindDir(tVFS_Node *Node, char *Name)
+tVFS_Node *InitRD_FindDir(tVFS_Node *Node, const char *Name)
{
int i;
tInitRD_File *dir = Node->ImplPtr;
- //Log("InirRD_FindDir: Name = '%s'", Name);
+ LOG("Name = '%s'", Name);
for( i = 0; i < Node->Size; i++ )
{
for( i = 0; i < Node->Size; i++ )
{
- //Log("%s- %p %s", indent, dir[i].Node, dir[i].Name);
+ Log_Debug("InitRD", "%s- %p %s", indent, dir[i].Node, dir[i].Name);
if(dir[i].Node->Flags & VFS_FFLAG_DIRECTORY)
InitRD_DumpDir(dir[i].Node, Indent+1);
}