From 6747f9407a061684c2fba837541c254f48bfcff0 Mon Sep 17 00:00:00 2001 From: Anton Kling Date: Wed, 15 Nov 2023 02:43:03 +0100 Subject: VFS: Add stat --- kernel/fs/vfs.h | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) (limited to 'kernel/fs/vfs.h') diff --git a/kernel/fs/vfs.h b/kernel/fs/vfs.h index 949d175..3e3e1ff 100644 --- a/kernel/fs/vfs.h +++ b/kernel/fs/vfs.h @@ -8,6 +8,7 @@ typedef struct vfs_mounts vfs_mounts_t; #include #include #include +#include #include // FIXME: Is there some standard value for this? @@ -66,9 +67,9 @@ struct vfs_inode { int (*write)(u8 *buffer, u64 offset, u64 len, vfs_fd_t *fd); void (*close)(vfs_fd_t *fd); int (*create_directory)(const char *path, int mode); - vfs_vm_object_t *(*get_vm_object)(u64 length, u64 offset, - vfs_fd_t *fd); + vfs_vm_object_t *(*get_vm_object)(u64 length, u64 offset, vfs_fd_t *fd); int (*truncate)(vfs_fd_t *fd, size_t length); + int (*stat)(vfs_fd_t *fd, struct stat *buf); }; int vfs_close(int fd); @@ -76,26 +77,27 @@ vfs_fd_t *get_vfs_fd(int fd); int vfs_open(const char *file, int flags, int mode); void vfs_mount(char *path, vfs_inode_t *local_root); int vfs_pwrite(int fd, void *buf, u64 count, u64 offset); -int raw_vfs_pwrite(vfs_fd_t *vfs_fd, void *buf, u64 count, - u64 offset); +int raw_vfs_pwrite(vfs_fd_t *vfs_fd, void *buf, u64 count, u64 offset); int raw_vfs_pread(vfs_fd_t *vfs_fd, void *buf, u64 count, u64 offset); -int vfs_pread(int fd, void *buf, u64 count, u64 offset); +int vfs_pread(int fd, void *buf, u32 count, u32 offset); vfs_vm_object_t *vfs_get_vm_object(int fd, u64 length, u64 offset); int vfs_dup2(int org_fd, int new_fd); vfs_inode_t *vfs_internal_open(const char *file); int vfs_mkdir(const char *path, int mode); int vfs_create_fd(int flags, int mode, vfs_inode_t *inode, vfs_fd_t **fd); int vfs_ftruncate(int fd, size_t length); +int vfs_chdir(const char *path); +int vfs_fstat(int fd, struct stat *buf); vfs_inode_t *vfs_create_inode( - int inode_num, int type, u8 has_data, u8 can_write, - u8 is_open, void *internal_object, u64 file_size, + int inode_num, int type, u8 has_data, u8 can_write, u8 is_open, + void *internal_object, u64 file_size, vfs_inode_t *(*open)(const char *path), int (*create_file)(const char *path, int mode), int (*read)(u8 *buffer, u64 offset, u64 len, vfs_fd_t *fd), int (*write)(u8 *buffer, u64 offset, u64 len, vfs_fd_t *fd), void (*close)(vfs_fd_t *fd), int (*create_directory)(const char *path, int mode), - vfs_vm_object_t *(*get_vm_object)(u64 length, u64 offset, - vfs_fd_t *fd), - int (*truncate)(vfs_fd_t *fd, size_t length)); + vfs_vm_object_t *(*get_vm_object)(u64 length, u64 offset, vfs_fd_t *fd), + int (*truncate)(vfs_fd_t *fd, size_t length), + int (*stat)(vfs_fd_t *fd, struct stat *buf)); #endif -- cgit v1.2.3