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