|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Minios-devel] [UNIKRAFT PATCH v3 4/6] lib/ramfs: adapt imported ramfs to Unikraft
No menu option for enabling debugging now? ;-) It is fine, we can add it later.
Also all other libraries (except lwip) do not have this yet. Thanks for the
update!
Reviewed-by: Simon Kuenzer <simon.kuenzer@xxxxxxxxx>
> On 20. Feb 2019, at 16:58, Yuri Volchkov <yuri.volchkov@xxxxxxxxx> wrote:
>
> Signed-off-by: Yuri Volchkov <yuri.volchkov@xxxxxxxxx>
> ---
> lib/Config.uk | 1 +
> lib/Makefile.uk | 1 +
> lib/ramfs/Config.uk | 4 +
> lib/ramfs/Makefile.uk | 4 +
> lib/ramfs/exportsyms.uk | 1 +
> lib/ramfs/ramfs.h | 5 +-
> lib/ramfs/ramfs_vfsops.c | 28 ++++---
> lib/ramfs/ramfs_vnops.c | 165 +++++++++++++++++++++------------------
> 8 files changed, 120 insertions(+), 89 deletions(-)
> create mode 100644 lib/ramfs/Config.uk
> create mode 100644 lib/ramfs/Makefile.uk
> create mode 100644 lib/ramfs/exportsyms.uk
>
> diff --git a/lib/Config.uk b/lib/Config.uk
> index 45321efe..7d86f76c 100644
> --- a/lib/Config.uk
> +++ b/lib/Config.uk
> @@ -38,6 +38,7 @@ source "lib/uksched/Config.uk"
> source "lib/ukschedcoop/Config.uk"
> source "lib/fdt/Config.uk"
> source "lib/vfscore/Config.uk"
> +source "lib/ramfs/Config.uk"
> source "lib/uklock/Config.uk"
> source "lib/ukmpi/Config.uk"
> source "lib/ukswrand/Config.uk"
> diff --git a/lib/Makefile.uk b/lib/Makefile.uk
> index 4c2cc87d..d66c7ee9 100644
> --- a/lib/Makefile.uk
> +++ b/lib/Makefile.uk
> @@ -16,6 +16,7 @@ $(eval $(call _import_lib,$(CONFIG_UK_BASE)/lib/uksched))
> $(eval $(call _import_lib,$(CONFIG_UK_BASE)/lib/ukschedcoop))
> $(eval $(call _import_lib,$(CONFIG_UK_BASE)/lib/fdt))
> $(eval $(call _import_lib,$(CONFIG_UK_BASE)/lib/vfscore))
> +$(eval $(call _import_lib,$(CONFIG_UK_BASE)/lib/ramfs))
> $(eval $(call _import_lib,$(CONFIG_UK_BASE)/lib/uklock))
> $(eval $(call _import_lib,$(CONFIG_UK_BASE)/lib/ukmpi))
> $(eval $(call _import_lib,$(CONFIG_UK_BASE)/lib/ukbus))
> diff --git a/lib/ramfs/Config.uk b/lib/ramfs/Config.uk
> new file mode 100644
> index 00000000..52e4388c
> --- /dev/null
> +++ b/lib/ramfs/Config.uk
> @@ -0,0 +1,4 @@
> +config LIBRAMFS
> + bool "ramfs: simple RAM file system"
> + default n
> + depends on LIBVFSCORE
> diff --git a/lib/ramfs/Makefile.uk b/lib/ramfs/Makefile.uk
> new file mode 100644
> index 00000000..9a443358
> --- /dev/null
> +++ b/lib/ramfs/Makefile.uk
> @@ -0,0 +1,4 @@
> +$(eval $(call addlib_s,libramfs,$(CONFIG_LIBRAMFS)))
> +
> +LIBRAMFS_SRCS-y += $(LIBRAMFS_BASE)/ramfs_vfsops.c
> +LIBRAMFS_SRCS-y += $(LIBRAMFS_BASE)/ramfs_vnops.c
> diff --git a/lib/ramfs/exportsyms.uk b/lib/ramfs/exportsyms.uk
> new file mode 100644
> index 00000000..c86c3f35
> --- /dev/null
> +++ b/lib/ramfs/exportsyms.uk
> @@ -0,0 +1 @@
> +none
> \ No newline at end of file
> diff --git a/lib/ramfs/ramfs.h b/lib/ramfs/ramfs.h
> index 01e4da09..61ff35d2 100644
> --- a/lib/ramfs/ramfs.h
> +++ b/lib/ramfs/ramfs.h
> @@ -33,7 +33,8 @@
> #ifndef _RAMFS_H
> #define _RAMFS_H
>
> -#include <osv/prex.h>
> +#include <vfscore/prex.h>
> +#include <stdbool.h>
>
> /* #define DEBUG_RAMFS 1 */
>
> @@ -43,8 +44,6 @@
> #define DPRINTF(a) do {} while (0)
> #endif
>
> -#define ASSERT(e) assert(e)
> -
> /*
> * File/directory node for RAMFS
> */
> diff --git a/lib/ramfs/ramfs_vfsops.c b/lib/ramfs/ramfs_vfsops.c
> index 4df54c5f..3b5c075c 100644
> --- a/lib/ramfs/ramfs_vfsops.c
> +++ b/lib/ramfs/ramfs_vfsops.c
> @@ -32,9 +32,10 @@
>
> #include <errno.h>
>
> -#include <osv/vnode.h>
> -#include <osv/mount.h>
> -#include <osv/dentry.h>
> +#define _BSD_SOURCE
> +#include <vfscore/vnode.h>
> +#include <vfscore/mount.h>
> +#include <vfscore/dentry.h>
>
> #include "ramfs.h"
>
> @@ -44,9 +45,9 @@ static int ramfs_mount(struct mount *mp, const char *dev,
> int flags, const void
>
> static int ramfs_unmount(struct mount *mp, int flags);
>
> -#define ramfs_sync ((vfsop_sync_t)vfs_nullop)
> -#define ramfs_vget ((vfsop_vget_t)vfs_nullop)
> -#define ramfs_statfs ((vfsop_statfs_t)vfs_nullop)
> +#define ramfs_sync ((vfsop_sync_t)vfscore_nullop)
> +#define ramfs_vget ((vfsop_vget_t)vfscore_nullop)
> +#define ramfs_statfs ((vfsop_statfs_t)vfscore_nullop)
>
> /*
> * File system operations
> @@ -60,11 +61,20 @@ struct vfsops ramfs_vfsops = {
> &ramfs_vnops, /* vnops */
> };
>
> +static struct vfscore_fs_type fs_ramfs = {
> + .vs_name = "ramfs",
> + .vs_init = NULL,
> + .vs_op = &ramfs_vfsops,
> +};
> +
> +UK_FS_REGISTER(fs_ramfs);
> +
> /*
> * Mount a file system.
> */
> static int
> -ramfs_mount(struct mount *mp, const char *dev, int flags, const void *data)
> +ramfs_mount(struct mount *mp, const char *dev __unused,
> + int flags __unused, const void *data __unused)
> {
> struct ramfs_node *np;
>
> @@ -86,8 +96,8 @@ ramfs_mount(struct mount *mp, const char *dev, int flags,
> const void *data)
> * directories, and it requires more work...
> */
> static int
> -ramfs_unmount(struct mount *mp, int flags)
> +ramfs_unmount(struct mount *mp, int flags __unused)
> {
> - release_mp_dentries(mp);
> + vfscore_release_mp_dentries(mp);
> return 0;
> }
> diff --git a/lib/ramfs/ramfs_vnops.c b/lib/ramfs/ramfs_vnops.c
> index 4538e9cb..47614fd3 100644
> --- a/lib/ramfs/ramfs_vnops.c
> +++ b/lib/ramfs/ramfs_vnops.c
> @@ -33,7 +33,9 @@
> /*
> * rmafs_vnops.c - vnode operations for RAM file system.
> */
> +#define _GNU_SOURCE
>
> +#include <uk/essentials.h>
> #include <sys/stat.h>
> #include <dirent.h>
> #include <sys/param.h>
> @@ -41,24 +43,29 @@
> #include <errno.h>
> #include <string.h>
> #include <stdlib.h>
> -#include <fcntl.h>
>
> -#include <osv/prex.h>
> -#include <osv/vnode.h>
> -#include <osv/file.h>
> -#include <osv/mount.h>
> -#include <osv/vnode_attr.h>
> +#include <vfscore/prex.h>
> +#include <vfscore/vnode.h>
> +#include <vfscore/mount.h>
> +#include <vfscore/uio.h>
> +#include <vfscore/file.h>
>
> #include "ramfs.h"
> +#include <dirent.h>
> +#include <fcntl.h>
> +#include <vfscore/fs.h>
>
> -static mutex_t ramfs_lock = MUTEX_INITIALIZER;
> +static struct uk_mutex ramfs_lock = UK_MUTEX_INITIALIZER(ramfs_lock);
> static uint64_t inode_count = 1; /* inode 0 is reserved to root */
>
> static void
> -set_times_to_now(struct timespec *time1, struct timespec *time2 = nullptr,
> struct timespec *time3 = nullptr)
> +set_times_to_now(struct timespec *time1, struct timespec *time2,
> + struct timespec *time3)
> {
> - struct timespec now;
> - clock_gettime(CLOCK_REALTIME, &now);
> + struct timespec now = {0, 0};
> +
> + /* TODO: implement the real clock_gettime */
> + /* clock_gettime(CLOCK_REALTIME, &now); */
> if (time1) {
> memcpy(time1, &now, sizeof(struct timespec));
> }
> @@ -75,7 +82,7 @@ ramfs_allocate_node(const char *name, int type)
> {
> struct ramfs_node *np;
>
> - np = (ramfs_node *) malloc(sizeof(struct ramfs_node));
> + np = malloc(sizeof(struct ramfs_node));
> if (np == NULL)
> return NULL;
> memset(np, 0, sizeof(struct ramfs_node));
> @@ -121,7 +128,7 @@ ramfs_add_node(struct ramfs_node *dnp, char *name, int
> type)
> if (np == NULL)
> return NULL;
>
> - mutex_lock(&ramfs_lock);
> + uk_mutex_lock(&ramfs_lock);
>
> /* Link to the directory list */
> if (dnp->rn_child == NULL) {
> @@ -133,9 +140,9 @@ ramfs_add_node(struct ramfs_node *dnp, char *name, int
> type)
> prev->rn_next = np;
> }
>
> - set_times_to_now(&(dnp->rn_mtime), &(dnp->rn_ctime));
> + set_times_to_now(&(dnp->rn_mtime), &(dnp->rn_ctime), NULL);
>
> - mutex_unlock(&ramfs_lock);
> + uk_mutex_unlock(&ramfs_lock);
> return np;
> }
>
> @@ -147,7 +154,7 @@ ramfs_remove_node(struct ramfs_node *dnp, struct
> ramfs_node *np)
> if (dnp->rn_child == NULL)
> return EBUSY;
>
> - mutex_lock(&ramfs_lock);
> + uk_mutex_lock(&ramfs_lock);
>
> /* Unlink from the directory list */
> if (dnp->rn_child == np) {
> @@ -156,7 +163,7 @@ ramfs_remove_node(struct ramfs_node *dnp, struct
> ramfs_node *np)
> for (prev = dnp->rn_child; prev->rn_next != np;
> prev = prev->rn_next) {
> if (prev->rn_next == NULL) {
> - mutex_unlock(&ramfs_lock);
> + uk_mutex_unlock(&ramfs_lock);
> return ENOENT;
> }
> }
> @@ -164,9 +171,9 @@ ramfs_remove_node(struct ramfs_node *dnp, struct
> ramfs_node *np)
> }
> ramfs_free_node(np);
>
> - set_times_to_now(&(dnp->rn_mtime), &(dnp->rn_ctime));
> + set_times_to_now(&(dnp->rn_mtime), &(dnp->rn_ctime), NULL);
>
> - mutex_unlock(&ramfs_lock);
> + uk_mutex_unlock(&ramfs_lock);
> return 0;
> }
>
> @@ -193,7 +200,7 @@ ramfs_rename_node(struct ramfs_node *np, char *name)
> np->rn_name = tmp;
> }
> np->rn_namelen = len;
> - set_times_to_now(&(np->rn_ctime));
> + set_times_to_now(&(np->rn_ctime), NULL, NULL);
> return 0;
> }
>
> @@ -210,10 +217,10 @@ ramfs_lookup(struct vnode *dvp, char *name, struct
> vnode **vpp)
> if (*name == '\0')
> return ENOENT;
>
> - mutex_lock(&ramfs_lock);
> + uk_mutex_lock(&ramfs_lock);
>
> len = strlen(name);
> - dnp = (ramfs_node *) dvp->v_data;
> + dnp = dvp->v_data;
> found = 0;
> for (np = dnp->rn_child; np != NULL; np = np->rn_next) {
> if (np->rn_namelen == len &&
> @@ -223,17 +230,17 @@ ramfs_lookup(struct vnode *dvp, char *name, struct
> vnode **vpp)
> }
> }
> if (found == 0) {
> - mutex_unlock(&ramfs_lock);
> + uk_mutex_unlock(&ramfs_lock);
> return ENOENT;
> }
> - if (vget(dvp->v_mount, inode_count++, &vp)) {
> + if (vfscore_vget(dvp->v_mount, inode_count++, &vp)) {
> /* found in cache */
> *vpp = vp;
> - mutex_unlock(&ramfs_lock);
> + uk_mutex_unlock(&ramfs_lock);
> return 0;
> }
> if (!vp) {
> - mutex_unlock(&ramfs_lock);
> + uk_mutex_unlock(&ramfs_lock);
> return ENOMEM;
> }
> vp->v_data = np;
> @@ -241,7 +248,7 @@ ramfs_lookup(struct vnode *dvp, char *name, struct vnode
> **vpp)
> vp->v_type = np->rn_type;
> vp->v_size = np->rn_size;
>
> - mutex_unlock(&ramfs_lock);
> + uk_mutex_unlock(&ramfs_lock);
>
> *vpp = vp;
>
> @@ -261,7 +268,7 @@ ramfs_mkdir(struct vnode *dvp, char *name, mode_t mode)
> if (!S_ISDIR(mode))
> return EINVAL;
>
> - np = (ramfs_node *) ramfs_add_node((ramfs_node *) dvp->v_data, name,
> VDIR);
> + np = ramfs_add_node(dvp->v_data, name, VDIR);
> if (np == NULL)
> return ENOMEM;
> np->rn_size = 0;
> @@ -275,7 +282,7 @@ ramfs_symlink(struct vnode *dvp, char *name, char *link)
> if (strlen(name) > NAME_MAX) {
> return ENAMETOOLONG;
> }
> - auto np = ramfs_add_node((ramfs_node *) dvp->v_data, name, VLNK);
> + struct ramfs_node *np = ramfs_add_node(dvp->v_data, name, VLNK);
> if (np == NULL)
> return ENOMEM;
> // Save the link target without the final null, as readlink() wants it.
> @@ -286,10 +293,10 @@ ramfs_symlink(struct vnode *dvp, char *name, char *link)
> return 0;
> }
>
> -static int
> +static ssize_t
> ramfs_readlink(struct vnode *vp, struct uio *uio)
> {
> - struct ramfs_node *np = (ramfs_node *) vp->v_data;
> + struct ramfs_node *np = vp->v_data;
> size_t len;
>
> if (vp->v_type != VLNK) {
> @@ -308,23 +315,23 @@ ramfs_readlink(struct vnode *vp, struct uio *uio)
> else
> len = uio->uio_resid;
>
> - set_times_to_now( &(np->rn_atime));
> - return uiomove(np->rn_buf + uio->uio_offset, len, uio);
> + set_times_to_now(&(np->rn_atime), NULL, NULL);
> + return vfscore_uiomove(np->rn_buf + uio->uio_offset, len, uio);
> }
>
> /* Remove a directory */
> static int
> -ramfs_rmdir(struct vnode *dvp, struct vnode *vp, char *name)
> +ramfs_rmdir(struct vnode *dvp, struct vnode *vp, char *name __unused)
> {
> - return ramfs_remove_node((ramfs_node *) dvp->v_data, (ramfs_node *)
> vp->v_data);
> + return ramfs_remove_node(dvp->v_data, vp->v_data);
> }
>
> /* Remove a file */
> static int
> -ramfs_remove(struct vnode *dvp, struct vnode *vp, char *name)
> +ramfs_remove(struct vnode *dvp, struct vnode *vp, char *name __unused)
> {
> DPRINTF(("remove %s in %s\n", name, dvp->v_path));
> - return ramfs_remove_node((ramfs_node *) dvp->v_data, (ramfs_node *)
> vp->v_data);
> + return ramfs_remove_node(dvp->v_data, vp->v_data);
> }
>
> /* Truncate file */
> @@ -336,7 +343,7 @@ ramfs_truncate(struct vnode *vp, off_t length)
> size_t new_size;
>
> DPRINTF(("truncate %s length=%d\n", vp->v_path, length));
> - np = (ramfs_node *) vp->v_data;
> + np = vp->v_data;
>
> if (length == 0) {
> if (np->rn_buf != NULL) {
> @@ -345,8 +352,8 @@ ramfs_truncate(struct vnode *vp, off_t length)
> np->rn_buf = NULL;
> np->rn_bufsize = 0;
> }
> - } else if (size_t(length) > np->rn_bufsize) {
> - // XXX: this could use a page level allocator
> + } else if ((size_t) length > np->rn_bufsize) {
> + /* TODO: this could use a page level allocator */
> new_size = round_page(length);
> new_buf = malloc(new_size);
> if (!new_buf)
> @@ -362,7 +369,7 @@ ramfs_truncate(struct vnode *vp, off_t length)
> }
> np->rn_size = length;
> vp->v_size = length;
> - set_times_to_now(&(np->rn_mtime), &(np->rn_ctime));
> + set_times_to_now(&(np->rn_mtime), &(np->rn_ctime), NULL);
> return 0;
> }
>
> @@ -382,16 +389,17 @@ ramfs_create(struct vnode *dvp, char *name, mode_t mode)
> if (!S_ISREG(mode))
> return EINVAL;
>
> - np = ramfs_add_node((ramfs_node *) dvp->v_data, name, VREG);
> + np = ramfs_add_node(dvp->v_data, name, VREG);
> if (np == NULL)
> return ENOMEM;
> return 0;
> }
>
> -static int
> -ramfs_read(struct vnode *vp, struct file *fp, struct uio *uio, int ioflag)
> +static ssize_t
> +ramfs_read(struct vnode *vp, struct vfscore_file *fp __unused,
> + struct uio *uio, int ioflag __unused)
> {
> - struct ramfs_node *np = (ramfs_node *) vp->v_data;
> + struct ramfs_node *np = vp->v_data;
> size_t len;
>
> if (vp->v_type == VDIR) {
> @@ -415,15 +423,15 @@ ramfs_read(struct vnode *vp, struct file *fp, struct
> uio *uio, int ioflag)
> else
> len = uio->uio_resid;
>
> - set_times_to_now(&(np->rn_atime));
> + set_times_to_now(&(np->rn_atime), NULL, NULL);
>
> - return uiomove(np->rn_buf + uio->uio_offset, len, uio);
> + return vfscore_uiomove(np->rn_buf + uio->uio_offset, len, uio);
> }
>
> int
> ramfs_set_file_data(struct vnode *vp, const void *data, size_t size)
> {
> - struct ramfs_node *np = (ramfs_node *) vp->v_data;
> + struct ramfs_node *np = vp->v_data;
>
> if (vp->v_type == VDIR) {
> return EISDIR;
> @@ -444,10 +452,10 @@ ramfs_set_file_data(struct vnode *vp, const void *data,
> size_t size)
> return 0;
> }
>
> -static int
> +static ssize_t
> ramfs_write(struct vnode *vp, struct uio *uio, int ioflag)
> {
> - struct ramfs_node *np = (ramfs_node *) vp->v_data;
> + struct ramfs_node *np = vp->v_data;
>
> if (vp->v_type == VDIR) {
> return EISDIR;
> @@ -468,7 +476,7 @@ ramfs_write(struct vnode *vp, struct uio *uio, int ioflag)
> if (ioflag & IO_APPEND)
> uio->uio_offset = np->rn_size;
>
> - if (size_t(uio->uio_offset + uio->uio_resid) > (size_t) vp->v_size) {
> + if ((size_t) uio->uio_offset + uio->uio_resid > (size_t) vp->v_size) {
> /* Expand the file size before writing to it */
> off_t end_pos = uio->uio_offset + uio->uio_resid;
> if (end_pos > (off_t) np->rn_bufsize) {
> @@ -490,12 +498,13 @@ ramfs_write(struct vnode *vp, struct uio *uio, int
> ioflag)
> np->rn_owns_buf = true;
> }
>
> - set_times_to_now(&(np->rn_mtime), &(np->rn_ctime));
> - return uiomove(np->rn_buf + uio->uio_offset, uio->uio_resid, uio);
> + set_times_to_now(&(np->rn_mtime), &(np->rn_ctime), NULL);
> + return vfscore_uiomove(np->rn_buf + uio->uio_offset, uio->uio_resid,
> + uio);
> }
>
> static int
> -ramfs_rename(struct vnode *dvp1, struct vnode *vp1, char *name1,
> +ramfs_rename(struct vnode *dvp1, struct vnode *vp1, char *name1 __unused,
> struct vnode *dvp2, struct vnode *vp2, char *name2)
> {
> struct ramfs_node *np, *old_np;
> @@ -503,20 +512,20 @@ ramfs_rename(struct vnode *dvp1, struct vnode *vp1,
> char *name1,
>
> if (vp2) {
> /* Remove destination file, first */
> - error = ramfs_remove_node((ramfs_node *) dvp2->v_data,
> (ramfs_node *) vp2->v_data);
> + error = ramfs_remove_node(dvp2->v_data, vp2->v_data);
> if (error)
> return error;
> }
> /* Same directory ? */
> if (dvp1 == dvp2) {
> /* Change the name of existing file */
> - error = ramfs_rename_node((ramfs_node *) vp1->v_data, name2);
> + error = ramfs_rename_node(vp1->v_data, name2);
> if (error)
> return error;
> } else {
> /* Create new file or directory */
> - old_np = (ramfs_node *) vp1->v_data;
> - np = ramfs_add_node((ramfs_node *) dvp2->v_data, name2,
> old_np->rn_type);
> + old_np = vp1->v_data;
> + np = ramfs_add_node(dvp2->v_data, name2, old_np->rn_type);
> if (np == NULL)
> return ENOMEM;
>
> @@ -528,7 +537,7 @@ ramfs_rename(struct vnode *dvp1, struct vnode *vp1, char
> *name1,
> old_np->rn_buf = NULL;
> }
> /* Remove source file */
> - ramfs_remove_node((ramfs_node *) dvp1->v_data, (ramfs_node *)
> vp1->v_data);
> + ramfs_remove_node(dvp1->v_data, vp1->v_data);
> }
> return 0;
> }
> @@ -537,14 +546,15 @@ ramfs_rename(struct vnode *dvp1, struct vnode *vp1,
> char *name1,
> * @vp: vnode of the directory.
> */
> static int
> -ramfs_readdir(struct vnode *vp, struct file *fp, struct dirent *dir)
> +ramfs_readdir(struct vnode *vp, struct vfscore_file *fp, struct dirent *dir)
> {
> struct ramfs_node *np, *dnp;
> int i;
>
> - mutex_lock(&ramfs_lock);
> + uk_mutex_lock(&ramfs_lock);
>
> - set_times_to_now(&(((ramfs_node *) vp->v_data)->rn_atime));
> + set_times_to_now(&(((struct ramfs_node *) vp->v_data)->rn_atime),
> + NULL, NULL);
>
> if (fp->f_offset == 0) {
> dir->d_type = DT_DIR;
> @@ -553,17 +563,17 @@ ramfs_readdir(struct vnode *vp, struct file *fp, struct
> dirent *dir)
> dir->d_type = DT_DIR;
> strlcpy((char *) &dir->d_name, "..", sizeof(dir->d_name));
> } else {
> - dnp = (ramfs_node *) vp->v_data;
> + dnp = vp->v_data;
> np = dnp->rn_child;
> if (np == NULL) {
> - mutex_unlock(&ramfs_lock);
> + uk_mutex_unlock(&ramfs_lock);
> return ENOENT;
> }
>
> for (i = 0; i != (fp->f_offset - 2); i++) {
> np = np->rn_next;
> if (np == NULL) {
> - mutex_unlock(&ramfs_lock);
> + uk_mutex_unlock(&ramfs_lock);
> return ENOENT;
> }
> }
> @@ -581,7 +591,7 @@ ramfs_readdir(struct vnode *vp, struct file *fp, struct
> dirent *dir)
>
> fp->f_offset++;
>
> - mutex_unlock(&ramfs_lock);
> + uk_mutex_unlock(&ramfs_lock);
> return 0;
> }
>
> @@ -594,11 +604,12 @@ ramfs_init(void)
> static int
> ramfs_getattr(struct vnode *vnode, struct vattr *attr)
> {
> + struct ramfs_node *np = vnode->v_data;
> +
> attr->va_nodeid = vnode->v_ino;
> attr->va_size = vnode->v_size;
>
> - struct ramfs_node *np = (ramfs_node *) vnode->v_data;
> - attr->va_type = (vtype) np->rn_type;
> + attr->va_type = np->rn_type;
>
> memcpy(&(attr->va_atime), &(np->rn_atime), sizeof(struct timespec));
> memcpy(&(attr->va_ctime), &(np->rn_ctime), sizeof(struct timespec));
> @@ -611,7 +622,7 @@ ramfs_getattr(struct vnode *vnode, struct vattr *attr)
>
> static int
> ramfs_setattr(struct vnode *vnode, struct vattr *attr) {
> - struct ramfs_node *np = (ramfs_node *) vnode->v_data;
> + struct ramfs_node *np = vnode->v_data;
>
> if (attr->va_mask & AT_ATIME) {
> memcpy(&(np->rn_atime), &(attr->va_atime), sizeof(struct
> timespec));
> @@ -632,14 +643,14 @@ ramfs_setattr(struct vnode *vnode, struct vattr *attr) {
> return 0;
> }
>
> -#define ramfs_open ((vnop_open_t)vop_nullop)
> -#define ramfs_close ((vnop_close_t)vop_nullop)
> -#define ramfs_seek ((vnop_seek_t)vop_nullop)
> -#define ramfs_ioctl ((vnop_ioctl_t)vop_einval)
> -#define ramfs_fsync ((vnop_fsync_t)vop_nullop)
> -#define ramfs_inactive ((vnop_inactive_t)vop_nullop)
> -#define ramfs_link ((vnop_link_t)vop_eperm)
> -#define ramfs_fallocate ((vnop_fallocate_t)vop_nullop)
> +#define ramfs_open ((vnop_open_t)vfscore_vop_nullop)
> +#define ramfs_close ((vnop_close_t)vfscore_vop_nullop)
> +#define ramfs_seek ((vnop_seek_t)vfscore_vop_nullop)
> +#define ramfs_ioctl ((vnop_ioctl_t)vfscore_vop_einval)
> +#define ramfs_fsync ((vnop_fsync_t)vfscore_vop_nullop)
> +#define ramfs_inactive ((vnop_inactive_t)vfscore_vop_nullop)
> +#define ramfs_link ((vnop_link_t)vfscore_vop_eperm)
> +#define ramfs_fallocate ((vnop_fallocate_t)vfscore_vop_nullop)
>
> /*
> * vnode operations
> @@ -664,7 +675,7 @@ struct vnops ramfs_vnops = {
> ramfs_inactive, /* inactive */
> ramfs_truncate, /* truncate */
> ramfs_link, /* link */
> - (vnop_cache_t) nullptr, /* arc */
> + (vnop_cache_t) NULL, /* arc */
> ramfs_fallocate, /* fallocate */
> ramfs_readlink, /* read link */
> ramfs_symlink, /* symbolic link */
> --
> 2.19.2
>
_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |