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.2 1994/08/02 07:43:37 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 151vop_link { 152 IN WILLRELE struct vnode *vp; 153 IN struct vnode *tdvp; 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}; 230 231#vop_strategy { 232# IN struct buf *bp; 233#}; 234 235vop_print { 236 IN struct vnode *vp; 237}; 238 239vop_islocked { 240 IN struct vnode *vp; 241}; 242 243vop_pathconf { 244 IN struct vnode *vp; 245 IN int name; 246 OUT int *retval; 247}; 248 249vop_advlock { 250 IN struct vnode *vp; 251 IN caddr_t id; 252 IN int op; 253 IN struct flock *fl; 254 IN int flags; 255}; 256 257vop_blkatoff { 258 IN struct vnode *vp; 259 IN off_t offset; 260 OUT char **res; 261 OUT struct buf **bpp; 262}; 263 264vop_valloc { 265 IN struct vnode *pvp; 266 IN int mode; 267 IN struct ucred *cred; 268 OUT struct vnode **vpp; 269}; 270 271vop_reallocblks { 272 IN struct vnode *vp; 273 IN struct cluster_save *buflist; 274}; 275 276vop_vfree { 277 IN struct vnode *pvp; 278 IN ino_t ino; 279 IN int mode; 280}; 281 282vop_truncate { 283 IN struct vnode *vp; 284 IN off_t length; 285 IN int flags; 286 IN struct ucred *cred; 287 IN struct proc *p; 288}; 289 290vop_update { 291 IN struct vnode *vp; 292 IN struct timeval *access; 293 IN struct timeval *modify; 294 IN int waitfor; 295}; 296 297# Needs work: no vp? 298#vop_bwrite { 299# IN struct buf *bp; 300#}; 301