#include #include #include #include #include #include #include #include #include int genfs_poll(v) void *v; { struct vop_poll_args /* { struct vnode *a_vp; int a_events; struct proc *a_p; } */ *ap = v; return (ap->a_events & (POLLIN | POLLOUT | POLLRDNORM | POLLWRNORM)); } int genfs_fsync(v) void *v; { struct vop_fsync_args /* { struct vnode *a_vp; struct ucred *a_cred; int a_waitfor; struct proc *a_p; } */ *ap = v; register struct vnode *vp = ap->a_vp; struct timespec ts; vflushbuf(vp, ap->a_waitfor == MNT_WAIT); TIMEVAL_TO_TIMESPEC(&time, &ts); return (VOP_UPDATE(ap->a_vp, &ts, &ts, ap->a_waitfor == MNT_WAIT)); } int genfs_seek(v) void *v; { struct vop_seek_args /* { struct vnode *a_vp; off_t a_oldoff; off_t a_newoff; struct ucred *a_ucred; } */ *ap = v; if (ap->a_newoff < 0) return (EINVAL); return (0); } int genfs_abortop(v) void *v; { struct vop_abortop_args /* { struct vnode *a_dvp; struct componentname *a_cnp; } */ *ap = v; if ((ap->a_cnp->cn_flags & (HASBUF | SAVESTART)) == HASBUF) FREE(ap->a_cnp->cn_pnbuf, M_NAMEI); return (0); } /*ARGSUSED*/ int genfs_badop(v) void *v; { panic("genfs: bad op"); } /*ARGSUSED*/ int genfs_nullop(v) void *v; { return (0); } /*ARGSUSED*/ int genfs_eopnotsupp(v) void *v; { return (EOPNOTSUPP); } /*ARGSUSED*/ int genfs_ebadf(v) void *v; { return (EBADF); }