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.7 1995/09/04 00:20:19 dyson 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 151vop_link { 152 IN WILLRELE struct vnode *tdvp; 153 IN struct vnode *vp; 154 IN struct componentname *cnp; 155}; 156 157vop_rename { 158 IN WILLRELE struct vnode *fdvp; 159 IN WILLRELE struct vnode *fvp; 160 IN struct componentname *fcnp; 161 IN WILLRELE struct vnode *tdvp; 162 IN WILLRELE struct vnode *tvp; 163 IN struct componentname *tcnp; 164}; 165 166vop_mkdir { 167 IN WILLRELE struct vnode *dvp; 168 OUT struct vnode **vpp; 169 IN struct componentname *cnp; 170 IN struct vattr *vap; 171}; 172 173vop_rmdir { 174 IN WILLRELE struct vnode *dvp; 175 IN WILLRELE struct vnode *vp; 176 IN struct componentname *cnp; 177}; 178 179vop_symlink { 180 IN WILLRELE struct vnode *dvp; 181 OUT WILLRELE struct vnode **vpp; 182 IN struct componentname *cnp; 183 IN struct vattr *vap; 184 IN char *target; 185}; 186 187vop_readdir { 188 IN struct vnode *vp; 189 INOUT struct uio *uio; 190 IN struct ucred *cred; 191 INOUT int *eofflag; 192 INOUT int *ncookies; 193 INOUT u_int **cookies; 194}; 195 196vop_readlink { 197 IN struct vnode *vp; 198 INOUT struct uio *uio; 199 IN struct ucred *cred; 200}; 201 202vop_abortop { 203 IN struct vnode *dvp; 204 IN struct componentname *cnp; 205}; 206 207vop_inactive { 208 IN struct vnode *vp; 209}; 210 211vop_reclaim { 212 IN struct vnode *vp; 213}; 214 215vop_lock { 216 IN struct vnode *vp; 217}; 218 219vop_unlock { 220 IN struct vnode *vp; 221}; 222 223vop_bmap { 224 IN struct vnode *vp; 225 IN daddr_t bn; 226 OUT struct vnode **vpp; 227 IN daddr_t *bnp; 228 OUT int *runp; 229 OUT int *runb; 230}; 231 232#vop_strategy { 233# IN struct buf *bp; 234#}; 235 236vop_print { 237 IN struct vnode *vp; 238}; 239 240vop_islocked { 241 IN struct vnode *vp; 242}; 243 244vop_pathconf { 245 IN struct vnode *vp; 246 IN int name; 247 OUT int *retval; 248}; 249 250vop_advlock { 251 IN struct vnode *vp; 252 IN caddr_t id; 253 IN int op; 254 IN struct flock *fl; 255 IN int flags; 256}; 257 258vop_blkatoff { 259 IN struct vnode *vp; 260 IN off_t offset; 261 OUT char **res; 262 OUT struct buf **bpp; 263}; 264 265vop_valloc { 266 IN struct vnode *pvp; 267 IN int mode; 268 IN struct ucred *cred; 269 OUT struct vnode **vpp; 270}; 271 272vop_reallocblks { 273 IN struct vnode *vp; 274 IN struct cluster_save *buflist; 275}; 276 277vop_vfree { 278 IN struct vnode *pvp; 279 IN ino_t ino; 280 IN int mode; 281}; 282 283vop_truncate { 284 IN struct vnode *vp; 285 IN off_t length; 286 IN int flags; 287 IN struct ucred *cred; 288 IN struct proc *p; 289}; 290 291vop_update { 292 IN struct vnode *vp; 293 IN struct timeval *access; 294 IN struct timeval *modify; 295 IN int waitfor; 296}; 297 298vop_getpages { 299 IN struct vnode *vp; 300 IN vm_page_t *m; 301 IN int count; 302 IN int reqpage; 303 IN vm_offset_t offset; 304}; 305 306vop_putpages { 307 IN struct vnode *vp; 308 IN vm_page_t *m; 309 IN int count; 310 IN int sync; 311 IN int *rtvals; 312 IN vm_offset_t offset; 313}; 314 315# Needs work: no vp? 316#vop_bwrite { 317# IN struct buf *bp; 318#}; 319