1 1.85 hannken # $NetBSD: vnode_if.src,v 1.85 2023/06/15 09:13:36 hannken Exp $ 2 1.1 mycroft # 3 1.1 mycroft # Copyright (c) 1992, 1993 4 1.1 mycroft # The Regents of the University of California. All rights reserved. 5 1.1 mycroft # 6 1.1 mycroft # Redistribution and use in source and binary forms, with or without 7 1.1 mycroft # modification, are permitted provided that the following conditions 8 1.1 mycroft # are met: 9 1.1 mycroft # 1. Redistributions of source code must retain the above copyright 10 1.1 mycroft # notice, this list of conditions and the following disclaimer. 11 1.1 mycroft # 2. Redistributions in binary form must reproduce the above copyright 12 1.1 mycroft # notice, this list of conditions and the following disclaimer in the 13 1.1 mycroft # documentation and/or other materials provided with the distribution. 14 1.61 rmind # 3. Neither the name of the University nor the names of its contributors 15 1.1 mycroft # may be used to endorse or promote products derived from this software 16 1.1 mycroft # without specific prior written permission. 17 1.1 mycroft # 18 1.1 mycroft # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 19 1.1 mycroft # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 1.1 mycroft # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 21 1.1 mycroft # ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 22 1.1 mycroft # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 1.1 mycroft # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 24 1.1 mycroft # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 25 1.1 mycroft # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 26 1.1 mycroft # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 27 1.1 mycroft # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 28 1.1 mycroft # SUCH DAMAGE. 29 1.1 mycroft # 30 1.13 fvdl # @(#)vnode_if.src 8.14 (Berkeley) 8/6/95 31 1.13 fvdl # 32 1.13 fvdl # 33 1.13 fvdl 34 1.44 perry # 35 1.13 fvdl # Above each of the vop descriptors is a specification of the locking 36 1.13 fvdl # protocol used by each vop call. The first column is the name of 37 1.13 fvdl # the variable, the remaining three columns are in, out and error 38 1.13 fvdl # respectively. The "in" column defines the lock state on input, 39 1.36 wiz # the "out" column defines the state on successful return, and the 40 1.13 fvdl # "error" column defines the locking state on error exit. 41 1.44 perry # 42 1.13 fvdl # The locking value can take the following values: 43 1.13 fvdl # L: locked. 44 1.30 chs # U: unlocked. 45 1.13 fvdl # -: not applicable. vnode does not yet (or no longer) exists. 46 1.13 fvdl # =: the same on input and output, may be either L or U. 47 1.13 fvdl # X: locked if not nil. 48 1.22 wrstuden # 49 1.22 wrstuden # For operations other than VOP_LOOKUP which require a component name 50 1.22 wrstuden # parameter, the flags required for the initial namei() call are listed. 51 1.22 wrstuden # Additional flags may be added to the namei() call, but these are required. 52 1.44 perry # 53 1.62 hannken 54 1.62 hannken # 55 1.62 hannken #% bwrite vp = = = 56 1.62 hannken # 57 1.62 hannken vop_bwrite { 58 1.62 hannken IN struct vnode *vp; 59 1.62 hannken IN struct buf *bp; 60 1.62 hannken }; 61 1.81 dholland 62 1.81 dholland # 63 1.82 dholland #% parsepath dvp = = = 64 1.81 dholland # 65 1.81 dholland vop_parsepath { 66 1.82 dholland FSTRANS=NO 67 1.81 dholland IN struct vnode *dvp; 68 1.81 dholland IN const char *name; 69 1.81 dholland OUT size_t *retval; 70 1.81 dholland }; 71 1.44 perry 72 1.13 fvdl # 73 1.51 pooka #% lookup dvp L L L 74 1.66 hannken #% lookup vpp - U - 75 1.13 fvdl # 76 1.51 pooka # Note especially that *vpp may equal dvp. 77 1.16 sommerfe # 78 1.16 sommerfe # More details: 79 1.66 hannken # All lookups find the named node (creating the vnode if needed) and 80 1.66 hannken # return it, referenced and unlocked, in *vpp. 81 1.51 pooka # On failure, *vpp is NULL, and *dvp is left locked. 82 1.1 mycroft # 83 1.1 mycroft vop_lookup { 84 1.66 hannken VERSION 2 85 1.70 hannken IN LOCKED=YES struct vnode *dvp; 86 1.58 pooka OUT WILLMAKE struct vnode **vpp; 87 1.1 mycroft IN struct componentname *cnp; 88 1.1 mycroft }; 89 1.1 mycroft 90 1.13 fvdl # 91 1.64 hannken #% create dvp L L L 92 1.65 hannken #% create vpp - U - 93 1.13 fvdl # 94 1.22 wrstuden #! create cnp CREATE, LOCKPARENT 95 1.22 wrstuden # 96 1.1 mycroft vop_create { 97 1.65 hannken VERSION 3 98 1.83 thorpej POST=vop_create_post 99 1.84 hannken IN LOCKED=EXCL struct vnode *dvp; 100 1.53 pooka OUT WILLMAKE struct vnode **vpp; 101 1.1 mycroft IN struct componentname *cnp; 102 1.1 mycroft IN struct vattr *vap; 103 1.1 mycroft }; 104 1.1 mycroft 105 1.13 fvdl # 106 1.64 hannken #% mknod dvp L L L 107 1.65 hannken #% mknod vpp - U - 108 1.13 fvdl # 109 1.22 wrstuden #! mknod cnp CREATE, LOCKPARENT 110 1.22 wrstuden # 111 1.1 mycroft vop_mknod { 112 1.65 hannken VERSION 3 113 1.83 thorpej POST=vop_mknod_post 114 1.84 hannken IN LOCKED=EXCL struct vnode *dvp; 115 1.53 pooka OUT WILLMAKE struct vnode **vpp; 116 1.1 mycroft IN struct componentname *cnp; 117 1.1 mycroft IN struct vattr *vap; 118 1.1 mycroft }; 119 1.1 mycroft 120 1.13 fvdl # 121 1.13 fvdl #% open vp L L L 122 1.13 fvdl # 123 1.1 mycroft vop_open { 124 1.83 thorpej POST=vop_open_post 125 1.41 thorpej IN LOCKED=YES struct vnode *vp; 126 1.1 mycroft IN int mode; 127 1.50 elad IN kauth_cred_t cred; 128 1.1 mycroft }; 129 1.1 mycroft 130 1.13 fvdl # 131 1.15 wrstuden #% close vp L L L 132 1.13 fvdl # 133 1.1 mycroft vop_close { 134 1.83 thorpej POST=vop_close_post 135 1.41 thorpej IN LOCKED=YES struct vnode *vp; 136 1.1 mycroft IN int fflag; 137 1.50 elad IN kauth_cred_t cred; 138 1.1 mycroft }; 139 1.1 mycroft 140 1.13 fvdl # 141 1.13 fvdl #% access vp L L L 142 1.13 fvdl # 143 1.1 mycroft vop_access { 144 1.41 thorpej IN LOCKED=YES struct vnode *vp; 145 1.79 christos IN accmode_t accmode; 146 1.79 christos IN kauth_cred_t cred; 147 1.79 christos }; 148 1.79 christos 149 1.79 christos # 150 1.79 christos #% accessx vp L L L 151 1.79 christos # 152 1.79 christos vop_accessx { 153 1.79 christos IN LOCKED=YES struct vnode *vp; 154 1.79 christos IN accmode_t accmode; 155 1.50 elad IN kauth_cred_t cred; 156 1.1 mycroft }; 157 1.1 mycroft 158 1.13 fvdl # 159 1.63 hannken #% getattr vp L L L 160 1.13 fvdl # 161 1.1 mycroft vop_getattr { 162 1.70 hannken IN LOCKED=YES struct vnode *vp; 163 1.1 mycroft IN struct vattr *vap; 164 1.50 elad IN kauth_cred_t cred; 165 1.1 mycroft }; 166 1.1 mycroft 167 1.13 fvdl # 168 1.13 fvdl #% setattr vp L L L 169 1.13 fvdl # 170 1.1 mycroft vop_setattr { 171 1.83 thorpej PRE=vop_setattr_pre 172 1.83 thorpej POST=vop_setattr_post 173 1.84 hannken IN LOCKED=EXCL struct vnode *vp; 174 1.1 mycroft IN struct vattr *vap; 175 1.50 elad IN kauth_cred_t cred; 176 1.1 mycroft }; 177 1.1 mycroft 178 1.13 fvdl # 179 1.13 fvdl #% read vp L L L 180 1.13 fvdl # 181 1.1 mycroft vop_read { 182 1.83 thorpej POST=vop_read_post 183 1.41 thorpej IN LOCKED=YES struct vnode *vp; 184 1.1 mycroft INOUT struct uio *uio; 185 1.1 mycroft IN int ioflag; 186 1.50 elad IN kauth_cred_t cred; 187 1.1 mycroft }; 188 1.1 mycroft 189 1.13 fvdl # 190 1.13 fvdl #% write vp L L L 191 1.13 fvdl # 192 1.1 mycroft vop_write { 193 1.83 thorpej PRE=vop_write_pre 194 1.83 thorpej POST=vop_write_post 195 1.41 thorpej IN LOCKED=YES struct vnode *vp; 196 1.1 mycroft INOUT struct uio *uio; 197 1.1 mycroft IN int ioflag; 198 1.50 elad IN kauth_cred_t cred; 199 1.1 mycroft }; 200 1.1 mycroft 201 1.13 fvdl # 202 1.67 dholland #% fallocate vp L L L 203 1.67 dholland # 204 1.67 dholland vop_fallocate { 205 1.67 dholland IN LOCKED=YES struct vnode *vp; 206 1.67 dholland IN off_t pos; 207 1.67 dholland IN off_t len; 208 1.67 dholland }; 209 1.67 dholland 210 1.67 dholland # 211 1.67 dholland #% fdiscard vp L L L 212 1.67 dholland # 213 1.67 dholland vop_fdiscard { 214 1.67 dholland IN LOCKED=YES struct vnode *vp; 215 1.67 dholland IN off_t pos; 216 1.67 dholland IN off_t len; 217 1.67 dholland }; 218 1.67 dholland 219 1.67 dholland # 220 1.85 hannken #% ioctl vp = = = 221 1.13 fvdl # 222 1.1 mycroft vop_ioctl { 223 1.70 hannken FSTRANS=NO 224 1.85 hannken IN struct vnode *vp; 225 1.4 cgd IN u_long command; 226 1.32 jdolecek IN void *data; 227 1.19 wrstuden IN int fflag; 228 1.50 elad IN kauth_cred_t cred; 229 1.19 wrstuden }; 230 1.19 wrstuden 231 1.19 wrstuden # 232 1.49 perseant #% fcntl vp U U U 233 1.19 wrstuden # 234 1.19 wrstuden vop_fcntl { 235 1.70 hannken FSTRANS=NO 236 1.49 perseant IN LOCKED=NO struct vnode *vp; 237 1.19 wrstuden IN u_int command; 238 1.32 jdolecek IN void *data; 239 1.1 mycroft IN int fflag; 240 1.50 elad IN kauth_cred_t cred; 241 1.1 mycroft }; 242 1.1 mycroft 243 1.13 fvdl # 244 1.13 fvdl #% poll vp U U U 245 1.13 fvdl # 246 1.11 mycroft vop_poll { 247 1.41 thorpej IN LOCKED=NO struct vnode *vp; 248 1.11 mycroft IN int events; 249 1.31 jdolecek }; 250 1.31 jdolecek 251 1.31 jdolecek # 252 1.31 jdolecek #% kqfilter vp U U U 253 1.31 jdolecek # 254 1.31 jdolecek vop_kqfilter { 255 1.41 thorpej IN LOCKED=NO struct vnode *vp; 256 1.31 jdolecek IN struct knote *kn; 257 1.1 mycroft }; 258 1.1 mycroft 259 1.13 fvdl # 260 1.13 fvdl #% revoke vp U U U 261 1.13 fvdl # 262 1.13 fvdl vop_revoke { 263 1.70 hannken FSTRANS=NO 264 1.41 thorpej IN LOCKED=NO struct vnode *vp; 265 1.13 fvdl IN int flags; 266 1.13 fvdl }; 267 1.13 fvdl 268 1.44 perry # 269 1.30 chs #% mmap vp = = = 270 1.13 fvdl # 271 1.1 mycroft vop_mmap { 272 1.1 mycroft IN struct vnode *vp; 273 1.54 pooka IN vm_prot_t prot; 274 1.50 elad IN kauth_cred_t cred; 275 1.1 mycroft }; 276 1.1 mycroft 277 1.13 fvdl # 278 1.13 fvdl #% fsync vp L L L 279 1.13 fvdl # 280 1.1 mycroft vop_fsync { 281 1.41 thorpej IN LOCKED=YES struct vnode *vp; 282 1.50 elad IN kauth_cred_t cred; 283 1.14 kleink IN int flags; 284 1.37 wiz IN off_t offlo; 285 1.37 wiz IN off_t offhi; 286 1.1 mycroft }; 287 1.1 mycroft 288 1.13 fvdl # 289 1.13 fvdl # Needs work: Is newoff right? What's it mean? 290 1.45 isaki # XXX Locking protocol? 291 1.13 fvdl # 292 1.1 mycroft vop_seek { 293 1.1 mycroft IN struct vnode *vp; 294 1.1 mycroft IN off_t oldoff; 295 1.1 mycroft IN off_t newoff; 296 1.50 elad IN kauth_cred_t cred; 297 1.1 mycroft }; 298 1.1 mycroft 299 1.13 fvdl # 300 1.74 riastrad #% remove dvp L L L 301 1.13 fvdl #% remove vp L U U 302 1.13 fvdl # 303 1.22 wrstuden #! remove cnp DELETE, LOCKPARENT | LOCKLEAF 304 1.22 wrstuden # 305 1.1 mycroft vop_remove { 306 1.83 thorpej VERSION 3 307 1.83 thorpej PRE=vop_remove_pre 308 1.83 thorpej POST=vop_remove_post 309 1.84 hannken IN LOCKED=EXCL struct vnode *dvp; 310 1.41 thorpej IN LOCKED=YES WILLPUT struct vnode *vp; 311 1.1 mycroft IN struct componentname *cnp; 312 1.83 thorpej CONTEXT nlink_t vp_new_nlink; 313 1.1 mycroft }; 314 1.1 mycroft 315 1.13 fvdl # 316 1.69 riastrad #% link dvp L L L 317 1.13 fvdl #% link vp U U U 318 1.13 fvdl # 319 1.22 wrstuden #! link cnp CREATE, LOCKPARENT 320 1.22 wrstuden # 321 1.1 mycroft vop_link { 322 1.68 riastrad VERSION 2 323 1.83 thorpej POST=vop_link_post 324 1.84 hannken IN LOCKED=EXCL struct vnode *dvp; 325 1.41 thorpej IN LOCKED=NO struct vnode *vp; 326 1.1 mycroft IN struct componentname *cnp; 327 1.1 mycroft }; 328 1.1 mycroft 329 1.13 fvdl # 330 1.13 fvdl #% rename fdvp U U U 331 1.13 fvdl #% rename fvp U U U 332 1.13 fvdl #% rename tdvp L U U 333 1.13 fvdl #% rename tvp X U U 334 1.13 fvdl # 335 1.60 dholland #! rename fcnp DELETE, LOCKPARENT 336 1.60 dholland #! rename tcnp RENAME, LOCKPARENT | LOCKLEAF | NOCACHE 337 1.22 wrstuden # 338 1.1 mycroft vop_rename { 339 1.84 hannken IN WILLRELE struct vnode *fdvp; 340 1.84 hannken IN WILLRELE struct vnode *fvp; 341 1.1 mycroft IN struct componentname *fcnp; 342 1.41 thorpej IN LOCKED=YES WILLPUT struct vnode *tdvp; 343 1.33 jdolecek IN WILLPUT struct vnode *tvp; 344 1.1 mycroft IN struct componentname *tcnp; 345 1.1 mycroft }; 346 1.1 mycroft 347 1.13 fvdl # 348 1.64 hannken #% mkdir dvp L L L 349 1.65 hannken #% mkdir vpp - U - 350 1.13 fvdl # 351 1.22 wrstuden #! mkdir cnp CREATE, LOCKPARENT 352 1.22 wrstuden # 353 1.1 mycroft vop_mkdir { 354 1.65 hannken VERSION 3 355 1.83 thorpej POST=vop_mkdir_post 356 1.84 hannken IN LOCKED=EXCL struct vnode *dvp; 357 1.53 pooka OUT WILLMAKE struct vnode **vpp; 358 1.1 mycroft IN struct componentname *cnp; 359 1.1 mycroft IN struct vattr *vap; 360 1.1 mycroft }; 361 1.1 mycroft 362 1.13 fvdl # 363 1.74 riastrad #% rmdir dvp L L L 364 1.13 fvdl #% rmdir vp L U U 365 1.13 fvdl # 366 1.22 wrstuden #! rmdir cnp DELETE, LOCKPARENT | LOCKLEAF 367 1.22 wrstuden # 368 1.1 mycroft vop_rmdir { 369 1.74 riastrad VERSION 2 370 1.83 thorpej PRE=vop_rmdir_pre 371 1.83 thorpej POST=vop_rmdir_post 372 1.84 hannken IN LOCKED=EXCL struct vnode *dvp; 373 1.84 hannken IN LOCKED=EXCL WILLPUT struct vnode *vp; 374 1.1 mycroft IN struct componentname *cnp; 375 1.1 mycroft }; 376 1.1 mycroft 377 1.13 fvdl # 378 1.64 hannken #% symlink dvp L L L 379 1.65 hannken #% symlink vpp - U - 380 1.13 fvdl # 381 1.22 wrstuden #! symlink cnp CREATE, LOCKPARENT 382 1.22 wrstuden # 383 1.1 mycroft vop_symlink { 384 1.65 hannken VERSION 3 385 1.83 thorpej POST=vop_symlink_post 386 1.84 hannken IN LOCKED=EXCL struct vnode *dvp; 387 1.53 pooka OUT WILLMAKE struct vnode **vpp; 388 1.1 mycroft IN struct componentname *cnp; 389 1.1 mycroft IN struct vattr *vap; 390 1.1 mycroft IN char *target; 391 1.1 mycroft }; 392 1.1 mycroft 393 1.13 fvdl # 394 1.44 perry #% readdir vp L L L 395 1.13 fvdl # 396 1.1 mycroft vop_readdir { 397 1.41 thorpej IN LOCKED=YES struct vnode *vp; 398 1.1 mycroft INOUT struct uio *uio; 399 1.50 elad IN kauth_cred_t cred; 400 1.1 mycroft OUT int *eofflag; 401 1.13 fvdl OUT off_t **cookies; 402 1.13 fvdl IN int *ncookies; 403 1.1 mycroft }; 404 1.1 mycroft 405 1.13 fvdl # 406 1.13 fvdl #% readlink vp L L L 407 1.13 fvdl # 408 1.1 mycroft vop_readlink { 409 1.41 thorpej IN LOCKED=YES struct vnode *vp; 410 1.1 mycroft INOUT struct uio *uio; 411 1.50 elad IN kauth_cred_t cred; 412 1.1 mycroft }; 413 1.1 mycroft 414 1.13 fvdl # 415 1.13 fvdl #% abortop dvp = = = 416 1.13 fvdl # 417 1.22 wrstuden #! abortop cnp as appropriate. 418 1.22 wrstuden # 419 1.1 mycroft vop_abortop { 420 1.1 mycroft IN struct vnode *dvp; 421 1.1 mycroft IN struct componentname *cnp; 422 1.1 mycroft }; 423 1.1 mycroft 424 1.13 fvdl # 425 1.71 riastrad #% inactive vp L L L 426 1.13 fvdl # 427 1.1 mycroft vop_inactive { 428 1.71 riastrad VERSION 2 429 1.84 hannken IN LOCKED=EXCL struct vnode *vp; 430 1.56 ad INOUT bool *recycle; 431 1.1 mycroft }; 432 1.1 mycroft 433 1.13 fvdl # 434 1.75 riastrad #% reclaim vp L U U 435 1.13 fvdl # 436 1.1 mycroft vop_reclaim { 437 1.75 riastrad VERSION 2 438 1.70 hannken FSTRANS=NO 439 1.84 hannken IN LOCKED=EXCL struct vnode *vp; 440 1.1 mycroft }; 441 1.1 mycroft 442 1.13 fvdl # 443 1.13 fvdl #% lock vp U L U 444 1.13 fvdl # 445 1.1 mycroft vop_lock { 446 1.76 hannken FSTRANS=LOCK 447 1.84 hannken IN struct vnode *vp; 448 1.13 fvdl IN int flags; 449 1.1 mycroft }; 450 1.1 mycroft 451 1.13 fvdl # 452 1.13 fvdl #% unlock vp L U L 453 1.13 fvdl # 454 1.1 mycroft vop_unlock { 455 1.76 hannken FSTRANS=UNLOCK 456 1.41 thorpej IN LOCKED=YES struct vnode *vp; 457 1.1 mycroft }; 458 1.1 mycroft 459 1.13 fvdl # 460 1.40 yamt #% bmap vp = = = 461 1.13 fvdl #% bmap vpp - U - 462 1.13 fvdl # 463 1.1 mycroft vop_bmap { 464 1.48 yamt IN struct vnode *vp; 465 1.1 mycroft IN daddr_t bn; 466 1.1 mycroft OUT struct vnode **vpp; 467 1.1 mycroft IN daddr_t *bnp; 468 1.1 mycroft OUT int *runp; 469 1.1 mycroft }; 470 1.1 mycroft 471 1.13 fvdl # 472 1.38 hannken #% strategy vp = = = 473 1.13 fvdl # 474 1.38 hannken vop_strategy { 475 1.80 hannken FSTRANS=NO 476 1.38 hannken IN struct vnode *vp; 477 1.38 hannken IN struct buf *bp; 478 1.38 hannken }; 479 1.1 mycroft 480 1.13 fvdl # 481 1.13 fvdl #% print vp = = = 482 1.13 fvdl # 483 1.1 mycroft vop_print { 484 1.1 mycroft IN struct vnode *vp; 485 1.1 mycroft }; 486 1.1 mycroft 487 1.13 fvdl # 488 1.13 fvdl #% islocked vp = = = 489 1.13 fvdl # 490 1.1 mycroft vop_islocked { 491 1.70 hannken FSTRANS=NO 492 1.1 mycroft IN struct vnode *vp; 493 1.1 mycroft }; 494 1.1 mycroft 495 1.13 fvdl # 496 1.13 fvdl #% pathconf vp L L L 497 1.13 fvdl # 498 1.1 mycroft vop_pathconf { 499 1.41 thorpej IN LOCKED=YES struct vnode *vp; 500 1.1 mycroft IN int name; 501 1.3 cgd OUT register_t *retval; 502 1.1 mycroft }; 503 1.1 mycroft 504 1.13 fvdl # 505 1.13 fvdl #% advlock vp U U U 506 1.13 fvdl # 507 1.1 mycroft vop_advlock { 508 1.77 hannken FSTRANS=NO 509 1.41 thorpej IN LOCKED=NO struct vnode *vp; 510 1.32 jdolecek IN void *id; 511 1.1 mycroft IN int op; 512 1.1 mycroft IN struct flock *fl; 513 1.1 mycroft IN int flags; 514 1.1 mycroft }; 515 1.1 mycroft 516 1.13 fvdl # 517 1.13 fvdl #% whiteout dvp L L L 518 1.13 fvdl #% whiteout cnp - - - 519 1.13 fvdl #% whiteout flag - - - 520 1.22 wrstuden # 521 1.22 wrstuden #! whiteout cnp CREATE, LOCKPARENT 522 1.44 perry # 523 1.7 mycroft vop_whiteout { 524 1.84 hannken IN LOCKED=EXCL struct vnode *dvp; 525 1.7 mycroft IN struct componentname *cnp; 526 1.7 mycroft IN int flags; 527 1.1 mycroft }; 528 1.1 mycroft 529 1.13 fvdl # 530 1.39 yamt #% getpages vp = = = 531 1.26 chs # 532 1.26 chs vop_getpages { 533 1.70 hannken FSTRANS=NO 534 1.26 chs IN struct vnode *vp; 535 1.26 chs IN voff_t offset; 536 1.27 chs IN struct vm_page **m; 537 1.26 chs IN int *count; 538 1.26 chs IN int centeridx; 539 1.26 chs IN vm_prot_t access_type; 540 1.26 chs IN int advice; 541 1.26 chs IN int flags; 542 1.26 chs }; 543 1.26 chs 544 1.26 chs # 545 1.30 chs #% putpages vp = = = 546 1.26 chs # 547 1.26 chs vop_putpages { 548 1.70 hannken FSTRANS=NO 549 1.26 chs IN struct vnode *vp; 550 1.30 chs IN voff_t offlo; 551 1.30 chs IN voff_t offhi; 552 1.26 chs IN int flags; 553 1.26 chs }; 554 1.42 thorpej 555 1.42 thorpej # 556 1.79 christos #% getacl vp L L L 557 1.79 christos # 558 1.79 christos vop_getacl { 559 1.79 christos IN struct vnode *vp; 560 1.79 christos IN acl_type_t type; 561 1.79 christos OUT struct acl *aclp; 562 1.79 christos IN kauth_cred_t cred; 563 1.79 christos }; 564 1.79 christos 565 1.79 christos # 566 1.79 christos #% setacl vp L L L 567 1.79 christos # 568 1.79 christos vop_setacl { 569 1.83 thorpej POST=vop_setacl_post 570 1.84 hannken IN LOCKED=EXCL struct vnode *vp; 571 1.79 christos IN acl_type_t type; 572 1.79 christos IN struct acl *aclp; 573 1.79 christos IN kauth_cred_t cred; 574 1.79 christos }; 575 1.79 christos 576 1.79 christos # 577 1.79 christos #% aclcheck vp = = = 578 1.79 christos # 579 1.79 christos vop_aclcheck { 580 1.79 christos IN struct vnode *vp; 581 1.79 christos IN acl_type_t type; 582 1.79 christos IN struct acl *aclp; 583 1.79 christos IN kauth_cred_t cred; 584 1.79 christos }; 585 1.79 christos 586 1.79 christos # 587 1.42 thorpej #% closeextattr vp L L L 588 1.42 thorpej # 589 1.42 thorpej vop_closeextattr { 590 1.42 thorpej IN LOCKED=YES struct vnode *vp; 591 1.42 thorpej IN int commit; 592 1.50 elad IN kauth_cred_t cred; 593 1.42 thorpej }; 594 1.42 thorpej 595 1.42 thorpej # 596 1.42 thorpej #% getextattr vp L L L 597 1.42 thorpej # 598 1.42 thorpej vop_getextattr { 599 1.42 thorpej IN LOCKED=YES struct vnode *vp; 600 1.42 thorpej IN int attrnamespace; 601 1.42 thorpej IN const char *name; 602 1.42 thorpej INOUT struct uio *uio; 603 1.42 thorpej OUT size_t *size; 604 1.50 elad IN kauth_cred_t cred; 605 1.42 thorpej }; 606 1.42 thorpej 607 1.42 thorpej # 608 1.42 thorpej #% listextattr vp L L L 609 1.42 thorpej # 610 1.42 thorpej vop_listextattr { 611 1.42 thorpej IN LOCKED=YES struct vnode *vp; 612 1.42 thorpej IN int attrnamespace; 613 1.42 thorpej INOUT struct uio *uio; 614 1.42 thorpej OUT size_t *size; 615 1.62 hannken IN int flag; 616 1.50 elad IN kauth_cred_t cred; 617 1.42 thorpej }; 618 1.42 thorpej 619 1.42 thorpej # 620 1.42 thorpej #% openextattr vp L L L 621 1.42 thorpej # 622 1.42 thorpej vop_openextattr { 623 1.42 thorpej IN LOCKED=YES struct vnode *vp; 624 1.50 elad IN kauth_cred_t cred; 625 1.42 thorpej }; 626 1.42 thorpej 627 1.42 thorpej # 628 1.42 thorpej #% deleteextattr vp L L L 629 1.42 thorpej # 630 1.42 thorpej vop_deleteextattr { 631 1.84 hannken IN LOCKED=EXCL struct vnode *vp; 632 1.42 thorpej IN int attrnamespace; 633 1.42 thorpej IN const char *name; 634 1.50 elad IN kauth_cred_t cred; 635 1.42 thorpej }; 636 1.42 thorpej 637 1.42 thorpej # 638 1.42 thorpej #% setextattr vp L L L 639 1.42 thorpej # 640 1.42 thorpej vop_setextattr { 641 1.84 hannken IN LOCKED=EXCL struct vnode *vp; 642 1.42 thorpej IN int attrnamespace; 643 1.42 thorpej IN const char *name; 644 1.42 thorpej INOUT struct uio *uio; 645 1.50 elad IN kauth_cred_t cred; 646 1.42 thorpej }; 647