mirror of
https://github.com/subhobhai943/SUB-OS.git
synced 2026-10-25 16:52:29 +00:00
66 lines
1.5 KiB
C
66 lines
1.5 KiB
C
#ifndef _FS_EXT2_H
|
|
#define _FS_EXT2_H
|
|
|
|
#include <stdint.h>
|
|
#include <stddef.h>
|
|
#include <stdbool.h>
|
|
#include <fs/vfs.h>
|
|
|
|
#define EXT2_SUPER_MAGIC 0xEF53
|
|
|
|
/* ext2 Superblock Definition */
|
|
typedef struct {
|
|
uint32_t s_inodes_count;
|
|
uint32_t s_blocks_count;
|
|
uint32_t s_r_blocks_count;
|
|
uint32_t s_free_blocks_count;
|
|
uint32_t s_free_inodes_count;
|
|
uint32_t s_first_data_block;
|
|
uint32_t s_log_block_size;
|
|
uint32_t s_log_frag_size;
|
|
uint32_t s_blocks_per_group;
|
|
uint32_t s_frags_per_group;
|
|
uint32_t s_inodes_per_group;
|
|
uint32_t s_mtime;
|
|
uint32_t s_wtime;
|
|
uint16_t s_mnt_count;
|
|
uint16_t s_max_mnt_count;
|
|
uint16_t s_magic;
|
|
uint16_t s_state;
|
|
uint16_t s_errors;
|
|
uint16_t s_minor_rev_level;
|
|
uint32_t s_lastcheck;
|
|
uint32_t s_checkinterval;
|
|
uint32_t s_creator_os;
|
|
uint32_t s_rev_level;
|
|
uint16_t s_def_resuid;
|
|
uint16_t s_def_resgid;
|
|
} __attribute__((packed)) ext2_superblock_t;
|
|
|
|
/* ext2 Inode Structure */
|
|
typedef struct {
|
|
uint16_t i_mode;
|
|
uint16_t i_uid;
|
|
uint32_t i_size;
|
|
uint32_t i_atime;
|
|
uint32_t i_ctime;
|
|
uint32_t i_mtime;
|
|
uint32_t i_dtime;
|
|
uint16_t i_gid;
|
|
uint16_t i_links_count;
|
|
uint32_t i_blocks;
|
|
uint32_t i_flags;
|
|
uint32_t i_osd1;
|
|
uint32_t i_block[15];
|
|
uint32_t i_generation;
|
|
uint32_t i_file_acl;
|
|
uint32_t i_dir_acl;
|
|
uint32_t i_faddr;
|
|
uint8_t i_osd2[12];
|
|
} __attribute__((packed)) ext2_inode_t;
|
|
|
|
void ext2_init(void);
|
|
vfs_node_t* ext2_mount(const char* block_device_name);
|
|
|
|
#endif // _FS_EXT2_H
|