1 /* $NetBSD: vnode_if.c,v 1.26 2000/11/27 09:04:59 chs Exp $ */ 2 3 /* 4 * Warning: This file is generated automatically. 5 * (Modifications made here may easily be lost!) 6 * 7 * Created from the file: 8 * NetBSD: vnode_if.src,v 1.26 2000/11/27 08:39:45 chs Exp 9 * by the script: 10 * NetBSD: vnode_if.sh,v 1.21 2000/09/13 16:09:27 thorpej Exp 11 */ 12 13 /* 14 * Copyright (c) 1992, 1993, 1994, 1995 15 * The Regents of the University of California. All rights reserved. 16 * 17 * Redistribution and use in source and binary forms, with or without 18 * modification, are permitted provided that the following conditions 19 * are met: 20 * 1. Redistributions of source code must retain the above copyright 21 * notice, this list of conditions and the following disclaimer. 22 * 2. Redistributions in binary form must reproduce the above copyright 23 * notice, this list of conditions and the following disclaimer in the 24 * documentation and/or other materials provided with the distribution. 25 * 3. All advertising materials mentioning features or use of this software 26 * must display the following acknowledgement: 27 * This product includes software developed by the University of 28 * California, Berkeley and its contributors. 29 * 4. Neither the name of the University nor the names of its contributors 30 * may be used to endorse or promote products derived from this software 31 * without specific prior written permission. 32 * 33 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 34 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 35 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 36 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 37 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 38 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 39 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 40 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 41 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 42 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 43 * SUCH DAMAGE. 44 */ 45 46 /* 47 * If we have LKM support, always include the non-inline versions for 48 * LKMs. Otherwise, do it based on the option. 49 */ 50 #ifdef LKM 51 #define VNODE_OP_NOINLINE 52 #endif 53 54 #include <sys/param.h> 55 #include <sys/mount.h> 56 #include <sys/buf.h> 57 #include <sys/vnode.h> 58 59 struct vnodeop_desc vop_default_desc = { 60 0, 61 "default", 62 0, 63 NULL, 64 VDESC_NO_OFFSET, 65 VDESC_NO_OFFSET, 66 VDESC_NO_OFFSET, 67 VDESC_NO_OFFSET, 68 NULL, 69 }; 70 71 72 int vop_lookup_vp_offsets[] = { 73 VOPARG_OFFSETOF(struct vop_lookup_args,a_dvp), 74 VDESC_NO_OFFSET 75 }; 76 struct vnodeop_desc vop_lookup_desc = { 77 0, 78 "vop_lookup", 79 0, 80 vop_lookup_vp_offsets, 81 VOPARG_OFFSETOF(struct vop_lookup_args, a_vpp), 82 VDESC_NO_OFFSET, 83 VDESC_NO_OFFSET, 84 VOPARG_OFFSETOF(struct vop_lookup_args, a_cnp), 85 NULL, 86 }; 87 #ifdef VNODE_OP_NOINLINE 88 int 89 VOP_LOOKUP(dvp, vpp, cnp) 90 struct vnode *dvp; 91 struct vnode **vpp; 92 struct componentname *cnp; 93 { 94 struct vop_lookup_args a; 95 a.a_desc = VDESC(vop_lookup); 96 a.a_dvp = dvp; 97 a.a_vpp = vpp; 98 a.a_cnp = cnp; 99 return (VCALL(dvp, VOFFSET(vop_lookup), &a)); 100 } 101 #endif 102 103 int vop_create_vp_offsets[] = { 104 VOPARG_OFFSETOF(struct vop_create_args,a_dvp), 105 VDESC_NO_OFFSET 106 }; 107 struct vnodeop_desc vop_create_desc = { 108 0, 109 "vop_create", 110 0 | VDESC_VP0_WILLPUT, 111 vop_create_vp_offsets, 112 VOPARG_OFFSETOF(struct vop_create_args, a_vpp), 113 VDESC_NO_OFFSET, 114 VDESC_NO_OFFSET, 115 VOPARG_OFFSETOF(struct vop_create_args, a_cnp), 116 NULL, 117 }; 118 #ifdef VNODE_OP_NOINLINE 119 int 120 VOP_CREATE(dvp, vpp, cnp, vap) 121 struct vnode *dvp; 122 struct vnode **vpp; 123 struct componentname *cnp; 124 struct vattr *vap; 125 { 126 struct vop_create_args a; 127 a.a_desc = VDESC(vop_create); 128 a.a_dvp = dvp; 129 a.a_vpp = vpp; 130 a.a_cnp = cnp; 131 a.a_vap = vap; 132 return (VCALL(dvp, VOFFSET(vop_create), &a)); 133 } 134 #endif 135 136 int vop_mknod_vp_offsets[] = { 137 VOPARG_OFFSETOF(struct vop_mknod_args,a_dvp), 138 VDESC_NO_OFFSET 139 }; 140 struct vnodeop_desc vop_mknod_desc = { 141 0, 142 "vop_mknod", 143 0 | VDESC_VP0_WILLPUT | VDESC_VPP_WILLRELE, 144 vop_mknod_vp_offsets, 145 VOPARG_OFFSETOF(struct vop_mknod_args, a_vpp), 146 VDESC_NO_OFFSET, 147 VDESC_NO_OFFSET, 148 VOPARG_OFFSETOF(struct vop_mknod_args, a_cnp), 149 NULL, 150 }; 151 #ifdef VNODE_OP_NOINLINE 152 int 153 VOP_MKNOD(dvp, vpp, cnp, vap) 154 struct vnode *dvp; 155 struct vnode **vpp; 156 struct componentname *cnp; 157 struct vattr *vap; 158 { 159 struct vop_mknod_args a; 160 a.a_desc = VDESC(vop_mknod); 161 a.a_dvp = dvp; 162 a.a_vpp = vpp; 163 a.a_cnp = cnp; 164 a.a_vap = vap; 165 return (VCALL(dvp, VOFFSET(vop_mknod), &a)); 166 } 167 #endif 168 169 int vop_open_vp_offsets[] = { 170 VOPARG_OFFSETOF(struct vop_open_args,a_vp), 171 VDESC_NO_OFFSET 172 }; 173 struct vnodeop_desc vop_open_desc = { 174 0, 175 "vop_open", 176 0, 177 vop_open_vp_offsets, 178 VDESC_NO_OFFSET, 179 VOPARG_OFFSETOF(struct vop_open_args, a_cred), 180 VOPARG_OFFSETOF(struct vop_open_args, a_p), 181 VDESC_NO_OFFSET, 182 NULL, 183 }; 184 #ifdef VNODE_OP_NOINLINE 185 int 186 VOP_OPEN(vp, mode, cred, p) 187 struct vnode *vp; 188 int mode; 189 struct ucred *cred; 190 struct proc *p; 191 { 192 struct vop_open_args a; 193 a.a_desc = VDESC(vop_open); 194 a.a_vp = vp; 195 a.a_mode = mode; 196 a.a_cred = cred; 197 a.a_p = p; 198 return (VCALL(vp, VOFFSET(vop_open), &a)); 199 } 200 #endif 201 202 int vop_close_vp_offsets[] = { 203 VOPARG_OFFSETOF(struct vop_close_args,a_vp), 204 VDESC_NO_OFFSET 205 }; 206 struct vnodeop_desc vop_close_desc = { 207 0, 208 "vop_close", 209 0, 210 vop_close_vp_offsets, 211 VDESC_NO_OFFSET, 212 VOPARG_OFFSETOF(struct vop_close_args, a_cred), 213 VOPARG_OFFSETOF(struct vop_close_args, a_p), 214 VDESC_NO_OFFSET, 215 NULL, 216 }; 217 #ifdef VNODE_OP_NOINLINE 218 int 219 VOP_CLOSE(vp, fflag, cred, p) 220 struct vnode *vp; 221 int fflag; 222 struct ucred *cred; 223 struct proc *p; 224 { 225 struct vop_close_args a; 226 a.a_desc = VDESC(vop_close); 227 a.a_vp = vp; 228 a.a_fflag = fflag; 229 a.a_cred = cred; 230 a.a_p = p; 231 return (VCALL(vp, VOFFSET(vop_close), &a)); 232 } 233 #endif 234 235 int vop_access_vp_offsets[] = { 236 VOPARG_OFFSETOF(struct vop_access_args,a_vp), 237 VDESC_NO_OFFSET 238 }; 239 struct vnodeop_desc vop_access_desc = { 240 0, 241 "vop_access", 242 0, 243 vop_access_vp_offsets, 244 VDESC_NO_OFFSET, 245 VOPARG_OFFSETOF(struct vop_access_args, a_cred), 246 VOPARG_OFFSETOF(struct vop_access_args, a_p), 247 VDESC_NO_OFFSET, 248 NULL, 249 }; 250 #ifdef VNODE_OP_NOINLINE 251 int 252 VOP_ACCESS(vp, mode, cred, p) 253 struct vnode *vp; 254 int mode; 255 struct ucred *cred; 256 struct proc *p; 257 { 258 struct vop_access_args a; 259 a.a_desc = VDESC(vop_access); 260 a.a_vp = vp; 261 a.a_mode = mode; 262 a.a_cred = cred; 263 a.a_p = p; 264 return (VCALL(vp, VOFFSET(vop_access), &a)); 265 } 266 #endif 267 268 int vop_getattr_vp_offsets[] = { 269 VOPARG_OFFSETOF(struct vop_getattr_args,a_vp), 270 VDESC_NO_OFFSET 271 }; 272 struct vnodeop_desc vop_getattr_desc = { 273 0, 274 "vop_getattr", 275 0, 276 vop_getattr_vp_offsets, 277 VDESC_NO_OFFSET, 278 VOPARG_OFFSETOF(struct vop_getattr_args, a_cred), 279 VOPARG_OFFSETOF(struct vop_getattr_args, a_p), 280 VDESC_NO_OFFSET, 281 NULL, 282 }; 283 #ifdef VNODE_OP_NOINLINE 284 int 285 VOP_GETATTR(vp, vap, cred, p) 286 struct vnode *vp; 287 struct vattr *vap; 288 struct ucred *cred; 289 struct proc *p; 290 { 291 struct vop_getattr_args a; 292 a.a_desc = VDESC(vop_getattr); 293 a.a_vp = vp; 294 a.a_vap = vap; 295 a.a_cred = cred; 296 a.a_p = p; 297 return (VCALL(vp, VOFFSET(vop_getattr), &a)); 298 } 299 #endif 300 301 int vop_setattr_vp_offsets[] = { 302 VOPARG_OFFSETOF(struct vop_setattr_args,a_vp), 303 VDESC_NO_OFFSET 304 }; 305 struct vnodeop_desc vop_setattr_desc = { 306 0, 307 "vop_setattr", 308 0, 309 vop_setattr_vp_offsets, 310 VDESC_NO_OFFSET, 311 VOPARG_OFFSETOF(struct vop_setattr_args, a_cred), 312 VOPARG_OFFSETOF(struct vop_setattr_args, a_p), 313 VDESC_NO_OFFSET, 314 NULL, 315 }; 316 #ifdef VNODE_OP_NOINLINE 317 int 318 VOP_SETATTR(vp, vap, cred, p) 319 struct vnode *vp; 320 struct vattr *vap; 321 struct ucred *cred; 322 struct proc *p; 323 { 324 struct vop_setattr_args a; 325 a.a_desc = VDESC(vop_setattr); 326 a.a_vp = vp; 327 a.a_vap = vap; 328 a.a_cred = cred; 329 a.a_p = p; 330 return (VCALL(vp, VOFFSET(vop_setattr), &a)); 331 } 332 #endif 333 334 int vop_read_vp_offsets[] = { 335 VOPARG_OFFSETOF(struct vop_read_args,a_vp), 336 VDESC_NO_OFFSET 337 }; 338 struct vnodeop_desc vop_read_desc = { 339 0, 340 "vop_read", 341 0, 342 vop_read_vp_offsets, 343 VDESC_NO_OFFSET, 344 VOPARG_OFFSETOF(struct vop_read_args, a_cred), 345 VDESC_NO_OFFSET, 346 VDESC_NO_OFFSET, 347 NULL, 348 }; 349 #ifdef VNODE_OP_NOINLINE 350 int 351 VOP_READ(vp, uio, ioflag, cred) 352 struct vnode *vp; 353 struct uio *uio; 354 int ioflag; 355 struct ucred *cred; 356 { 357 struct vop_read_args a; 358 a.a_desc = VDESC(vop_read); 359 a.a_vp = vp; 360 a.a_uio = uio; 361 a.a_ioflag = ioflag; 362 a.a_cred = cred; 363 return (VCALL(vp, VOFFSET(vop_read), &a)); 364 } 365 #endif 366 367 int vop_write_vp_offsets[] = { 368 VOPARG_OFFSETOF(struct vop_write_args,a_vp), 369 VDESC_NO_OFFSET 370 }; 371 struct vnodeop_desc vop_write_desc = { 372 0, 373 "vop_write", 374 0, 375 vop_write_vp_offsets, 376 VDESC_NO_OFFSET, 377 VOPARG_OFFSETOF(struct vop_write_args, a_cred), 378 VDESC_NO_OFFSET, 379 VDESC_NO_OFFSET, 380 NULL, 381 }; 382 #ifdef VNODE_OP_NOINLINE 383 int 384 VOP_WRITE(vp, uio, ioflag, cred) 385 struct vnode *vp; 386 struct uio *uio; 387 int ioflag; 388 struct ucred *cred; 389 { 390 struct vop_write_args a; 391 a.a_desc = VDESC(vop_write); 392 a.a_vp = vp; 393 a.a_uio = uio; 394 a.a_ioflag = ioflag; 395 a.a_cred = cred; 396 return (VCALL(vp, VOFFSET(vop_write), &a)); 397 } 398 #endif 399 400 int vop_ioctl_vp_offsets[] = { 401 VOPARG_OFFSETOF(struct vop_ioctl_args,a_vp), 402 VDESC_NO_OFFSET 403 }; 404 struct vnodeop_desc vop_ioctl_desc = { 405 0, 406 "vop_ioctl", 407 0, 408 vop_ioctl_vp_offsets, 409 VDESC_NO_OFFSET, 410 VOPARG_OFFSETOF(struct vop_ioctl_args, a_cred), 411 VOPARG_OFFSETOF(struct vop_ioctl_args, a_p), 412 VDESC_NO_OFFSET, 413 NULL, 414 }; 415 #ifdef VNODE_OP_NOINLINE 416 int 417 VOP_IOCTL(vp, command, data, fflag, cred, p) 418 struct vnode *vp; 419 u_long command; 420 caddr_t data; 421 int fflag; 422 struct ucred *cred; 423 struct proc *p; 424 { 425 struct vop_ioctl_args a; 426 a.a_desc = VDESC(vop_ioctl); 427 a.a_vp = vp; 428 a.a_command = command; 429 a.a_data = data; 430 a.a_fflag = fflag; 431 a.a_cred = cred; 432 a.a_p = p; 433 return (VCALL(vp, VOFFSET(vop_ioctl), &a)); 434 } 435 #endif 436 437 int vop_fcntl_vp_offsets[] = { 438 VOPARG_OFFSETOF(struct vop_fcntl_args,a_vp), 439 VDESC_NO_OFFSET 440 }; 441 struct vnodeop_desc vop_fcntl_desc = { 442 0, 443 "vop_fcntl", 444 0, 445 vop_fcntl_vp_offsets, 446 VDESC_NO_OFFSET, 447 VOPARG_OFFSETOF(struct vop_fcntl_args, a_cred), 448 VOPARG_OFFSETOF(struct vop_fcntl_args, a_p), 449 VDESC_NO_OFFSET, 450 NULL, 451 }; 452 #ifdef VNODE_OP_NOINLINE 453 int 454 VOP_FCNTL(vp, command, data, fflag, cred, p) 455 struct vnode *vp; 456 u_int command; 457 caddr_t data; 458 int fflag; 459 struct ucred *cred; 460 struct proc *p; 461 { 462 struct vop_fcntl_args a; 463 a.a_desc = VDESC(vop_fcntl); 464 a.a_vp = vp; 465 a.a_command = command; 466 a.a_data = data; 467 a.a_fflag = fflag; 468 a.a_cred = cred; 469 a.a_p = p; 470 return (VCALL(vp, VOFFSET(vop_fcntl), &a)); 471 } 472 #endif 473 474 int vop_poll_vp_offsets[] = { 475 VOPARG_OFFSETOF(struct vop_poll_args,a_vp), 476 VDESC_NO_OFFSET 477 }; 478 struct vnodeop_desc vop_poll_desc = { 479 0, 480 "vop_poll", 481 0, 482 vop_poll_vp_offsets, 483 VDESC_NO_OFFSET, 484 VDESC_NO_OFFSET, 485 VOPARG_OFFSETOF(struct vop_poll_args, a_p), 486 VDESC_NO_OFFSET, 487 NULL, 488 }; 489 #ifdef VNODE_OP_NOINLINE 490 int 491 VOP_POLL(vp, events, p) 492 struct vnode *vp; 493 int events; 494 struct proc *p; 495 { 496 struct vop_poll_args a; 497 a.a_desc = VDESC(vop_poll); 498 a.a_vp = vp; 499 a.a_events = events; 500 a.a_p = p; 501 return (VCALL(vp, VOFFSET(vop_poll), &a)); 502 } 503 #endif 504 505 int vop_revoke_vp_offsets[] = { 506 VOPARG_OFFSETOF(struct vop_revoke_args,a_vp), 507 VDESC_NO_OFFSET 508 }; 509 struct vnodeop_desc vop_revoke_desc = { 510 0, 511 "vop_revoke", 512 0, 513 vop_revoke_vp_offsets, 514 VDESC_NO_OFFSET, 515 VDESC_NO_OFFSET, 516 VDESC_NO_OFFSET, 517 VDESC_NO_OFFSET, 518 NULL, 519 }; 520 #ifdef VNODE_OP_NOINLINE 521 int 522 VOP_REVOKE(vp, flags) 523 struct vnode *vp; 524 int flags; 525 { 526 struct vop_revoke_args a; 527 a.a_desc = VDESC(vop_revoke); 528 a.a_vp = vp; 529 a.a_flags = flags; 530 return (VCALL(vp, VOFFSET(vop_revoke), &a)); 531 } 532 #endif 533 534 int vop_mmap_vp_offsets[] = { 535 VOPARG_OFFSETOF(struct vop_mmap_args,a_vp), 536 VDESC_NO_OFFSET 537 }; 538 struct vnodeop_desc vop_mmap_desc = { 539 0, 540 "vop_mmap", 541 0, 542 vop_mmap_vp_offsets, 543 VDESC_NO_OFFSET, 544 VOPARG_OFFSETOF(struct vop_mmap_args, a_cred), 545 VOPARG_OFFSETOF(struct vop_mmap_args, a_p), 546 VDESC_NO_OFFSET, 547 NULL, 548 }; 549 #ifdef VNODE_OP_NOINLINE 550 int 551 VOP_MMAP(vp, fflags, cred, p) 552 struct vnode *vp; 553 int fflags; 554 struct ucred *cred; 555 struct proc *p; 556 { 557 struct vop_mmap_args a; 558 a.a_desc = VDESC(vop_mmap); 559 a.a_vp = vp; 560 a.a_fflags = fflags; 561 a.a_cred = cred; 562 a.a_p = p; 563 return (VCALL(vp, VOFFSET(vop_mmap), &a)); 564 } 565 #endif 566 567 int vop_fsync_vp_offsets[] = { 568 VOPARG_OFFSETOF(struct vop_fsync_args,a_vp), 569 VDESC_NO_OFFSET 570 }; 571 struct vnodeop_desc vop_fsync_desc = { 572 0, 573 "vop_fsync", 574 0, 575 vop_fsync_vp_offsets, 576 VDESC_NO_OFFSET, 577 VOPARG_OFFSETOF(struct vop_fsync_args, a_cred), 578 VOPARG_OFFSETOF(struct vop_fsync_args, a_p), 579 VDESC_NO_OFFSET, 580 NULL, 581 }; 582 #ifdef VNODE_OP_NOINLINE 583 int 584 VOP_FSYNC(vp, cred, flags, offlo, offhi, p) 585 struct vnode *vp; 586 struct ucred *cred; 587 int flags; 588 off_t offlo; 589 off_t offhi; 590 struct proc *p; 591 { 592 struct vop_fsync_args a; 593 a.a_desc = VDESC(vop_fsync); 594 a.a_vp = vp; 595 a.a_cred = cred; 596 a.a_flags = flags; 597 a.a_offlo = offlo; 598 a.a_offhi = offhi; 599 a.a_p = p; 600 return (VCALL(vp, VOFFSET(vop_fsync), &a)); 601 } 602 #endif 603 604 int vop_seek_vp_offsets[] = { 605 VOPARG_OFFSETOF(struct vop_seek_args,a_vp), 606 VDESC_NO_OFFSET 607 }; 608 struct vnodeop_desc vop_seek_desc = { 609 0, 610 "vop_seek", 611 0, 612 vop_seek_vp_offsets, 613 VDESC_NO_OFFSET, 614 VOPARG_OFFSETOF(struct vop_seek_args, a_cred), 615 VDESC_NO_OFFSET, 616 VDESC_NO_OFFSET, 617 NULL, 618 }; 619 #ifdef VNODE_OP_NOINLINE 620 int 621 VOP_SEEK(vp, oldoff, newoff, cred) 622 struct vnode *vp; 623 off_t oldoff; 624 off_t newoff; 625 struct ucred *cred; 626 { 627 struct vop_seek_args a; 628 a.a_desc = VDESC(vop_seek); 629 a.a_vp = vp; 630 a.a_oldoff = oldoff; 631 a.a_newoff = newoff; 632 a.a_cred = cred; 633 return (VCALL(vp, VOFFSET(vop_seek), &a)); 634 } 635 #endif 636 637 int vop_remove_vp_offsets[] = { 638 VOPARG_OFFSETOF(struct vop_remove_args,a_dvp), 639 VOPARG_OFFSETOF(struct vop_remove_args,a_vp), 640 VDESC_NO_OFFSET 641 }; 642 struct vnodeop_desc vop_remove_desc = { 643 0, 644 "vop_remove", 645 0 | VDESC_VP0_WILLPUT | VDESC_VP1_WILLPUT, 646 vop_remove_vp_offsets, 647 VDESC_NO_OFFSET, 648 VDESC_NO_OFFSET, 649 VDESC_NO_OFFSET, 650 VOPARG_OFFSETOF(struct vop_remove_args, a_cnp), 651 NULL, 652 }; 653 #ifdef VNODE_OP_NOINLINE 654 int 655 VOP_REMOVE(dvp, vp, cnp) 656 struct vnode *dvp; 657 struct vnode *vp; 658 struct componentname *cnp; 659 { 660 struct vop_remove_args a; 661 a.a_desc = VDESC(vop_remove); 662 a.a_dvp = dvp; 663 a.a_vp = vp; 664 a.a_cnp = cnp; 665 return (VCALL(dvp, VOFFSET(vop_remove), &a)); 666 } 667 #endif 668 669 int vop_link_vp_offsets[] = { 670 VOPARG_OFFSETOF(struct vop_link_args,a_dvp), 671 VOPARG_OFFSETOF(struct vop_link_args,a_vp), 672 VDESC_NO_OFFSET 673 }; 674 struct vnodeop_desc vop_link_desc = { 675 0, 676 "vop_link", 677 0 | VDESC_VP0_WILLPUT, 678 vop_link_vp_offsets, 679 VDESC_NO_OFFSET, 680 VDESC_NO_OFFSET, 681 VDESC_NO_OFFSET, 682 VOPARG_OFFSETOF(struct vop_link_args, a_cnp), 683 NULL, 684 }; 685 #ifdef VNODE_OP_NOINLINE 686 int 687 VOP_LINK(dvp, vp, cnp) 688 struct vnode *dvp; 689 struct vnode *vp; 690 struct componentname *cnp; 691 { 692 struct vop_link_args a; 693 a.a_desc = VDESC(vop_link); 694 a.a_dvp = dvp; 695 a.a_vp = vp; 696 a.a_cnp = cnp; 697 return (VCALL(dvp, VOFFSET(vop_link), &a)); 698 } 699 #endif 700 701 int vop_rename_vp_offsets[] = { 702 VOPARG_OFFSETOF(struct vop_rename_args,a_fdvp), 703 VOPARG_OFFSETOF(struct vop_rename_args,a_fvp), 704 VOPARG_OFFSETOF(struct vop_rename_args,a_tdvp), 705 VOPARG_OFFSETOF(struct vop_rename_args,a_tvp), 706 VDESC_NO_OFFSET 707 }; 708 struct vnodeop_desc vop_rename_desc = { 709 0, 710 "vop_rename", 711 0 | VDESC_VP0_WILLRELE | VDESC_VP1_WILLRELE | VDESC_VP2_WILLPUT | VDESC_VP3_WILLRELE, 712 vop_rename_vp_offsets, 713 VDESC_NO_OFFSET, 714 VDESC_NO_OFFSET, 715 VDESC_NO_OFFSET, 716 VOPARG_OFFSETOF(struct vop_rename_args, a_fcnp), 717 NULL, 718 }; 719 #ifdef VNODE_OP_NOINLINE 720 int 721 VOP_RENAME(fdvp, fvp, fcnp, tdvp, tvp, tcnp) 722 struct vnode *fdvp; 723 struct vnode *fvp; 724 struct componentname *fcnp; 725 struct vnode *tdvp; 726 struct vnode *tvp; 727 struct componentname *tcnp; 728 { 729 struct vop_rename_args a; 730 a.a_desc = VDESC(vop_rename); 731 a.a_fdvp = fdvp; 732 a.a_fvp = fvp; 733 a.a_fcnp = fcnp; 734 a.a_tdvp = tdvp; 735 a.a_tvp = tvp; 736 a.a_tcnp = tcnp; 737 return (VCALL(fdvp, VOFFSET(vop_rename), &a)); 738 } 739 #endif 740 741 int vop_mkdir_vp_offsets[] = { 742 VOPARG_OFFSETOF(struct vop_mkdir_args,a_dvp), 743 VDESC_NO_OFFSET 744 }; 745 struct vnodeop_desc vop_mkdir_desc = { 746 0, 747 "vop_mkdir", 748 0 | VDESC_VP0_WILLPUT, 749 vop_mkdir_vp_offsets, 750 VOPARG_OFFSETOF(struct vop_mkdir_args, a_vpp), 751 VDESC_NO_OFFSET, 752 VDESC_NO_OFFSET, 753 VOPARG_OFFSETOF(struct vop_mkdir_args, a_cnp), 754 NULL, 755 }; 756 #ifdef VNODE_OP_NOINLINE 757 int 758 VOP_MKDIR(dvp, vpp, cnp, vap) 759 struct vnode *dvp; 760 struct vnode **vpp; 761 struct componentname *cnp; 762 struct vattr *vap; 763 { 764 struct vop_mkdir_args a; 765 a.a_desc = VDESC(vop_mkdir); 766 a.a_dvp = dvp; 767 a.a_vpp = vpp; 768 a.a_cnp = cnp; 769 a.a_vap = vap; 770 return (VCALL(dvp, VOFFSET(vop_mkdir), &a)); 771 } 772 #endif 773 774 int vop_rmdir_vp_offsets[] = { 775 VOPARG_OFFSETOF(struct vop_rmdir_args,a_dvp), 776 VOPARG_OFFSETOF(struct vop_rmdir_args,a_vp), 777 VDESC_NO_OFFSET 778 }; 779 struct vnodeop_desc vop_rmdir_desc = { 780 0, 781 "vop_rmdir", 782 0 | VDESC_VP0_WILLPUT | VDESC_VP1_WILLPUT, 783 vop_rmdir_vp_offsets, 784 VDESC_NO_OFFSET, 785 VDESC_NO_OFFSET, 786 VDESC_NO_OFFSET, 787 VOPARG_OFFSETOF(struct vop_rmdir_args, a_cnp), 788 NULL, 789 }; 790 #ifdef VNODE_OP_NOINLINE 791 int 792 VOP_RMDIR(dvp, vp, cnp) 793 struct vnode *dvp; 794 struct vnode *vp; 795 struct componentname *cnp; 796 { 797 struct vop_rmdir_args a; 798 a.a_desc = VDESC(vop_rmdir); 799 a.a_dvp = dvp; 800 a.a_vp = vp; 801 a.a_cnp = cnp; 802 return (VCALL(dvp, VOFFSET(vop_rmdir), &a)); 803 } 804 #endif 805 806 int vop_symlink_vp_offsets[] = { 807 VOPARG_OFFSETOF(struct vop_symlink_args,a_dvp), 808 VDESC_NO_OFFSET 809 }; 810 struct vnodeop_desc vop_symlink_desc = { 811 0, 812 "vop_symlink", 813 0 | VDESC_VP0_WILLPUT | VDESC_VPP_WILLRELE, 814 vop_symlink_vp_offsets, 815 VOPARG_OFFSETOF(struct vop_symlink_args, a_vpp), 816 VDESC_NO_OFFSET, 817 VDESC_NO_OFFSET, 818 VOPARG_OFFSETOF(struct vop_symlink_args, a_cnp), 819 NULL, 820 }; 821 #ifdef VNODE_OP_NOINLINE 822 int 823 VOP_SYMLINK(dvp, vpp, cnp, vap, target) 824 struct vnode *dvp; 825 struct vnode **vpp; 826 struct componentname *cnp; 827 struct vattr *vap; 828 char *target; 829 { 830 struct vop_symlink_args a; 831 a.a_desc = VDESC(vop_symlink); 832 a.a_dvp = dvp; 833 a.a_vpp = vpp; 834 a.a_cnp = cnp; 835 a.a_vap = vap; 836 a.a_target = target; 837 return (VCALL(dvp, VOFFSET(vop_symlink), &a)); 838 } 839 #endif 840 841 int vop_readdir_vp_offsets[] = { 842 VOPARG_OFFSETOF(struct vop_readdir_args,a_vp), 843 VDESC_NO_OFFSET 844 }; 845 struct vnodeop_desc vop_readdir_desc = { 846 0, 847 "vop_readdir", 848 0, 849 vop_readdir_vp_offsets, 850 VDESC_NO_OFFSET, 851 VOPARG_OFFSETOF(struct vop_readdir_args, a_cred), 852 VDESC_NO_OFFSET, 853 VDESC_NO_OFFSET, 854 NULL, 855 }; 856 #ifdef VNODE_OP_NOINLINE 857 int 858 VOP_READDIR(vp, uio, cred, eofflag, cookies, ncookies) 859 struct vnode *vp; 860 struct uio *uio; 861 struct ucred *cred; 862 int *eofflag; 863 off_t **cookies; 864 int *ncookies; 865 { 866 struct vop_readdir_args a; 867 a.a_desc = VDESC(vop_readdir); 868 a.a_vp = vp; 869 a.a_uio = uio; 870 a.a_cred = cred; 871 a.a_eofflag = eofflag; 872 a.a_cookies = cookies; 873 a.a_ncookies = ncookies; 874 return (VCALL(vp, VOFFSET(vop_readdir), &a)); 875 } 876 #endif 877 878 int vop_readlink_vp_offsets[] = { 879 VOPARG_OFFSETOF(struct vop_readlink_args,a_vp), 880 VDESC_NO_OFFSET 881 }; 882 struct vnodeop_desc vop_readlink_desc = { 883 0, 884 "vop_readlink", 885 0, 886 vop_readlink_vp_offsets, 887 VDESC_NO_OFFSET, 888 VOPARG_OFFSETOF(struct vop_readlink_args, a_cred), 889 VDESC_NO_OFFSET, 890 VDESC_NO_OFFSET, 891 NULL, 892 }; 893 #ifdef VNODE_OP_NOINLINE 894 int 895 VOP_READLINK(vp, uio, cred) 896 struct vnode *vp; 897 struct uio *uio; 898 struct ucred *cred; 899 { 900 struct vop_readlink_args a; 901 a.a_desc = VDESC(vop_readlink); 902 a.a_vp = vp; 903 a.a_uio = uio; 904 a.a_cred = cred; 905 return (VCALL(vp, VOFFSET(vop_readlink), &a)); 906 } 907 #endif 908 909 int vop_abortop_vp_offsets[] = { 910 VOPARG_OFFSETOF(struct vop_abortop_args,a_dvp), 911 VDESC_NO_OFFSET 912 }; 913 struct vnodeop_desc vop_abortop_desc = { 914 0, 915 "vop_abortop", 916 0, 917 vop_abortop_vp_offsets, 918 VDESC_NO_OFFSET, 919 VDESC_NO_OFFSET, 920 VDESC_NO_OFFSET, 921 VOPARG_OFFSETOF(struct vop_abortop_args, a_cnp), 922 NULL, 923 }; 924 #ifdef VNODE_OP_NOINLINE 925 int 926 VOP_ABORTOP(dvp, cnp) 927 struct vnode *dvp; 928 struct componentname *cnp; 929 { 930 struct vop_abortop_args a; 931 a.a_desc = VDESC(vop_abortop); 932 a.a_dvp = dvp; 933 a.a_cnp = cnp; 934 return (VCALL(dvp, VOFFSET(vop_abortop), &a)); 935 } 936 #endif 937 938 int vop_inactive_vp_offsets[] = { 939 VOPARG_OFFSETOF(struct vop_inactive_args,a_vp), 940 VDESC_NO_OFFSET 941 }; 942 struct vnodeop_desc vop_inactive_desc = { 943 0, 944 "vop_inactive", 945 0 | VDESC_VP0_WILLUNLOCK, 946 vop_inactive_vp_offsets, 947 VDESC_NO_OFFSET, 948 VDESC_NO_OFFSET, 949 VOPARG_OFFSETOF(struct vop_inactive_args, a_p), 950 VDESC_NO_OFFSET, 951 NULL, 952 }; 953 #ifdef VNODE_OP_NOINLINE 954 int 955 VOP_INACTIVE(vp, p) 956 struct vnode *vp; 957 struct proc *p; 958 { 959 struct vop_inactive_args a; 960 a.a_desc = VDESC(vop_inactive); 961 a.a_vp = vp; 962 a.a_p = p; 963 return (VCALL(vp, VOFFSET(vop_inactive), &a)); 964 } 965 #endif 966 967 int vop_reclaim_vp_offsets[] = { 968 VOPARG_OFFSETOF(struct vop_reclaim_args,a_vp), 969 VDESC_NO_OFFSET 970 }; 971 struct vnodeop_desc vop_reclaim_desc = { 972 0, 973 "vop_reclaim", 974 0, 975 vop_reclaim_vp_offsets, 976 VDESC_NO_OFFSET, 977 VDESC_NO_OFFSET, 978 VOPARG_OFFSETOF(struct vop_reclaim_args, a_p), 979 VDESC_NO_OFFSET, 980 NULL, 981 }; 982 #ifdef VNODE_OP_NOINLINE 983 int 984 VOP_RECLAIM(vp, p) 985 struct vnode *vp; 986 struct proc *p; 987 { 988 struct vop_reclaim_args a; 989 a.a_desc = VDESC(vop_reclaim); 990 a.a_vp = vp; 991 a.a_p = p; 992 return (VCALL(vp, VOFFSET(vop_reclaim), &a)); 993 } 994 #endif 995 996 int vop_lock_vp_offsets[] = { 997 VOPARG_OFFSETOF(struct vop_lock_args,a_vp), 998 VDESC_NO_OFFSET 999 }; 1000 struct vnodeop_desc vop_lock_desc = { 1001 0, 1002 "vop_lock", 1003 0, 1004 vop_lock_vp_offsets, 1005 VDESC_NO_OFFSET, 1006 VDESC_NO_OFFSET, 1007 VDESC_NO_OFFSET, 1008 VDESC_NO_OFFSET, 1009 NULL, 1010 }; 1011 #ifdef VNODE_OP_NOINLINE 1012 int 1013 VOP_LOCK(vp, flags) 1014 struct vnode *vp; 1015 int flags; 1016 { 1017 struct vop_lock_args a; 1018 a.a_desc = VDESC(vop_lock); 1019 a.a_vp = vp; 1020 a.a_flags = flags; 1021 return (VCALL(vp, VOFFSET(vop_lock), &a)); 1022 } 1023 #endif 1024 1025 int vop_unlock_vp_offsets[] = { 1026 VOPARG_OFFSETOF(struct vop_unlock_args,a_vp), 1027 VDESC_NO_OFFSET 1028 }; 1029 struct vnodeop_desc vop_unlock_desc = { 1030 0, 1031 "vop_unlock", 1032 0, 1033 vop_unlock_vp_offsets, 1034 VDESC_NO_OFFSET, 1035 VDESC_NO_OFFSET, 1036 VDESC_NO_OFFSET, 1037 VDESC_NO_OFFSET, 1038 NULL, 1039 }; 1040 #ifdef VNODE_OP_NOINLINE 1041 int 1042 VOP_UNLOCK(vp, flags) 1043 struct vnode *vp; 1044 int flags; 1045 { 1046 struct vop_unlock_args a; 1047 a.a_desc = VDESC(vop_unlock); 1048 a.a_vp = vp; 1049 a.a_flags = flags; 1050 return (VCALL(vp, VOFFSET(vop_unlock), &a)); 1051 } 1052 #endif 1053 1054 int vop_bmap_vp_offsets[] = { 1055 VOPARG_OFFSETOF(struct vop_bmap_args,a_vp), 1056 VDESC_NO_OFFSET 1057 }; 1058 struct vnodeop_desc vop_bmap_desc = { 1059 0, 1060 "vop_bmap", 1061 0, 1062 vop_bmap_vp_offsets, 1063 VOPARG_OFFSETOF(struct vop_bmap_args, a_vpp), 1064 VDESC_NO_OFFSET, 1065 VDESC_NO_OFFSET, 1066 VDESC_NO_OFFSET, 1067 NULL, 1068 }; 1069 #ifdef VNODE_OP_NOINLINE 1070 int 1071 VOP_BMAP(vp, bn, vpp, bnp, runp) 1072 struct vnode *vp; 1073 daddr_t bn; 1074 struct vnode **vpp; 1075 daddr_t *bnp; 1076 int *runp; 1077 { 1078 struct vop_bmap_args a; 1079 a.a_desc = VDESC(vop_bmap); 1080 a.a_vp = vp; 1081 a.a_bn = bn; 1082 a.a_vpp = vpp; 1083 a.a_bnp = bnp; 1084 a.a_runp = runp; 1085 return (VCALL(vp, VOFFSET(vop_bmap), &a)); 1086 } 1087 #endif 1088 1089 int vop_print_vp_offsets[] = { 1090 VOPARG_OFFSETOF(struct vop_print_args,a_vp), 1091 VDESC_NO_OFFSET 1092 }; 1093 struct vnodeop_desc vop_print_desc = { 1094 0, 1095 "vop_print", 1096 0, 1097 vop_print_vp_offsets, 1098 VDESC_NO_OFFSET, 1099 VDESC_NO_OFFSET, 1100 VDESC_NO_OFFSET, 1101 VDESC_NO_OFFSET, 1102 NULL, 1103 }; 1104 #ifdef VNODE_OP_NOINLINE 1105 int 1106 VOP_PRINT(vp) 1107 struct vnode *vp; 1108 { 1109 struct vop_print_args a; 1110 a.a_desc = VDESC(vop_print); 1111 a.a_vp = vp; 1112 return (VCALL(vp, VOFFSET(vop_print), &a)); 1113 } 1114 #endif 1115 1116 int vop_islocked_vp_offsets[] = { 1117 VOPARG_OFFSETOF(struct vop_islocked_args,a_vp), 1118 VDESC_NO_OFFSET 1119 }; 1120 struct vnodeop_desc vop_islocked_desc = { 1121 0, 1122 "vop_islocked", 1123 0, 1124 vop_islocked_vp_offsets, 1125 VDESC_NO_OFFSET, 1126 VDESC_NO_OFFSET, 1127 VDESC_NO_OFFSET, 1128 VDESC_NO_OFFSET, 1129 NULL, 1130 }; 1131 #ifdef VNODE_OP_NOINLINE 1132 int 1133 VOP_ISLOCKED(vp) 1134 struct vnode *vp; 1135 { 1136 struct vop_islocked_args a; 1137 a.a_desc = VDESC(vop_islocked); 1138 a.a_vp = vp; 1139 return (VCALL(vp, VOFFSET(vop_islocked), &a)); 1140 } 1141 #endif 1142 1143 int vop_pathconf_vp_offsets[] = { 1144 VOPARG_OFFSETOF(struct vop_pathconf_args,a_vp), 1145 VDESC_NO_OFFSET 1146 }; 1147 struct vnodeop_desc vop_pathconf_desc = { 1148 0, 1149 "vop_pathconf", 1150 0, 1151 vop_pathconf_vp_offsets, 1152 VDESC_NO_OFFSET, 1153 VDESC_NO_OFFSET, 1154 VDESC_NO_OFFSET, 1155 VDESC_NO_OFFSET, 1156 NULL, 1157 }; 1158 #ifdef VNODE_OP_NOINLINE 1159 int 1160 VOP_PATHCONF(vp, name, retval) 1161 struct vnode *vp; 1162 int name; 1163 register_t *retval; 1164 { 1165 struct vop_pathconf_args a; 1166 a.a_desc = VDESC(vop_pathconf); 1167 a.a_vp = vp; 1168 a.a_name = name; 1169 a.a_retval = retval; 1170 return (VCALL(vp, VOFFSET(vop_pathconf), &a)); 1171 } 1172 #endif 1173 1174 int vop_advlock_vp_offsets[] = { 1175 VOPARG_OFFSETOF(struct vop_advlock_args,a_vp), 1176 VDESC_NO_OFFSET 1177 }; 1178 struct vnodeop_desc vop_advlock_desc = { 1179 0, 1180 "vop_advlock", 1181 0, 1182 vop_advlock_vp_offsets, 1183 VDESC_NO_OFFSET, 1184 VDESC_NO_OFFSET, 1185 VDESC_NO_OFFSET, 1186 VDESC_NO_OFFSET, 1187 NULL, 1188 }; 1189 #ifdef VNODE_OP_NOINLINE 1190 int 1191 VOP_ADVLOCK(vp, id, op, fl, flags) 1192 struct vnode *vp; 1193 caddr_t id; 1194 int op; 1195 struct flock *fl; 1196 int flags; 1197 { 1198 struct vop_advlock_args a; 1199 a.a_desc = VDESC(vop_advlock); 1200 a.a_vp = vp; 1201 a.a_id = id; 1202 a.a_op = op; 1203 a.a_fl = fl; 1204 a.a_flags = flags; 1205 return (VCALL(vp, VOFFSET(vop_advlock), &a)); 1206 } 1207 #endif 1208 1209 int vop_blkatoff_vp_offsets[] = { 1210 VOPARG_OFFSETOF(struct vop_blkatoff_args,a_vp), 1211 VDESC_NO_OFFSET 1212 }; 1213 struct vnodeop_desc vop_blkatoff_desc = { 1214 0, 1215 "vop_blkatoff", 1216 0, 1217 vop_blkatoff_vp_offsets, 1218 VDESC_NO_OFFSET, 1219 VDESC_NO_OFFSET, 1220 VDESC_NO_OFFSET, 1221 VDESC_NO_OFFSET, 1222 NULL, 1223 }; 1224 #ifdef VNODE_OP_NOINLINE 1225 int 1226 VOP_BLKATOFF(vp, offset, res, bpp) 1227 struct vnode *vp; 1228 off_t offset; 1229 char **res; 1230 struct buf **bpp; 1231 { 1232 struct vop_blkatoff_args a; 1233 a.a_desc = VDESC(vop_blkatoff); 1234 a.a_vp = vp; 1235 a.a_offset = offset; 1236 a.a_res = res; 1237 a.a_bpp = bpp; 1238 return (VCALL(vp, VOFFSET(vop_blkatoff), &a)); 1239 } 1240 #endif 1241 1242 int vop_valloc_vp_offsets[] = { 1243 VOPARG_OFFSETOF(struct vop_valloc_args,a_pvp), 1244 VDESC_NO_OFFSET 1245 }; 1246 struct vnodeop_desc vop_valloc_desc = { 1247 0, 1248 "vop_valloc", 1249 0, 1250 vop_valloc_vp_offsets, 1251 VOPARG_OFFSETOF(struct vop_valloc_args, a_vpp), 1252 VOPARG_OFFSETOF(struct vop_valloc_args, a_cred), 1253 VDESC_NO_OFFSET, 1254 VDESC_NO_OFFSET, 1255 NULL, 1256 }; 1257 #ifdef VNODE_OP_NOINLINE 1258 int 1259 VOP_VALLOC(pvp, mode, cred, vpp) 1260 struct vnode *pvp; 1261 int mode; 1262 struct ucred *cred; 1263 struct vnode **vpp; 1264 { 1265 struct vop_valloc_args a; 1266 a.a_desc = VDESC(vop_valloc); 1267 a.a_pvp = pvp; 1268 a.a_mode = mode; 1269 a.a_cred = cred; 1270 a.a_vpp = vpp; 1271 return (VCALL(pvp, VOFFSET(vop_valloc), &a)); 1272 } 1273 #endif 1274 1275 int vop_balloc_vp_offsets[] = { 1276 VOPARG_OFFSETOF(struct vop_balloc_args,a_vp), 1277 VDESC_NO_OFFSET 1278 }; 1279 struct vnodeop_desc vop_balloc_desc = { 1280 0, 1281 "vop_balloc", 1282 0, 1283 vop_balloc_vp_offsets, 1284 VDESC_NO_OFFSET, 1285 VOPARG_OFFSETOF(struct vop_balloc_args, a_cred), 1286 VDESC_NO_OFFSET, 1287 VDESC_NO_OFFSET, 1288 NULL, 1289 }; 1290 #ifdef VNODE_OP_NOINLINE 1291 int 1292 VOP_BALLOC(vp, startoffset, size, cred, flags, bpp) 1293 struct vnode *vp; 1294 off_t startoffset; 1295 int size; 1296 struct ucred *cred; 1297 int flags; 1298 struct buf **bpp; 1299 { 1300 struct vop_balloc_args a; 1301 a.a_desc = VDESC(vop_balloc); 1302 a.a_vp = vp; 1303 a.a_startoffset = startoffset; 1304 a.a_size = size; 1305 a.a_cred = cred; 1306 a.a_flags = flags; 1307 a.a_bpp = bpp; 1308 return (VCALL(vp, VOFFSET(vop_balloc), &a)); 1309 } 1310 #endif 1311 1312 int vop_ballocn_vp_offsets[] = { 1313 VOPARG_OFFSETOF(struct vop_ballocn_args,a_vp), 1314 VDESC_NO_OFFSET 1315 }; 1316 struct vnodeop_desc vop_ballocn_desc = { 1317 0, 1318 "vop_ballocn", 1319 0, 1320 vop_ballocn_vp_offsets, 1321 VDESC_NO_OFFSET, 1322 VOPARG_OFFSETOF(struct vop_ballocn_args, a_cred), 1323 VDESC_NO_OFFSET, 1324 VDESC_NO_OFFSET, 1325 NULL, 1326 }; 1327 #ifdef VNODE_OP_NOINLINE 1328 int 1329 VOP_BALLOCN(vp, offset, length, cred, flags) 1330 struct vnode *vp; 1331 off_t offset; 1332 off_t length; 1333 struct ucred *cred; 1334 int flags; 1335 { 1336 struct vop_ballocn_args a; 1337 a.a_desc = VDESC(vop_ballocn); 1338 a.a_vp = vp; 1339 a.a_offset = offset; 1340 a.a_length = length; 1341 a.a_cred = cred; 1342 a.a_flags = flags; 1343 return (VCALL(vp, VOFFSET(vop_ballocn), &a)); 1344 } 1345 #endif 1346 1347 int vop_reallocblks_vp_offsets[] = { 1348 VOPARG_OFFSETOF(struct vop_reallocblks_args,a_vp), 1349 VDESC_NO_OFFSET 1350 }; 1351 struct vnodeop_desc vop_reallocblks_desc = { 1352 0, 1353 "vop_reallocblks", 1354 0, 1355 vop_reallocblks_vp_offsets, 1356 VDESC_NO_OFFSET, 1357 VDESC_NO_OFFSET, 1358 VDESC_NO_OFFSET, 1359 VDESC_NO_OFFSET, 1360 NULL, 1361 }; 1362 #ifdef VNODE_OP_NOINLINE 1363 int 1364 VOP_REALLOCBLKS(vp, buflist) 1365 struct vnode *vp; 1366 struct cluster_save *buflist; 1367 { 1368 struct vop_reallocblks_args a; 1369 a.a_desc = VDESC(vop_reallocblks); 1370 a.a_vp = vp; 1371 a.a_buflist = buflist; 1372 return (VCALL(vp, VOFFSET(vop_reallocblks), &a)); 1373 } 1374 #endif 1375 1376 int vop_vfree_vp_offsets[] = { 1377 VOPARG_OFFSETOF(struct vop_vfree_args,a_pvp), 1378 VDESC_NO_OFFSET 1379 }; 1380 struct vnodeop_desc vop_vfree_desc = { 1381 0, 1382 "vop_vfree", 1383 0, 1384 vop_vfree_vp_offsets, 1385 VDESC_NO_OFFSET, 1386 VDESC_NO_OFFSET, 1387 VDESC_NO_OFFSET, 1388 VDESC_NO_OFFSET, 1389 NULL, 1390 }; 1391 #ifdef VNODE_OP_NOINLINE 1392 int 1393 VOP_VFREE(pvp, ino, mode) 1394 struct vnode *pvp; 1395 ino_t ino; 1396 int mode; 1397 { 1398 struct vop_vfree_args a; 1399 a.a_desc = VDESC(vop_vfree); 1400 a.a_pvp = pvp; 1401 a.a_ino = ino; 1402 a.a_mode = mode; 1403 return (VCALL(pvp, VOFFSET(vop_vfree), &a)); 1404 } 1405 #endif 1406 1407 int vop_truncate_vp_offsets[] = { 1408 VOPARG_OFFSETOF(struct vop_truncate_args,a_vp), 1409 VDESC_NO_OFFSET 1410 }; 1411 struct vnodeop_desc vop_truncate_desc = { 1412 0, 1413 "vop_truncate", 1414 0, 1415 vop_truncate_vp_offsets, 1416 VDESC_NO_OFFSET, 1417 VOPARG_OFFSETOF(struct vop_truncate_args, a_cred), 1418 VOPARG_OFFSETOF(struct vop_truncate_args, a_p), 1419 VDESC_NO_OFFSET, 1420 NULL, 1421 }; 1422 #ifdef VNODE_OP_NOINLINE 1423 int 1424 VOP_TRUNCATE(vp, length, flags, cred, p) 1425 struct vnode *vp; 1426 off_t length; 1427 int flags; 1428 struct ucred *cred; 1429 struct proc *p; 1430 { 1431 struct vop_truncate_args a; 1432 a.a_desc = VDESC(vop_truncate); 1433 a.a_vp = vp; 1434 a.a_length = length; 1435 a.a_flags = flags; 1436 a.a_cred = cred; 1437 a.a_p = p; 1438 return (VCALL(vp, VOFFSET(vop_truncate), &a)); 1439 } 1440 #endif 1441 1442 int vop_update_vp_offsets[] = { 1443 VOPARG_OFFSETOF(struct vop_update_args,a_vp), 1444 VDESC_NO_OFFSET 1445 }; 1446 struct vnodeop_desc vop_update_desc = { 1447 0, 1448 "vop_update", 1449 0, 1450 vop_update_vp_offsets, 1451 VDESC_NO_OFFSET, 1452 VDESC_NO_OFFSET, 1453 VDESC_NO_OFFSET, 1454 VDESC_NO_OFFSET, 1455 NULL, 1456 }; 1457 #ifdef VNODE_OP_NOINLINE 1458 int 1459 VOP_UPDATE(vp, access, modify, flags) 1460 struct vnode *vp; 1461 struct timespec *access; 1462 struct timespec *modify; 1463 int flags; 1464 { 1465 struct vop_update_args a; 1466 a.a_desc = VDESC(vop_update); 1467 a.a_vp = vp; 1468 a.a_access = access; 1469 a.a_modify = modify; 1470 a.a_flags = flags; 1471 return (VCALL(vp, VOFFSET(vop_update), &a)); 1472 } 1473 #endif 1474 1475 int vop_lease_vp_offsets[] = { 1476 VOPARG_OFFSETOF(struct vop_lease_args,a_vp), 1477 VDESC_NO_OFFSET 1478 }; 1479 struct vnodeop_desc vop_lease_desc = { 1480 0, 1481 "vop_lease", 1482 0, 1483 vop_lease_vp_offsets, 1484 VDESC_NO_OFFSET, 1485 VOPARG_OFFSETOF(struct vop_lease_args, a_cred), 1486 VOPARG_OFFSETOF(struct vop_lease_args, a_p), 1487 VDESC_NO_OFFSET, 1488 NULL, 1489 }; 1490 #ifdef VNODE_OP_NOINLINE 1491 int 1492 VOP_LEASE(vp, p, cred, flag) 1493 struct vnode *vp; 1494 struct proc *p; 1495 struct ucred *cred; 1496 int flag; 1497 { 1498 struct vop_lease_args a; 1499 a.a_desc = VDESC(vop_lease); 1500 a.a_vp = vp; 1501 a.a_p = p; 1502 a.a_cred = cred; 1503 a.a_flag = flag; 1504 return (VCALL(vp, VOFFSET(vop_lease), &a)); 1505 } 1506 #endif 1507 1508 int vop_whiteout_vp_offsets[] = { 1509 VOPARG_OFFSETOF(struct vop_whiteout_args,a_dvp), 1510 VDESC_NO_OFFSET 1511 }; 1512 struct vnodeop_desc vop_whiteout_desc = { 1513 0, 1514 "vop_whiteout", 1515 0, 1516 vop_whiteout_vp_offsets, 1517 VDESC_NO_OFFSET, 1518 VDESC_NO_OFFSET, 1519 VDESC_NO_OFFSET, 1520 VOPARG_OFFSETOF(struct vop_whiteout_args, a_cnp), 1521 NULL, 1522 }; 1523 #ifdef VNODE_OP_NOINLINE 1524 int 1525 VOP_WHITEOUT(dvp, cnp, flags) 1526 struct vnode *dvp; 1527 struct componentname *cnp; 1528 int flags; 1529 { 1530 struct vop_whiteout_args a; 1531 a.a_desc = VDESC(vop_whiteout); 1532 a.a_dvp = dvp; 1533 a.a_cnp = cnp; 1534 a.a_flags = flags; 1535 return (VCALL(dvp, VOFFSET(vop_whiteout), &a)); 1536 } 1537 #endif 1538 1539 int vop_getpages_vp_offsets[] = { 1540 VOPARG_OFFSETOF(struct vop_getpages_args,a_vp), 1541 VDESC_NO_OFFSET 1542 }; 1543 struct vnodeop_desc vop_getpages_desc = { 1544 0, 1545 "vop_getpages", 1546 0, 1547 vop_getpages_vp_offsets, 1548 VDESC_NO_OFFSET, 1549 VDESC_NO_OFFSET, 1550 VDESC_NO_OFFSET, 1551 VDESC_NO_OFFSET, 1552 NULL, 1553 }; 1554 #ifdef VNODE_OP_NOINLINE 1555 int 1556 VOP_GETPAGES(vp, offset, m, count, centeridx, access_type, advice, flags) 1557 struct vnode *vp; 1558 voff_t offset; 1559 vm_page_t *m; 1560 int *count; 1561 int centeridx; 1562 vm_prot_t access_type; 1563 int advice; 1564 int flags; 1565 { 1566 struct vop_getpages_args a; 1567 a.a_desc = VDESC(vop_getpages); 1568 a.a_vp = vp; 1569 a.a_offset = offset; 1570 a.a_m = m; 1571 a.a_count = count; 1572 a.a_centeridx = centeridx; 1573 a.a_access_type = access_type; 1574 a.a_advice = advice; 1575 a.a_flags = flags; 1576 return (VCALL(vp, VOFFSET(vop_getpages), &a)); 1577 } 1578 #endif 1579 1580 int vop_putpages_vp_offsets[] = { 1581 VOPARG_OFFSETOF(struct vop_putpages_args,a_vp), 1582 VDESC_NO_OFFSET 1583 }; 1584 struct vnodeop_desc vop_putpages_desc = { 1585 0, 1586 "vop_putpages", 1587 0, 1588 vop_putpages_vp_offsets, 1589 VDESC_NO_OFFSET, 1590 VDESC_NO_OFFSET, 1591 VDESC_NO_OFFSET, 1592 VDESC_NO_OFFSET, 1593 NULL, 1594 }; 1595 #ifdef VNODE_OP_NOINLINE 1596 int 1597 VOP_PUTPAGES(vp, m, count, flags, rtvals) 1598 struct vnode *vp; 1599 vm_page_t *m; 1600 int count; 1601 int flags; 1602 int *rtvals; 1603 { 1604 struct vop_putpages_args a; 1605 a.a_desc = VDESC(vop_putpages); 1606 a.a_vp = vp; 1607 a.a_m = m; 1608 a.a_count = count; 1609 a.a_flags = flags; 1610 a.a_rtvals = rtvals; 1611 return (VCALL(vp, VOFFSET(vop_putpages), &a)); 1612 } 1613 #endif 1614 1615 int vop_size_vp_offsets[] = { 1616 VOPARG_OFFSETOF(struct vop_size_args,a_vp), 1617 VDESC_NO_OFFSET 1618 }; 1619 struct vnodeop_desc vop_size_desc = { 1620 0, 1621 "vop_size", 1622 0, 1623 vop_size_vp_offsets, 1624 VDESC_NO_OFFSET, 1625 VDESC_NO_OFFSET, 1626 VDESC_NO_OFFSET, 1627 VDESC_NO_OFFSET, 1628 NULL, 1629 }; 1630 #ifdef VNODE_OP_NOINLINE 1631 int 1632 VOP_SIZE(vp, size, eobp) 1633 struct vnode *vp; 1634 off_t size; 1635 off_t *eobp; 1636 { 1637 struct vop_size_args a; 1638 a.a_desc = VDESC(vop_size); 1639 a.a_vp = vp; 1640 a.a_size = size; 1641 a.a_eobp = eobp; 1642 return (VCALL(vp, VOFFSET(vop_size), &a)); 1643 } 1644 #endif 1645 1646 /* Special cases: */ 1647 1648 int vop_strategy_vp_offsets[] = { 1649 VDESC_NO_OFFSET 1650 }; 1651 struct vnodeop_desc vop_strategy_desc = { 1652 0, 1653 "vop_strategy", 1654 0, 1655 vop_strategy_vp_offsets, 1656 VDESC_NO_OFFSET, 1657 VDESC_NO_OFFSET, 1658 VDESC_NO_OFFSET, 1659 VDESC_NO_OFFSET, 1660 NULL, 1661 }; 1662 #ifdef VNODE_OP_NOINLINE 1663 int 1664 VOP_STRATEGY(bp) 1665 struct buf *bp; 1666 { 1667 struct vop_strategy_args a; 1668 a.a_desc = VDESC(vop_strategy); 1669 a.a_bp = bp; 1670 return (VCALL(bp->b_vp, VOFFSET(vop_strategy), &a)); 1671 } 1672 #endif 1673 1674 int vop_bwrite_vp_offsets[] = { 1675 VDESC_NO_OFFSET 1676 }; 1677 struct vnodeop_desc vop_bwrite_desc = { 1678 0, 1679 "vop_bwrite", 1680 0, 1681 vop_bwrite_vp_offsets, 1682 VDESC_NO_OFFSET, 1683 VDESC_NO_OFFSET, 1684 VDESC_NO_OFFSET, 1685 VDESC_NO_OFFSET, 1686 NULL, 1687 }; 1688 #ifdef VNODE_OP_NOINLINE 1689 int 1690 VOP_BWRITE(bp) 1691 struct buf *bp; 1692 { 1693 struct vop_bwrite_args a; 1694 a.a_desc = VDESC(vop_bwrite); 1695 a.a_bp = bp; 1696 return (VCALL(bp->b_vp, VOFFSET(vop_bwrite), &a)); 1697 } 1698 #endif 1699 1700 /* End of special cases. */ 1701 1702 struct vnodeop_desc *vfs_op_descs[] = { 1703 &vop_default_desc, /* MUST BE FIRST */ 1704 &vop_strategy_desc, /* XXX: SPECIAL CASE */ 1705 &vop_bwrite_desc, /* XXX: SPECIAL CASE */ 1706 1707 &vop_lookup_desc, 1708 &vop_create_desc, 1709 &vop_mknod_desc, 1710 &vop_open_desc, 1711 &vop_close_desc, 1712 &vop_access_desc, 1713 &vop_getattr_desc, 1714 &vop_setattr_desc, 1715 &vop_read_desc, 1716 &vop_write_desc, 1717 &vop_ioctl_desc, 1718 &vop_fcntl_desc, 1719 &vop_poll_desc, 1720 &vop_revoke_desc, 1721 &vop_mmap_desc, 1722 &vop_fsync_desc, 1723 &vop_seek_desc, 1724 &vop_remove_desc, 1725 &vop_link_desc, 1726 &vop_rename_desc, 1727 &vop_mkdir_desc, 1728 &vop_rmdir_desc, 1729 &vop_symlink_desc, 1730 &vop_readdir_desc, 1731 &vop_readlink_desc, 1732 &vop_abortop_desc, 1733 &vop_inactive_desc, 1734 &vop_reclaim_desc, 1735 &vop_lock_desc, 1736 &vop_unlock_desc, 1737 &vop_bmap_desc, 1738 &vop_print_desc, 1739 &vop_islocked_desc, 1740 &vop_pathconf_desc, 1741 &vop_advlock_desc, 1742 &vop_blkatoff_desc, 1743 &vop_valloc_desc, 1744 &vop_balloc_desc, 1745 &vop_ballocn_desc, 1746 &vop_reallocblks_desc, 1747 &vop_vfree_desc, 1748 &vop_truncate_desc, 1749 &vop_update_desc, 1750 &vop_lease_desc, 1751 &vop_whiteout_desc, 1752 &vop_getpages_desc, 1753 &vop_putpages_desc, 1754 &vop_size_desc, 1755 NULL 1756 }; 1757 1758