23#ifndef _MINIOS_FS_VFS_H_
24#define _MINIOS_FS_VFS_H_
32#define VFS_PATH_MAX 256
34#define VFS_FD_STDOUT 1
35#define VFS_FD_STDERR 2
36#define VFS_FIRST_OPEN_FD 3
39#define VFS_FILE_TYPE_REG 1
40#define VFS_FILE_TYPE_DIR 2
41#define VFS_FILE_TYPE_PIPE 3
42#define VFS_FILE_TYPE_SYMLINK 4
43#define VFS_FILE_TYPE_CHAR 5
44#define VFS_FILE_TYPE_BLK 6
45#define VFS_FILE_TYPE_SOCKET 7
46#define VFS_FILE_TYPE_UNIX_SOCKET 8
48#define VFS_DEVICE_NONE 0
49#define VFS_DEVICE_TTY 1
50#define VFS_DEVICE_NULL 2
91 uint32_t new_parent_ino,
const char *new_name);
128#define VFS_MAX_FS_TYPES 16
139 int (*
mount)(
const char *source,
const char *target,
const void *data);
143 int (*
mount)(
const char *source,
const char *target,
156 const char *target,
const void *data);
159#define VFS_MAX_MOUNTS 16
322int vfs_rename(
const char *oldpath,
const char *newpath);
struct vfs_inode_info vfs_inode_info_t
Definition ext2.h:29
int(*) vfs_dirent_cb_t(const char *name, uint8_t name_len, uint32_t inode, uint8_t file_type, void *ud)
Definition fs_types.h:29
struct idt_entry_t * offset
Definition irq.h:1
int mount(const char *source, const char *target, const char *fstype, unsigned long flags, const void *data)
Definition miniOS_compat.c:15
char name[16]
Definition vfs.h:131
int(*) mount(const char *source, const char *target, const void *data)
Definition vfs.h:139
Kernel socket state.
Definition net_socket.h:57
Definition unix_sock.h:20
char path[UNIX_SOCK_PATH_MAX]
Definition unix_sock.h:24
uint8_t buf[UNIX_SOCK_BUF_SIZE]
Definition unix_sock.h:28
uint32_t ref_count
Definition vfs.h:210
uint32_t inode
Definition vfs.h:201
vfs_ops_t * ops
Definition vfs.h:209
int flags
Definition vfs.h:207
uint32_t dev
Definition vfs.h:206
uint64_t size
Definition vfs.h:203
uint8_t in_use
Definition vfs.h:200
uint8_t ftype
Definition vfs.h:204
uint8_t device_type
Definition vfs.h:205
pipe_t * pipe
Definition vfs.h:211
int status_flags
Definition vfs.h:208
uint64_t offset
Definition vfs.h:202
uint32_t inode
Definition vfs.h:53
uint16_t mode
Definition vfs.h:58
uint64_t size
Definition vfs.h:57
uint32_t dev
Definition vfs.h:56
uint8_t device_type
Definition vfs.h:55
uint8_t file_type
Definition vfs.h:54
char mount_point[VFS_PATH_MAX]
Definition vfs.h:162
vfs_ops_t * ops
Definition vfs.h:163
uint32_t root_ino
Definition vfs.h:164
char device[32]
Definition vfs.h:166
char fstype[16]
Definition vfs.h:165
void(*) set_root(uint32_t root_ino)
Definition vfs.h:95
int(*) lookup(const char *path, vfs_inode_info_t *out)
Definition vfs.h:77
int(*) readlink(uint32_t ino, char *buf, uint32_t len)
Definition vfs.h:102
int(*) mknod(uint32_t parent_ino, const char *name, uint16_t mode, uint32_t dev, uint32_t *new_ino_out)
Definition vfs.h:112
int(*) unlink(uint32_t parent_ino, const char *name)
Definition vfs.h:89
void(*) unmount(void)
Definition vfs.h:124
int(*) mkdir(uint32_t parent_ino, const char *name, uint32_t *new_ino_out)
Definition vfs.h:92
int(*) rmdir(uint32_t parent_ino, const char *name)
Definition vfs.h:93
int(*) create(uint32_t parent_ino, const char *name, uint16_t mode, uint32_t *new_ino_out)
Definition vfs.h:88
int(*) truncate(uint32_t ino, uint64_t new_size)
Definition vfs.h:98
int(*) chmod(uint32_t ino, uint16_t mode)
Definition vfs.h:117
int(*) write(uint32_t ino, uint64_t off, const void *buf, uint32_t len)
Definition vfs.h:83
int(*) symlink(uint32_t parent_ino, const char *name, const char *target)
Definition vfs.h:106
int(*) statfs(vfs_statfs_t *out)
Definition vfs.h:120
int(*) rename(uint32_t old_parent_ino, const char *old_name, uint32_t new_parent_ino, const char *new_name)
Definition vfs.h:90
int(*) read(uint32_t ino, uint64_t off, void *buf, uint32_t len)
Definition vfs.h:79
int(*) readdir(uint32_t ino, uint64_t *offset, vfs_dirent_cb_t cb, void *ud)
Definition vfs.h:81
int(*) flush(uint32_t ino)
Definition vfs.h:85
uint64_t f_blocks
Definition vfs.h:65
uint64_t f_bfree
Definition vfs.h:66
uint64_t f_type
Definition vfs.h:63
uint64_t f_bsize
Definition vfs.h:64
uint64_t f_namelen
Definition vfs.h:70
uint64_t f_fsid
Definition vfs.h:71
uint64_t f_bavail
Definition vfs.h:67
uint64_t f_ffree
Definition vfs.h:69
uint64_t f_files
Definition vfs.h:68
int fd
Definition syscall_fs.c:0
unsigned short uint16_t
Definition types.h:31
unsigned int uint32_t
Definition types.h:34
unsigned long int uint64_t
Definition types.h:37
unsigned char uint8_t
Definition types.h:28
struct vfs_statfs vfs_statfs_t
struct vfs_mount vfs_mount_t
int vfs_write(int fd, const void *buf, uint32_t len)
Definition vfs.c:532
int vfs_chmod(const char *path, uint16_t mode)
Definition vfs.c:893
int vfs_fd_devno(int fd)
Definition vfs.c:138
int vfs_read(int fd, void *buf, uint32_t len)
Definition vfs.c:497
int vfs_mknod(const char *path, uint16_t mode, uint32_t dev)
Definition vfs.c:910
struct vfs_inode_info vfs_inode_info_t
int vfs_symlink(const char *path, const char *target)
Definition vfs.c:685
int vfs_close(int fd)
Definition vfs.c:592
int vfs_rename(const char *oldpath, const char *newpath)
Definition vfs.c:949
int vfs_unlink(const char *path)
Definition vfs.c:746
int vfs_rmdir(const char *path)
Definition vfs.c:796
int vfs_mount_count(void)
Definition vfs.c:67
struct filesystem_type filesystem_type_t
int vfs_lstat(const char *path, vfs_inode_info_t *out)
Definition vfs.c:648
int vfs_readdir(int fd, vfs_dirent_cb_t cb, void *ud)
Definition vfs.c:572
#define VFS_PATH_MAX
Definition vfs.h:32
int vfs_fstatfs(int fd, vfs_statfs_t *out)
Definition vfs.c:160
int vfs_path_devno(const char *path)
Definition vfs.c:131
int vfs_readlink(const char *path, char *buf, uint32_t bufsiz)
Definition vfs.c:669
int vfs_open(const char *path, int flags, int mode)
Definition vfs.c:329
int vfs_mkdir(const char *path, int mode)
Definition vfs.c:842
int register_filesystem(const char *name, int(*mount)(const char *source, const char *target, const void *data))
Definition vfs.c:38
int vfs_mount_fstype(const char *fstype, const char *source, const char *target, const void *data)
Definition vfs.c:49
int vfs_fstat(int fd, vfs_inode_info_t *out)
Definition vfs.c:725
int vfs_stat(const char *path, vfs_inode_info_t *out)
Definition vfs.c:636
int vfs_unregister_mount(const char *point)
Definition vfs.c:203
struct vfs_file vfs_file_t
const vfs_mount_t * vfs_get_mount(int idx)
Definition vfs.c:69
int vfs_register_mount(const char *point, vfs_ops_t *ops, uint32_t root_ino)
Definition vfs.c:184
uint16_t idx
Definition virtio_net.c:1
uint16_t flags
Definition virtio_net.c:2
uint32_t len
Definition virtio_net.c:1