vnode_if.src revision 3167
11541Srgrimes#
21541Srgrimes# Copyright (c) 1992, 1993
31541Srgrimes#	The Regents of the University of California.  All rights reserved.
41541Srgrimes#
51541Srgrimes# Redistribution and use in source and binary forms, with or without
61541Srgrimes# modification, are permitted provided that the following conditions
71541Srgrimes# are met:
81541Srgrimes# 1. Redistributions of source code must retain the above copyright
91541Srgrimes#    notice, this list of conditions and the following disclaimer.
101541Srgrimes# 2. Redistributions in binary form must reproduce the above copyright
111541Srgrimes#    notice, this list of conditions and the following disclaimer in the
121541Srgrimes#    documentation and/or other materials provided with the distribution.
131541Srgrimes# 3. All advertising materials mentioning features or use of this software
141541Srgrimes#    must display the following acknowledgement:
151541Srgrimes#	This product includes software developed by the University of
161541Srgrimes#	California, Berkeley and its contributors.
171541Srgrimes# 4. Neither the name of the University nor the names of its contributors
181541Srgrimes#    may be used to endorse or promote products derived from this software
191541Srgrimes#    without specific prior written permission.
201541Srgrimes#
211541Srgrimes# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
221541Srgrimes# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
231541Srgrimes# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
241541Srgrimes# ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
251541Srgrimes# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
261541Srgrimes# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
271541Srgrimes# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
281541Srgrimes# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
291541Srgrimes# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
301541Srgrimes# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
311541Srgrimes# SUCH DAMAGE.
321541Srgrimes#
331541Srgrimes#	@(#)vnode_if.src	8.3 (Berkeley) 2/3/94
343167Sdfr# $Id: vnode_if.src,v 1.2 1994/08/02 07:43:37 davidg Exp $
351541Srgrimes#
361541Srgrimesvop_lookup {
371541Srgrimes	IN struct vnode *dvp;
381541Srgrimes	INOUT struct vnode **vpp;
391541Srgrimes	IN struct componentname *cnp;
401541Srgrimes};
411541Srgrimes
421541Srgrimesvop_create {
431541Srgrimes	IN WILLRELE struct vnode *dvp;
441541Srgrimes	OUT struct vnode **vpp;
451541Srgrimes	IN struct componentname *cnp;
461541Srgrimes	IN struct vattr *vap;
471541Srgrimes};
481541Srgrimes
491541Srgrimesvop_mknod {
501541Srgrimes	IN WILLRELE struct vnode *dvp;
511541Srgrimes	OUT WILLRELE struct vnode **vpp;
521541Srgrimes	IN struct componentname *cnp;
531541Srgrimes	IN struct vattr *vap;
541541Srgrimes};
551541Srgrimes
561541Srgrimesvop_open {
571541Srgrimes	IN struct vnode *vp;
581541Srgrimes	IN int mode;
591541Srgrimes	IN struct ucred *cred;
601541Srgrimes	IN struct proc *p;
611541Srgrimes};
621541Srgrimes
631541Srgrimesvop_close {
641541Srgrimes	IN struct vnode *vp;
651541Srgrimes	IN int fflag;
661541Srgrimes	IN struct ucred *cred;
671541Srgrimes	IN struct proc *p;
681541Srgrimes};
691541Srgrimes
701541Srgrimesvop_access {
711541Srgrimes	IN struct vnode *vp;
721541Srgrimes	IN int mode;
731541Srgrimes	IN struct ucred *cred;
741541Srgrimes	IN struct proc *p;
751541Srgrimes};
761541Srgrimes
771541Srgrimesvop_getattr {
781541Srgrimes	IN struct vnode *vp;
791541Srgrimes	IN struct vattr *vap;
801541Srgrimes	IN struct ucred *cred;
811541Srgrimes	IN struct proc *p;
821541Srgrimes};
831541Srgrimes
841541Srgrimesvop_setattr {
851541Srgrimes	IN struct vnode *vp;
861541Srgrimes	IN struct vattr *vap;
871541Srgrimes	IN struct ucred *cred;
881541Srgrimes	IN struct proc *p;
891541Srgrimes};
901541Srgrimes
911541Srgrimesvop_read {
921541Srgrimes	IN struct vnode *vp;
931541Srgrimes	INOUT struct uio *uio;
941541Srgrimes	IN int ioflag;
951541Srgrimes	IN struct ucred *cred;
961541Srgrimes};
971541Srgrimes
981541Srgrimesvop_write {
991541Srgrimes	IN struct vnode *vp;
1001541Srgrimes	INOUT struct uio *uio;
1011541Srgrimes	IN int ioflag;
1021541Srgrimes	IN struct ucred *cred;
1031541Srgrimes};
1041541Srgrimes
1051541Srgrimesvop_ioctl {
1061541Srgrimes	IN struct vnode *vp;
1071541Srgrimes	IN int command;
1081541Srgrimes	IN caddr_t data;
1091541Srgrimes	IN int fflag;
1101541Srgrimes	IN struct ucred *cred;
1111541Srgrimes	IN struct proc *p;
1121541Srgrimes};
1131541Srgrimes
1141541Srgrimes# Needs work?  (fflags)
1151541Srgrimesvop_select {
1161541Srgrimes	IN struct vnode *vp;
1171541Srgrimes	IN int which;
1181541Srgrimes	IN int fflags;
1191541Srgrimes	IN struct ucred *cred;
1201541Srgrimes	IN struct proc *p;
1211541Srgrimes};
1221541Srgrimes
1231541Srgrimesvop_mmap {
1241541Srgrimes	IN struct vnode *vp;
1251541Srgrimes	IN int fflags;
1261541Srgrimes	IN struct ucred *cred;
1271541Srgrimes	IN struct proc *p;
1281541Srgrimes};
1291541Srgrimes
1301541Srgrimesvop_fsync {
1311541Srgrimes	IN struct vnode *vp;
1321541Srgrimes	IN struct ucred *cred;
1331541Srgrimes	IN int waitfor;
1341541Srgrimes	IN struct proc *p;
1351541Srgrimes};
1361541Srgrimes
1371541Srgrimes# Needs word: Is newoff right?  What's it mean?
1381541Srgrimesvop_seek {
1391541Srgrimes	IN struct vnode *vp;
1401541Srgrimes	IN off_t oldoff;
1411541Srgrimes	IN off_t newoff;
1421541Srgrimes	IN struct ucred *cred;
1431541Srgrimes};
1441541Srgrimes
1451541Srgrimesvop_remove {
1461541Srgrimes	IN WILLRELE struct vnode *dvp;
1471541Srgrimes	IN WILLRELE struct vnode *vp;
1481541Srgrimes	IN struct componentname *cnp;
1491541Srgrimes};
1501541Srgrimes
1511541Srgrimesvop_link {
1521541Srgrimes	IN WILLRELE struct vnode *vp;
1531541Srgrimes	IN struct vnode *tdvp;
1541541Srgrimes	IN struct componentname *cnp;
1551541Srgrimes};
1561541Srgrimes
1571541Srgrimesvop_rename {
1581541Srgrimes	IN WILLRELE struct vnode *fdvp;
1591541Srgrimes	IN WILLRELE struct vnode *fvp;
1601541Srgrimes	IN struct componentname *fcnp;
1611541Srgrimes	IN WILLRELE struct vnode *tdvp;
1621541Srgrimes	IN WILLRELE struct vnode *tvp;
1631541Srgrimes	IN struct componentname *tcnp;
1641541Srgrimes};
1651541Srgrimes
1661541Srgrimesvop_mkdir {
1671541Srgrimes	IN WILLRELE struct vnode *dvp;
1681541Srgrimes	OUT struct vnode **vpp;
1691541Srgrimes	IN struct componentname *cnp;
1701541Srgrimes	IN struct vattr *vap;
1711541Srgrimes};
1721541Srgrimes
1731541Srgrimesvop_rmdir {
1741541Srgrimes	IN WILLRELE struct vnode *dvp;
1751541Srgrimes	IN WILLRELE struct vnode *vp;
1761541Srgrimes	IN struct componentname *cnp;
1771541Srgrimes};
1781541Srgrimes
1791541Srgrimesvop_symlink {
1801541Srgrimes	IN WILLRELE struct vnode *dvp;
1811541Srgrimes	OUT WILLRELE struct vnode **vpp;
1821541Srgrimes	IN struct componentname *cnp;
1831541Srgrimes	IN struct vattr *vap;
1841541Srgrimes	IN char *target;
1851541Srgrimes};
1861541Srgrimes
1871541Srgrimesvop_readdir {
1881541Srgrimes	IN struct vnode *vp;
1891541Srgrimes	INOUT struct uio *uio;
1901541Srgrimes	IN struct ucred *cred;
1913167Sdfr	INOUT int *eofflag;
1923167Sdfr	INOUT int *ncookies;
1933167Sdfr	INOUT u_int **cookies;
1941541Srgrimes};
1951541Srgrimes
1961541Srgrimesvop_readlink {
1971541Srgrimes	IN struct vnode *vp;
1981541Srgrimes	INOUT struct uio *uio;
1991541Srgrimes	IN struct ucred *cred;
2001541Srgrimes};
2011541Srgrimes
2021541Srgrimesvop_abortop {
2031541Srgrimes	IN struct vnode *dvp;
2041541Srgrimes	IN struct componentname *cnp;
2051541Srgrimes};
2061541Srgrimes
2071541Srgrimesvop_inactive {
2081541Srgrimes	IN struct vnode *vp;
2091541Srgrimes};
2101541Srgrimes
2111541Srgrimesvop_reclaim {
2121541Srgrimes	IN struct vnode *vp;
2131541Srgrimes};
2141541Srgrimes
2151541Srgrimesvop_lock {
2161541Srgrimes	IN struct vnode *vp;
2171541Srgrimes};
2181541Srgrimes
2191541Srgrimesvop_unlock {
2201541Srgrimes	IN struct vnode *vp;
2211541Srgrimes};
2221541Srgrimes
2231541Srgrimesvop_bmap {
2241541Srgrimes	IN struct vnode *vp;
2251541Srgrimes	IN daddr_t bn;
2261541Srgrimes	OUT struct vnode **vpp;
2271541Srgrimes	IN daddr_t *bnp;
2281541Srgrimes	OUT int *runp;
2291541Srgrimes};
2301541Srgrimes
2311541Srgrimes#vop_strategy {
2321541Srgrimes#	IN struct buf *bp;
2331541Srgrimes#};
2341541Srgrimes
2351541Srgrimesvop_print {
2361541Srgrimes	IN struct vnode *vp;
2371541Srgrimes};
2381541Srgrimes
2391541Srgrimesvop_islocked {
2401541Srgrimes	IN struct vnode *vp;
2411541Srgrimes};
2421541Srgrimes
2431541Srgrimesvop_pathconf {
2441541Srgrimes	IN struct vnode *vp;
2451541Srgrimes	IN int name;
2461541Srgrimes	OUT int *retval;
2471541Srgrimes};
2481541Srgrimes
2491541Srgrimesvop_advlock {
2501541Srgrimes	IN struct vnode *vp;
2511541Srgrimes	IN caddr_t id;
2521541Srgrimes	IN int op;
2531541Srgrimes	IN struct flock *fl;
2541541Srgrimes	IN int flags;
2551541Srgrimes};
2561541Srgrimes
2571541Srgrimesvop_blkatoff {
2581541Srgrimes	IN struct vnode *vp;
2591541Srgrimes	IN off_t offset;
2601541Srgrimes	OUT char **res;
2611541Srgrimes	OUT struct buf **bpp;
2621541Srgrimes};
2631541Srgrimes
2641541Srgrimesvop_valloc {
2651541Srgrimes	IN struct vnode *pvp;
2661541Srgrimes	IN int mode;
2671541Srgrimes	IN struct ucred *cred;
2681541Srgrimes	OUT struct vnode **vpp;
2691541Srgrimes};
2701541Srgrimes
2711541Srgrimesvop_reallocblks {
2721541Srgrimes	IN struct vnode *vp;
2731541Srgrimes	IN struct cluster_save *buflist;
2741541Srgrimes};
2751541Srgrimes
2761541Srgrimesvop_vfree {
2771541Srgrimes	IN struct vnode *pvp;
2781541Srgrimes	IN ino_t ino;
2791541Srgrimes	IN int mode;
2801541Srgrimes};
2811541Srgrimes
2821541Srgrimesvop_truncate {
2831541Srgrimes	IN struct vnode *vp;
2841541Srgrimes	IN off_t length;
2851541Srgrimes	IN int flags;
2861541Srgrimes	IN struct ucred *cred;
2871541Srgrimes	IN struct proc *p;
2881541Srgrimes};
2891541Srgrimes
2901541Srgrimesvop_update {
2911541Srgrimes	IN struct vnode *vp;
2921541Srgrimes	IN struct timeval *access;
2931541Srgrimes	IN struct timeval *modify;
2941541Srgrimes	IN int waitfor;
2951541Srgrimes};
2961541Srgrimes
2971541Srgrimes# Needs work: no vp?
2981541Srgrimes#vop_bwrite {
2991541Srgrimes#	IN struct buf *bp;
3001541Srgrimes#};
301