Use supermarket variety vfs_vnops.c instead of homecooked routines
(that's actually a good thing here).
This commit is contained in:
parent
e09047007b
commit
787d952790
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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 */
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user