diff options
Diffstat (limited to 'include/kernel')
| -rw-r--r-- | include/kernel/fs.h | 46 | ||||
| -rw-r--r-- | include/kernel/hd.h | 7 | ||||
| -rw-r--r-- | include/kernel/sys.h | 33 |
3 files changed, 66 insertions, 20 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 diff --git a/include/kernel/hd.h b/include/kernel/hd.h index 292b92e..2a2f3c6 100644 --- a/include/kernel/hd.h +++ b/include/kernel/hd.h @@ -2,8 +2,11 @@ #define _HD_H #include <stdint.h> +#include <sys/types.h> -int hd_read(void*, uint32_t, uint8_t); -int hd_write(void*, uint32_t, uint8_t); +void hd_init(void); + +size_t hd_read_block(void*, size_t , size_t); +size_t hd_write_block(void*, size_t , size_t); #endif diff --git a/include/kernel/sys.h b/include/kernel/sys.h index 1b8be8e..95cfb79 100644 --- a/include/kernel/sys.h +++ b/include/kernel/sys.h @@ -1,31 +1,30 @@ typedef int (*syscall_t) (void); -extern int sys_time(void); -extern int sys_time(void); -extern int sys_getpid(void); -extern int sys_getpdir(void); -extern int sys_signal(void); extern int sys_alarm(void); -extern int sys_pause(void); extern int sys_ctty(void); -extern int sys_read(void); -extern int sys_write(void); +extern int sys_getpdir(void); +extern int sys_getpid(void); extern int sys_kill(void); extern int sys_panic(void); +extern int sys_pause(void); +extern int sys_read(void); +extern int sys_signal(void); +extern int sys_time(void); +extern int sys_write(void); extern int sys_dummy(void); syscall_t call_table[256] = { - [0] = &sys_time, - [1] = &sys_getpid, + [0] = &sys_alarm, + [1] = &sys_ctty, [2] = &sys_getpdir, - [3] = &sys_signal, - [4] = &sys_alarm, - [5] = &sys_pause, - [6] = &sys_ctty, + [3] = &sys_getpid, + [4] = &sys_kill, + [5] = &sys_panic, + [6] = &sys_pause, [7] = &sys_read, - [8] = &sys_write, - [9] = &sys_kill, - [10] = &sys_panic, + [8] = &sys_signal, + [9] = &sys_time, + [10] = &sys_write, [11] = &sys_dummy, [12] = &sys_dummy, [13] = &sys_dummy, |
