vnode_if.src revision 21673
1169695Skan# 2169695Skan# Copyright (c) 1992, 1993 3169695Skan# The Regents of the University of California. All rights reserved. 4169695Skan# 5169695Skan# Redistribution and use in source and binary forms, with or without 6169695Skan# modification, are permitted provided that the following conditions 7169695Skan# are met: 8169695Skan# 1. Redistributions of source code must retain the above copyright 9169695Skan# notice, this list of conditions and the following disclaimer. 10169695Skan# 2. Redistributions in binary form must reproduce the above copyright 11169695Skan# notice, this list of conditions and the following disclaimer in the 12169695Skan# documentation and/or other materials provided with the distribution. 13169695Skan# 3. All advertising materials mentioning features or use of this software 14169695Skan# must display the following acknowledgement: 15169695Skan# This product includes software developed by the University of 16169695Skan# California, Berkeley and its contributors. 17169695Skan# 4. Neither the name of the University nor the names of its contributors 18169695Skan# may be used to endorse or promote products derived from this software 19169695Skan# without specific prior written permission. 20169695Skan# 21169695Skan# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 22169695Skan# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23169695Skan# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24169695Skan# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 25169695Skan# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 26169695Skan# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 27169695Skan# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 28169695Skan# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 29169695Skan# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 30169695Skan# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31169695Skan# SUCH DAMAGE. 32169695Skan# 33169695Skan# @(#)vnode_if.src 8.3 (Berkeley) 2/3/94 34169695Skan# $FreeBSD: head/sys/kern/vnode_if.src 21673 1997-01-14 07:20:47Z jkh $ 35169695Skan# 36169695Skanvop_lookup { 37169695Skan IN struct vnode *dvp; 38169695Skan INOUT struct vnode **vpp; 39169695Skan IN struct componentname *cnp; 40169695Skan}; 41169695Skan 42169695Skanvop_create { 43169695Skan IN WILLRELE struct vnode *dvp; 44169695Skan OUT struct vnode **vpp; 45169695Skan IN struct componentname *cnp; 46169695Skan IN struct vattr *vap; 47169695Skan}; 48169695Skan 49169695Skanvop_mknod { 50169695Skan IN WILLRELE struct vnode *dvp; 51169695Skan OUT WILLRELE struct vnode **vpp; 52169695Skan IN struct componentname *cnp; 53169695Skan IN struct vattr *vap; 54169695Skan}; 55169695Skan 56169695Skanvop_open { 57169695Skan IN struct vnode *vp; 58169695Skan IN int mode; 59169695Skan IN struct ucred *cred; 60169695Skan IN struct proc *p; 61169695Skan}; 62169695Skan 63169695Skanvop_close { 64169695Skan IN struct vnode *vp; 65169695Skan IN int fflag; 66169695Skan IN struct ucred *cred; 67169695Skan IN struct proc *p; 68169695Skan}; 69169695Skan 70169695Skanvop_access { 71169695Skan IN struct vnode *vp; 72169695Skan IN int mode; 73169695Skan IN struct ucred *cred; 74169695Skan IN struct proc *p; 75169695Skan}; 76169695Skan 77169695Skanvop_getattr { 78169695Skan IN struct vnode *vp; 79169695Skan IN struct vattr *vap; 80169695Skan IN struct ucred *cred; 81169695Skan IN struct proc *p; 82169695Skan}; 83169695Skan 84169695Skanvop_setattr { 85169695Skan IN struct vnode *vp; 86169695Skan IN struct vattr *vap; 87169695Skan IN struct ucred *cred; 88169695Skan IN struct proc *p; 89169695Skan}; 90169695Skan 91169695Skanvop_read { 92169695Skan IN struct vnode *vp; 93169695Skan INOUT struct uio *uio; 94169695Skan IN int ioflag; 95169695Skan IN struct ucred *cred; 96169695Skan}; 97169695Skan 98169695Skanvop_write { 99169695Skan IN struct vnode *vp; 100169695Skan INOUT struct uio *uio; 101169695Skan IN int ioflag; 102169695Skan IN struct ucred *cred; 103169695Skan}; 104169695Skan 105169695Skanvop_ioctl { 106169695Skan IN struct vnode *vp; 107169695Skan IN int command; 108169695Skan IN caddr_t data; 109169695Skan IN int fflag; 110169695Skan IN struct ucred *cred; 111169695Skan IN struct proc *p; 112169695Skan}; 113169695Skan 114169695Skan# Needs work? (fflags) 115169695Skanvop_select { 116169695Skan IN struct vnode *vp; 117169695Skan IN int which; 118169695Skan IN int fflags; 119169695Skan IN struct ucred *cred; 120169695Skan IN struct proc *p; 121169695Skan}; 122169695Skan 123169695Skanvop_mmap { 124169695Skan IN struct vnode *vp; 125169695Skan IN int fflags; 126169695Skan IN struct ucred *cred; 127169695Skan IN struct proc *p; 128169695Skan}; 129169695Skan 130169695Skanvop_fsync { 131169695Skan IN struct vnode *vp; 132169695Skan IN struct ucred *cred; 133169695Skan IN int waitfor; 134169695Skan IN struct proc *p; 135169695Skan}; 136169695Skan 137169695Skan# Needs word: Is newoff right? What's it mean? 138169695Skanvop_seek { 139169695Skan IN struct vnode *vp; 140169695Skan IN off_t oldoff; 141169695Skan IN off_t newoff; 142169695Skan IN struct ucred *cred; 143169695Skan}; 144169695Skan 145169695Skanvop_remove { 146169695Skan IN WILLRELE struct vnode *dvp; 147169695Skan IN WILLRELE struct vnode *vp; 148169695Skan IN struct componentname *cnp; 149169695Skan}; 150169695Skan 151169695Skanvop_link { 152169695Skan IN WILLRELE struct vnode *tdvp; 153169695Skan IN struct vnode *vp; 154169695Skan IN struct componentname *cnp; 155169695Skan}; 156169695Skan 157169695Skanvop_rename { 158169695Skan IN WILLRELE struct vnode *fdvp; 159169695Skan IN WILLRELE struct vnode *fvp; 160169695Skan IN struct componentname *fcnp; 161169695Skan IN WILLRELE struct vnode *tdvp; 162169695Skan IN WILLRELE struct vnode *tvp; 163169695Skan IN struct componentname *tcnp; 164169695Skan}; 165169695Skan 166169695Skanvop_mkdir { 167169695Skan IN WILLRELE struct vnode *dvp; 168169695Skan OUT struct vnode **vpp; 169169695Skan IN struct componentname *cnp; 170169695Skan IN struct vattr *vap; 171169695Skan}; 172169695Skan 173169695Skanvop_rmdir { 174169695Skan IN WILLRELE struct vnode *dvp; 175169695Skan IN WILLRELE struct vnode *vp; 176169695Skan IN struct componentname *cnp; 177169695Skan}; 178169695Skan 179169695Skanvop_symlink { 180169695Skan IN WILLRELE struct vnode *dvp; 181169695Skan OUT WILLRELE struct vnode **vpp; 182169695Skan IN struct componentname *cnp; 183169695Skan IN struct vattr *vap; 184169695Skan IN char *target; 185169695Skan}; 186169695Skan 187169695Skanvop_readdir { 188169695Skan IN struct vnode *vp; 189169695Skan INOUT struct uio *uio; 190169695Skan IN struct ucred *cred; 191169695Skan INOUT int *eofflag; 192169695Skan INOUT int *ncookies; 193169695Skan INOUT u_int **cookies; 194169695Skan}; 195169695Skan 196169695Skanvop_readlink { 197169695Skan IN struct vnode *vp; 198169695Skan INOUT struct uio *uio; 199169695Skan IN struct ucred *cred; 200169695Skan}; 201169695Skan 202169695Skanvop_abortop { 203169695Skan IN struct vnode *dvp; 204169695Skan IN struct componentname *cnp; 205169695Skan}; 206169695Skan 207169695Skanvop_inactive { 208169695Skan IN struct vnode *vp; 209169695Skan}; 210169695Skan 211169695Skanvop_reclaim { 212169695Skan IN struct vnode *vp; 213169695Skan}; 214169695Skan 215169695Skanvop_lock { 216169695Skan IN struct vnode *vp; 217169695Skan}; 218169695Skan 219169695Skanvop_unlock { 220169695Skan IN struct vnode *vp; 221169695Skan}; 222169695Skan 223169695Skanvop_bmap { 224169695Skan IN struct vnode *vp; 225169695Skan IN daddr_t bn; 226169695Skan OUT struct vnode **vpp; 227169695Skan IN daddr_t *bnp; 228169695Skan OUT int *runp; 229169695Skan OUT int *runb; 230169695Skan}; 231169695Skan 232169695Skan#vop_strategy { 233169695Skan# IN struct buf *bp; 234169695Skan#}; 235169695Skan 236169695Skanvop_print { 237169695Skan IN struct vnode *vp; 238169695Skan}; 239169695Skan 240169695Skanvop_islocked { 241169695Skan IN struct vnode *vp; 242169695Skan}; 243169695Skan 244169695Skanvop_pathconf { 245169695Skan IN struct vnode *vp; 246169695Skan IN int name; 247169695Skan OUT int *retval; 248169695Skan}; 249169695Skan 250169695Skanvop_advlock { 251169695Skan IN struct vnode *vp; 252169695Skan IN caddr_t id; 253169695Skan IN int op; 254169695Skan IN struct flock *fl; 255169695Skan IN int flags; 256169695Skan}; 257169695Skan 258169695Skanvop_blkatoff { 259169695Skan IN struct vnode *vp; 260169695Skan IN off_t offset; 261169695Skan OUT char **res; 262169695Skan OUT struct buf **bpp; 263169695Skan}; 264169695Skan 265169695Skanvop_valloc { 266169695Skan IN struct vnode *pvp; 267169695Skan IN int mode; 268169695Skan IN struct ucred *cred; 269169695Skan OUT struct vnode **vpp; 270169695Skan}; 271169695Skan 272169695Skanvop_reallocblks { 273169695Skan IN struct vnode *vp; 274169695Skan IN struct cluster_save *buflist; 275169695Skan}; 276169695Skan 277169695Skanvop_vfree { 278169695Skan IN struct vnode *pvp; 279169695Skan IN ino_t ino; 280169695Skan IN int mode; 281169695Skan}; 282169695Skan 283169695Skanvop_truncate { 284169695Skan IN struct vnode *vp; 285169695Skan IN off_t length; 286169695Skan IN int flags; 287169695Skan IN struct ucred *cred; 288169695Skan IN struct proc *p; 289169695Skan}; 290169695Skan 291169695Skanvop_update { 292169695Skan IN struct vnode *vp; 293169695Skan IN struct timeval *access; 294169695Skan IN struct timeval *modify; 295169695Skan IN int waitfor; 296169695Skan}; 297169695Skan 298169695Skanvop_getpages { 299169695Skan IN struct vnode *vp; 300169695Skan IN vm_page_t *m; 301169695Skan IN int count; 302169695Skan IN int reqpage; 303169695Skan IN vm_ooffset_t offset; 304169695Skan}; 305169695Skan 306169695Skanvop_putpages { 307169695Skan IN struct vnode *vp; 308169695Skan IN vm_page_t *m; 309169695Skan IN int count; 310169695Skan IN int sync; 311169695Skan IN int *rtvals; 312169695Skan IN vm_ooffset_t offset; 313169695Skan}; 314169695Skan 315169695Skan# Needs work: no vp? 316169695Skan#vop_bwrite { 317169695Skan# IN struct buf *bp; 318169695Skan#}; 319169695Skan