Home | History | Annotate | Line # | Download | only in kern
vnode_if.c revision 1.20
      1 /*	$NetBSD: vnode_if.c,v 1.20 1999/12/07 21:07:38 wrstuden 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.22 1999/12/07 21:06:48 wrstuden Exp
      9  * by the script:
     10  *	NetBSD: vnode_if.sh,v 1.19 1999/07/07 23:32:50 wrstuden 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/param.h>
     47 #include <sys/mount.h>
     48 #include <sys/vnode.h>
     49 
     50 struct vnodeop_desc vop_default_desc = {
     51 	0,
     52 	"default",
     53 	0,
     54 	NULL,
     55 	VDESC_NO_OFFSET,
     56 	VDESC_NO_OFFSET,
     57 	VDESC_NO_OFFSET,
     58 	VDESC_NO_OFFSET,
     59 	NULL,
     60 };
     61 
     62 
     63 int vop_lookup_vp_offsets[] = {
     64 	VOPARG_OFFSETOF(struct vop_lookup_args,a_dvp),
     65 	VDESC_NO_OFFSET
     66 };
     67 struct vnodeop_desc vop_lookup_desc = {
     68 	0,
     69 	"vop_lookup",
     70 	0,
     71 	vop_lookup_vp_offsets,
     72 	VOPARG_OFFSETOF(struct vop_lookup_args, a_vpp),
     73 	VDESC_NO_OFFSET,
     74 	VDESC_NO_OFFSET,
     75 	VOPARG_OFFSETOF(struct vop_lookup_args, a_cnp),
     76 	NULL,
     77 };
     78 
     79 int vop_create_vp_offsets[] = {
     80 	VOPARG_OFFSETOF(struct vop_create_args,a_dvp),
     81 	VDESC_NO_OFFSET
     82 };
     83 struct vnodeop_desc vop_create_desc = {
     84 	0,
     85 	"vop_create",
     86 	0 | VDESC_VP0_WILLPUT,
     87 	vop_create_vp_offsets,
     88 	VOPARG_OFFSETOF(struct vop_create_args, a_vpp),
     89 	VDESC_NO_OFFSET,
     90 	VDESC_NO_OFFSET,
     91 	VOPARG_OFFSETOF(struct vop_create_args, a_cnp),
     92 	NULL,
     93 };
     94 
     95 int vop_mknod_vp_offsets[] = {
     96 	VOPARG_OFFSETOF(struct vop_mknod_args,a_dvp),
     97 	VDESC_NO_OFFSET
     98 };
     99 struct vnodeop_desc vop_mknod_desc = {
    100 	0,
    101 	"vop_mknod",
    102 	0 | VDESC_VP0_WILLPUT | VDESC_VPP_WILLRELE,
    103 	vop_mknod_vp_offsets,
    104 	VOPARG_OFFSETOF(struct vop_mknod_args, a_vpp),
    105 	VDESC_NO_OFFSET,
    106 	VDESC_NO_OFFSET,
    107 	VOPARG_OFFSETOF(struct vop_mknod_args, a_cnp),
    108 	NULL,
    109 };
    110 
    111 int vop_open_vp_offsets[] = {
    112 	VOPARG_OFFSETOF(struct vop_open_args,a_vp),
    113 	VDESC_NO_OFFSET
    114 };
    115 struct vnodeop_desc vop_open_desc = {
    116 	0,
    117 	"vop_open",
    118 	0,
    119 	vop_open_vp_offsets,
    120 	VDESC_NO_OFFSET,
    121 	VOPARG_OFFSETOF(struct vop_open_args, a_cred),
    122 	VOPARG_OFFSETOF(struct vop_open_args, a_p),
    123 	VDESC_NO_OFFSET,
    124 	NULL,
    125 };
    126 
    127 int vop_close_vp_offsets[] = {
    128 	VOPARG_OFFSETOF(struct vop_close_args,a_vp),
    129 	VDESC_NO_OFFSET
    130 };
    131 struct vnodeop_desc vop_close_desc = {
    132 	0,
    133 	"vop_close",
    134 	0,
    135 	vop_close_vp_offsets,
    136 	VDESC_NO_OFFSET,
    137 	VOPARG_OFFSETOF(struct vop_close_args, a_cred),
    138 	VOPARG_OFFSETOF(struct vop_close_args, a_p),
    139 	VDESC_NO_OFFSET,
    140 	NULL,
    141 };
    142 
    143 int vop_access_vp_offsets[] = {
    144 	VOPARG_OFFSETOF(struct vop_access_args,a_vp),
    145 	VDESC_NO_OFFSET
    146 };
    147 struct vnodeop_desc vop_access_desc = {
    148 	0,
    149 	"vop_access",
    150 	0,
    151 	vop_access_vp_offsets,
    152 	VDESC_NO_OFFSET,
    153 	VOPARG_OFFSETOF(struct vop_access_args, a_cred),
    154 	VOPARG_OFFSETOF(struct vop_access_args, a_p),
    155 	VDESC_NO_OFFSET,
    156 	NULL,
    157 };
    158 
    159 int vop_getattr_vp_offsets[] = {
    160 	VOPARG_OFFSETOF(struct vop_getattr_args,a_vp),
    161 	VDESC_NO_OFFSET
    162 };
    163 struct vnodeop_desc vop_getattr_desc = {
    164 	0,
    165 	"vop_getattr",
    166 	0,
    167 	vop_getattr_vp_offsets,
    168 	VDESC_NO_OFFSET,
    169 	VOPARG_OFFSETOF(struct vop_getattr_args, a_cred),
    170 	VOPARG_OFFSETOF(struct vop_getattr_args, a_p),
    171 	VDESC_NO_OFFSET,
    172 	NULL,
    173 };
    174 
    175 int vop_setattr_vp_offsets[] = {
    176 	VOPARG_OFFSETOF(struct vop_setattr_args,a_vp),
    177 	VDESC_NO_OFFSET
    178 };
    179 struct vnodeop_desc vop_setattr_desc = {
    180 	0,
    181 	"vop_setattr",
    182 	0,
    183 	vop_setattr_vp_offsets,
    184 	VDESC_NO_OFFSET,
    185 	VOPARG_OFFSETOF(struct vop_setattr_args, a_cred),
    186 	VOPARG_OFFSETOF(struct vop_setattr_args, a_p),
    187 	VDESC_NO_OFFSET,
    188 	NULL,
    189 };
    190 
    191 int vop_read_vp_offsets[] = {
    192 	VOPARG_OFFSETOF(struct vop_read_args,a_vp),
    193 	VDESC_NO_OFFSET
    194 };
    195 struct vnodeop_desc vop_read_desc = {
    196 	0,
    197 	"vop_read",
    198 	0,
    199 	vop_read_vp_offsets,
    200 	VDESC_NO_OFFSET,
    201 	VOPARG_OFFSETOF(struct vop_read_args, a_cred),
    202 	VDESC_NO_OFFSET,
    203 	VDESC_NO_OFFSET,
    204 	NULL,
    205 };
    206 
    207 int vop_write_vp_offsets[] = {
    208 	VOPARG_OFFSETOF(struct vop_write_args,a_vp),
    209 	VDESC_NO_OFFSET
    210 };
    211 struct vnodeop_desc vop_write_desc = {
    212 	0,
    213 	"vop_write",
    214 	0,
    215 	vop_write_vp_offsets,
    216 	VDESC_NO_OFFSET,
    217 	VOPARG_OFFSETOF(struct vop_write_args, a_cred),
    218 	VDESC_NO_OFFSET,
    219 	VDESC_NO_OFFSET,
    220 	NULL,
    221 };
    222 
    223 int vop_ioctl_vp_offsets[] = {
    224 	VOPARG_OFFSETOF(struct vop_ioctl_args,a_vp),
    225 	VDESC_NO_OFFSET
    226 };
    227 struct vnodeop_desc vop_ioctl_desc = {
    228 	0,
    229 	"vop_ioctl",
    230 	0,
    231 	vop_ioctl_vp_offsets,
    232 	VDESC_NO_OFFSET,
    233 	VOPARG_OFFSETOF(struct vop_ioctl_args, a_cred),
    234 	VOPARG_OFFSETOF(struct vop_ioctl_args, a_p),
    235 	VDESC_NO_OFFSET,
    236 	NULL,
    237 };
    238 
    239 int vop_fcntl_vp_offsets[] = {
    240 	VOPARG_OFFSETOF(struct vop_fcntl_args,a_vp),
    241 	VDESC_NO_OFFSET
    242 };
    243 struct vnodeop_desc vop_fcntl_desc = {
    244 	0,
    245 	"vop_fcntl",
    246 	0,
    247 	vop_fcntl_vp_offsets,
    248 	VDESC_NO_OFFSET,
    249 	VOPARG_OFFSETOF(struct vop_fcntl_args, a_cred),
    250 	VOPARG_OFFSETOF(struct vop_fcntl_args, a_p),
    251 	VDESC_NO_OFFSET,
    252 	NULL,
    253 };
    254 
    255 int vop_poll_vp_offsets[] = {
    256 	VOPARG_OFFSETOF(struct vop_poll_args,a_vp),
    257 	VDESC_NO_OFFSET
    258 };
    259 struct vnodeop_desc vop_poll_desc = {
    260 	0,
    261 	"vop_poll",
    262 	0,
    263 	vop_poll_vp_offsets,
    264 	VDESC_NO_OFFSET,
    265 	VDESC_NO_OFFSET,
    266 	VOPARG_OFFSETOF(struct vop_poll_args, a_p),
    267 	VDESC_NO_OFFSET,
    268 	NULL,
    269 };
    270 
    271 int vop_revoke_vp_offsets[] = {
    272 	VOPARG_OFFSETOF(struct vop_revoke_args,a_vp),
    273 	VDESC_NO_OFFSET
    274 };
    275 struct vnodeop_desc vop_revoke_desc = {
    276 	0,
    277 	"vop_revoke",
    278 	0,
    279 	vop_revoke_vp_offsets,
    280 	VDESC_NO_OFFSET,
    281 	VDESC_NO_OFFSET,
    282 	VDESC_NO_OFFSET,
    283 	VDESC_NO_OFFSET,
    284 	NULL,
    285 };
    286 
    287 int vop_mmap_vp_offsets[] = {
    288 	VOPARG_OFFSETOF(struct vop_mmap_args,a_vp),
    289 	VDESC_NO_OFFSET
    290 };
    291 struct vnodeop_desc vop_mmap_desc = {
    292 	0,
    293 	"vop_mmap",
    294 	0,
    295 	vop_mmap_vp_offsets,
    296 	VDESC_NO_OFFSET,
    297 	VOPARG_OFFSETOF(struct vop_mmap_args, a_cred),
    298 	VOPARG_OFFSETOF(struct vop_mmap_args, a_p),
    299 	VDESC_NO_OFFSET,
    300 	NULL,
    301 };
    302 
    303 int vop_fsync_vp_offsets[] = {
    304 	VOPARG_OFFSETOF(struct vop_fsync_args,a_vp),
    305 	VDESC_NO_OFFSET
    306 };
    307 struct vnodeop_desc vop_fsync_desc = {
    308 	0,
    309 	"vop_fsync",
    310 	0,
    311 	vop_fsync_vp_offsets,
    312 	VDESC_NO_OFFSET,
    313 	VOPARG_OFFSETOF(struct vop_fsync_args, a_cred),
    314 	VOPARG_OFFSETOF(struct vop_fsync_args, a_p),
    315 	VDESC_NO_OFFSET,
    316 	NULL,
    317 };
    318 
    319 int vop_seek_vp_offsets[] = {
    320 	VOPARG_OFFSETOF(struct vop_seek_args,a_vp),
    321 	VDESC_NO_OFFSET
    322 };
    323 struct vnodeop_desc vop_seek_desc = {
    324 	0,
    325 	"vop_seek",
    326 	0,
    327 	vop_seek_vp_offsets,
    328 	VDESC_NO_OFFSET,
    329 	VOPARG_OFFSETOF(struct vop_seek_args, a_cred),
    330 	VDESC_NO_OFFSET,
    331 	VDESC_NO_OFFSET,
    332 	NULL,
    333 };
    334 
    335 int vop_remove_vp_offsets[] = {
    336 	VOPARG_OFFSETOF(struct vop_remove_args,a_dvp),
    337 	VOPARG_OFFSETOF(struct vop_remove_args,a_vp),
    338 	VDESC_NO_OFFSET
    339 };
    340 struct vnodeop_desc vop_remove_desc = {
    341 	0,
    342 	"vop_remove",
    343 	0 | VDESC_VP0_WILLPUT | VDESC_VP1_WILLPUT,
    344 	vop_remove_vp_offsets,
    345 	VDESC_NO_OFFSET,
    346 	VDESC_NO_OFFSET,
    347 	VDESC_NO_OFFSET,
    348 	VOPARG_OFFSETOF(struct vop_remove_args, a_cnp),
    349 	NULL,
    350 };
    351 
    352 int vop_link_vp_offsets[] = {
    353 	VOPARG_OFFSETOF(struct vop_link_args,a_dvp),
    354 	VOPARG_OFFSETOF(struct vop_link_args,a_vp),
    355 	VDESC_NO_OFFSET
    356 };
    357 struct vnodeop_desc vop_link_desc = {
    358 	0,
    359 	"vop_link",
    360 	0 | VDESC_VP0_WILLPUT,
    361 	vop_link_vp_offsets,
    362 	VDESC_NO_OFFSET,
    363 	VDESC_NO_OFFSET,
    364 	VDESC_NO_OFFSET,
    365 	VOPARG_OFFSETOF(struct vop_link_args, a_cnp),
    366 	NULL,
    367 };
    368 
    369 int vop_rename_vp_offsets[] = {
    370 	VOPARG_OFFSETOF(struct vop_rename_args,a_fdvp),
    371 	VOPARG_OFFSETOF(struct vop_rename_args,a_fvp),
    372 	VOPARG_OFFSETOF(struct vop_rename_args,a_tdvp),
    373 	VOPARG_OFFSETOF(struct vop_rename_args,a_tvp),
    374 	VDESC_NO_OFFSET
    375 };
    376 struct vnodeop_desc vop_rename_desc = {
    377 	0,
    378 	"vop_rename",
    379 	0 | VDESC_VP0_WILLRELE | VDESC_VP1_WILLRELE | VDESC_VP2_WILLPUT | VDESC_VP3_WILLRELE,
    380 	vop_rename_vp_offsets,
    381 	VDESC_NO_OFFSET,
    382 	VDESC_NO_OFFSET,
    383 	VDESC_NO_OFFSET,
    384 	VOPARG_OFFSETOF(struct vop_rename_args, a_fcnp),
    385 	NULL,
    386 };
    387 
    388 int vop_mkdir_vp_offsets[] = {
    389 	VOPARG_OFFSETOF(struct vop_mkdir_args,a_dvp),
    390 	VDESC_NO_OFFSET
    391 };
    392 struct vnodeop_desc vop_mkdir_desc = {
    393 	0,
    394 	"vop_mkdir",
    395 	0 | VDESC_VP0_WILLPUT,
    396 	vop_mkdir_vp_offsets,
    397 	VOPARG_OFFSETOF(struct vop_mkdir_args, a_vpp),
    398 	VDESC_NO_OFFSET,
    399 	VDESC_NO_OFFSET,
    400 	VOPARG_OFFSETOF(struct vop_mkdir_args, a_cnp),
    401 	NULL,
    402 };
    403 
    404 int vop_rmdir_vp_offsets[] = {
    405 	VOPARG_OFFSETOF(struct vop_rmdir_args,a_dvp),
    406 	VOPARG_OFFSETOF(struct vop_rmdir_args,a_vp),
    407 	VDESC_NO_OFFSET
    408 };
    409 struct vnodeop_desc vop_rmdir_desc = {
    410 	0,
    411 	"vop_rmdir",
    412 	0 | VDESC_VP0_WILLPUT | VDESC_VP1_WILLPUT,
    413 	vop_rmdir_vp_offsets,
    414 	VDESC_NO_OFFSET,
    415 	VDESC_NO_OFFSET,
    416 	VDESC_NO_OFFSET,
    417 	VOPARG_OFFSETOF(struct vop_rmdir_args, a_cnp),
    418 	NULL,
    419 };
    420 
    421 int vop_symlink_vp_offsets[] = {
    422 	VOPARG_OFFSETOF(struct vop_symlink_args,a_dvp),
    423 	VDESC_NO_OFFSET
    424 };
    425 struct vnodeop_desc vop_symlink_desc = {
    426 	0,
    427 	"vop_symlink",
    428 	0 | VDESC_VP0_WILLPUT | VDESC_VPP_WILLRELE,
    429 	vop_symlink_vp_offsets,
    430 	VOPARG_OFFSETOF(struct vop_symlink_args, a_vpp),
    431 	VDESC_NO_OFFSET,
    432 	VDESC_NO_OFFSET,
    433 	VOPARG_OFFSETOF(struct vop_symlink_args, a_cnp),
    434 	NULL,
    435 };
    436 
    437 int vop_readdir_vp_offsets[] = {
    438 	VOPARG_OFFSETOF(struct vop_readdir_args,a_vp),
    439 	VDESC_NO_OFFSET
    440 };
    441 struct vnodeop_desc vop_readdir_desc = {
    442 	0,
    443 	"vop_readdir",
    444 	0,
    445 	vop_readdir_vp_offsets,
    446 	VDESC_NO_OFFSET,
    447 	VOPARG_OFFSETOF(struct vop_readdir_args, a_cred),
    448 	VDESC_NO_OFFSET,
    449 	VDESC_NO_OFFSET,
    450 	NULL,
    451 };
    452 
    453 int vop_readlink_vp_offsets[] = {
    454 	VOPARG_OFFSETOF(struct vop_readlink_args,a_vp),
    455 	VDESC_NO_OFFSET
    456 };
    457 struct vnodeop_desc vop_readlink_desc = {
    458 	0,
    459 	"vop_readlink",
    460 	0,
    461 	vop_readlink_vp_offsets,
    462 	VDESC_NO_OFFSET,
    463 	VOPARG_OFFSETOF(struct vop_readlink_args, a_cred),
    464 	VDESC_NO_OFFSET,
    465 	VDESC_NO_OFFSET,
    466 	NULL,
    467 };
    468 
    469 int vop_abortop_vp_offsets[] = {
    470 	VOPARG_OFFSETOF(struct vop_abortop_args,a_dvp),
    471 	VDESC_NO_OFFSET
    472 };
    473 struct vnodeop_desc vop_abortop_desc = {
    474 	0,
    475 	"vop_abortop",
    476 	0,
    477 	vop_abortop_vp_offsets,
    478 	VDESC_NO_OFFSET,
    479 	VDESC_NO_OFFSET,
    480 	VDESC_NO_OFFSET,
    481 	VOPARG_OFFSETOF(struct vop_abortop_args, a_cnp),
    482 	NULL,
    483 };
    484 
    485 int vop_inactive_vp_offsets[] = {
    486 	VOPARG_OFFSETOF(struct vop_inactive_args,a_vp),
    487 	VDESC_NO_OFFSET
    488 };
    489 struct vnodeop_desc vop_inactive_desc = {
    490 	0,
    491 	"vop_inactive",
    492 	0 | VDESC_VP0_WILLUNLOCK,
    493 	vop_inactive_vp_offsets,
    494 	VDESC_NO_OFFSET,
    495 	VDESC_NO_OFFSET,
    496 	VOPARG_OFFSETOF(struct vop_inactive_args, a_p),
    497 	VDESC_NO_OFFSET,
    498 	NULL,
    499 };
    500 
    501 int vop_reclaim_vp_offsets[] = {
    502 	VOPARG_OFFSETOF(struct vop_reclaim_args,a_vp),
    503 	VDESC_NO_OFFSET
    504 };
    505 struct vnodeop_desc vop_reclaim_desc = {
    506 	0,
    507 	"vop_reclaim",
    508 	0,
    509 	vop_reclaim_vp_offsets,
    510 	VDESC_NO_OFFSET,
    511 	VDESC_NO_OFFSET,
    512 	VOPARG_OFFSETOF(struct vop_reclaim_args, a_p),
    513 	VDESC_NO_OFFSET,
    514 	NULL,
    515 };
    516 
    517 int vop_lock_vp_offsets[] = {
    518 	VOPARG_OFFSETOF(struct vop_lock_args,a_vp),
    519 	VDESC_NO_OFFSET
    520 };
    521 struct vnodeop_desc vop_lock_desc = {
    522 	0,
    523 	"vop_lock",
    524 	0,
    525 	vop_lock_vp_offsets,
    526 	VDESC_NO_OFFSET,
    527 	VDESC_NO_OFFSET,
    528 	VDESC_NO_OFFSET,
    529 	VDESC_NO_OFFSET,
    530 	NULL,
    531 };
    532 
    533 int vop_unlock_vp_offsets[] = {
    534 	VOPARG_OFFSETOF(struct vop_unlock_args,a_vp),
    535 	VDESC_NO_OFFSET
    536 };
    537 struct vnodeop_desc vop_unlock_desc = {
    538 	0,
    539 	"vop_unlock",
    540 	0,
    541 	vop_unlock_vp_offsets,
    542 	VDESC_NO_OFFSET,
    543 	VDESC_NO_OFFSET,
    544 	VDESC_NO_OFFSET,
    545 	VDESC_NO_OFFSET,
    546 	NULL,
    547 };
    548 
    549 int vop_bmap_vp_offsets[] = {
    550 	VOPARG_OFFSETOF(struct vop_bmap_args,a_vp),
    551 	VDESC_NO_OFFSET
    552 };
    553 struct vnodeop_desc vop_bmap_desc = {
    554 	0,
    555 	"vop_bmap",
    556 	0,
    557 	vop_bmap_vp_offsets,
    558 	VOPARG_OFFSETOF(struct vop_bmap_args, a_vpp),
    559 	VDESC_NO_OFFSET,
    560 	VDESC_NO_OFFSET,
    561 	VDESC_NO_OFFSET,
    562 	NULL,
    563 };
    564 
    565 int vop_print_vp_offsets[] = {
    566 	VOPARG_OFFSETOF(struct vop_print_args,a_vp),
    567 	VDESC_NO_OFFSET
    568 };
    569 struct vnodeop_desc vop_print_desc = {
    570 	0,
    571 	"vop_print",
    572 	0,
    573 	vop_print_vp_offsets,
    574 	VDESC_NO_OFFSET,
    575 	VDESC_NO_OFFSET,
    576 	VDESC_NO_OFFSET,
    577 	VDESC_NO_OFFSET,
    578 	NULL,
    579 };
    580 
    581 int vop_islocked_vp_offsets[] = {
    582 	VOPARG_OFFSETOF(struct vop_islocked_args,a_vp),
    583 	VDESC_NO_OFFSET
    584 };
    585 struct vnodeop_desc vop_islocked_desc = {
    586 	0,
    587 	"vop_islocked",
    588 	0,
    589 	vop_islocked_vp_offsets,
    590 	VDESC_NO_OFFSET,
    591 	VDESC_NO_OFFSET,
    592 	VDESC_NO_OFFSET,
    593 	VDESC_NO_OFFSET,
    594 	NULL,
    595 };
    596 
    597 int vop_pathconf_vp_offsets[] = {
    598 	VOPARG_OFFSETOF(struct vop_pathconf_args,a_vp),
    599 	VDESC_NO_OFFSET
    600 };
    601 struct vnodeop_desc vop_pathconf_desc = {
    602 	0,
    603 	"vop_pathconf",
    604 	0,
    605 	vop_pathconf_vp_offsets,
    606 	VDESC_NO_OFFSET,
    607 	VDESC_NO_OFFSET,
    608 	VDESC_NO_OFFSET,
    609 	VDESC_NO_OFFSET,
    610 	NULL,
    611 };
    612 
    613 int vop_advlock_vp_offsets[] = {
    614 	VOPARG_OFFSETOF(struct vop_advlock_args,a_vp),
    615 	VDESC_NO_OFFSET
    616 };
    617 struct vnodeop_desc vop_advlock_desc = {
    618 	0,
    619 	"vop_advlock",
    620 	0,
    621 	vop_advlock_vp_offsets,
    622 	VDESC_NO_OFFSET,
    623 	VDESC_NO_OFFSET,
    624 	VDESC_NO_OFFSET,
    625 	VDESC_NO_OFFSET,
    626 	NULL,
    627 };
    628 
    629 int vop_blkatoff_vp_offsets[] = {
    630 	VOPARG_OFFSETOF(struct vop_blkatoff_args,a_vp),
    631 	VDESC_NO_OFFSET
    632 };
    633 struct vnodeop_desc vop_blkatoff_desc = {
    634 	0,
    635 	"vop_blkatoff",
    636 	0,
    637 	vop_blkatoff_vp_offsets,
    638 	VDESC_NO_OFFSET,
    639 	VDESC_NO_OFFSET,
    640 	VDESC_NO_OFFSET,
    641 	VDESC_NO_OFFSET,
    642 	NULL,
    643 };
    644 
    645 int vop_valloc_vp_offsets[] = {
    646 	VOPARG_OFFSETOF(struct vop_valloc_args,a_pvp),
    647 	VDESC_NO_OFFSET
    648 };
    649 struct vnodeop_desc vop_valloc_desc = {
    650 	0,
    651 	"vop_valloc",
    652 	0,
    653 	vop_valloc_vp_offsets,
    654 	VOPARG_OFFSETOF(struct vop_valloc_args, a_vpp),
    655 	VOPARG_OFFSETOF(struct vop_valloc_args, a_cred),
    656 	VDESC_NO_OFFSET,
    657 	VDESC_NO_OFFSET,
    658 	NULL,
    659 };
    660 
    661 int vop_balloc_vp_offsets[] = {
    662 	VOPARG_OFFSETOF(struct vop_balloc_args,a_vp),
    663 	VDESC_NO_OFFSET
    664 };
    665 struct vnodeop_desc vop_balloc_desc = {
    666 	0,
    667 	"vop_balloc",
    668 	0,
    669 	vop_balloc_vp_offsets,
    670 	VDESC_NO_OFFSET,
    671 	VOPARG_OFFSETOF(struct vop_balloc_args, a_cred),
    672 	VDESC_NO_OFFSET,
    673 	VDESC_NO_OFFSET,
    674 	NULL,
    675 };
    676 
    677 int vop_reallocblks_vp_offsets[] = {
    678 	VOPARG_OFFSETOF(struct vop_reallocblks_args,a_vp),
    679 	VDESC_NO_OFFSET
    680 };
    681 struct vnodeop_desc vop_reallocblks_desc = {
    682 	0,
    683 	"vop_reallocblks",
    684 	0,
    685 	vop_reallocblks_vp_offsets,
    686 	VDESC_NO_OFFSET,
    687 	VDESC_NO_OFFSET,
    688 	VDESC_NO_OFFSET,
    689 	VDESC_NO_OFFSET,
    690 	NULL,
    691 };
    692 
    693 int vop_vfree_vp_offsets[] = {
    694 	VOPARG_OFFSETOF(struct vop_vfree_args,a_pvp),
    695 	VDESC_NO_OFFSET
    696 };
    697 struct vnodeop_desc vop_vfree_desc = {
    698 	0,
    699 	"vop_vfree",
    700 	0,
    701 	vop_vfree_vp_offsets,
    702 	VDESC_NO_OFFSET,
    703 	VDESC_NO_OFFSET,
    704 	VDESC_NO_OFFSET,
    705 	VDESC_NO_OFFSET,
    706 	NULL,
    707 };
    708 
    709 int vop_truncate_vp_offsets[] = {
    710 	VOPARG_OFFSETOF(struct vop_truncate_args,a_vp),
    711 	VDESC_NO_OFFSET
    712 };
    713 struct vnodeop_desc vop_truncate_desc = {
    714 	0,
    715 	"vop_truncate",
    716 	0,
    717 	vop_truncate_vp_offsets,
    718 	VDESC_NO_OFFSET,
    719 	VOPARG_OFFSETOF(struct vop_truncate_args, a_cred),
    720 	VOPARG_OFFSETOF(struct vop_truncate_args, a_p),
    721 	VDESC_NO_OFFSET,
    722 	NULL,
    723 };
    724 
    725 int vop_update_vp_offsets[] = {
    726 	VOPARG_OFFSETOF(struct vop_update_args,a_vp),
    727 	VDESC_NO_OFFSET
    728 };
    729 struct vnodeop_desc vop_update_desc = {
    730 	0,
    731 	"vop_update",
    732 	0,
    733 	vop_update_vp_offsets,
    734 	VDESC_NO_OFFSET,
    735 	VDESC_NO_OFFSET,
    736 	VDESC_NO_OFFSET,
    737 	VDESC_NO_OFFSET,
    738 	NULL,
    739 };
    740 
    741 int vop_lease_vp_offsets[] = {
    742 	VOPARG_OFFSETOF(struct vop_lease_args,a_vp),
    743 	VDESC_NO_OFFSET
    744 };
    745 struct vnodeop_desc vop_lease_desc = {
    746 	0,
    747 	"vop_lease",
    748 	0,
    749 	vop_lease_vp_offsets,
    750 	VDESC_NO_OFFSET,
    751 	VOPARG_OFFSETOF(struct vop_lease_args, a_cred),
    752 	VOPARG_OFFSETOF(struct vop_lease_args, a_p),
    753 	VDESC_NO_OFFSET,
    754 	NULL,
    755 };
    756 
    757 int vop_whiteout_vp_offsets[] = {
    758 	VOPARG_OFFSETOF(struct vop_whiteout_args,a_dvp),
    759 	VDESC_NO_OFFSET
    760 };
    761 struct vnodeop_desc vop_whiteout_desc = {
    762 	0,
    763 	"vop_whiteout",
    764 	0,
    765 	vop_whiteout_vp_offsets,
    766 	VDESC_NO_OFFSET,
    767 	VDESC_NO_OFFSET,
    768 	VDESC_NO_OFFSET,
    769 	VOPARG_OFFSETOF(struct vop_whiteout_args, a_cnp),
    770 	NULL,
    771 };
    772 
    773 int vop_balloc_vp_offsets[] = {
    774 	VOPARG_OFFSETOF(struct vop_balloc_args,a_vp),
    775 	VDESC_NO_OFFSET
    776 };
    777 struct vnodeop_desc vop_balloc_desc = {
    778 	0,
    779 	"vop_balloc",
    780 	0,
    781 	vop_balloc_vp_offsets,
    782 	VDESC_NO_OFFSET,
    783 	VOPARG_OFFSETOF(struct vop_balloc_args, a_cred),
    784 	VDESC_NO_OFFSET,
    785 	VDESC_NO_OFFSET,
    786 	NULL,
    787 };
    788 
    789 /* Special cases: */
    790 
    791 int vop_strategy_vp_offsets[] = {
    792 	VDESC_NO_OFFSET
    793 };
    794 struct vnodeop_desc vop_strategy_desc = {
    795 	0,
    796 	"vop_strategy",
    797 	0,
    798 	vop_strategy_vp_offsets,
    799 	VDESC_NO_OFFSET,
    800 	VDESC_NO_OFFSET,
    801 	VDESC_NO_OFFSET,
    802 	VDESC_NO_OFFSET,
    803 	NULL,
    804 };
    805 
    806 int vop_bwrite_vp_offsets[] = {
    807 	VDESC_NO_OFFSET
    808 };
    809 struct vnodeop_desc vop_bwrite_desc = {
    810 	0,
    811 	"vop_bwrite",
    812 	0,
    813 	vop_bwrite_vp_offsets,
    814 	VDESC_NO_OFFSET,
    815 	VDESC_NO_OFFSET,
    816 	VDESC_NO_OFFSET,
    817 	VDESC_NO_OFFSET,
    818 	NULL,
    819 };
    820 
    821 /* End of special cases. */
    822 
    823 struct vnodeop_desc *vfs_op_descs[] = {
    824 	&vop_default_desc,	/* MUST BE FIRST */
    825 	&vop_strategy_desc,	/* XXX: SPECIAL CASE */
    826 	&vop_bwrite_desc,	/* XXX: SPECIAL CASE */
    827 
    828 	&vop_lookup_desc,
    829 	&vop_create_desc,
    830 	&vop_mknod_desc,
    831 	&vop_open_desc,
    832 	&vop_close_desc,
    833 	&vop_access_desc,
    834 	&vop_getattr_desc,
    835 	&vop_setattr_desc,
    836 	&vop_read_desc,
    837 	&vop_write_desc,
    838 	&vop_ioctl_desc,
    839 	&vop_fcntl_desc,
    840 	&vop_poll_desc,
    841 	&vop_revoke_desc,
    842 	&vop_mmap_desc,
    843 	&vop_fsync_desc,
    844 	&vop_seek_desc,
    845 	&vop_remove_desc,
    846 	&vop_link_desc,
    847 	&vop_rename_desc,
    848 	&vop_mkdir_desc,
    849 	&vop_rmdir_desc,
    850 	&vop_symlink_desc,
    851 	&vop_readdir_desc,
    852 	&vop_readlink_desc,
    853 	&vop_abortop_desc,
    854 	&vop_inactive_desc,
    855 	&vop_reclaim_desc,
    856 	&vop_lock_desc,
    857 	&vop_unlock_desc,
    858 	&vop_bmap_desc,
    859 	&vop_print_desc,
    860 	&vop_islocked_desc,
    861 	&vop_pathconf_desc,
    862 	&vop_advlock_desc,
    863 	&vop_blkatoff_desc,
    864 	&vop_valloc_desc,
    865 	&vop_balloc_desc,
    866 	&vop_reallocblks_desc,
    867 	&vop_vfree_desc,
    868 	&vop_truncate_desc,
    869 	&vop_update_desc,
    870 	&vop_lease_desc,
    871 	&vop_whiteout_desc,
    872 	&vop_balloc_desc,
    873 	NULL
    874 };
    875 
    876