diff options
Diffstat (limited to 'kernel.soso/fs.h')
-rw-r--r-- | kernel.soso/fs.h | 148 |
1 files changed, 0 insertions, 148 deletions
diff --git a/kernel.soso/fs.h b/kernel.soso/fs.h deleted file mode 100644 index dac653c3..00000000 --- a/kernel.soso/fs.h +++ /dev/null @@ -1,148 +0,0 @@ -#ifndef FS_H -#define FS_H - -#include "common.h" - -typedef enum FileType { - FT_File = 1, - FT_CharacterDevice = 2, - FT_BlockDevice = 3, - FT_Pipe = 4, - FT_SymbolicLink = 5, - FT_Directory = 128, - FT_MountPoint = 256 -} FileType; - -typedef enum IoctlCommand { - IC_GetSectorSizeInBytes, - IC_GetSectorCount, -} IoctlCommand; - -typedef struct FileSystem FileSystem; -typedef struct FileSystemNode FileSystemNode; -typedef struct FileSystemDirent FileSystemDirent; -typedef struct Process Process; -typedef struct Thread Thread; -typedef struct File File; - -struct stat; - -typedef int32 (*ReadWriteFunction)(File* file, uint32 size, uint8* buffer); -typedef int32 (*ReadWriteBlockFunction)(FileSystemNode* node, uint32 blockNumber, uint32 count, uint8* buffer); -typedef BOOL (*OpenFunction)(File* file, uint32 flags); -typedef void (*CloseFunction)(File* file); -typedef int32 (*IoctlFunction)(File *file, int32 request, void * argp); -typedef int32 (*LseekFunction)(File *file, int32 offset, int32 whence); -typedef int32 (*FtruncateFunction)(File *file, int32 length); -typedef int32 (*StatFunction)(FileSystemNode *node, struct stat *buf); -typedef FileSystemDirent * (*ReadDirFunction)(FileSystemNode*,uint32); -typedef FileSystemNode * (*FindDirFunction)(FileSystemNode*,char *name); -typedef BOOL (*MkDirFunction)(FileSystemNode* node, const char *name, uint32 flags); -typedef void* (*MmapFunction)(File* file, uint32 size, uint32 offset, uint32 flags); -typedef BOOL (*MunmapFunction)(File* file, void* address, uint32 size); - -typedef BOOL (*MountFunction)(const char* sourcePath, const char* targetPath, uint32 flags, void *data); - -typedef struct FileSystem { - char name[32]; - MountFunction checkMount; - MountFunction mount; -} FileSystem; - -typedef struct FileSystemNode { - char name[128]; - uint32 mask; - uint32 userId; - uint32 groupId; - uint32 nodeType; - uint32 inode; - uint32 length; - ReadWriteBlockFunction readBlock; - ReadWriteBlockFunction writeBlock; - ReadWriteFunction read; - ReadWriteFunction write; - OpenFunction open; - CloseFunction close; - IoctlFunction ioctl; - LseekFunction lseek; - FtruncateFunction ftruncate; - StatFunction stat; - ReadDirFunction readdir; - FindDirFunction finddir; - MkDirFunction mkdir; - MmapFunction mmap; - MunmapFunction munmap; - FileSystemNode *firstChild; - FileSystemNode *nextSibling; - FileSystemNode *parent; - FileSystemNode *mountPoint;//only used in mounts - FileSystemNode *mountSource;//only used in mounts - void* privateNodeData; -} FileSystemNode; - -typedef struct FileSystemDirent { - char name[128]; - FileType fileType; - uint32 inode; -} FileSystemDirent; - -//Per open -typedef struct File { - FileSystemNode* node; - Process* process; - Thread* thread; - int32 fd; - int32 offset; - void* privateData; -} File; - -struct stat { - uint16/*dev_t */ st_dev; /* ID of device containing file */ - uint16/*ino_t */ st_ino; /* inode number */ - uint32/*mode_t */ st_mode; /* protection */ - uint16/*nlink_t */ st_nlink; /* number of hard links */ - uint16/*uid_t */ st_uid; /* user ID of owner */ - uint16/*gid_t */ st_gid; /* group ID of owner */ - uint16/*dev_t */ st_rdev; /* device ID (if special file) */ - uint32/*off_t */ st_size; /* total size, in bytes */ - - uint32/*time_t */ st_atime; - uint32/*long */ st_spare1; - uint32/*time_t */ st_mtime; - uint32/*long */ st_spare2; - uint32/*time_t */ st_ctime; - uint32/*long */ st_spare3; - uint32/*blksize_t */ st_blksize; - uint32/*blkcnt_t */ st_blocks; - uint32/*long */ st_spare4[2]; -}; - - -uint32 read_fs(File* file, uint32 size, uint8* buffer); -uint32 write_fs(File* file, uint32 size, uint8* buffer); -File* open_fs(FileSystemNode* node, uint32 flags); -File* open_fs_forProcess(Thread* thread, FileSystemNode* node, uint32 flags); -void close_fs(File* file); -int32 ioctl_fs(File* file, int32 request, void* argp); -int32 lseek_fs(File* file, int32 offset, int32 whence); -int32 ftruncate_fs(File* file, int32 length); -int32 stat_fs(FileSystemNode *node, struct stat *buf); -FileSystemDirent* readdir_fs(FileSystemNode* node, uint32 index); -FileSystemNode* finddir_fs(FileSystemNode* node, char* name); -BOOL mkdir_fs(FileSystemNode *node, const char* name, uint32 flags); -void* mmap_fs(File* file, uint32 size, uint32 offset, uint32 flags); -BOOL munmap_fs(File* file, void* address, uint32 size); -int getFileSystemNodePath(FileSystemNode* node, char* buffer, uint32 bufferSize); -BOOL resolvePath(const char* path, char* buffer, int bufferSize); - -void initializeVFS(); -FileSystemNode* getFileSystemRootNode(); -FileSystemNode* getFileSystemNode(const char* path); -FileSystemNode* getFileSystemNodeAbsoluteOrRelative(const char* path, Process* process); -void copyFileDescriptors(Process* fromProcess, Process* toProcess); - -BOOL registerFileSystem(FileSystem* fs); -BOOL mountFileSystem(const char *source, const char *target, const char *fsType, uint32 flags, void *data); -BOOL checkMountFileSystem(const char *source, const char *target, const char *fsType, uint32 flags, void *data); - -#endif |