[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Minios-devel] [UNIKRAFT PATCH 1/1] lib/vfscore: Add missing vnop operations to stdio
Most of the vnop operations are missing from the stdio. This causes a page fault when calling function such as lseek on stdio. To solve this we register the missing operation. Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@xxxxxxxxxxxxxxx> --- lib/vfscore/stdio.c | 48 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 45 insertions(+), 3 deletions(-) diff --git a/lib/vfscore/stdio.c b/lib/vfscore/stdio.c index 08335367..9536998c 100644 --- a/lib/vfscore/stdio.c +++ b/lib/vfscore/stdio.c @@ -41,6 +41,8 @@ #include <vfscore/vnode.h> #include <unistd.h> #include <vfscore/uio.h> +#include <vfscore/vnode.h> +#include <vfscore/mount.h> static int __write_fn(void *dst __unused, void *src, size_t *cnt) { @@ -127,10 +129,50 @@ stdio_getattr(struct vnode *vnode __unused, struct vattr *attr __unused) return 0; } +#define stdio_open ((vnop_open_t)vfscore_nullop) +#define stdio_close ((vnop_close_t)vfscore_nullop) +#define stdio_seek ((vnop_seek_t)vfscore_vop_nullop) +#define stdio_ioctl ((vnop_ioctl_t)vfscore_nullop) +#define stdio_fsync ((vnop_fsync_t)vfscore_vop_nullop) +#define stdio_readdir ((vnop_readdir_t)vfscore_vop_einval) +#define stdio_lookup ((vnop_lookup_t)vfscore_nullop) +#define stdio_create ((vnop_create_t)vfscore_vop_einval) +#define stdio_remove ((vnop_remove_t)vfscore_vop_einval) +#define stdio_rename ((vnop_rename_t)vfscore_vop_einval) +#define stdio_mkdir ((vnop_mkdir_t)vfscore_vop_einval) +#define stdio_rmdir ((vnop_rmdir_t)vfscore_vop_einval) +#define stdio_setattr ((vnop_setattr_t)vfscore_vop_eperm) +#define stdio_inactive ((vnop_inactive_t)vfscore_vop_nullop) +#define stdio_truncate ((vnop_truncate_t)vfscore_vop_nullop) +#define stdio_link ((vnop_link_t)vfscore_vop_eperm) +#define stdio_fallocate ((vnop_fallocate_t)vfscore_vop_nullop) +#define stdio_readlink ((vnop_readlink_t)vfscore_vop_nullop) +#define stdio_symlink ((vnop_symlink_t)vfscore_vop_nullop) + static struct vnops stdio_vnops = { - .vop_write = stdio_write, - .vop_read = stdio_read, - .vop_getattr = stdio_getattr, + stdio_open, /* open */ + stdio_close, /* close */ + stdio_read, /* read */ + stdio_write, /* write */ + stdio_seek, /* seek */ + stdio_ioctl, /* ioctl */ + stdio_fsync, /* fsync */ + stdio_readdir, /* readdir */ + stdio_lookup, /* lookup */ + stdio_create, /* create */ + stdio_remove, /* remove */ + stdio_rename, /* remame */ + stdio_mkdir, /* mkdir */ + stdio_rmdir, /* rmdir */ + stdio_getattr, /* getattr */ + stdio_setattr, /* setattr */ + stdio_inactive, /* inactive */ + stdio_truncate, /* truncate */ + stdio_link, /* link */ + (vnop_cache_t) NULL, /* arc */ + stdio_fallocate, /* fallocate */ + stdio_readlink, /* read link */ + stdio_symlink, /* symbolic link */ }; static struct vnode stdio_vnode = { -- 2.20.1 _______________________________________________ Minios-devel mailing list Minios-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/minios-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |