vnode_if.src revision 9430
1# 2# Copyright (c) 1992, 1993 3# The Regents of the University of California. All rights reserved. 4# 5# Redistribution and use in source and binary forms, with or without 6# modification, are permitted provided that the following conditions 7# are met: 8# 1. Redistributions of source code must retain the above copyright 9# notice, this list of conditions and the following disclaimer. 10# 2. Redistributions in binary form must reproduce the above copyright 11# notice, this list of conditions and the following disclaimer in the 12# documentation and/or other materials provided with the distribution. 13# 3. All advertising materials mentioning features or use of this software 14# must display the following acknowledgement: 15# This product includes software developed by the University of 16# California, Berkeley and its contributors. 17# 4. Neither the name of the University nor the names of its contributors 18# may be used to endorse or promote products derived from this software 19# without specific prior written permission. 20# 21# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 22# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 25# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 26# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 27# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 28# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 29# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 30# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31# SUCH DAMAGE. 32# 33# @(#)vnode_if.src 8.3 (Berkeley) 2/3/94 34# $Id: vnode_if.src,v 1.4 1995/06/28 07:06:41 davidg Exp $ 35# 36vop_lookup { 37 IN struct vnode *dvp; 38 INOUT struct vnode **vpp; 39 IN struct componentname *cnp; 40}; 41 42vop_create { 43 IN WILLRELE struct vnode *dvp; 44 OUT struct vnode **vpp; 45 IN struct componentname *cnp; 46 IN struct vattr *vap; 47}; 48 49vop_mknod { 50 IN WILLRELE struct vnode *dvp; 51 OUT WILLRELE struct vnode **vpp; 52 IN struct componentname *cnp; 53 IN struct vattr *vap; 54}; 55 56vop_open { 57 IN struct vnode *vp; 58 IN int mode; 59 IN struct ucred *cred; 60 IN struct proc *p; 61}; 62 63vop_close { 64 IN struct vnode *vp; 65 IN int fflag; 66 IN struct ucred *cred; 67 IN struct proc *p; 68}; 69 70vop_access { 71 IN struct vnode *vp; 72 IN int mode; 73 IN struct ucred *cred; 74 IN struct proc *p; 75}; 76 77vop_getattr { 78 IN struct vnode *vp; 79 IN struct vattr *vap; 80 IN struct ucred *cred; 81 IN struct proc *p; 82}; 83 84vop_setattr { 85 IN struct vnode *vp; 86 IN struct vattr *vap; 87 IN struct ucred *cred; 88 IN struct proc *p; 89}; 90 91vop_read { 92 IN struct vnode *vp; 93 INOUT struct uio *uio; 94 IN int ioflag; 95 IN struct ucred *cred; 96}; 97 98vop_write { 99 IN struct vnode *vp; 100 INOUT struct uio *uio; 101 IN int ioflag; 102 IN struct ucred *cred; 103}; 104 105vop_ioctl { 106 IN struct vnode *vp; 107 IN int command; 108 IN caddr_t data; 109 IN int fflag; 110 IN struct ucred *cred; 111 IN struct proc *p; 112}; 113 114# Needs work? (fflags) 115vop_select { 116 IN struct vnode *vp; 117 IN int which; 118 IN int fflags; 119 IN struct ucred *cred; 120 IN struct proc *p; 121}; 122 123vop_mmap { 124 IN struct vnode *vp; 125 IN int fflags; 126 IN struct ucred *cred; 127 IN struct proc *p; 128}; 129 130vop_fsync { 131 IN struct vnode *vp; 132 IN struct ucred *cred; 133 IN int waitfor; 134 IN struct proc *p; 135}; 136 137# Needs word: Is newoff right? What's it mean? 138vop_seek { 139 IN struct vnode *vp; 140 IN off_t oldoff; 141 IN off_t newoff; 142 IN struct ucred *cred; 143}; 144 145vop_remove { 146 IN WILLRELE struct vnode *dvp; 147 IN WILLRELE struct vnode *vp; 148 IN struct componentname *cnp; 149}; 150 151# Gack. The generated VCALL uses the first vp which might 152# not be handled by the same FS as the directory (e.g. special 153# device files)...so it's special-cased. 154# 155#vop_link { 156# IN struct vnode *vp; 157# IN WILLRELE struct vnode *tdvp; 158# IN struct componentname *cnp; 159#}; 160 161vop_rename { 162 IN WILLRELE struct vnode *fdvp; 163 IN WILLRELE struct vnode *fvp; 164 IN struct componentname *fcnp; 165 IN WILLRELE struct vnode *tdvp; 166 IN WILLRELE struct vnode *tvp; 167 IN struct componentname *tcnp; 168}; 169 170vop_mkdir { 171 IN WILLRELE struct vnode *dvp; 172 OUT struct vnode **vpp; 173 IN struct componentname *cnp; 174 IN struct vattr *vap; 175}; 176 177vop_rmdir { 178 IN WILLRELE struct vnode *dvp; 179 IN WILLRELE struct vnode *vp; 180 IN struct componentname *cnp; 181}; 182 183vop_symlink { 184 IN WILLRELE struct vnode *dvp; 185 OUT WILLRELE struct vnode **vpp; 186 IN struct componentname *cnp; 187 IN struct vattr *vap; 188 IN char *target; 189}; 190 191vop_readdir { 192 IN struct vnode *vp; 193 INOUT struct uio *uio; 194 IN struct ucred *cred; 195 INOUT int *eofflag; 196 INOUT int *ncookies; 197 INOUT u_int **cookies; 198}; 199 200vop_readlink { 201 IN struct vnode *vp; 202 INOUT struct uio *uio; 203 IN struct ucred *cred; 204}; 205 206vop_abortop { 207 IN struct vnode *dvp; 208 IN struct componentname *cnp; 209}; 210 211vop_inactive { 212 IN struct vnode *vp; 213}; 214 215vop_reclaim { 216 IN struct vnode *vp; 217}; 218 219vop_lock { 220 IN struct vnode *vp; 221}; 222 223vop_unlock { 224 IN struct vnode *vp; 225}; 226 227vop_bmap { 228 IN struct vnode *vp; 229 IN daddr_t bn; 230 OUT struct vnode **vpp; 231 IN daddr_t *bnp; 232 OUT int *runp; 233}; 234 235#vop_strategy { 236# IN struct buf *bp; 237#}; 238 239vop_print { 240 IN struct vnode *vp; 241}; 242 243vop_islocked { 244 IN struct vnode *vp; 245}; 246 247vop_pathconf { 248 IN struct vnode *vp; 249 IN int name; 250 OUT int *retval; 251}; 252 253vop_advlock { 254 IN struct vnode *vp; 255 IN caddr_t id; 256 IN int op; 257 IN struct flock *fl; 258 IN int flags; 259}; 260 261vop_blkatoff { 262 IN struct vnode *vp; 263 IN off_t offset; 264 OUT char **res; 265 OUT struct buf **bpp; 266}; 267 268vop_valloc { 269 IN struct vnode *pvp; 270 IN int mode; 271 IN struct ucred *cred; 272 OUT struct vnode **vpp; 273}; 274 275vop_reallocblks { 276 IN struct vnode *vp; 277 IN struct cluster_save *buflist; 278}; 279 280vop_vfree { 281 IN struct vnode *pvp; 282 IN ino_t ino; 283 IN int mode; 284}; 285 286vop_truncate { 287 IN struct vnode *vp; 288 IN off_t length; 289 IN int flags; 290 IN struct ucred *cred; 291 IN struct proc *p; 292}; 293 294vop_update { 295 IN struct vnode *vp; 296 IN struct timeval *access; 297 IN struct timeval *modify; 298 IN int waitfor; 299}; 300 301# Needs work: no vp? 302#vop_bwrite { 303# IN struct buf *bp; 304#}; 305