550W Document
550W, a high-end OS
fs.h
浏览该文件的文档.
1 #pragma once
2 
3 #include <common/types.h>
4 
5 // #define O_RDONLY 0x000
6 // #define O_WRONLY 0x001
7 // #define O_RDWR 0x002 // 可读可写
8 // //#define O_CREATE 0x200
9 // #define O_CREATE 0x40
10 // #define O_DIRECTORY 0x0200000
11 
12 #define DIR 0x040000
13 #define FILE 0x100000
14 
15 // #define AT_FDCWD -100
16 
17 #define SEEK_SET 0
18 #define SEEK_CUR 1
19 #define SEEK_END 2
20 
21 #define STDIN 0
22 #define STDOUT 1
23 #define STDERR 2
24 #define STDMAX 3
25 
26 #define stdin STDIN
27 #define stdout STDOUT
28 #define stderr STDERR
29 
30 typedef struct super_block {
31  int magic;
33  int size;
46 
47 typedef struct dir_entry {
48  char name[20];
49  int inode_id;
50  int last;
51  int mode;
53 
54 typedef struct fentry {
55  int inodeid;
56  int prive;
57  int pos_block;
60 
61 typedef struct dirent64 {
62  uint64_t d_ino;
63  int64_t d_off;
64  unsigned short d_reclen;
65  unsigned char d_type;
66  char d_name[];
68 
69 typedef struct kstat {
77  unsigned long __pad;
80  int __pad2;
88  unsigned __unused[2];
90 
91 extern int fs_start_sec;
92 extern int magic_number;
93 extern int sb_sec_offset;
94 extern int sb2_sec_offset;
95 
96 extern uint64_t iab_map_addr_offset;
97 extern uint64_t sec_map_addr_offset;
98 extern uint64_t iab_map_addr_size;
99 
100 extern uint64_t inode_addr_offset;
101 extern uint64_t dir_addr_offset;
102 extern uint64_t dir2_addr_offset;
103 extern uint64_t dir3_addr_offset;
104 extern uint64_t dir4_addr_offset;
105 extern uint64_t data_addr_offset;
106 extern uint64_t empty_block;
107 
108 // extern fentry_t fd[20];
109 // extern int nowfid;
110 // extern int freefid[20];
111 // extern int freenum;
112 
113 int fs_load_file(const char *name, uint8_t **bin, int *len);
114 
115 // [FUNCTION REQUIREMENTS]
116 bool fs_check_file_existence(const char *name);
117 
118 int fs_init();
119 
120 long sys_getcwd(char *buf, size_t size);
121 int sys_pipe2(int *fd, mode_t flags);
122 int sys_dup(int old);
123 int sys_dup3(int old, int new, mode_t flags);
124 int sys_mkdirat(int dirfd, const char *path, mode_t mode);
125 int sys_chdir(char *path);
126 int sys_getdents64(int fd, dirent64_t *dirent, size_t len);
127 int sys_openat(int dirfd, const char *filename, mode_t flags, mode_t mode);
128 int sys_close(int fd);
129 int sys_linkat(int old, const char *oldname, int newd, const char *newname, mode_t flags);
130 int sys_unlinkat(int dirfd, const char *path, mode_t flags);
131 int sys_mount(const char *special, const char *dir, const char *type, mode_t flags, void *data);
132 int sys_umount2(const char *special, mode_t flags);
133 ssize_t sys_read(int fd, char *buf, size_t count);
134 ssize_t sys_write(int fd, const char *buf, size_t count);
135 int sys_fstat(int fd, kstat_t *statbuf);
136 void *sys_mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset);
137 int sys_munmap(void *addr, size_t length);
uint8_t type
Definition: fat32.h:3
int64_t off_t
Definition: file.h:31
uint32_t mode_t
Definition: file.h:27
uint64_t sec_map_addr_offset
int magic_number
uint64_t iab_map_addr_size
ssize_t sys_write(int fd, const char *buf, size_t count)
Definition: fs.c:1263
int sys_mount(const char *special, const char *dir, const char *type, mode_t flags, void *data)
Definition: fs.c:1206
int fs_load_file(const char *name, uint8_t **bin, int *len)
load elf file in root dir, 0 success, -1 fail
Definition: fs.c:1357
int sys_munmap(void *addr, size_t length)
Definition: fs.c:1393
int sys_pipe2(int *fd, mode_t flags)
allocate pipe to fd[2].
Definition: fs.c:858
struct dirent64 dirent64_t
uint64_t empty_block
int sb2_sec_offset
int sys_dup(int old)
copy a fd and return the new one
Definition: fs.c:893
void * sys_mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset)
Definition: fs.c:1377
int sys_linkat(int old, const char *oldname, int newd, const char *newname, mode_t flags)
Definition: fs.c:1106
int sys_mkdirat(int dirfd, const char *path, mode_t mode)
mk dir at patch, success 0 fail -1
Definition: fs.c:934
int sys_dup3(int old, int new, mode_t flags)
copy a fd and return the new one
Definition: fs.c:915
uint64_t dir3_addr_offset
uint64_t data_addr_offset
ssize_t sys_read(int fd, char *buf, size_t count)
read count bytes to buf of fd file
Definition: fs.c:1222
int sb_sec_offset
struct dir_entry dir_entry_t
uint64_t inode_addr_offset
int sys_chdir(char *path)
change dir by patch, fail return -1
Definition: fs.c:981
struct kstat kstat_t
int sys_openat(int dirfd, const char *filename, mode_t flags, mode_t mode)
open a file with path/cwd+path/dirfd+path
Definition: fs.c:1037
int sys_unlinkat(int dirfd, const char *path, mode_t flags)
rm file directed by path, 0 success -1 fail
Definition: fs.c:1158
long sys_getcwd(char *buf, size_t size)
Definition: fs.c:847
uint64_t dir2_addr_offset
int sys_close(int fd)
Definition: fs.c:1102
uint64_t dir4_addr_offset
struct super_block super_block_t
struct fentry fentry_t
int sys_fstat(int fd, kstat_t *statbuf)
Definition: fs.c:1307
int fs_start_sec
bool fs_check_file_existence(const char *name)
Definition: fs.c:1423
uint64_t iab_map_addr_offset
int sys_umount2(const char *special, mode_t flags)
Definition: fs.c:1211
int fs_init()
Definition: fs.c:665
uint64_t dir_addr_offset
int sys_getdents64(int fd, dirent64_t *dirent, size_t len)
Definition: fs.c:1006
Definition: virtio.h:78
Definition: fs.h:47
int last
Definition: fs.h:50
char name[20]
Definition: fs.h:48
int mode
Definition: fs.h:51
int inode_id
Definition: fs.h:49
Definition: fs.h:61
char d_name[]
Definition: fs.h:66
unsigned char d_type
Definition: fs.h:65
unsigned short d_reclen
Definition: fs.h:64
int64_t d_off
Definition: fs.h:63
uint64_t d_ino
Definition: fs.h:62
Definition: file.h:33
Definition: fs.h:54
int pos_block
Definition: fs.h:57
int inodeid
Definition: fs.h:55
int prive
Definition: fs.h:56
int pos_offset
Definition: fs.h:58
Definition: fs.h:69
long st_ctime_nsec
Definition: fs.h:87
uint32 st_gid
Definition: fs.h:75
uint64 st_ino
Definition: fs.h:71
int __pad2
Definition: fs.h:80
long st_mtime_sec
Definition: fs.h:84
uint32 st_uid
Definition: fs.h:74
long st_ctime_sec
Definition: fs.h:86
uint64 st_dev
Definition: fs.h:70
mode_t st_mode
Definition: fs.h:72
uint64 st_blocks
Definition: fs.h:81
uint32 st_blksize
Definition: fs.h:79
unsigned long __pad
Definition: fs.h:77
long st_atime_nsec
Definition: fs.h:83
off_t st_size
Definition: fs.h:78
unsigned __unused[2]
Definition: fs.h:88
long st_atime_sec
Definition: fs.h:82
uint64 st_rdev
Definition: fs.h:76
long st_mtime_nsec
Definition: fs.h:85
uint32 st_nlink
Definition: fs.h:73
Definition: fs.h:30
int sector_used
Definition: fs.h:42
int imap_sec_size
Definition: fs.h:35
int data_sec_size
Definition: fs.h:41
int size
Definition: fs.h:33
int smap_sec_offset
Definition: fs.h:36
int root_inode_offset
Definition: fs.h:44
int inode_sec_size
Definition: fs.h:39
int magic
Definition: fs.h:31
int inode_sec_offset
Definition: fs.h:38
int fs_start_sec
Definition: fs.h:32
int imap_sec_offset
Definition: fs.h:34
int data_sec_offset
Definition: fs.h:40
int smap_sec_size
Definition: fs.h:37
int inode_used
Definition: fs.h:43
unsigned int uint32
Definition: types.h:37
unsigned long long uint64
Definition: types.h:39
intptr_t ssize_t
Definition: types.h:55