|
XenevaOS
|
#include <stdint.h>#include <list.h>#include <aurora.h>
Go to the source code of this file.
Classes | |
| struct | _AuDirectoryEnty_ |
| struct | __VFS_NODE__ |
| struct | _AuFileStatus_ |
| struct | _FileControl_ |
| struct | __VFS_Container__ |
| AuVFSContainer – is a container which contains list of nodes/directories another directory will point to another newly created container. More... | |
Macros | |
| #define | FS_FLAG_DIRECTORY (1<<1) |
| #define | FS_FLAG_GENERAL (1<<2) |
| #define | FS_FLAG_DEVICE (1<<3) |
| #define | FS_FLAG_DELETED (1<<4) |
| #define | FS_FLAG_INVALID (1<<5) |
| #define | FS_FLAG_FILE_SYSTEM (1<<6) |
| #define | FS_FLAG_PIPE (1<<7) |
| #define | FS_FLAG_TTY (1<<8) |
| #define | FS_FLAG_SOCKET (1<<9) |
| #define | FS_FLAG_FILE_SYSTEM_GENERAL (1<<10) |
| #define | FS_STATUS_FOUND 0x1 |
| #define | FS_STATUS_NF 0x0 |
| #define | VFS_MEDIA_TYPE_AHCI 0x1 |
| #define | VFS_MEDIA_TYPE_IDE 0x2 |
| #define | VFS_MEDIA_TYPE_OTHER 0x3 |
| #define | FILE_OPEN_READ_ONLY (1<<1) |
| #define | FILE_OPEN_WRITE (1<<2) |
| #define | FILE_OPEN_CREAT (1<<3) |
Typedefs | |
| typedef struct _AuDirectoryEnty_ | AuDirectoryEntry |
| typedef struct __VFS_NODE__ *(* | open_callback) (struct __VFS_NODE__ *node, char *path) |
| typedef size_t(* | read_callback) (struct __VFS_NODE__ *node, struct __VFS_NODE__ *file, uint64_t *buffer, uint32_t length) |
| typedef size_t(* | read_block_callback) (struct __VFS_NODE__ *node, struct __VFS_NODE__ *file, uint64_t *buffer) |
| typedef size_t(* | write_callback) (struct __VFS_NODE__ *node, struct __VFS_NODE__ *file, uint64_t *buffer, uint32_t length) |
| typedef struct __VFS_NODE__ *(* | create_dir_callback) (struct __VFS_NODE__ *node, char *dirname) |
| typedef struct __VFS_NODE__ *(* | create_file_callback) (struct __VFS_NODE__ *node, char *filename) |
| typedef int(* | remove_dir_callback) (struct __VFS_NODE__ *node, struct __VFS_NODE__ *file) |
| typedef int(* | remove_file_callback) (struct __VFS_NODE__ *node, struct __VFS_NODE__ *file) |
| typedef int(* | close_callback) (struct __VFS_NODE__ *node, struct __VFS_NODE__ *file) |
| typedef int(* | iocontrol_callback) (struct __VFS_NODE__ *file, int code, void *arg) |
| typedef struct __VFS_NODE__ *(* | opendir_callback) (struct __VFS_NODE__ *fs, char *dirname) |
| typedef int(* | readdir_callback) (struct __VFS_NODE__ *fs, struct __VFS_NODE__ *dir, AuDirectoryEntry *dirent) |
| typedef uint32_t(* | get_disk_block) (struct __VFS_NODE__ *fs, struct __VFS_NODE__ *file, uint64_t fs_block) |
| typedef size_t(* | fs_getblockfor) (struct __VFS_NODE__ *fs, struct __VFS_NODE__ *file, uint64_t offset) |
| typedef struct __VFS_NODE__ | AuVFSNode |
| typedef struct _AuFileStatus_ | AuFileStatus |
| typedef struct _FileControl_ | AuFileIOControl |
| typedef struct __VFS_Container__ | AuVFSContainer |
| AuVFSContainer – is a container which contains list of nodes/directories another directory will point to another newly created container. | |
Functions | |
| void | AuVFSInitialise () |
| AuVFSInitialise – initialise the virtual file system. | |
| AU_EXTERN AU_EXPORT AuVFSNode * | AuVFSOpen (char *path) |
| AuVFSOpen – Opens a file. | |
| AU_EXTERN AU_EXPORT int | AuVFSNodeIOControl (AuVFSNode *node, int code, void *arg) |
| AuVFSNodeIOControl – Calls node's iocontrol pointer. | |
| AU_EXTERN AU_EXPORT void | AuVFSAddFileSystem (AuVFSNode *node) |
| AuVFSAddFileSystem – adds a file system to the vfs list. | |
| AU_EXTERN AU_EXPORT void | AuVFSRegisterRoot (AuVFSNode *fs) |
| AuVFSRegisterRoot – register the root file system. | |
| AU_EXTERN AU_EXPORT AuVFSNode * | AuVFSFind (char *path) |
| AuVFSFind – Searches a filesystem an return it to the caller. | |
| AU_EXTERN AU_EXPORT size_t | AuVFSNodeRead (AuVFSNode *node, AuVFSNode *file, uint64_t *buffer, uint32_t length) |
| AuVFSNodeRead – read from file system. | |
| AU_EXTERN AU_EXPORT size_t | AuVFSNodeReadBlock (AuVFSNode *node, AuVFSNode *file, uint64_t *buffer) |
| AuVFSNodeReadBlock – read a block size data from file system. | |
| AU_EXTERN AU_EXPORT AuVFSNode * | AuVFSCreateDir (AuVFSNode *fsys, char *dirname) |
| AuVFSCreateDir – creates a new dir. | |
| AU_EXTERN AU_EXPORT AuVFSNode * | AuVFSCreateFile (AuVFSNode *fsys, char *filename) |
| AuVFSCreateFile – create a new file. | |
| int | AuVFSRemoveFile (AuVFSNode *fsys, AuVFSNode *file) |
| AuVFSRemoveFile –remove a file from a file system. | |
| int | AuVFSRemoveDir (AuVFSNode *fsys, AuVFSNode *file) |
| AuVFSRemoveFile –remove a file from a file system. | |
| AU_EXTERN AU_EXPORT void | AuVFSNodeWrite (AuVFSNode *node, AuVFSNode *file, uint64_t *buffer, uint32_t length) |
| AuVFSNodeWrite – write to file system. | |
| AU_EXTERN AU_EXPORT void | AuVFSNodeClose (AuVFSNode *node, AuVFSNode *file) |
| AuVFSNodeClose – close a file system or file. | |
| AU_EXTERN AU_EXPORT size_t | AuVFSGetBlockFor (AuVFSNode *node, AuVFSNode *file, uint64_t offset) |
| AuVFSGetBlockFor – returns a block number for certain byte offset of file. | |
BSD 2-Clause License
Copyright (c) 2022-2023, Manas Kamal Choudhury All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
| #define FILE_OPEN_CREAT (1<<3) |
| #define FILE_OPEN_READ_ONLY (1<<1) |
| #define FILE_OPEN_WRITE (1<<2) |
| #define FS_FLAG_DELETED (1<<4) |
| #define FS_FLAG_DEVICE (1<<3) |
| #define FS_FLAG_DIRECTORY (1<<1) |
| #define FS_FLAG_FILE_SYSTEM (1<<6) |
| #define FS_FLAG_FILE_SYSTEM_GENERAL (1<<10) |
| #define FS_FLAG_GENERAL (1<<2) |
| #define FS_FLAG_INVALID (1<<5) |
| #define FS_FLAG_PIPE (1<<7) |
| #define FS_FLAG_SOCKET (1<<9) |
| #define FS_FLAG_TTY (1<<8) |
| #define FS_STATUS_FOUND 0x1 |
| #define FS_STATUS_NF 0x0 |
| #define VFS_MEDIA_TYPE_AHCI 0x1 |
| #define VFS_MEDIA_TYPE_IDE 0x2 |
| #define VFS_MEDIA_TYPE_OTHER 0x3 |
| typedef struct _AuDirectoryEnty_ AuDirectoryEntry |
| typedef struct _FileControl_ AuFileIOControl |
| typedef struct _AuFileStatus_ AuFileStatus |
| typedef struct __VFS_Container__ AuVFSContainer |
AuVFSContainer – is a container which contains list of nodes/directories another directory will point to another newly created container.
| typedef struct __VFS_NODE__ AuVFSNode |
| typedef int(* close_callback) (struct __VFS_NODE__ *node, struct __VFS_NODE__ *file) |
| typedef struct __VFS_NODE__ *(* create_dir_callback) (struct __VFS_NODE__ *node, char *dirname) |
| typedef struct __VFS_NODE__ *(* create_file_callback) (struct __VFS_NODE__ *node, char *filename) |
| typedef size_t(* fs_getblockfor) (struct __VFS_NODE__ *fs, struct __VFS_NODE__ *file, uint64_t offset) |
| typedef uint32_t(* get_disk_block) (struct __VFS_NODE__ *fs, struct __VFS_NODE__ *file, uint64_t fs_block) |
| typedef int(* iocontrol_callback) (struct __VFS_NODE__ *file, int code, void *arg) |
| typedef struct __VFS_NODE__ *(* open_callback) (struct __VFS_NODE__ *node, char *path) |
| typedef struct __VFS_NODE__ *(* opendir_callback) (struct __VFS_NODE__ *fs, char *dirname) |
| typedef size_t(* read_block_callback) (struct __VFS_NODE__ *node, struct __VFS_NODE__ *file, uint64_t *buffer) |
| typedef size_t(* read_callback) (struct __VFS_NODE__ *node, struct __VFS_NODE__ *file, uint64_t *buffer, uint32_t length) |
| typedef int(* readdir_callback) (struct __VFS_NODE__ *fs, struct __VFS_NODE__ *dir, AuDirectoryEntry *dirent) |
| typedef int(* remove_dir_callback) (struct __VFS_NODE__ *node, struct __VFS_NODE__ *file) |
| typedef int(* remove_file_callback) (struct __VFS_NODE__ *node, struct __VFS_NODE__ *file) |
| typedef size_t(* write_callback) (struct __VFS_NODE__ *node, struct __VFS_NODE__ *file, uint64_t *buffer, uint32_t length) |
AuVFSAddFileSystem – adds a file system to the vfs list.
| node | – file system node to add |
AuVFSCreateDir – creates a new dir.
| fsys | – Pointer to file system |
| dirname | – directory name |
AuVFSCreateFile – create a new file.
| fsys | – Pointer to file system |
| filename | – filename |
AuVFSFind – Searches a filesystem an return it to the caller.
| path | – path of the file system |
AuVFSGetBlockFor – returns a block number for certain byte offset of file.
| node | – file system node |
| file | – pointer to file structure |
| offset | – byte offset |
|
extern |
AuVFSInitialise – initialise the virtual file system.
AuVFSNodeClose – close a file system or file.
| node | – file system node to use |
| file | – file to close |
AuVFSNodeIOControl – Calls node's iocontrol pointer.
| node | – pointer to fsnode |
| code | – code to pass |
| arg | – extra arguments |
| AU_EXTERN AU_EXPORT size_t AuVFSNodeRead | ( | AuVFSNode * | node, |
| AuVFSNode * | file, | ||
| uint64_t * | buffer, | ||
| uint32_t | length | ||
| ) |
AuVFSNodeRead – read from file system.
| node | – file system node to use |
| file | – file information to use |
| buffer | – buffer to write to |
| length | – length of the file |
| AU_EXTERN AU_EXPORT size_t AuVFSNodeReadBlock | ( | AuVFSNode * | node, |
| AuVFSNode * | file, | ||
| uint64_t * | buffer | ||
| ) |
AuVFSNodeReadBlock – read a block size data from file system.
| node | – file system node to use |
| file | – file node to use |
| buffer | – buffer area to read to |
| AU_EXTERN AU_EXPORT void AuVFSNodeWrite | ( | AuVFSNode * | node, |
| AuVFSNode * | file, | ||
| uint64_t * | buffer, | ||
| uint32_t | length | ||
| ) |
AuVFSNodeWrite – write to file system.
| node | – file system node to use |
| file | – file node to use |
| buffer | – buffer to write |
| length | – length of the data |
AuVFSOpen – Opens a file.
| path | – path to open |
| path | – path to open |
Here check the eof bit, if EOF bit is not marked 1 this file is on used, we need to create a new file on memory, if eof is marked, already file is free on cache, we can reuse it, memory bachane ka clever technique broo/babe
AuVFSRegisterRoot – register the root file system.
| fs | – fsnode to add |
AuVFSRemoveFile –remove a file from a file system.
| fsys | – Pointer to file system |
| file | – Pointer to file to remove |
AuVFSRemoveFile –remove a file from a file system.
| fsys | – Pointer to file system |
| file | – Pointer to directory needs to be deleted |