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$ 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}; 192 193vop_readlink { 194 IN struct vnode *vp; 195 INOUT struct uio *uio; 196 IN struct ucred *cred; 197}; 198 199vop_abortop { 200 IN struct vnode *dvp; 201 IN struct componentname *cnp; 202}; 203 204vop_inactive { 205 IN struct vnode *vp; 206}; 207 208vop_reclaim { 209 IN struct vnode *vp; 210}; 211 212vop_lock { 213 IN struct vnode *vp; 214}; 215 216vop_unlock { 217 IN struct vnode *vp; 218}; 219 220vop_bmap { 221 IN struct vnode *vp; 222 IN daddr_t bn; 223 OUT struct vnode **vpp; 224 IN daddr_t *bnp; 225 OUT int *runp; 226}; 227 228#vop_strategy { 229# IN struct buf *bp; 230#}; 231 232vop_print { 233 IN struct vnode *vp; 234}; 235 236vop_islocked { 237 IN struct vnode *vp; 238}; 239 240vop_pathconf { 241 IN struct vnode *vp; 242 IN int name; 243 OUT int *retval; 244}; 245 246vop_advlock { 247 IN struct vnode *vp; 248 IN caddr_t id; 249 IN int op; 250 IN struct flock *fl; 251 IN int flags; 252}; 253 254vop_blkatoff { 255 IN struct vnode *vp; 256 IN off_t offset; 257 OUT char **res; 258 OUT struct buf **bpp; 259}; 260 261vop_valloc { 262 IN struct vnode *pvp; 263 IN int mode; 264 IN struct ucred *cred; 265 OUT struct vnode **vpp; 266}; 267 268vop_reallocblks { 269 IN struct vnode *vp; 270 IN struct cluster_save *buflist; 271}; 272 273vop_vfree { 274 IN struct vnode *pvp; 275 IN ino_t ino; 276 IN int mode; 277}; 278 279vop_truncate { 280 IN struct vnode *vp; 281 IN off_t length; 282 IN int flags; 283 IN struct ucred *cred; 284 IN struct proc *p; 285}; 286 287vop_update { 288 IN struct vnode *vp; 289 IN struct timeval *access; 290 IN struct timeval *modify; 291 IN int waitfor; 292}; 293 294# Needs work: no vp? 295#vop_bwrite { 296# IN struct buf *bp; 297#}; 298