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);
124#define VFS_MAX_FS_TYPES 16
135 int (*
mount)(
const char *source,
const char *target,
const void *data);
139 int (*
mount)(
const char *source,
const char *target,
152 const char *target,
const void *data);
155#define VFS_MAX_MOUNTS 16
309int 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:127
int(* mount)(const char *source, const char *target, const void *data)
Definition vfs.h:135
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
struct net_sock * sock
Definition vfs.h:203
uint32_t ref_count
Definition vfs.h:197
uint32_t inode
Definition vfs.h:188
vfs_ops_t * ops
Definition vfs.h:196
int flags
Definition vfs.h:194
uint32_t dev
Definition vfs.h:193
uint64_t size
Definition vfs.h:190
uint8_t in_use
Definition vfs.h:187
uint8_t ftype
Definition vfs.h:191
uint8_t device_type
Definition vfs.h:192
pipe_t * pipe
Definition vfs.h:198
int status_flags
Definition vfs.h:195
uint64_t offset
Definition vfs.h:189
struct unix_sock * usock
Definition vfs.h:204
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:158
vfs_ops_t * ops
Definition vfs.h:159
uint32_t root_ino
Definition vfs.h:160
char device[32]
Definition vfs.h:162
char fstype[16]
Definition vfs.h:161
int(* truncate)(uint32_t ino, uint64_t new_size)
Definition vfs.h:98
int(* create)(uint32_t parent_ino, const char *name, uint16_t mode, uint32_t *new_ino_out)
Definition vfs.h:88
int(* chmod)(uint32_t ino, uint16_t mode)
Definition vfs.h:117
int(* readdir)(uint32_t ino, uint64_t *offset, vfs_dirent_cb_t cb, void *ud)
Definition vfs.h:81
int(* statfs)(vfs_statfs_t *out)
Definition vfs.h:120
int(* lookup)(const char *path, vfs_inode_info_t *out)
Definition vfs.h:77
int(* unlink)(uint32_t parent_ino, const char *name)
Definition vfs.h:89
int(* flush)(uint32_t ino)
Definition vfs.h:85
void(* set_root)(uint32_t root_ino)
Definition vfs.h:95
int(* write)(uint32_t ino, uint64_t off, const void *buf, uint32_t len)
Definition vfs.h:83
int(* mkdir)(uint32_t parent_ino, const char *name, uint32_t *new_ino_out)
Definition vfs.h:92
int(* readlink)(uint32_t ino, char *buf, uint32_t len)
Definition vfs.h:102
int(* rmdir)(uint32_t parent_ino, const char *name)
Definition vfs.h:93
int(* read)(uint32_t ino, uint64_t off, void *buf, uint32_t len)
Definition vfs.h:79
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(* mknod)(uint32_t parent_ino, const char *name, uint16_t mode, uint32_t dev, uint32_t *new_ino_out)
Definition vfs.h:112
int(* symlink)(uint32_t parent_ino, const char *name, const char *target)
Definition vfs.h:106
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:508
int vfs_chmod(const char *path, uint16_t mode)
Definition vfs.c:869
int vfs_fd_devno(int fd)
Definition vfs.c:138
int vfs_read(int fd, void *buf, uint32_t len)
Definition vfs.c:473
void vfs_mount(vfs_ops_t *ops)
Definition vfs.c:201
int vfs_mknod(const char *path, uint16_t mode, uint32_t dev)
Definition vfs.c:886
struct vfs_inode_info vfs_inode_info_t
int vfs_symlink(const char *path, const char *target)
Definition vfs.c:661
int vfs_close(int fd)
Definition vfs.c:568
int vfs_rename(const char *oldpath, const char *newpath)
Definition vfs.c:925
int vfs_statfs(const char *path, vfs_statfs_t *out)
Definition vfs.c:147
int vfs_unlink(const char *path)
Definition vfs.c:722
int vfs_rmdir(const char *path)
Definition vfs.c:772
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:624
int vfs_readdir(int fd, vfs_dirent_cb_t cb, void *ud)
Definition vfs.c:548
#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:645
int vfs_open(const char *path, int flags, int mode)
Definition vfs.c:305
int vfs_mkdir(const char *path, int mode)
Definition vfs.c:818
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:701
int vfs_stat(const char *path, vfs_inode_info_t *out)
Definition vfs.c:612
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