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# 35vop_lookup { 36 IN struct vnode *dvp; 37 INOUT struct vnode **vpp; 38 IN struct componentname *cnp; 39}; 40 41vop_create { 42 IN WILLRELE struct vnode *dvp; 43 OUT struct vnode **vpp; 44 IN struct componentname *cnp; 45 IN struct vattr *vap; 46}; 47 48vop_mknod { 49 IN WILLRELE struct vnode *dvp; 50 OUT WILLRELE struct vnode **vpp; 51 IN struct componentname *cnp; 52 IN struct vattr *vap; 53}; 54 55vop_open { 56 IN struct vnode *vp; 57 IN int mode; 58 IN struct ucred *cred; 59 IN struct proc *p; 60}; 61 62vop_close { 63 IN struct vnode *vp; 64 IN int fflag; 65 IN struct ucred *cred; 66 IN struct proc *p; 67}; 68 69vop_access { 70 IN struct vnode *vp; 71 IN int mode; 72 IN struct ucred *cred; 73 IN struct proc *p; 74}; 75 76vop_getattr { 77 IN struct vnode *vp; 78 IN struct vattr *vap; 79 IN struct ucred *cred; 80 IN struct proc *p; 81}; 82 83vop_setattr { 84 IN struct vnode *vp; 85 IN struct vattr *vap; 86 IN struct ucred *cred; 87 IN struct proc *p; 88}; 89 90vop_read { 91 IN struct vnode *vp; 92 INOUT struct uio *uio; 93 IN int ioflag; 94 IN struct ucred *cred; 95}; 96 97vop_write { 98 IN struct vnode *vp; 99 INOUT struct uio *uio; 100 IN int ioflag; 101 IN struct ucred *cred; 102}; 103 104vop_ioctl { 105 IN struct vnode *vp; 106 IN int command; 107 IN caddr_t data; 108 IN int fflag; 109 IN struct ucred *cred; 110 IN struct proc *p; 111}; 112 113# Needs work? (fflags) 114vop_select { 115 IN struct vnode *vp; 116 IN int which; 117 IN int fflags; 118 IN struct ucred *cred; 119 IN struct proc *p; 120}; 121 122vop_mmap { 123 IN struct vnode *vp; 124 IN int fflags; 125 IN struct ucred *cred; 126 IN struct proc *p; 127}; 128 129vop_fsync { 130 IN struct vnode *vp; 131 IN struct ucred *cred; 132 IN int waitfor; 133 IN struct proc *p; 134}; 135 136# Needs word: Is newoff right? What's it mean? 137vop_seek { 138 IN struct vnode *vp; 139 IN off_t oldoff; 140 IN off_t newoff; 141 IN struct ucred *cred; 142}; 143 144vop_remove { 145 IN WILLRELE struct vnode *dvp; 146 IN WILLRELE struct vnode *vp; 147 IN struct componentname *cnp; 148}; 149 150vop_link { 151 IN WILLRELE struct vnode *vp; 152 IN struct vnode *tdvp; 153 IN struct componentname *cnp; 154}; 155 156vop_rename { 157 IN WILLRELE struct vnode *fdvp; 158 IN WILLRELE struct vnode *fvp; 159 IN struct componentname *fcnp; 160 IN WILLRELE struct vnode *tdvp; 161 IN WILLRELE struct vnode *tvp; 162 IN struct componentname *tcnp; 163}; 164 165vop_mkdir { 166 IN WILLRELE struct vnode *dvp; 167 OUT struct vnode **vpp; 168 IN struct componentname *cnp; 169 IN struct vattr *vap; 170}; 171 172vop_rmdir { 173 IN WILLRELE struct vnode *dvp; 174 IN WILLRELE struct vnode *vp; 175 IN struct componentname *cnp; 176}; 177 178vop_symlink { 179 IN WILLRELE struct vnode *dvp; 180 OUT WILLRELE struct vnode **vpp; 181 IN struct componentname *cnp; 182 IN struct vattr *vap; 183 IN char *target; 184}; 185 186vop_readdir { 187 IN struct vnode *vp; 188 INOUT struct uio *uio; 189 IN struct ucred *cred; 190}; 191 192vop_readlink { 193 IN struct vnode *vp; 194 INOUT struct uio *uio; 195 IN struct ucred *cred; 196}; 197 198vop_abortop { 199 IN struct vnode *dvp; 200 IN struct componentname *cnp; 201}; 202 203vop_inactive { 204 IN struct vnode *vp; 205}; 206 207vop_reclaim { 208 IN struct vnode *vp; 209}; 210 211vop_lock { 212 IN struct vnode *vp; 213}; 214 215vop_unlock { 216 IN struct vnode *vp; 217}; 218 219vop_bmap { 220 IN struct vnode *vp; 221 IN daddr_t bn; 222 OUT struct vnode **vpp; 223 IN daddr_t *bnp; 224 OUT int *runp; 225}; 226 227#vop_strategy { 228# IN struct buf *bp; 229#}; 230 231vop_print { 232 IN struct vnode *vp; 233}; 234 235vop_islocked { 236 IN struct vnode *vp; 237}; 238 239vop_pathconf { 240 IN struct vnode *vp; 241 IN int name; 242 OUT int *retval; 243}; 244 245vop_advlock { 246 IN struct vnode *vp; 247 IN caddr_t id; 248 IN int op; 249 IN struct flock *fl; 250 IN int flags; 251}; 252 253vop_blkatoff { 254 IN struct vnode *vp; 255 IN off_t offset; 256 OUT char **res; 257 OUT struct buf **bpp; 258}; 259 260vop_valloc { 261 IN struct vnode *pvp; 262 IN int mode; 263 IN struct ucred *cred; 264 OUT struct vnode **vpp; 265}; 266 267vop_reallocblks { 268 IN struct vnode *vp; 269 IN struct cluster_save *buflist; 270}; 271 272vop_vfree { 273 IN struct vnode *pvp; 274 IN ino_t ino; 275 IN int mode; 276}; 277 278vop_truncate { 279 IN struct vnode *vp; 280 IN off_t length; 281 IN int flags; 282 IN struct ucred *cred; 283 IN struct proc *p; 284}; 285 286vop_update { 287 IN struct vnode *vp; 288 IN struct timeval *access; 289 IN struct timeval *modify; 290 IN int waitfor; 291}; 292 293# Needs work: no vp? 294#vop_bwrite { 295# IN struct buf *bp; 296#}; 297