X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FModules%2FFilesystems%2FExt2%2Fext2_common.h;h=d4cdec913effee92876b3e106e78b2fd44bc6d0f;hb=32beec500bad9af896037a8c396e3900ae5a064e;hp=6ef9d7c8c3b62cd92112cc1dd5c743e0e6e6f728;hpb=48743e39650eb1ef988380e9d95f27fd40d3a9ce;p=tpg%2Facess2.git diff --git a/KernelLand/Modules/Filesystems/Ext2/ext2_common.h b/KernelLand/Modules/Filesystems/Ext2/ext2_common.h index 6ef9d7c8..d4cdec91 100644 --- a/KernelLand/Modules/Filesystems/Ext2/ext2_common.h +++ b/KernelLand/Modules/Filesystems/Ext2/ext2_common.h @@ -2,10 +2,6 @@ * Acess OS * Ext2 Driver Version 1 */ -/** - * \file ext2_common.h - * \brief Second Extended Filesystem Driver - */ #ifndef _EXT2_COMMON_H #define _EXT2_COMMON_H #include @@ -17,8 +13,9 @@ // === STRUCTURES === typedef struct { int FD; - int CacheID; + tInodeCache *CacheID; tVFS_Node RootNode; + tExt2_Inode RootInode; tExt2_SuperBlock SuperBlock; Uint BlockSize; @@ -27,21 +24,32 @@ typedef struct { tExt2_Group Groups[]; } tExt2_Disk; +// === GLOBALS === +extern tVFS_NodeType gExt2_FileType; +extern tVFS_NodeType gExt2_DirType; + // === FUNCTIONS === // --- Common --- extern void Ext2_CloseFile(tVFS_Node *Node); extern Uint64 Ext2_int_GetBlockAddr(tExt2_Disk *Disk, Uint32 *Blocks, int BlockNum); extern void Ext2_int_UpdateSuperblock(tExt2_Disk *Disk); +extern Uint32 Ext2_int_AllocateInode(tExt2_Disk *Disk, Uint32 Parent); +extern void Ext2_int_DereferenceInode(tExt2_Disk *Disk, Uint32 Inode); extern int Ext2_int_ReadInode(tExt2_Disk *Disk, Uint32 InodeId, tExt2_Inode *Inode); extern int Ext2_int_WriteInode(tExt2_Disk *Disk, Uint32 InodeId, tExt2_Inode *Inode); // --- Dir --- -extern char *Ext2_ReadDir(tVFS_Node *Node, int Pos); -extern tVFS_Node *Ext2_FindDir(tVFS_Node *Node, const char *FileName); -extern int Ext2_MkNod(tVFS_Node *Node, const char *Name, Uint Flags); -extern int Ext2_Link(tVFS_Node *Parent, tVFS_Node *Node, const char *Name); +extern int Ext2_ReadDir(tVFS_Node *Node, int Pos, char Dest[FILENAME_MAX]); +extern tVFS_Node *Ext2_FindDir(tVFS_Node *Node, const char *FileName, Uint Flags); +extern tVFS_Node *Ext2_MkNod(tVFS_Node *Node, const char *Name, Uint Mode); +extern int Ext2_Link(tVFS_Node *Parent, const char *Name, tVFS_Node *Node); +extern tVFS_Node *Ext2_int_CreateNode(tExt2_Disk *Disk, Uint InodeId); +extern int Ext2_int_WritebackNode(tExt2_Disk *Disk, tVFS_Node *Node); // --- Read --- -extern Uint64 Ext2_Read(tVFS_Node *node, Uint64 offset, Uint64 length, void *buffer); +extern size_t Ext2_Read(tVFS_Node *node, off_t offset, size_t length, void *buffer, Uint Flags); // --- Write --- -extern Uint64 Ext2_Write(tVFS_Node *node, Uint64 offset, Uint64 length, const void *buffer); +extern size_t Ext2_Write(tVFS_Node *node, off_t offset, size_t length, const void *buffer, Uint Flags); +extern Uint32 Ext2_int_AllocateBlock(tExt2_Disk *Disk, Uint32 LastBlock); +extern void Ext2_int_DeallocateBlock(tExt2_Disk *Disk, Uint32 Block); +extern int Ext2_int_AppendBlock(tVFS_Node *Node, tExt2_Inode *Inode, Uint32 Block); #endif