Kernel - Start on SHM 'driver' (and common in-memory finddir/readdir)
[tpg/acess2.git] / KernelLand / Kernel / include / memfs_helpers.h
1 /*
2  * Acess2 Kernel
3  * - By John Hodge (thePowersGang)
4  *
5  * memfs_helpers.h
6  * - Helpers for in-memory filesystems
7  *
8  * Provides name lookup, iteration, and node insertion
9  */
10 #ifndef _MEMFS_HELPERS_H_
11 #define _MEMFS_HELPERS_H_
12
13 #include <vfs.h>
14
15 typedef struct sMemFS_FileHdr   tMemFS_FileHdr;
16 typedef struct sMemFS_DirHdr    tMemFS_DirHdr;
17
18 extern void     MemFS_InitDir (tMemFS_DirHdr  *Dir);
19 extern void     MemFS_InitFile(tMemFS_FileHdr *File);
20
21 /*
22  * \brief Fetch the name of the file at the specified position
23  * \return standard tVFS_NodeType.ReadDir return values
24  */
25 extern int      MemFS_ReadDir(tMemFS_DirHdr *Dir, int Pos, char Name[FILENAME_MAX]);
26 /*
27  * \brief Look up a file in a directory
28  */
29 extern tMemFS_FileHdr   *MemFS_FindDir(tMemFS_DirHdr *Dir, const char *Name);
30 /**
31  * \brief Remove a named file from a directory
32  * \return File header for \a Name, or NULL if not found
33  */
34 extern tMemFS_FileHdr   *MemFS_Remove(tMemFS_DirHdr *Dir, const char *Name);
35 /**
36  * \brief Insert a pre-constructed file header into the directory
37  * \param Dir   Directory
38  * \return false if name already exists
39  */
40 extern bool     MemFS_Insert(tMemFS_DirHdr *Dir, tMemFS_FileHdr *File);
41
42 struct sMemFS_FileHdr
43 {
44         tMemFS_FileHdr  *Next;
45         const char      *Name;
46 };
47
48 struct sMemFS_DirHdr
49 {
50         tMemFS_FileHdr  FileHdr;
51         //tRWLock       Lock;
52         tMemFS_FileHdr  *FirstChild;
53 };
54
55 #endif
56

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