diff options
author | Freya Murphy <freya@freyacat.org> | 2025-04-21 11:41:34 -0400 |
---|---|---|
committer | Freya Murphy <freya@freyacat.org> | 2025-04-21 11:41:34 -0400 |
commit | 2ee0e24dfd5319f128ed49b4f47679b7c13b21bf (patch) | |
tree | d250af94c434acd54180a1b529b0407d8013890e /kernel/include | |
parent | Merge branch 'main' of github.com:kenshineto/kern (diff) | |
download | comus-2ee0e24dfd5319f128ed49b4f47679b7c13b21bf.tar.gz comus-2ee0e24dfd5319f128ed49b4f47679b7c13b21bf.tar.bz2 comus-2ee0e24dfd5319f128ed49b4f47679b7c13b21bf.zip |
fs read/write functions, initrd
Diffstat (limited to 'kernel/include')
-rw-r--r-- | kernel/include/comus/drivers/ata.h | 2 | ||||
-rw-r--r-- | kernel/include/comus/fs.h | 31 | ||||
-rw-r--r-- | kernel/include/comus/limits.h | 4 | ||||
-rw-r--r-- | kernel/include/comus/mboot.h | 5 |
4 files changed, 30 insertions, 12 deletions
diff --git a/kernel/include/comus/drivers/ata.h b/kernel/include/comus/drivers/ata.h index 66b3ba5..2f35e03 100644 --- a/kernel/include/comus/drivers/ata.h +++ b/kernel/include/comus/drivers/ata.h @@ -10,6 +10,8 @@ #ifndef ATA_H_ #define ATA_H_ +#define ATA_SECT_SIZE 512 + #include <stdint.h> #include <stdbool.h> diff --git a/kernel/include/comus/fs.h b/kernel/include/comus/fs.h index fe335ca..048c7c5 100644 --- a/kernel/include/comus/fs.h +++ b/kernel/include/comus/fs.h @@ -11,10 +11,13 @@ #include <stdint.h> #include <stddef.h> +#include <comus/limits.h> +#include <comus/drivers/ata.h> -// FIXME: aaaa -#define MAX_DISKS 8 -#define MAX_FILE_NAME_LEN 256 +enum disk_type { + DISK_TYPE_ATA, + DISK_TYPE_RAMDISK, +}; struct disk { /// set to 1 in array to state that fs is defined @@ -23,12 +26,16 @@ struct disk { /// index into disks array /// system use only int id; - /// TODO: pci? inb/outb? - /// we need a structure to access disks and how to define them - /// IDE / SATA / .... ??? - /// we should probable create ide_disk, or sata_disk, and so on - /// then convert this part to a union with a tag specifier - /// we then need drivers for ide and/or sata, ide is easier + /// disk type + enum disk_type type; + /// internal disk device + union { + struct { + char *start; + size_t len; + } rd; + ide_device_t ide; + }; }; /** @@ -67,7 +74,7 @@ enum file_type { struct file { /// name of the file - char name[MAX_FILE_NAME_LEN]; + char name[N_FILE_NAME]; /// parent directory of the file struct file_s *parent; /// type of the file @@ -159,10 +166,10 @@ struct file_system { }; // list of all disks on the system -extern struct disk fs_disks[MAX_DISKS]; +extern struct disk fs_disks[N_DISKS]; // list of all loaded file systems for each disk -extern struct file_system fs_loaded_file_systems[MAX_DISKS]; +extern struct file_system fs_loaded_file_systems[N_DISKS]; /** * Initalize file system structures diff --git a/kernel/include/comus/limits.h b/kernel/include/comus/limits.h index b6c596b..675df47 100644 --- a/kernel/include/comus/limits.h +++ b/kernel/include/comus/limits.h @@ -18,6 +18,10 @@ /// max memory entires #define N_MMAP_ENTRY 256 +/// max fs limits +#define N_FILE_NAME 256 +#define N_DISKS 8 + /// length of terminal buffer #define TERM_MAX_WIDTH 1920 #define TERM_MAX_HEIGHT 1080 diff --git a/kernel/include/comus/mboot.h b/kernel/include/comus/mboot.h index 036cc40..aba3e4e 100644 --- a/kernel/include/comus/mboot.h +++ b/kernel/include/comus/mboot.h @@ -42,4 +42,9 @@ EFI_SYSTEM_TABLE *mboot_get_efi_st(void); */ EFI_HANDLE mboot_get_efi_hdl(void); +/** + * Returns the pointer to the loaded init ram disk with size given by len + */ +void *mboot_get_initrd(size_t *len); + #endif /* mboot.h */ |