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