5515429f15378a1fe7e5b2dfc00c2b7f9bc31931
[tpg/acess2.git] / KernelLand / Modules / Filesystems / Ext2 / ext2_common.h
1 /*
2  * Acess OS
3  * Ext2 Driver Version 1
4  */
5 #ifndef _EXT2_COMMON_H
6 #define _EXT2_COMMON_H
7 #include <acess.h>
8 #include <vfs.h>
9 #include "ext2fs.h"
10
11 #define EXT2_UPDATE_WRITEBACK   1
12
13 // === STRUCTURES ===
14 typedef struct {
15          int    FD;
16          int    CacheID;
17         tVFS_Node       RootNode;
18         
19         tExt2_SuperBlock        SuperBlock;
20         Uint    BlockSize;
21          
22          int    GroupCount;
23         tExt2_Group             Groups[];
24 } tExt2_Disk;
25
26 // === FUNCTIONS ===
27 // --- Common ---
28 extern void     Ext2_CloseFile(tVFS_Node *Node);
29 extern Uint64   Ext2_int_GetBlockAddr(tExt2_Disk *Disk, Uint32 *Blocks, int BlockNum);
30 extern void     Ext2_int_UpdateSuperblock(tExt2_Disk *Disk);
31 extern Uint32   Ext2_int_AllocateInode(tExt2_Disk *Disk, Uint32 Parent);
32 extern void     Ext2_int_DereferenceInode(tExt2_Disk *Disk, Uint32 Inode);
33 extern int      Ext2_int_ReadInode(tExt2_Disk *Disk, Uint32 InodeId, tExt2_Inode *Inode);
34 extern int      Ext2_int_WriteInode(tExt2_Disk *Disk, Uint32 InodeId, tExt2_Inode *Inode);
35 // --- Dir ---
36 extern int      Ext2_ReadDir(tVFS_Node *Node, int Pos, char Dest[FILENAME_MAX]);
37 extern tVFS_Node        *Ext2_FindDir(tVFS_Node *Node, const char *FileName);
38 extern tVFS_Node        *Ext2_MkNod(tVFS_Node *Node, const char *Name, Uint Flags);
39 extern int      Ext2_Link(tVFS_Node *Parent, const char *Name, tVFS_Node *Node);
40 // --- Read ---
41 extern size_t   Ext2_Read(tVFS_Node *node, off_t offset, size_t length, void *buffer);
42 // --- Write ---
43 extern size_t   Ext2_Write(tVFS_Node *node, off_t offset, size_t length, const void *buffer);
44 extern Uint32   Ext2_int_AllocateBlock(tExt2_Disk *Disk, Uint32 LastBlock);
45 extern void     Ext2_int_DeallocateBlock(tExt2_Disk *Disk, Uint32 Block);
46 extern int      Ext2_int_AppendBlock(tExt2_Disk *Disk, tExt2_Inode *Inode, Uint32 Block);
47
48 #endif

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