vnode_if.src revision 12767
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
3412767Sdyson# $Id: vnode_if.src,v 1.8 1995/10/23 02:55:55 dyson 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
1519842Sdgvop_link {
1529842Sdg	IN WILLRELE struct vnode *tdvp;
1539842Sdg	IN struct vnode *vp;
1549842Sdg	IN struct componentname *cnp;
1559842Sdg};
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;
22910551Sdyson	OUT int *runb;
2301541Srgrimes};
2311541Srgrimes
2321541Srgrimes#vop_strategy {
2331541Srgrimes#	IN struct buf *bp;
2341541Srgrimes#};
2351541Srgrimes
2361541Srgrimesvop_print {
2371541Srgrimes	IN struct vnode *vp;
2381541Srgrimes};
2391541Srgrimes
2401541Srgrimesvop_islocked {
2411541Srgrimes	IN struct vnode *vp;
2421541Srgrimes};
2431541Srgrimes
2441541Srgrimesvop_pathconf {
2451541Srgrimes	IN struct vnode *vp;
2461541Srgrimes	IN int name;
2471541Srgrimes	OUT int *retval;
2481541Srgrimes};
2491541Srgrimes
2501541Srgrimesvop_advlock {
2511541Srgrimes	IN struct vnode *vp;
2521541Srgrimes	IN caddr_t id;
2531541Srgrimes	IN int op;
2541541Srgrimes	IN struct flock *fl;
2551541Srgrimes	IN int flags;
2561541Srgrimes};
2571541Srgrimes
2581541Srgrimesvop_blkatoff {
2591541Srgrimes	IN struct vnode *vp;
2601541Srgrimes	IN off_t offset;
2611541Srgrimes	OUT char **res;
2621541Srgrimes	OUT struct buf **bpp;
2631541Srgrimes};
2641541Srgrimes
2651541Srgrimesvop_valloc {
2661541Srgrimes	IN struct vnode *pvp;
2671541Srgrimes	IN int mode;
2681541Srgrimes	IN struct ucred *cred;
2691541Srgrimes	OUT struct vnode **vpp;
2701541Srgrimes};
2711541Srgrimes
2721541Srgrimesvop_reallocblks {
2731541Srgrimes	IN struct vnode *vp;
2741541Srgrimes	IN struct cluster_save *buflist;
2751541Srgrimes};
2761541Srgrimes
2771541Srgrimesvop_vfree {
2781541Srgrimes	IN struct vnode *pvp;
2791541Srgrimes	IN ino_t ino;
2801541Srgrimes	IN int mode;
2811541Srgrimes};
2821541Srgrimes
2831541Srgrimesvop_truncate {
2841541Srgrimes	IN struct vnode *vp;
2851541Srgrimes	IN off_t length;
2861541Srgrimes	IN int flags;
2871541Srgrimes	IN struct ucred *cred;
2881541Srgrimes	IN struct proc *p;
2891541Srgrimes};
2901541Srgrimes
2911541Srgrimesvop_update {
2921541Srgrimes	IN struct vnode *vp;
2931541Srgrimes	IN struct timeval *access;
2941541Srgrimes	IN struct timeval *modify;
2951541Srgrimes	IN int waitfor;
2961541Srgrimes};
2971541Srgrimes
29810551Sdysonvop_getpages {
29910551Sdyson	IN struct vnode *vp;
30010551Sdyson	IN vm_page_t *m;
30110551Sdyson	IN int count;
30210551Sdyson	IN int reqpage;
30312767Sdyson	IN vm_ooffset_t offset;
30410551Sdyson};
30510551Sdyson
30610551Sdysonvop_putpages {
30710551Sdyson	IN struct vnode *vp;
30810551Sdyson	IN vm_page_t *m;
30910551Sdyson	IN int count;
31010551Sdyson	IN int sync;
31110551Sdyson	IN int *rtvals;
31212767Sdyson	IN vm_ooffset_t offset;
31310551Sdyson};
31411704Sdyson
3151541Srgrimes# Needs work: no vp?
3161541Srgrimes#vop_bwrite {
3171541Srgrimes#	IN struct buf *bp;
3181541Srgrimes#};
319