1 /* 2 * This file is produced by the script /sys/kern/vnode_if.sh. 3 * Do not modify anything in here by hand. 4 * 5 * @(#)vnode_if.h 7.4 (Berkeley) 07/03/92 6 */ 7 extern struct vnodeop_desc vop_default_desc; 8 struct vop_lookup_args { 9 struct vnodeop_desc *a_desc; 10 struct vnode *a_dvp; 11 struct vnode **a_vpp; 12 struct componentname *a_cnp; 13 }; 14 extern struct vnodeop_desc vop_lookup_desc; 15 static inline int VOP_LOOKUP(dvp, vpp, cnp) 16 struct vnode *dvp; 17 struct vnode **vpp; 18 struct componentname *cnp; 19 { 20 struct vop_lookup_args a; 21 22 a.a_desc = VDESC(vop_lookup); 23 a.a_dvp = dvp; 24 a.a_vpp = vpp; 25 a.a_cnp = cnp; 26 return (VCALL(dvp, VOFFSET(vop_lookup), &a)); 27 } 28 struct vop_create_args { 29 struct vnodeop_desc *a_desc; 30 struct vnode *a_dvp; 31 struct vnode **a_vpp; 32 struct componentname *a_cnp; 33 struct vattr *a_vap; 34 }; 35 extern struct vnodeop_desc vop_create_desc; 36 static inline int VOP_CREATE(dvp, vpp, cnp, vap) 37 struct vnode *dvp; 38 struct vnode **vpp; 39 struct componentname *cnp; 40 struct vattr *vap; 41 { 42 struct vop_create_args a; 43 44 a.a_desc = VDESC(vop_create); 45 a.a_dvp = dvp; 46 a.a_vpp = vpp; 47 a.a_cnp = cnp; 48 a.a_vap = vap; 49 return (VCALL(dvp, VOFFSET(vop_create), &a)); 50 } 51 struct vop_mknod_args { 52 struct vnodeop_desc *a_desc; 53 struct vnode *a_dvp; 54 struct vnode **a_vpp; 55 struct componentname *a_cnp; 56 struct vattr *a_vap; 57 }; 58 extern struct vnodeop_desc vop_mknod_desc; 59 static inline int VOP_MKNOD(dvp, vpp, cnp, vap) 60 struct vnode *dvp; 61 struct vnode **vpp; 62 struct componentname *cnp; 63 struct vattr *vap; 64 { 65 struct vop_mknod_args a; 66 67 a.a_desc = VDESC(vop_mknod); 68 a.a_dvp = dvp; 69 a.a_vpp = vpp; 70 a.a_cnp = cnp; 71 a.a_vap = vap; 72 return (VCALL(dvp, VOFFSET(vop_mknod), &a)); 73 } 74 struct vop_open_args { 75 struct vnodeop_desc *a_desc; 76 struct vnode *a_vp; 77 int a_mode; 78 struct ucred *a_cred; 79 struct proc *a_p; 80 }; 81 extern struct vnodeop_desc vop_open_desc; 82 static inline int VOP_OPEN(vp, mode, cred, p) 83 struct vnode *vp; 84 int mode; 85 struct ucred *cred; 86 struct proc *p; 87 { 88 struct vop_open_args a; 89 90 a.a_desc = VDESC(vop_open); 91 a.a_vp = vp; 92 a.a_mode = mode; 93 a.a_cred = cred; 94 a.a_p = p; 95 return (VCALL(vp, VOFFSET(vop_open), &a)); 96 } 97 struct vop_close_args { 98 struct vnodeop_desc *a_desc; 99 struct vnode *a_vp; 100 int a_fflag; 101 struct ucred *a_cred; 102 struct proc *a_p; 103 }; 104 extern struct vnodeop_desc vop_close_desc; 105 static inline int VOP_CLOSE(vp, fflag, cred, p) 106 struct vnode *vp; 107 int fflag; 108 struct ucred *cred; 109 struct proc *p; 110 { 111 struct vop_close_args a; 112 113 a.a_desc = VDESC(vop_close); 114 a.a_vp = vp; 115 a.a_fflag = fflag; 116 a.a_cred = cred; 117 a.a_p = p; 118 return (VCALL(vp, VOFFSET(vop_close), &a)); 119 } 120 struct vop_access_args { 121 struct vnodeop_desc *a_desc; 122 struct vnode *a_vp; 123 int a_mode; 124 struct ucred *a_cred; 125 struct proc *a_p; 126 }; 127 extern struct vnodeop_desc vop_access_desc; 128 static inline int VOP_ACCESS(vp, mode, cred, p) 129 struct vnode *vp; 130 int mode; 131 struct ucred *cred; 132 struct proc *p; 133 { 134 struct vop_access_args a; 135 136 a.a_desc = VDESC(vop_access); 137 a.a_vp = vp; 138 a.a_mode = mode; 139 a.a_cred = cred; 140 a.a_p = p; 141 return (VCALL(vp, VOFFSET(vop_access), &a)); 142 } 143 struct vop_getattr_args { 144 struct vnodeop_desc *a_desc; 145 struct vnode *a_vp; 146 struct vattr *a_vap; 147 struct ucred *a_cred; 148 struct proc *a_p; 149 }; 150 extern struct vnodeop_desc vop_getattr_desc; 151 static inline int VOP_GETATTR(vp, vap, cred, p) 152 struct vnode *vp; 153 struct vattr *vap; 154 struct ucred *cred; 155 struct proc *p; 156 { 157 struct vop_getattr_args a; 158 159 a.a_desc = VDESC(vop_getattr); 160 a.a_vp = vp; 161 a.a_vap = vap; 162 a.a_cred = cred; 163 a.a_p = p; 164 return (VCALL(vp, VOFFSET(vop_getattr), &a)); 165 } 166 struct vop_setattr_args { 167 struct vnodeop_desc *a_desc; 168 struct vnode *a_vp; 169 struct vattr *a_vap; 170 struct ucred *a_cred; 171 struct proc *a_p; 172 }; 173 extern struct vnodeop_desc vop_setattr_desc; 174 static inline int VOP_SETATTR(vp, vap, cred, p) 175 struct vnode *vp; 176 struct vattr *vap; 177 struct ucred *cred; 178 struct proc *p; 179 { 180 struct vop_setattr_args a; 181 182 a.a_desc = VDESC(vop_setattr); 183 a.a_vp = vp; 184 a.a_vap = vap; 185 a.a_cred = cred; 186 a.a_p = p; 187 return (VCALL(vp, VOFFSET(vop_setattr), &a)); 188 } 189 struct vop_read_args { 190 struct vnodeop_desc *a_desc; 191 struct vnode *a_vp; 192 struct uio *a_uio; 193 int a_ioflag; 194 struct ucred *a_cred; 195 }; 196 extern struct vnodeop_desc vop_read_desc; 197 static inline int VOP_READ(vp, uio, ioflag, cred) 198 struct vnode *vp; 199 struct uio *uio; 200 int ioflag; 201 struct ucred *cred; 202 { 203 struct vop_read_args a; 204 205 a.a_desc = VDESC(vop_read); 206 a.a_vp = vp; 207 a.a_uio = uio; 208 a.a_ioflag = ioflag; 209 a.a_cred = cred; 210 return (VCALL(vp, VOFFSET(vop_read), &a)); 211 } 212 struct vop_write_args { 213 struct vnodeop_desc *a_desc; 214 struct vnode *a_vp; 215 struct uio *a_uio; 216 int a_ioflag; 217 struct ucred *a_cred; 218 }; 219 extern struct vnodeop_desc vop_write_desc; 220 static inline int VOP_WRITE(vp, uio, ioflag, cred) 221 struct vnode *vp; 222 struct uio *uio; 223 int ioflag; 224 struct ucred *cred; 225 { 226 struct vop_write_args a; 227 228 a.a_desc = VDESC(vop_write); 229 a.a_vp = vp; 230 a.a_uio = uio; 231 a.a_ioflag = ioflag; 232 a.a_cred = cred; 233 return (VCALL(vp, VOFFSET(vop_write), &a)); 234 } 235 struct vop_ioctl_args { 236 struct vnodeop_desc *a_desc; 237 struct vnode *a_vp; 238 int a_command; 239 caddr_t a_data; 240 int a_fflag; 241 struct ucred *a_cred; 242 struct proc *a_p; 243 }; 244 extern struct vnodeop_desc vop_ioctl_desc; 245 static inline int VOP_IOCTL(vp, command, data, fflag, cred, p) 246 struct vnode *vp; 247 int command; 248 caddr_t data; 249 int fflag; 250 struct ucred *cred; 251 struct proc *p; 252 { 253 struct vop_ioctl_args a; 254 255 a.a_desc = VDESC(vop_ioctl); 256 a.a_vp = vp; 257 a.a_command = command; 258 a.a_data = data; 259 a.a_fflag = fflag; 260 a.a_cred = cred; 261 a.a_p = p; 262 return (VCALL(vp, VOFFSET(vop_ioctl), &a)); 263 } 264 struct vop_select_args { 265 struct vnodeop_desc *a_desc; 266 struct vnode *a_vp; 267 int a_which; 268 int a_fflags; 269 struct ucred *a_cred; 270 struct proc *a_p; 271 }; 272 extern struct vnodeop_desc vop_select_desc; 273 static inline int VOP_SELECT(vp, which, fflags, cred, p) 274 struct vnode *vp; 275 int which; 276 int fflags; 277 struct ucred *cred; 278 struct proc *p; 279 { 280 struct vop_select_args a; 281 282 a.a_desc = VDESC(vop_select); 283 a.a_vp = vp; 284 a.a_which = which; 285 a.a_fflags = fflags; 286 a.a_cred = cred; 287 a.a_p = p; 288 return (VCALL(vp, VOFFSET(vop_select), &a)); 289 } 290 struct vop_mmap_args { 291 struct vnodeop_desc *a_desc; 292 struct vnode *a_vp; 293 int a_fflags; 294 struct ucred *a_cred; 295 struct proc *a_p; 296 }; 297 extern struct vnodeop_desc vop_mmap_desc; 298 static inline int VOP_MMAP(vp, fflags, cred, p) 299 struct vnode *vp; 300 int fflags; 301 struct ucred *cred; 302 struct proc *p; 303 { 304 struct vop_mmap_args a; 305 306 a.a_desc = VDESC(vop_mmap); 307 a.a_vp = vp; 308 a.a_fflags = fflags; 309 a.a_cred = cred; 310 a.a_p = p; 311 return (VCALL(vp, VOFFSET(vop_mmap), &a)); 312 } 313 struct vop_fsync_args { 314 struct vnodeop_desc *a_desc; 315 struct vnode *a_vp; 316 struct ucred *a_cred; 317 int a_waitfor; 318 struct proc *a_p; 319 }; 320 extern struct vnodeop_desc vop_fsync_desc; 321 static inline int VOP_FSYNC(vp, cred, waitfor, p) 322 struct vnode *vp; 323 struct ucred *cred; 324 int waitfor; 325 struct proc *p; 326 { 327 struct vop_fsync_args a; 328 329 a.a_desc = VDESC(vop_fsync); 330 a.a_vp = vp; 331 a.a_cred = cred; 332 a.a_waitfor = waitfor; 333 a.a_p = p; 334 return (VCALL(vp, VOFFSET(vop_fsync), &a)); 335 } 336 struct vop_seek_args { 337 struct vnodeop_desc *a_desc; 338 struct vnode *a_vp; 339 off_t a_oldoff; 340 off_t a_newoff; 341 struct ucred *a_cred; 342 }; 343 extern struct vnodeop_desc vop_seek_desc; 344 static inline int VOP_SEEK(vp, oldoff, newoff, cred) 345 struct vnode *vp; 346 off_t oldoff; 347 off_t newoff; 348 struct ucred *cred; 349 { 350 struct vop_seek_args a; 351 352 a.a_desc = VDESC(vop_seek); 353 a.a_vp = vp; 354 a.a_oldoff = oldoff; 355 a.a_newoff = newoff; 356 a.a_cred = cred; 357 return (VCALL(vp, VOFFSET(vop_seek), &a)); 358 } 359 struct vop_remove_args { 360 struct vnodeop_desc *a_desc; 361 struct vnode *a_dvp; 362 struct vnode *a_vp; 363 struct componentname *a_cnp; 364 }; 365 extern struct vnodeop_desc vop_remove_desc; 366 static inline int VOP_REMOVE(dvp, vp, cnp) 367 struct vnode *dvp; 368 struct vnode *vp; 369 struct componentname *cnp; 370 { 371 struct vop_remove_args a; 372 373 a.a_desc = VDESC(vop_remove); 374 a.a_dvp = dvp; 375 a.a_vp = vp; 376 a.a_cnp = cnp; 377 return (VCALL(dvp, VOFFSET(vop_remove), &a)); 378 } 379 struct vop_link_args { 380 struct vnodeop_desc *a_desc; 381 struct vnode *a_vp; 382 struct vnode *a_tdvp; 383 struct componentname *a_cnp; 384 }; 385 extern struct vnodeop_desc vop_link_desc; 386 static inline int VOP_LINK(vp, tdvp, cnp) 387 struct vnode *vp; 388 struct vnode *tdvp; 389 struct componentname *cnp; 390 { 391 struct vop_link_args a; 392 393 a.a_desc = VDESC(vop_link); 394 a.a_vp = vp; 395 a.a_tdvp = tdvp; 396 a.a_cnp = cnp; 397 return (VCALL(vp, VOFFSET(vop_link), &a)); 398 } 399 struct vop_rename_args { 400 struct vnodeop_desc *a_desc; 401 struct vnode *a_fdvp; 402 struct vnode *a_fvp; 403 struct componentname *a_fcnp; 404 struct vnode *a_tdvp; 405 struct vnode *a_tvp; 406 struct componentname *a_tcnp; 407 }; 408 extern struct vnodeop_desc vop_rename_desc; 409 static inline int VOP_RENAME(fdvp, fvp, fcnp, tdvp, tvp, tcnp) 410 struct vnode *fdvp; 411 struct vnode *fvp; 412 struct componentname *fcnp; 413 struct vnode *tdvp; 414 struct vnode *tvp; 415 struct componentname *tcnp; 416 { 417 struct vop_rename_args a; 418 419 a.a_desc = VDESC(vop_rename); 420 a.a_fdvp = fdvp; 421 a.a_fvp = fvp; 422 a.a_fcnp = fcnp; 423 a.a_tdvp = tdvp; 424 a.a_tvp = tvp; 425 a.a_tcnp = tcnp; 426 return (VCALL(fdvp, VOFFSET(vop_rename), &a)); 427 } 428 struct vop_mkdir_args { 429 struct vnodeop_desc *a_desc; 430 struct vnode *a_dvp; 431 struct vnode **a_vpp; 432 struct componentname *a_cnp; 433 struct vattr *a_vap; 434 }; 435 extern struct vnodeop_desc vop_mkdir_desc; 436 static inline int VOP_MKDIR(dvp, vpp, cnp, vap) 437 struct vnode *dvp; 438 struct vnode **vpp; 439 struct componentname *cnp; 440 struct vattr *vap; 441 { 442 struct vop_mkdir_args a; 443 444 a.a_desc = VDESC(vop_mkdir); 445 a.a_dvp = dvp; 446 a.a_vpp = vpp; 447 a.a_cnp = cnp; 448 a.a_vap = vap; 449 return (VCALL(dvp, VOFFSET(vop_mkdir), &a)); 450 } 451 struct vop_rmdir_args { 452 struct vnodeop_desc *a_desc; 453 struct vnode *a_dvp; 454 struct vnode *a_vp; 455 struct componentname *a_cnp; 456 }; 457 extern struct vnodeop_desc vop_rmdir_desc; 458 static inline int VOP_RMDIR(dvp, vp, cnp) 459 struct vnode *dvp; 460 struct vnode *vp; 461 struct componentname *cnp; 462 { 463 struct vop_rmdir_args a; 464 465 a.a_desc = VDESC(vop_rmdir); 466 a.a_dvp = dvp; 467 a.a_vp = vp; 468 a.a_cnp = cnp; 469 return (VCALL(dvp, VOFFSET(vop_rmdir), &a)); 470 } 471 struct vop_symlink_args { 472 struct vnodeop_desc *a_desc; 473 struct vnode *a_dvp; 474 struct vnode **a_vpp; 475 struct componentname *a_cnp; 476 struct vattr *a_vap; 477 char *a_target; 478 }; 479 extern struct vnodeop_desc vop_symlink_desc; 480 static inline int VOP_SYMLINK(dvp, vpp, cnp, vap, target) 481 struct vnode *dvp; 482 struct vnode **vpp; 483 struct componentname *cnp; 484 struct vattr *vap; 485 char *target; 486 { 487 struct vop_symlink_args a; 488 489 a.a_desc = VDESC(vop_symlink); 490 a.a_dvp = dvp; 491 a.a_vpp = vpp; 492 a.a_cnp = cnp; 493 a.a_vap = vap; 494 a.a_target = target; 495 return (VCALL(dvp, VOFFSET(vop_symlink), &a)); 496 } 497 struct vop_readdir_args { 498 struct vnodeop_desc *a_desc; 499 struct vnode *a_vp; 500 struct uio *a_uio; 501 struct ucred *a_cred; 502 }; 503 extern struct vnodeop_desc vop_readdir_desc; 504 static inline int VOP_READDIR(vp, uio, cred) 505 struct vnode *vp; 506 struct uio *uio; 507 struct ucred *cred; 508 { 509 struct vop_readdir_args a; 510 511 a.a_desc = VDESC(vop_readdir); 512 a.a_vp = vp; 513 a.a_uio = uio; 514 a.a_cred = cred; 515 return (VCALL(vp, VOFFSET(vop_readdir), &a)); 516 } 517 struct vop_readlink_args { 518 struct vnodeop_desc *a_desc; 519 struct vnode *a_vp; 520 struct uio *a_uio; 521 struct ucred *a_cred; 522 }; 523 extern struct vnodeop_desc vop_readlink_desc; 524 static inline int VOP_READLINK(vp, uio, cred) 525 struct vnode *vp; 526 struct uio *uio; 527 struct ucred *cred; 528 { 529 struct vop_readlink_args a; 530 531 a.a_desc = VDESC(vop_readlink); 532 a.a_vp = vp; 533 a.a_uio = uio; 534 a.a_cred = cred; 535 return (VCALL(vp, VOFFSET(vop_readlink), &a)); 536 } 537 struct vop_abortop_args { 538 struct vnodeop_desc *a_desc; 539 struct vnode *a_dvp; 540 struct componentname *a_cnp; 541 }; 542 extern struct vnodeop_desc vop_abortop_desc; 543 static inline int VOP_ABORTOP(dvp, cnp) 544 struct vnode *dvp; 545 struct componentname *cnp; 546 { 547 struct vop_abortop_args a; 548 549 a.a_desc = VDESC(vop_abortop); 550 a.a_dvp = dvp; 551 a.a_cnp = cnp; 552 return (VCALL(dvp, VOFFSET(vop_abortop), &a)); 553 } 554 struct vop_inactive_args { 555 struct vnodeop_desc *a_desc; 556 struct vnode *a_vp; 557 }; 558 extern struct vnodeop_desc vop_inactive_desc; 559 static inline int VOP_INACTIVE(vp) 560 struct vnode *vp; 561 { 562 struct vop_inactive_args a; 563 564 a.a_desc = VDESC(vop_inactive); 565 a.a_vp = vp; 566 return (VCALL(vp, VOFFSET(vop_inactive), &a)); 567 } 568 struct vop_reclaim_args { 569 struct vnodeop_desc *a_desc; 570 struct vnode *a_vp; 571 }; 572 extern struct vnodeop_desc vop_reclaim_desc; 573 static inline int VOP_RECLAIM(vp) 574 struct vnode *vp; 575 { 576 struct vop_reclaim_args a; 577 578 a.a_desc = VDESC(vop_reclaim); 579 a.a_vp = vp; 580 return (VCALL(vp, VOFFSET(vop_reclaim), &a)); 581 } 582 struct vop_lock_args { 583 struct vnodeop_desc *a_desc; 584 struct vnode *a_vp; 585 }; 586 extern struct vnodeop_desc vop_lock_desc; 587 static inline int VOP_LOCK(vp) 588 struct vnode *vp; 589 { 590 struct vop_lock_args a; 591 592 a.a_desc = VDESC(vop_lock); 593 a.a_vp = vp; 594 return (VCALL(vp, VOFFSET(vop_lock), &a)); 595 } 596 struct vop_unlock_args { 597 struct vnodeop_desc *a_desc; 598 struct vnode *a_vp; 599 }; 600 extern struct vnodeop_desc vop_unlock_desc; 601 static inline int VOP_UNLOCK(vp) 602 struct vnode *vp; 603 { 604 struct vop_unlock_args a; 605 606 a.a_desc = VDESC(vop_unlock); 607 a.a_vp = vp; 608 return (VCALL(vp, VOFFSET(vop_unlock), &a)); 609 } 610 struct vop_bmap_args { 611 struct vnodeop_desc *a_desc; 612 struct vnode *a_vp; 613 daddr_t a_bn; 614 struct vnode **a_vpp; 615 daddr_t *a_bnp; 616 }; 617 extern struct vnodeop_desc vop_bmap_desc; 618 static inline int VOP_BMAP(vp, bn, vpp, bnp) 619 struct vnode *vp; 620 daddr_t bn; 621 struct vnode **vpp; 622 daddr_t *bnp; 623 { 624 struct vop_bmap_args a; 625 626 a.a_desc = VDESC(vop_bmap); 627 a.a_vp = vp; 628 a.a_bn = bn; 629 a.a_vpp = vpp; 630 a.a_bnp = bnp; 631 return (VCALL(vp, VOFFSET(vop_bmap), &a)); 632 } 633 struct vop_print_args { 634 struct vnodeop_desc *a_desc; 635 struct vnode *a_vp; 636 }; 637 extern struct vnodeop_desc vop_print_desc; 638 static inline int VOP_PRINT(vp) 639 struct vnode *vp; 640 { 641 struct vop_print_args a; 642 643 a.a_desc = VDESC(vop_print); 644 a.a_vp = vp; 645 return (VCALL(vp, VOFFSET(vop_print), &a)); 646 } 647 struct vop_islocked_args { 648 struct vnodeop_desc *a_desc; 649 struct vnode *a_vp; 650 }; 651 extern struct vnodeop_desc vop_islocked_desc; 652 static inline int VOP_ISLOCKED(vp) 653 struct vnode *vp; 654 { 655 struct vop_islocked_args a; 656 657 a.a_desc = VDESC(vop_islocked); 658 a.a_vp = vp; 659 return (VCALL(vp, VOFFSET(vop_islocked), &a)); 660 } 661 struct vop_advlock_args { 662 struct vnodeop_desc *a_desc; 663 struct vnode *a_vp; 664 caddr_t a_id; 665 int a_op; 666 struct flock *a_fl; 667 int a_flags; 668 }; 669 extern struct vnodeop_desc vop_advlock_desc; 670 static inline int VOP_ADVLOCK(vp, id, op, fl, flags) 671 struct vnode *vp; 672 caddr_t id; 673 int op; 674 struct flock *fl; 675 int flags; 676 { 677 struct vop_advlock_args a; 678 679 a.a_desc = VDESC(vop_advlock); 680 a.a_vp = vp; 681 a.a_id = id; 682 a.a_op = op; 683 a.a_fl = fl; 684 a.a_flags = flags; 685 return (VCALL(vp, VOFFSET(vop_advlock), &a)); 686 } 687 struct vop_blkatoff_args { 688 struct vnodeop_desc *a_desc; 689 struct vnode *a_vp; 690 off_t a_offset; 691 char **a_res; 692 struct buf **a_bpp; 693 }; 694 extern struct vnodeop_desc vop_blkatoff_desc; 695 static inline int VOP_BLKATOFF(vp, offset, res, bpp) 696 struct vnode *vp; 697 off_t offset; 698 char **res; 699 struct buf **bpp; 700 { 701 struct vop_blkatoff_args a; 702 703 a.a_desc = VDESC(vop_blkatoff); 704 a.a_vp = vp; 705 a.a_offset = offset; 706 a.a_res = res; 707 a.a_bpp = bpp; 708 return (VCALL(vp, VOFFSET(vop_blkatoff), &a)); 709 } 710 struct vop_valloc_args { 711 struct vnodeop_desc *a_desc; 712 struct vnode *a_pvp; 713 int a_mode; 714 struct ucred *a_cred; 715 struct vnode **a_vpp; 716 }; 717 extern struct vnodeop_desc vop_valloc_desc; 718 static inline int VOP_VALLOC(pvp, mode, cred, vpp) 719 struct vnode *pvp; 720 int mode; 721 struct ucred *cred; 722 struct vnode **vpp; 723 { 724 struct vop_valloc_args a; 725 726 a.a_desc = VDESC(vop_valloc); 727 a.a_pvp = pvp; 728 a.a_mode = mode; 729 a.a_cred = cred; 730 a.a_vpp = vpp; 731 return (VCALL(pvp, VOFFSET(vop_valloc), &a)); 732 } 733 struct vop_vfree_args { 734 struct vnodeop_desc *a_desc; 735 struct vnode *a_pvp; 736 ino_t a_ino; 737 int a_mode; 738 }; 739 extern struct vnodeop_desc vop_vfree_desc; 740 static inline int VOP_VFREE(pvp, ino, mode) 741 struct vnode *pvp; 742 ino_t ino; 743 int mode; 744 { 745 struct vop_vfree_args a; 746 747 a.a_desc = VDESC(vop_vfree); 748 a.a_pvp = pvp; 749 a.a_ino = ino; 750 a.a_mode = mode; 751 return (VCALL(pvp, VOFFSET(vop_vfree), &a)); 752 } 753 struct vop_truncate_args { 754 struct vnodeop_desc *a_desc; 755 struct vnode *a_vp; 756 off_t a_length; 757 int a_flags; 758 struct ucred *a_cred; 759 struct proc *a_p; 760 }; 761 extern struct vnodeop_desc vop_truncate_desc; 762 static inline int VOP_TRUNCATE(vp, length, flags, cred, p) 763 struct vnode *vp; 764 off_t length; 765 int flags; 766 struct ucred *cred; 767 struct proc *p; 768 { 769 struct vop_truncate_args a; 770 771 a.a_desc = VDESC(vop_truncate); 772 a.a_vp = vp; 773 a.a_length = length; 774 a.a_flags = flags; 775 a.a_cred = cred; 776 a.a_p = p; 777 return (VCALL(vp, VOFFSET(vop_truncate), &a)); 778 } 779 struct vop_update_args { 780 struct vnodeop_desc *a_desc; 781 struct vnode *a_vp; 782 struct timeval *a_ta; 783 struct timeval *a_tm; 784 int a_waitfor; 785 }; 786 extern struct vnodeop_desc vop_update_desc; 787 static inline int VOP_UPDATE(vp, ta, tm, waitfor) 788 struct vnode *vp; 789 struct timeval *ta; 790 struct timeval *tm; 791 int waitfor; 792 { 793 struct vop_update_args a; 794 795 a.a_desc = VDESC(vop_update); 796 a.a_vp = vp; 797 a.a_ta = ta; 798 a.a_tm = tm; 799 a.a_waitfor = waitfor; 800 return (VCALL(vp, VOFFSET(vop_update), &a)); 801 } 802 #include <sys/buf.h> 803 struct vop_strategy_args { 804 struct vnodeop_desc *a_desc; 805 struct buf *a_bp; 806 }; 807 extern struct vnodeop_desc vop_strategy_desc; 808 static inline int VOP_STRATEGY(bp) 809 struct buf *bp; 810 { 811 struct vop_strategy_args a; 812 813 a.a_desc = VDESC(vop_strategy); 814 a.a_bp = bp; 815 return (VCALL((bp)->b_vp, VOFFSET(vop_strategy), &a)); 816 } 817 818 struct vop_bwrite_args { 819 struct vnodeop_desc *a_desc; 820 struct buf *a_bp; 821 }; 822 extern struct vnodeop_desc vop_bwrite_desc; 823 static inline int VOP_BWRITE(bp) 824 struct buf *bp; 825 { 826 struct vop_bwrite_args a; 827 828 a.a_desc = VDESC(vop_bwrite); 829 a.a_bp = bp; 830 return (VCALL((bp)->b_vp, VOFFSET(vop_bwrite), &a)); 831 } 832