Home | History | Annotate | Line # | Download | only in sys
      1 /*	$NetBSD: vnode_if.h,v 1.112 2023/06/15 09:15:13 hannken Exp $	*/
      2 
      3 /*
      4  * Warning: DO NOT EDIT! This file is automatically generated!
      5  * (Modifications made here may easily be lost!)
      6  *
      7  * Created from the file:
      8  *	NetBSD: vnode_if.src,v 1.85 2023/06/15 09:13:36 hannken Exp
      9  * by the script:
     10  *	NetBSD: vnode_if.sh,v 1.77 2022/10/26 23:39:43 riastradh 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. Neither the name of the University nor the names of its contributors
     26  *    may be used to endorse or promote products derived from this software
     27  *    without specific prior written permission.
     28  *
     29  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
     30  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     31  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
     32  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
     33  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     34  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     35  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     36  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
     37  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
     38  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
     39  * SUCH DAMAGE.
     40  */
     41 
     42 #ifndef _SYS_VNODE_IF_H_
     43 #define _SYS_VNODE_IF_H_
     44 
     45 extern const struct vnodeop_desc vop_default_desc;
     46 
     47 struct buf;
     48 
     49 #ifndef _KERNEL
     50 #include <stdbool.h>
     51 #endif
     52 
     53 #define VOP_BWRITE_DESCOFFSET 1
     54 struct vop_bwrite_args {
     55 	const struct vnodeop_desc *a_desc;
     56 	struct vnode *a_vp;
     57 	struct buf *a_bp;
     58 };
     59 extern const struct vnodeop_desc vop_bwrite_desc;
     60 int VOP_BWRITE(struct vnode *, struct buf *);
     61 
     62 #define VOP_PARSEPATH_DESCOFFSET 2
     63 struct vop_parsepath_args {
     64 	const struct vnodeop_desc *a_desc;
     65 	struct vnode *a_dvp;
     66 	const char *a_name;
     67 	size_t *a_retval;
     68 };
     69 extern const struct vnodeop_desc vop_parsepath_desc;
     70 int VOP_PARSEPATH(struct vnode *, const char *, size_t *);
     71 
     72 #define VOP_LOOKUP_DESCOFFSET 3
     73 struct vop_lookup_v2_args {
     74 	const struct vnodeop_desc *a_desc;
     75 	struct vnode *a_dvp;
     76 	struct vnode **a_vpp;
     77 	struct componentname *a_cnp;
     78 };
     79 extern const struct vnodeop_desc vop_lookup_desc;
     80 int VOP_LOOKUP(struct vnode *, struct vnode **, struct componentname *);
     81 
     82 #define VOP_CREATE_DESCOFFSET 4
     83 struct vop_create_v3_args {
     84 	const struct vnodeop_desc *a_desc;
     85 	struct vnode *a_dvp;
     86 	struct vnode **a_vpp;
     87 	struct componentname *a_cnp;
     88 	struct vattr *a_vap;
     89 };
     90 extern const struct vnodeop_desc vop_create_desc;
     91 int VOP_CREATE(struct vnode *, struct vnode **, struct componentname *,
     92     struct vattr *);
     93 
     94 #define VOP_MKNOD_DESCOFFSET 5
     95 struct vop_mknod_v3_args {
     96 	const struct vnodeop_desc *a_desc;
     97 	struct vnode *a_dvp;
     98 	struct vnode **a_vpp;
     99 	struct componentname *a_cnp;
    100 	struct vattr *a_vap;
    101 };
    102 extern const struct vnodeop_desc vop_mknod_desc;
    103 int VOP_MKNOD(struct vnode *, struct vnode **, struct componentname *,
    104     struct vattr *);
    105 
    106 #define VOP_OPEN_DESCOFFSET 6
    107 struct vop_open_args {
    108 	const struct vnodeop_desc *a_desc;
    109 	struct vnode *a_vp;
    110 	int a_mode;
    111 	kauth_cred_t a_cred;
    112 };
    113 extern const struct vnodeop_desc vop_open_desc;
    114 int VOP_OPEN(struct vnode *, int, kauth_cred_t);
    115 
    116 #define VOP_CLOSE_DESCOFFSET 7
    117 struct vop_close_args {
    118 	const struct vnodeop_desc *a_desc;
    119 	struct vnode *a_vp;
    120 	int a_fflag;
    121 	kauth_cred_t a_cred;
    122 };
    123 extern const struct vnodeop_desc vop_close_desc;
    124 int VOP_CLOSE(struct vnode *, int, kauth_cred_t);
    125 
    126 #define VOP_ACCESS_DESCOFFSET 8
    127 struct vop_access_args {
    128 	const struct vnodeop_desc *a_desc;
    129 	struct vnode *a_vp;
    130 	accmode_t a_accmode;
    131 	kauth_cred_t a_cred;
    132 };
    133 extern const struct vnodeop_desc vop_access_desc;
    134 int VOP_ACCESS(struct vnode *, accmode_t, kauth_cred_t);
    135 
    136 #define VOP_ACCESSX_DESCOFFSET 9
    137 struct vop_accessx_args {
    138 	const struct vnodeop_desc *a_desc;
    139 	struct vnode *a_vp;
    140 	accmode_t a_accmode;
    141 	kauth_cred_t a_cred;
    142 };
    143 extern const struct vnodeop_desc vop_accessx_desc;
    144 int VOP_ACCESSX(struct vnode *, accmode_t, kauth_cred_t);
    145 
    146 #define VOP_GETATTR_DESCOFFSET 10
    147 struct vop_getattr_args {
    148 	const struct vnodeop_desc *a_desc;
    149 	struct vnode *a_vp;
    150 	struct vattr *a_vap;
    151 	kauth_cred_t a_cred;
    152 };
    153 extern const struct vnodeop_desc vop_getattr_desc;
    154 int VOP_GETATTR(struct vnode *, struct vattr *, kauth_cred_t);
    155 
    156 #define VOP_SETATTR_DESCOFFSET 11
    157 struct vop_setattr_args {
    158 	const struct vnodeop_desc *a_desc;
    159 	struct vnode *a_vp;
    160 	struct vattr *a_vap;
    161 	kauth_cred_t a_cred;
    162 };
    163 extern const struct vnodeop_desc vop_setattr_desc;
    164 int VOP_SETATTR(struct vnode *, struct vattr *, kauth_cred_t);
    165 
    166 #define VOP_READ_DESCOFFSET 12
    167 struct vop_read_args {
    168 	const struct vnodeop_desc *a_desc;
    169 	struct vnode *a_vp;
    170 	struct uio *a_uio;
    171 	int a_ioflag;
    172 	kauth_cred_t a_cred;
    173 };
    174 extern const struct vnodeop_desc vop_read_desc;
    175 int VOP_READ(struct vnode *, struct uio *, int, kauth_cred_t);
    176 
    177 #define VOP_WRITE_DESCOFFSET 13
    178 struct vop_write_args {
    179 	const struct vnodeop_desc *a_desc;
    180 	struct vnode *a_vp;
    181 	struct uio *a_uio;
    182 	int a_ioflag;
    183 	kauth_cred_t a_cred;
    184 };
    185 extern const struct vnodeop_desc vop_write_desc;
    186 int VOP_WRITE(struct vnode *, struct uio *, int, kauth_cred_t);
    187 
    188 #define VOP_FALLOCATE_DESCOFFSET 14
    189 struct vop_fallocate_args {
    190 	const struct vnodeop_desc *a_desc;
    191 	struct vnode *a_vp;
    192 	off_t a_pos;
    193 	off_t a_len;
    194 };
    195 extern const struct vnodeop_desc vop_fallocate_desc;
    196 int VOP_FALLOCATE(struct vnode *, off_t, off_t);
    197 
    198 #define VOP_FDISCARD_DESCOFFSET 15
    199 struct vop_fdiscard_args {
    200 	const struct vnodeop_desc *a_desc;
    201 	struct vnode *a_vp;
    202 	off_t a_pos;
    203 	off_t a_len;
    204 };
    205 extern const struct vnodeop_desc vop_fdiscard_desc;
    206 int VOP_FDISCARD(struct vnode *, off_t, off_t);
    207 
    208 #define VOP_IOCTL_DESCOFFSET 16
    209 struct vop_ioctl_args {
    210 	const struct vnodeop_desc *a_desc;
    211 	struct vnode *a_vp;
    212 	u_long a_command;
    213 	void *a_data;
    214 	int a_fflag;
    215 	kauth_cred_t a_cred;
    216 };
    217 extern const struct vnodeop_desc vop_ioctl_desc;
    218 int VOP_IOCTL(struct vnode *, u_long, void *, int, kauth_cred_t);
    219 
    220 #define VOP_FCNTL_DESCOFFSET 17
    221 struct vop_fcntl_args {
    222 	const struct vnodeop_desc *a_desc;
    223 	struct vnode *a_vp;
    224 	u_int a_command;
    225 	void *a_data;
    226 	int a_fflag;
    227 	kauth_cred_t a_cred;
    228 };
    229 extern const struct vnodeop_desc vop_fcntl_desc;
    230 int VOP_FCNTL(struct vnode *, u_int, void *, int, kauth_cred_t);
    231 
    232 #define VOP_POLL_DESCOFFSET 18
    233 struct vop_poll_args {
    234 	const struct vnodeop_desc *a_desc;
    235 	struct vnode *a_vp;
    236 	int a_events;
    237 };
    238 extern const struct vnodeop_desc vop_poll_desc;
    239 int VOP_POLL(struct vnode *, int);
    240 
    241 #define VOP_KQFILTER_DESCOFFSET 19
    242 struct vop_kqfilter_args {
    243 	const struct vnodeop_desc *a_desc;
    244 	struct vnode *a_vp;
    245 	struct knote *a_kn;
    246 };
    247 extern const struct vnodeop_desc vop_kqfilter_desc;
    248 int VOP_KQFILTER(struct vnode *, struct knote *);
    249 
    250 #define VOP_REVOKE_DESCOFFSET 20
    251 struct vop_revoke_args {
    252 	const struct vnodeop_desc *a_desc;
    253 	struct vnode *a_vp;
    254 	int a_flags;
    255 };
    256 extern const struct vnodeop_desc vop_revoke_desc;
    257 int VOP_REVOKE(struct vnode *, int);
    258 
    259 #define VOP_MMAP_DESCOFFSET 21
    260 struct vop_mmap_args {
    261 	const struct vnodeop_desc *a_desc;
    262 	struct vnode *a_vp;
    263 	vm_prot_t a_prot;
    264 	kauth_cred_t a_cred;
    265 };
    266 extern const struct vnodeop_desc vop_mmap_desc;
    267 int VOP_MMAP(struct vnode *, vm_prot_t, kauth_cred_t);
    268 
    269 #define VOP_FSYNC_DESCOFFSET 22
    270 struct vop_fsync_args {
    271 	const struct vnodeop_desc *a_desc;
    272 	struct vnode *a_vp;
    273 	kauth_cred_t a_cred;
    274 	int a_flags;
    275 	off_t a_offlo;
    276 	off_t a_offhi;
    277 };
    278 extern const struct vnodeop_desc vop_fsync_desc;
    279 int VOP_FSYNC(struct vnode *, kauth_cred_t, int, off_t, off_t);
    280 
    281 #define VOP_SEEK_DESCOFFSET 23
    282 struct vop_seek_args {
    283 	const struct vnodeop_desc *a_desc;
    284 	struct vnode *a_vp;
    285 	off_t a_oldoff;
    286 	off_t a_newoff;
    287 	kauth_cred_t a_cred;
    288 };
    289 extern const struct vnodeop_desc vop_seek_desc;
    290 int VOP_SEEK(struct vnode *, off_t, off_t, kauth_cred_t);
    291 
    292 #define VOP_REMOVE_DESCOFFSET 24
    293 struct vop_remove_v3_args {
    294 	const struct vnodeop_desc *a_desc;
    295 	struct vnode *a_dvp;
    296 	struct vnode *a_vp;
    297 	struct componentname *a_cnp;
    298 	nlink_t ctx_vp_new_nlink;
    299 };
    300 extern const struct vnodeop_desc vop_remove_desc;
    301 int VOP_REMOVE(struct vnode *, struct vnode *, struct componentname *);
    302 
    303 #define VOP_LINK_DESCOFFSET 25
    304 struct vop_link_v2_args {
    305 	const struct vnodeop_desc *a_desc;
    306 	struct vnode *a_dvp;
    307 	struct vnode *a_vp;
    308 	struct componentname *a_cnp;
    309 };
    310 extern const struct vnodeop_desc vop_link_desc;
    311 int VOP_LINK(struct vnode *, struct vnode *, struct componentname *);
    312 
    313 #define VOP_RENAME_DESCOFFSET 26
    314 struct vop_rename_args {
    315 	const struct vnodeop_desc *a_desc;
    316 	struct vnode *a_fdvp;
    317 	struct vnode *a_fvp;
    318 	struct componentname *a_fcnp;
    319 	struct vnode *a_tdvp;
    320 	struct vnode *a_tvp;
    321 	struct componentname *a_tcnp;
    322 };
    323 extern const struct vnodeop_desc vop_rename_desc;
    324 int VOP_RENAME(struct vnode *, struct vnode *, struct componentname *,
    325     struct vnode *, struct vnode *, struct componentname *);
    326 
    327 #define VOP_MKDIR_DESCOFFSET 27
    328 struct vop_mkdir_v3_args {
    329 	const struct vnodeop_desc *a_desc;
    330 	struct vnode *a_dvp;
    331 	struct vnode **a_vpp;
    332 	struct componentname *a_cnp;
    333 	struct vattr *a_vap;
    334 };
    335 extern const struct vnodeop_desc vop_mkdir_desc;
    336 int VOP_MKDIR(struct vnode *, struct vnode **, struct componentname *,
    337     struct vattr *);
    338 
    339 #define VOP_RMDIR_DESCOFFSET 28
    340 struct vop_rmdir_v2_args {
    341 	const struct vnodeop_desc *a_desc;
    342 	struct vnode *a_dvp;
    343 	struct vnode *a_vp;
    344 	struct componentname *a_cnp;
    345 };
    346 extern const struct vnodeop_desc vop_rmdir_desc;
    347 int VOP_RMDIR(struct vnode *, struct vnode *, struct componentname *);
    348 
    349 #define VOP_SYMLINK_DESCOFFSET 29
    350 struct vop_symlink_v3_args {
    351 	const struct vnodeop_desc *a_desc;
    352 	struct vnode *a_dvp;
    353 	struct vnode **a_vpp;
    354 	struct componentname *a_cnp;
    355 	struct vattr *a_vap;
    356 	char *a_target;
    357 };
    358 extern const struct vnodeop_desc vop_symlink_desc;
    359 int VOP_SYMLINK(struct vnode *, struct vnode **, struct componentname *,
    360     struct vattr *, char *);
    361 
    362 #define VOP_READDIR_DESCOFFSET 30
    363 struct vop_readdir_args {
    364 	const struct vnodeop_desc *a_desc;
    365 	struct vnode *a_vp;
    366 	struct uio *a_uio;
    367 	kauth_cred_t a_cred;
    368 	int *a_eofflag;
    369 	off_t **a_cookies;
    370 	int *a_ncookies;
    371 };
    372 extern const struct vnodeop_desc vop_readdir_desc;
    373 int VOP_READDIR(struct vnode *, struct uio *, kauth_cred_t, int *, off_t **,
    374     int *);
    375 
    376 #define VOP_READLINK_DESCOFFSET 31
    377 struct vop_readlink_args {
    378 	const struct vnodeop_desc *a_desc;
    379 	struct vnode *a_vp;
    380 	struct uio *a_uio;
    381 	kauth_cred_t a_cred;
    382 };
    383 extern const struct vnodeop_desc vop_readlink_desc;
    384 int VOP_READLINK(struct vnode *, struct uio *, kauth_cred_t);
    385 
    386 #define VOP_ABORTOP_DESCOFFSET 32
    387 struct vop_abortop_args {
    388 	const struct vnodeop_desc *a_desc;
    389 	struct vnode *a_dvp;
    390 	struct componentname *a_cnp;
    391 };
    392 extern const struct vnodeop_desc vop_abortop_desc;
    393 int VOP_ABORTOP(struct vnode *, struct componentname *);
    394 
    395 #define VOP_INACTIVE_DESCOFFSET 33
    396 struct vop_inactive_v2_args {
    397 	const struct vnodeop_desc *a_desc;
    398 	struct vnode *a_vp;
    399 	bool *a_recycle;
    400 };
    401 extern const struct vnodeop_desc vop_inactive_desc;
    402 int VOP_INACTIVE(struct vnode *, bool *);
    403 
    404 #define VOP_RECLAIM_DESCOFFSET 34
    405 struct vop_reclaim_v2_args {
    406 	const struct vnodeop_desc *a_desc;
    407 	struct vnode *a_vp;
    408 };
    409 extern const struct vnodeop_desc vop_reclaim_desc;
    410 int VOP_RECLAIM(struct vnode *);
    411 
    412 #define VOP_LOCK_DESCOFFSET 35
    413 struct vop_lock_args {
    414 	const struct vnodeop_desc *a_desc;
    415 	struct vnode *a_vp;
    416 	int a_flags;
    417 };
    418 extern const struct vnodeop_desc vop_lock_desc;
    419 int VOP_LOCK(struct vnode *, int);
    420 
    421 #define VOP_UNLOCK_DESCOFFSET 36
    422 struct vop_unlock_args {
    423 	const struct vnodeop_desc *a_desc;
    424 	struct vnode *a_vp;
    425 };
    426 extern const struct vnodeop_desc vop_unlock_desc;
    427 int VOP_UNLOCK(struct vnode *);
    428 
    429 #define VOP_BMAP_DESCOFFSET 37
    430 struct vop_bmap_args {
    431 	const struct vnodeop_desc *a_desc;
    432 	struct vnode *a_vp;
    433 	daddr_t a_bn;
    434 	struct vnode **a_vpp;
    435 	daddr_t *a_bnp;
    436 	int *a_runp;
    437 };
    438 extern const struct vnodeop_desc vop_bmap_desc;
    439 int VOP_BMAP(struct vnode *, daddr_t, struct vnode **, daddr_t *, int *);
    440 
    441 #define VOP_STRATEGY_DESCOFFSET 38
    442 struct vop_strategy_args {
    443 	const struct vnodeop_desc *a_desc;
    444 	struct vnode *a_vp;
    445 	struct buf *a_bp;
    446 };
    447 extern const struct vnodeop_desc vop_strategy_desc;
    448 int VOP_STRATEGY(struct vnode *, struct buf *);
    449 
    450 #define VOP_PRINT_DESCOFFSET 39
    451 struct vop_print_args {
    452 	const struct vnodeop_desc *a_desc;
    453 	struct vnode *a_vp;
    454 };
    455 extern const struct vnodeop_desc vop_print_desc;
    456 int VOP_PRINT(struct vnode *);
    457 
    458 #define VOP_ISLOCKED_DESCOFFSET 40
    459 struct vop_islocked_args {
    460 	const struct vnodeop_desc *a_desc;
    461 	struct vnode *a_vp;
    462 };
    463 extern const struct vnodeop_desc vop_islocked_desc;
    464 int VOP_ISLOCKED(struct vnode *);
    465 
    466 #define VOP_PATHCONF_DESCOFFSET 41
    467 struct vop_pathconf_args {
    468 	const struct vnodeop_desc *a_desc;
    469 	struct vnode *a_vp;
    470 	int a_name;
    471 	register_t *a_retval;
    472 };
    473 extern const struct vnodeop_desc vop_pathconf_desc;
    474 int VOP_PATHCONF(struct vnode *, int, register_t *);
    475 
    476 #define VOP_ADVLOCK_DESCOFFSET 42
    477 struct vop_advlock_args {
    478 	const struct vnodeop_desc *a_desc;
    479 	struct vnode *a_vp;
    480 	void *a_id;
    481 	int a_op;
    482 	struct flock *a_fl;
    483 	int a_flags;
    484 };
    485 extern const struct vnodeop_desc vop_advlock_desc;
    486 int VOP_ADVLOCK(struct vnode *, void *, int, struct flock *, int);
    487 
    488 #define VOP_WHITEOUT_DESCOFFSET 43
    489 struct vop_whiteout_args {
    490 	const struct vnodeop_desc *a_desc;
    491 	struct vnode *a_dvp;
    492 	struct componentname *a_cnp;
    493 	int a_flags;
    494 };
    495 extern const struct vnodeop_desc vop_whiteout_desc;
    496 int VOP_WHITEOUT(struct vnode *, struct componentname *, int);
    497 
    498 #define VOP_GETPAGES_DESCOFFSET 44
    499 struct vop_getpages_args {
    500 	const struct vnodeop_desc *a_desc;
    501 	struct vnode *a_vp;
    502 	voff_t a_offset;
    503 	struct vm_page **a_m;
    504 	int *a_count;
    505 	int a_centeridx;
    506 	vm_prot_t a_access_type;
    507 	int a_advice;
    508 	int a_flags;
    509 };
    510 extern const struct vnodeop_desc vop_getpages_desc;
    511 int VOP_GETPAGES(struct vnode *, voff_t, struct vm_page **, int *, int,
    512     vm_prot_t, int, int);
    513 
    514 #define VOP_PUTPAGES_DESCOFFSET 45
    515 struct vop_putpages_args {
    516 	const struct vnodeop_desc *a_desc;
    517 	struct vnode *a_vp;
    518 	voff_t a_offlo;
    519 	voff_t a_offhi;
    520 	int a_flags;
    521 };
    522 extern const struct vnodeop_desc vop_putpages_desc;
    523 int VOP_PUTPAGES(struct vnode *, voff_t, voff_t, int);
    524 
    525 #define VOP_GETACL_DESCOFFSET 46
    526 struct vop_getacl_args {
    527 	const struct vnodeop_desc *a_desc;
    528 	struct vnode *a_vp;
    529 	acl_type_t a_type;
    530 	struct acl *a_aclp;
    531 	kauth_cred_t a_cred;
    532 };
    533 extern const struct vnodeop_desc vop_getacl_desc;
    534 int VOP_GETACL(struct vnode *, acl_type_t, struct acl *, kauth_cred_t);
    535 
    536 #define VOP_SETACL_DESCOFFSET 47
    537 struct vop_setacl_args {
    538 	const struct vnodeop_desc *a_desc;
    539 	struct vnode *a_vp;
    540 	acl_type_t a_type;
    541 	struct acl *a_aclp;
    542 	kauth_cred_t a_cred;
    543 };
    544 extern const struct vnodeop_desc vop_setacl_desc;
    545 int VOP_SETACL(struct vnode *, acl_type_t, struct acl *, kauth_cred_t);
    546 
    547 #define VOP_ACLCHECK_DESCOFFSET 48
    548 struct vop_aclcheck_args {
    549 	const struct vnodeop_desc *a_desc;
    550 	struct vnode *a_vp;
    551 	acl_type_t a_type;
    552 	struct acl *a_aclp;
    553 	kauth_cred_t a_cred;
    554 };
    555 extern const struct vnodeop_desc vop_aclcheck_desc;
    556 int VOP_ACLCHECK(struct vnode *, acl_type_t, struct acl *, kauth_cred_t);
    557 
    558 #define VOP_CLOSEEXTATTR_DESCOFFSET 49
    559 struct vop_closeextattr_args {
    560 	const struct vnodeop_desc *a_desc;
    561 	struct vnode *a_vp;
    562 	int a_commit;
    563 	kauth_cred_t a_cred;
    564 };
    565 extern const struct vnodeop_desc vop_closeextattr_desc;
    566 int VOP_CLOSEEXTATTR(struct vnode *, int, kauth_cred_t);
    567 
    568 #define VOP_GETEXTATTR_DESCOFFSET 50
    569 struct vop_getextattr_args {
    570 	const struct vnodeop_desc *a_desc;
    571 	struct vnode *a_vp;
    572 	int a_attrnamespace;
    573 	const char *a_name;
    574 	struct uio *a_uio;
    575 	size_t *a_size;
    576 	kauth_cred_t a_cred;
    577 };
    578 extern const struct vnodeop_desc vop_getextattr_desc;
    579 int VOP_GETEXTATTR(struct vnode *, int, const char *, struct uio *,
    580     size_t *, kauth_cred_t);
    581 
    582 #define VOP_LISTEXTATTR_DESCOFFSET 51
    583 struct vop_listextattr_args {
    584 	const struct vnodeop_desc *a_desc;
    585 	struct vnode *a_vp;
    586 	int a_attrnamespace;
    587 	struct uio *a_uio;
    588 	size_t *a_size;
    589 	int a_flag;
    590 	kauth_cred_t a_cred;
    591 };
    592 extern const struct vnodeop_desc vop_listextattr_desc;
    593 int VOP_LISTEXTATTR(struct vnode *, int, struct uio *, size_t *, int,
    594     kauth_cred_t);
    595 
    596 #define VOP_OPENEXTATTR_DESCOFFSET 52
    597 struct vop_openextattr_args {
    598 	const struct vnodeop_desc *a_desc;
    599 	struct vnode *a_vp;
    600 	kauth_cred_t a_cred;
    601 };
    602 extern const struct vnodeop_desc vop_openextattr_desc;
    603 int VOP_OPENEXTATTR(struct vnode *, kauth_cred_t);
    604 
    605 #define VOP_DELETEEXTATTR_DESCOFFSET 53
    606 struct vop_deleteextattr_args {
    607 	const struct vnodeop_desc *a_desc;
    608 	struct vnode *a_vp;
    609 	int a_attrnamespace;
    610 	const char *a_name;
    611 	kauth_cred_t a_cred;
    612 };
    613 extern const struct vnodeop_desc vop_deleteextattr_desc;
    614 int VOP_DELETEEXTATTR(struct vnode *, int, const char *, kauth_cred_t);
    615 
    616 #define VOP_SETEXTATTR_DESCOFFSET 54
    617 struct vop_setextattr_args {
    618 	const struct vnodeop_desc *a_desc;
    619 	struct vnode *a_vp;
    620 	int a_attrnamespace;
    621 	const char *a_name;
    622 	struct uio *a_uio;
    623 	kauth_cred_t a_cred;
    624 };
    625 extern const struct vnodeop_desc vop_setextattr_desc;
    626 int VOP_SETEXTATTR(struct vnode *, int, const char *, struct uio *,
    627     kauth_cred_t);
    628 
    629 #define VNODE_OPS_COUNT	55
    630 
    631 #endif /* !_SYS_VNODE_IF_H_ */
    632