1 1.5 perry /* $NetBSD: genfs_vnops.c,v 1.5 1998/01/05 19:20:11 perry Exp $ */ 2 1.5 perry 3 1.1 mycroft #include <sys/param.h> 4 1.1 mycroft #include <sys/systm.h> 5 1.1 mycroft #include <sys/kernel.h> 6 1.1 mycroft #include <sys/mount.h> 7 1.1 mycroft #include <sys/namei.h> 8 1.1 mycroft #include <sys/vnode.h> 9 1.1 mycroft #include <sys/malloc.h> 10 1.3 mycroft #include <sys/poll.h> 11 1.1 mycroft 12 1.1 mycroft #include <miscfs/genfs/genfs.h> 13 1.1 mycroft 14 1.1 mycroft int 15 1.3 mycroft genfs_poll(v) 16 1.1 mycroft void *v; 17 1.1 mycroft { 18 1.3 mycroft struct vop_poll_args /* { 19 1.1 mycroft struct vnode *a_vp; 20 1.3 mycroft int a_events; 21 1.1 mycroft struct proc *a_p; 22 1.1 mycroft } */ *ap = v; 23 1.1 mycroft 24 1.3 mycroft return (ap->a_events & (POLLIN | POLLOUT | POLLRDNORM | POLLWRNORM)); 25 1.1 mycroft } 26 1.1 mycroft 27 1.1 mycroft int 28 1.1 mycroft genfs_fsync(v) 29 1.1 mycroft void *v; 30 1.1 mycroft { 31 1.1 mycroft struct vop_fsync_args /* { 32 1.1 mycroft struct vnode *a_vp; 33 1.1 mycroft struct ucred *a_cred; 34 1.1 mycroft int a_waitfor; 35 1.1 mycroft struct proc *a_p; 36 1.1 mycroft } */ *ap = v; 37 1.1 mycroft register struct vnode *vp = ap->a_vp; 38 1.1 mycroft struct timespec ts; 39 1.1 mycroft 40 1.1 mycroft vflushbuf(vp, ap->a_waitfor == MNT_WAIT); 41 1.1 mycroft TIMEVAL_TO_TIMESPEC(&time, &ts); 42 1.1 mycroft return (VOP_UPDATE(ap->a_vp, &ts, &ts, ap->a_waitfor == MNT_WAIT)); 43 1.1 mycroft } 44 1.1 mycroft 45 1.1 mycroft int 46 1.4 kleink genfs_seek(v) 47 1.4 kleink void *v; 48 1.4 kleink { 49 1.4 kleink struct vop_seek_args /* { 50 1.4 kleink struct vnode *a_vp; 51 1.4 kleink off_t a_oldoff; 52 1.4 kleink off_t a_newoff; 53 1.4 kleink struct ucred *a_ucred; 54 1.4 kleink } */ *ap = v; 55 1.4 kleink 56 1.4 kleink if (ap->a_newoff < 0) 57 1.4 kleink return (EINVAL); 58 1.4 kleink 59 1.4 kleink return (0); 60 1.4 kleink } 61 1.4 kleink 62 1.4 kleink int 63 1.1 mycroft genfs_abortop(v) 64 1.1 mycroft void *v; 65 1.1 mycroft { 66 1.1 mycroft struct vop_abortop_args /* { 67 1.1 mycroft struct vnode *a_dvp; 68 1.1 mycroft struct componentname *a_cnp; 69 1.1 mycroft } */ *ap = v; 70 1.1 mycroft 71 1.1 mycroft if ((ap->a_cnp->cn_flags & (HASBUF | SAVESTART)) == HASBUF) 72 1.1 mycroft FREE(ap->a_cnp->cn_pnbuf, M_NAMEI); 73 1.1 mycroft return (0); 74 1.1 mycroft } 75 1.1 mycroft 76 1.1 mycroft /*ARGSUSED*/ 77 1.1 mycroft int 78 1.1 mycroft genfs_badop(v) 79 1.1 mycroft void *v; 80 1.1 mycroft { 81 1.1 mycroft 82 1.1 mycroft panic("genfs: bad op"); 83 1.1 mycroft } 84 1.1 mycroft 85 1.1 mycroft /*ARGSUSED*/ 86 1.1 mycroft int 87 1.1 mycroft genfs_nullop(v) 88 1.1 mycroft void *v; 89 1.1 mycroft { 90 1.1 mycroft 91 1.1 mycroft return (0); 92 1.1 mycroft } 93 1.1 mycroft 94 1.1 mycroft /*ARGSUSED*/ 95 1.1 mycroft int 96 1.1 mycroft genfs_eopnotsupp(v) 97 1.1 mycroft void *v; 98 1.1 mycroft { 99 1.1 mycroft 100 1.1 mycroft return (EOPNOTSUPP); 101 1.1 mycroft } 102 1.1 mycroft 103 1.1 mycroft /*ARGSUSED*/ 104 1.1 mycroft int 105 1.1 mycroft genfs_ebadf(v) 106 1.1 mycroft void *v; 107 1.1 mycroft { 108 1.1 mycroft 109 1.1 mycroft return (EBADF); 110 1.1 mycroft } 111