2020-01-05 09:00:43 +01:00
|
|
|
#ifndef __KERNEL_FS_VFS_H__
|
|
|
|
# define __KERNEL_FS_VFS_H__
|
|
|
|
|
|
|
|
#include <stddef.h>
|
|
|
|
#include <stdint.h>
|
2020-04-19 14:16:29 +02:00
|
|
|
#include <sys/types.h>
|
2020-01-05 09:00:43 +01:00
|
|
|
#include <kernel/fs/file.h>
|
2020-04-19 14:16:29 +02:00
|
|
|
#include <kernel/fs/filesystem.h>
|
2020-01-06 20:25:06 +01:00
|
|
|
#include <kernel/devices/device.h>
|
2020-01-05 09:00:43 +01:00
|
|
|
|
|
|
|
// Internal VFS macros
|
2020-01-10 17:21:44 +01:00
|
|
|
#define VFS_MOUNT_ROOT (-1)
|
|
|
|
#define VFS_DENTRY_RESOLVE_FLAG_FULL_PATH (0)
|
|
|
|
#define VFS_DENTRY_RESOLVE_FLAG_PATHNAME (1)
|
|
|
|
|
2020-01-05 09:00:43 +01:00
|
|
|
|
|
|
|
|
|
|
|
// Constructor / destructor
|
|
|
|
extern int vfs_register_filesystem(struct file_system_type *new);
|
|
|
|
|
|
|
|
// Superblock primitives
|
|
|
|
extern int vfs_umount(char const *target);
|
|
|
|
extern int vfs_mount(const char *source, const char *target,
|
|
|
|
const char *filesystemtype, unsigned long mountflags,
|
|
|
|
const void *data);
|
|
|
|
|
|
|
|
// Inode operations
|
|
|
|
extern int vfs_mkdir(const char *pathname, mode_t mode);
|
2020-01-06 20:25:06 +01:00
|
|
|
extern int vfs_mknod(const char *pathname, mode_t mode, dev_t dev);
|
2020-01-05 09:00:43 +01:00
|
|
|
|
|
|
|
// File operations
|
|
|
|
extern int vfs_open(FILE *file, const char *pathname, int flags);
|
|
|
|
extern ssize_t vfs_read(FILE *file, void *buf, size_t count);
|
|
|
|
extern ssize_t vfs_write(FILE *file, const void *buf, size_t count);
|
|
|
|
extern off_t vfs_lseek(FILE *file, off_t offset, int whence);
|
2020-03-28 19:52:59 +01:00
|
|
|
extern ssize_t vfs_pread(FILE *file, void *buf, size_t count, off_t offset);
|
|
|
|
extern ssize_t vfs_pwrite(FILE *file, const void *buf, size_t count, off_t offset);
|
2020-01-06 20:25:06 +01:00
|
|
|
extern int vfs_close(FILE *file);
|
2020-01-05 09:00:43 +01:00
|
|
|
|
|
|
|
// Dentry opeations
|
|
|
|
extern struct dentry *vfs_dentry_find_first_child(struct dentry *dentry);
|
|
|
|
extern struct dentry *vfs_dentry_find_next_sibling(struct dentry *dentry);
|
|
|
|
extern struct dentry *vfs_dentry_resolve(const char *path, int mode);
|
2020-01-06 20:25:06 +01:00
|
|
|
extern struct dentry *vfs_dentry_alloc(const char *name, mode_t mdode);
|
|
|
|
extern void vfs_dentry_free(struct dentry *dentry);
|
2020-01-05 09:00:43 +01:00
|
|
|
|
|
|
|
#endif /*__KERNEL_FS_VFS_H__*/
|