Use supermarket variety vfs_vnops.c instead of homecooked routines

(that's actually a good thing here).
This commit is contained in:
pooka 2007-08-13 13:51:39 +00:00
parent e09047007b
commit 787d952790
7 changed files with 51 additions and 64 deletions

View File

@ -1,4 +1,4 @@
# $NetBSD: Makefile,v 1.6 2007/08/13 10:52:15 pooka Exp $
# $NetBSD: Makefile,v 1.7 2007/08/13 13:51:39 pooka Exp $
#
.include <bsd.own.mk>
@ -18,7 +18,8 @@ SRCS+= fstrans_stub.c kauth_stub.c lock_stub.c misc_stub.c \
# sys/kern
SRCS+= subr_hash.c subr_prf_bitmask.c subr_specificdata.c subr_time.c \
subr_xxx.c vfs_init.c vfs_cache.c vfs_subr2.c vnode_if.c param.c
subr_xxx.c vfs_init.c vfs_cache.c vfs_subr2.c vnode_if.c param.c\
vfs_vnops.c
# src/lib/libkern
SRCS+= __assert.c scanc.c skpc.c

View File

@ -1,4 +1,4 @@
/* $NetBSD: emul.c,v 1.6 2007/08/13 10:52:15 pooka Exp $ */
/* $NetBSD: emul.c,v 1.7 2007/08/13 13:51:39 pooka Exp $ */
/*
* Copyright (c) 2007 Antti Kantee. All Rights Reserved.
@ -50,6 +50,7 @@
time_t time_second = 1;
kmutex_t proclist_mutex;
kmutex_t proclist_lock;
struct lwp lwp0;
struct vnode *rootvp;
struct device *root_device;

View File

@ -1,4 +1,4 @@
/* $NetBSD: genfs.c,v 1.12 2007/08/11 17:52:12 pooka Exp $ */
/* $NetBSD: genfs.c,v 1.13 2007/08/13 13:51:39 pooka Exp $ */
/*
* Copyright (c) 2007 Antti Kantee. All Rights Reserved.
@ -70,6 +70,23 @@ genfs_directio(struct vnode *vp, struct uio *uio, int ioflag)
panic("%s: not implemented", __func__);
}
int
genfs_lock(void *v)
{
struct vop_lock_args *ap = v;
return lockmgr(ap->a_vp->v_vnlock, ap->a_flags, &ap->a_vp->v_interlock);
}
int
genfs_unlock(void *v)
{
struct vop_unlock_args *ap = v;
return lockmgr(ap->a_vp->v_vnlock, ap->a_flags | LK_RELEASE,
&ap->a_vp->v_interlock);
}
int
genfs_islocked(void *v)
{

View File

@ -1,4 +1,4 @@
/* $NetBSD: specfs.c,v 1.2 2007/08/09 11:59:17 pooka Exp $ */
/* $NetBSD: specfs.c,v 1.3 2007/08/13 13:51:39 pooka Exp $ */
/*
* Copyright (c) 2007 Antti Kantee. All Rights Reserved.
@ -34,6 +34,8 @@
#include <sys/fcntl.h>
#include <sys/disklabel.h>
#include <miscfs/genfs/genfs.h>
#include <uvm/uvm_extern.h>
#include "rump.h"
@ -49,6 +51,8 @@ static int rump_specstrategy(void *);
int (**spec_vnodeop_p)(void *);
const struct vnodeopv_entry_desc rumpspec_vnodeop_entries[] = {
{ &vop_default_desc, vn_default_error },
{ &vop_lock_desc, genfs_lock }, /* lock */
{ &vop_unlock_desc, genfs_unlock }, /* unlock */
{ &vop_open_desc, rump_specopen }, /* open */
{ &vop_close_desc, rump_specclose }, /* close */
{ &vop_ioctl_desc, rump_specioctl }, /* ioctl */

View File

@ -1,4 +1,4 @@
/* $NetBSD: vfs.c,v 1.8 2007/08/12 13:34:11 pooka Exp $ */
/* $NetBSD: vfs.c,v 1.9 2007/08/13 13:51:39 pooka Exp $ */
/*
* Copyright (c) 2007 Antti Kantee. All Rights Reserved.
@ -127,6 +127,7 @@ int
vget(struct vnode *vp, int lockflag)
{
vn_lock(vp, lockflag & LK_TYPE_MASK);
return 0;
}
@ -146,6 +147,7 @@ void
vput(struct vnode *vp)
{
VOP_UNLOCK(vp, 0);
}
void
@ -212,63 +214,11 @@ vfs_stdextattrctl(struct mount *mp, int cmt, struct vnode *vp,
int attrnamespace, const char *attrname, struct lwp *l)
{
if (vp != NULL)
VOP_UNLOCK(vp, 0);
return EOPNOTSUPP;
}
int
vn_cow_establish(struct vnode *vp, int (*f)(void *, struct buf *),
void *cookie)
{
return 0;
}
int
vn_cow_disestablish(struct vnode *vp, int (*f)(void *, struct buf *),
void *cookie)
{
return 0;
}
int
vn_lock(struct vnode *vp, int flags)
{
return 0;
}
int
vn_rdwr(enum uio_rw rw, struct vnode *vp, void *base, int len, off_t offset,
enum uio_seg segflg, int ioflg, kauth_cred_t cred, size_t *reslen,
struct lwp *l)
{
struct uio uio;
struct iovec iov;
int rv;
iov.iov_base = base;
iov.iov_len = len;
uio.uio_iov = &iov;
uio.uio_iovcnt = 1;
uio.uio_resid = len;
uio.uio_offset = offset;
uio.uio_rw = rw;
uio.uio_vmspace = UIO_VMSPACE_SYS;
if (uio.uio_rw == UIO_READ)
rv = VOP_READ(vp, &uio, ioflg, cred);
else
rv = VOP_WRITE(vp, &uio, ioflg, cred);
if (reslen)
*reslen = uio.uio_resid;
else if (uio.uio_resid && rv == 0)
rv = EIO;
return rv;
}
struct mount mnt_dummy;
/* from libpuffs, but let's decouple this from that */
@ -319,6 +269,7 @@ makevnode(struct stat *sb, const char *path)
vp->v_data = sp;
vp->v_op = spec_vnodeop_p;
vp->v_mount = &mnt_dummy;
vp->v_vnlock = &vp->v_lock;
return vp;
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: vfsops_stub.c,v 1.4 2007/08/09 11:59:17 pooka Exp $ */
/* $NetBSD: vfsops_stub.c,v 1.5 2007/08/13 13:51:39 pooka Exp $ */
/*
* Copyright (c) 2007 Antti Kantee. All Rights Reserved.
@ -77,8 +77,6 @@ VFSSTUB(genfs_kqfilter)
VFSSTUB(genfs_lease_check)
VFSSTUB(genfs_compat_getpages)
VFSSTUB_RV(genfs_lock, 0)
VFSSTUB_RV(genfs_unlock, 0)
VFSSTUB_RV(genfs_nullop, 0)
VFSSTUB_RV(genfs_eopnotsupp, EOPNOTSUPP)
VFSSTUB_RV(genfs_enoioctl, EPASSTHROUGH)

View File

@ -1,4 +1,4 @@
/* $NetBSD: vm.c,v 1.10 2007/08/11 17:52:12 pooka Exp $ */
/* $NetBSD: vm.c,v 1.11 2007/08/13 13:51:39 pooka Exp $ */
/*
* Copyright (c) 2007 Antti Kantee. All Rights Reserved.
@ -51,6 +51,7 @@
#include <uvm/uvm.h>
#include <uvm/uvm_prot.h>
#include <uvm/uvm_readahead.h>
#include <machine/pmap.h>
@ -415,6 +416,20 @@ uvm_vnp_zerorange(struct vnode *vp, off_t off, size_t len)
return;
}
struct uvm_ractx *
uvm_ra_allocctx()
{
return NULL;
}
void
uvm_ra_freectx(struct uvm_ractx *ra)
{
return;
}
bool
uvn_clean_p(struct uvm_object *uobj)
{