Adjustments to VFS API
This commit is contained in:
parent
e366dc75d8
commit
335b386463
|
|
@ -73,6 +73,7 @@ uint32_t module_api(uint32_t func, ...){
|
|||
file = va_arg(vars, vfile_t *);
|
||||
buffer = va_arg(vars, char *);
|
||||
offset = va_arg(vars, uint32_t), count = va_arg(vars, uint32_t);
|
||||
count = va_arg(vars, uint32_t);
|
||||
return_value = fwrite(file, buffer, offset, count);
|
||||
break;
|
||||
case MODULE_API_CREAT:
|
||||
|
|
@ -91,6 +92,13 @@ uint32_t module_api(uint32_t func, ...){
|
|||
name = va_arg(vars, char *);
|
||||
return_value = (uint32_t)fopen(name);
|
||||
break;
|
||||
case MODULE_API_READDIR:
|
||||
file = va_arg(vars, vfile_t *);
|
||||
buffer = va_arg(vars, void *);
|
||||
offset = va_arg(vars, uint32_t);
|
||||
count = va_arg(vars, uint32_t);
|
||||
return_value = readdir(file, buffer, offset, count);
|
||||
break;
|
||||
case MODULE_API_MAP:
|
||||
return_value = 0;
|
||||
void *vaddr = va_arg(vars, void *);
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ enum MODULE_API_FUNCS{
|
|||
MODULE_API_CREAT, //create a virtual file and assigns it to the the proper module (requires having a read and write function passed)
|
||||
MODULE_API_DELET, //delete a virtual file
|
||||
MODULE_API_OPEN,
|
||||
MODULE_API_READDIR,
|
||||
MODULE_API_MAP, //map physical address to virtual address
|
||||
MODULE_API_UNMAP, //unmap physical address to virtual address
|
||||
MODULE_API_PADDR, //get physical address of memory
|
||||
|
|
|
|||
|
|
@ -9,8 +9,8 @@ vfile_t root_dir = {"/", FS_FILE_IS_DIR | FS_FILE_SYSTEM};
|
|||
|
||||
void vfs_init(){
|
||||
mlog(MODULE_NAME, "Initializing VFS\n", MLOG_PRINT);
|
||||
// root_dir.access.data.ptr = kmalloc(1);
|
||||
// root_dir.access.data.size_pgs = 1;
|
||||
root_dir.ptr = kmalloc(1);
|
||||
root_dir.size = 4096;//one page is 4096 bytes
|
||||
}
|
||||
|
||||
void add_file(vfile_t *vfile, vfile_t *current_dir){
|
||||
|
|
@ -25,7 +25,6 @@ int fdelete(vfile_t *file_entry){
|
|||
return 0;
|
||||
}
|
||||
|
||||
// navya was here https://github.com/novabansal
|
||||
int fwrite(vfile_t *file_entry, void *byte_array, uint32_t offset, uint32_t count){
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -34,7 +33,11 @@ int fread(vfile_t *file_entry, void *byte_array, uint32_t offset, uint32_t count
|
|||
return 0;
|
||||
}
|
||||
|
||||
vfile_t *lookup(char *name, vfile_t dir){
|
||||
// vfile_t *lookup(char *name, vfile_t dir){
|
||||
// return 0;
|
||||
// }
|
||||
|
||||
int readdir(vfile_t* file, vfile_t *buffer, uint32_t offset, uint32_t count){
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -15,23 +15,26 @@ typedef struct virtual_file{
|
|||
char name[256];
|
||||
FS_FILE_FLAGS flags;
|
||||
int (*delete)(struct virtual_file *file_entry);
|
||||
struct virtual_file *(*create)(char *name, FS_FILE_FLAGS flags);
|
||||
struct virtual_file *(*create)(char *path, FS_FILE_FLAGS flags);
|
||||
int (*write)(struct virtual_file *file_entry, void *data, uint32_t offset, uint32_t count);
|
||||
int (*read)(struct virtual_file *file_entry, void *data, uint32_t offset, uint32_t count);
|
||||
struct virtual_file *(*open)(char *name);
|
||||
struct virtual_file **(*lookup)(char *name);
|
||||
struct virtual_file *(*open)(char *path);
|
||||
// struct virtual_file **(*lookup)(char *name);
|
||||
int (*readdir)(struct virtual_file* file, struct virtual_file *buffer, uint32_t count, uint32_t offset);
|
||||
|
||||
uint32_t id;//for use in drivers
|
||||
void * ptr; //also for use in drivers
|
||||
void *ptr; //also for use in drivers
|
||||
uint32_t size;
|
||||
uint32_t offset; //for use in drivers
|
||||
|
||||
}vfile_t;
|
||||
|
||||
// vfile_t *lookup(char *name, vfile_t dir);
|
||||
void vfs_init();
|
||||
vfile_t *fcreate(char *name, FS_FILE_FLAGS flags);
|
||||
int fdelete(vfile_t* file_entry);
|
||||
int fwrite(vfile_t *file_entry, void *byte_array, uint32_t offset, uint32_t count);
|
||||
int fread(vfile_t *file_entry, void *byte_array, uint32_t offset, uint32_t count);
|
||||
vfile_t *lookup(char *name, vfile_t dir);
|
||||
vfile_t *fopen(char *name);
|
||||
int readdir(vfile_t* file, struct virtual_file *buffer, uint32_t offset, uint32_t count);
|
||||
|
||||
vfile_t *fopen(char *path);
|
||||
|
|
@ -602,9 +602,16 @@ void init(KOS_MAPI_FP module_api, uint32_t api_version){
|
|||
if(!pci_drive_dir){
|
||||
return;
|
||||
}
|
||||
vfile_t **dir_data = (pci_drive_dir->ptr);
|
||||
for(uint32_t i = 0; dir_data[i]; i++){
|
||||
vfile_t *current_file = dir_data[i];
|
||||
// vfile_t **dir_data = (pci_drive_dir->ptr);
|
||||
|
||||
const uint32_t PCI_SEARCH_COUNT = 64;
|
||||
|
||||
vfile_t *dir_data = malloc(api, (PCI_SEARCH_COUNT * sizeof(vfile_t) + 4095)/4096);
|
||||
|
||||
api(MODULE_API_READDIR, pci_drive_dir, dir_data, 0, 128);
|
||||
|
||||
for(uint32_t i = 0; PCI_SEARCH_COUNT; i++){
|
||||
vfile_t *current_file = &(dir_data[i]);
|
||||
uint32_t class = 0;
|
||||
fread(api, current_file, &class, 0x8, 1);
|
||||
uint32_t progif = class >> 8 & 0xff;
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ enum MODULE_API_FUNCS{
|
|||
MODULE_API_CREAT, //create a virtual file and assigns it to the the proper module (requires having a read and write function passed)
|
||||
MODULE_API_DELET, //delete a virtual file
|
||||
MODULE_API_OPEN,
|
||||
MODULE_API_READDIR,
|
||||
MODULE_API_MAP, //map physical address to virtual address
|
||||
MODULE_API_UNMAP, //unmap physical address to virtual address
|
||||
MODULE_API_PADDR, //get physical address of memory
|
||||
|
|
@ -67,14 +68,15 @@ typedef struct virtual_file{
|
|||
char name[256];
|
||||
FS_FILE_FLAGS flags;
|
||||
int (*delete)(struct virtual_file *file_entry);
|
||||
struct virtual_file *(*create)(char *name, FS_FILE_FLAGS flags);
|
||||
struct virtual_file *(*create)(char *path, FS_FILE_FLAGS flags);
|
||||
int (*write)(struct virtual_file *file_entry, void *data, uint32_t offset, uint32_t count);
|
||||
int (*read)(struct virtual_file *file_entry, void *data, uint32_t offset, uint32_t count);
|
||||
struct virtual_file *(*open)(char *name);
|
||||
struct virtual_file **(*lookup)(char *name);
|
||||
struct virtual_file *(*open)(char *path);
|
||||
// struct virtual_file **(*lookup)(char *name);
|
||||
int (*readdir)(struct virtual_file* file, struct virtual_file *buffer, uint32_t count, uint32_t offset);
|
||||
|
||||
uint32_t id;//for use in drivers
|
||||
void * ptr; //also for use in drivers
|
||||
void *ptr; //also for use in drivers
|
||||
uint32_t size;
|
||||
uint32_t offset; //for use in drivers
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue