diff options
Diffstat (limited to 'include/kernel/fs.h')
| -rw-r--r-- | include/kernel/fs.h | 46 |
1 files changed, 45 insertions, 1 deletions
diff --git a/include/kernel/fs.h b/include/kernel/fs.h index 8f21110..a2b0086 100644 --- a/include/kernel/fs.h +++ b/include/kernel/fs.h @@ -4,10 +4,14 @@ #include <stdint.h> #include <sys/types.h> -#define BLOCK_SIZE 1024 +#define NRSUPER 8 #define NRFILE 128 #define NROPEN 32 +/* these shouldn't change */ +#define BLOCK_SIZE 1024 +#define SUPER_MAGIC 0x137F + struct file { uint16_t f_mode; uint16_t f_flags; @@ -15,4 +19,44 @@ struct file { off_t f_pos; }; +struct super_block { + uint16_t s_ninodes; + uint16_t s_nzones; + uint16_t s_imap_blocks; + uint16_t s_zmap_blocks; + uint16_t s_firstdatazone; + uint16_t s_log_zone_size; + uint32_t s_max_size; + uint16_t s_magic; + /* loaded in memory only */ + struct s_buff *s_imap[8]; + struct s_buff *s_zmap[8]; + uint16_t s_dev; + uint16_t s_dirt; + uint16_t s_start; + uint16_t s_super; + uint16_t s_imap_off; + uint16_t s_zmap_off; + uint16_t s_inode_off; +} __attribute__((packed)); + +struct m_inode { + uint16_t i_mode; + uint16_t i_uid; + uint32_t i_size; + uint32_t i_mtime; + uint8_t i_gid; + uint8_t i_nlinks; + uint16_t i_zone[9]; +} __attribute__((packed)); + +extern struct super_block sblocks[NRSUPER]; + +size_t block_read(void*, size_t , size_t); +size_t block_write(void*, size_t , size_t); + +void mount_root(void); + +void fs_init(void); + #endif |
