summaryrefslogtreecommitdiff
path: root/kernel/fs/vfs.h
diff options
context:
space:
mode:
authorAnton Kling <anton@kling.gg>2023-11-15 02:43:03 +0100
committerAnton Kling <anton@kling.gg>2023-11-15 02:55:54 +0100
commit6747f9407a061684c2fba837541c254f48bfcff0 (patch)
treef4d323bb6569ce755ae6425488c211387849a2f7 /kernel/fs/vfs.h
parent6fc8ef497409f83201aa92094d725407861881e7 (diff)
VFS: Add stat
Diffstat (limited to 'kernel/fs/vfs.h')
-rw-r--r--kernel/fs/vfs.h22
1 files changed, 12 insertions, 10 deletions
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 <sched/scheduler.h>
#include <socket.h>
#include <stddef.h>
+#include <sys/stat.h>
#include <typedefs.h>
// 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