]> git.saurik.com Git - apple/xnu.git/blob - bsd/sys/vnode_if.h
xnu-792.6.76.tar.gz
[apple/xnu.git] / bsd / sys / vnode_if.h
1
2 /*
3 * Copyright (c) 2000-2002 Apple Computer, Inc. All rights reserved.
4 *
5 * @APPLE_LICENSE_HEADER_START@
6 *
7 * The contents of this file constitute Original Code as defined in and
8 * are subject to the Apple Public Source License Version 1.1 (the
9 * "License"). You may not use this file except in compliance with the
10 * License. Please obtain a copy of the License at
11 * http://www.apple.com/publicsource and read it before using this file.
12 *
13 * This Original Code and all software distributed under the License are
14 * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
18 * License for the specific language governing rights and limitations
19 * under the License.
20 *
21 * @APPLE_LICENSE_HEADER_END@
22 */
23 /*
24 * Copyright (c) 1995 NeXT Computer, Inc. All Rights Reserved
25 * Copyright (c) 1992, 1993, 1994, 1995
26 * The Regents of the University of California. All rights reserved.
27 *
28 * Redistribution and use in source and binary forms, with or without
29 * modification, are permitted provided that the following conditions
30 * are met:
31 * 1. Redistributions of source code must retain the above copyright
32 * notice, this list of conditions and the following disclaimer.
33 * 2. Redistributions in binary form must reproduce the above copyright
34 * notice, this list of conditions and the following disclaimer in the
35 * documentation and/or other materials provided with the distribution.
36 * 3. All advertising materials mentioning features or use of this software
37 * must display the following acknowledgement:
38 * This product includes software developed by the University of
39 * California, Berkeley and its contributors.
40 * 4. Neither the name of the University nor the names of its contributors
41 * may be used to endorse or promote products derived from this software
42 * without specific prior written permission.
43 *
44 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS AND
45 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
46 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
47 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
48 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
49 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
50 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
51 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
52 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
53 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
54 * SUCH DAMAGE.
55 */
56
57
58 /*
59 * Warning: This file is generated automatically.
60 * (Modifications made here may easily be lost!)
61 *
62 * Created by the script:
63 * @(#)vnode_if.sh 8.7 (Berkeley) 5/11/95
64 */
65
66
67 #ifndef _SYS_VNODE_IF_H_
68 #define _SYS_VNODE_IF_H_
69
70 #include <sys/appleapiopts.h>
71 #include <sys/cdefs.h>
72 #include <sys/kernel_types.h>
73 #include <sys/buf.h>
74 #ifdef BSD_KERNEL_PRIVATE
75 #include <sys/vm.h>
76 #endif
77 #include <mach/memory_object_types.h>
78
79
80 #ifdef KERNEL
81
82 extern struct vnodeop_desc vnop_default_desc;
83 extern struct vnodeop_desc vnop_lookup_desc;
84 extern struct vnodeop_desc vnop_create_desc;
85 extern struct vnodeop_desc vnop_whiteout_desc;
86 extern struct vnodeop_desc vnop_mknod_desc;
87 extern struct vnodeop_desc vnop_open_desc;
88 extern struct vnodeop_desc vnop_close_desc;
89 extern struct vnodeop_desc vnop_access_desc;
90 extern struct vnodeop_desc vnop_getattr_desc;
91 extern struct vnodeop_desc vnop_setattr_desc;
92 extern struct vnodeop_desc vnop_getattrlist_desc;
93 extern struct vnodeop_desc vnop_setattrlist_desc;
94 extern struct vnodeop_desc vnop_read_desc;
95 extern struct vnodeop_desc vnop_write_desc;
96 extern struct vnodeop_desc vnop_ioctl_desc;
97 extern struct vnodeop_desc vnop_select_desc;
98 extern struct vnodeop_desc vnop_exchange_desc;
99 extern struct vnodeop_desc vnop_revoke_desc;
100 extern struct vnodeop_desc vnop_mmap_desc;
101 extern struct vnodeop_desc vnop_mnomap_desc;
102 extern struct vnodeop_desc vnop_fsync_desc;
103 extern struct vnodeop_desc vnop_remove_desc;
104 extern struct vnodeop_desc vnop_link_desc;
105 extern struct vnodeop_desc vnop_rename_desc;
106 extern struct vnodeop_desc vnop_mkdir_desc;
107 extern struct vnodeop_desc vnop_rmdir_desc;
108 extern struct vnodeop_desc vnop_symlink_desc;
109 extern struct vnodeop_desc vnop_readdir_desc;
110 extern struct vnodeop_desc vnop_readdirattr_desc;
111 extern struct vnodeop_desc vnop_readlink_desc;
112 extern struct vnodeop_desc vnop_inactive_desc;
113 extern struct vnodeop_desc vnop_reclaim_desc;
114 extern struct vnodeop_desc vnop_print_desc;
115 extern struct vnodeop_desc vnop_pathconf_desc;
116 extern struct vnodeop_desc vnop_advlock_desc;
117 extern struct vnodeop_desc vnop_truncate_desc;
118 extern struct vnodeop_desc vnop_allocate_desc;
119 extern struct vnodeop_desc vnop_pagein_desc;
120 extern struct vnodeop_desc vnop_pageout_desc;
121 extern struct vnodeop_desc vnop_devblocksize_desc;
122 extern struct vnodeop_desc vnop_searchfs_desc;
123 extern struct vnodeop_desc vnop_copyfile_desc;
124 extern struct vnodeop_desc vnop_blktooff_desc;
125 extern struct vnodeop_desc vnop_offtoblk_desc;
126 extern struct vnodeop_desc vnop_blockmap_desc;
127 extern struct vnodeop_desc vnop_strategy_desc;
128 extern struct vnodeop_desc vnop_bwrite_desc;
129
130 __BEGIN_DECLS
131 /*
132 *#
133 *#% lookup dvp L ? ?
134 *#% lookup vpp - L -
135 */
136 struct vnop_lookup_args {
137 struct vnodeop_desc *a_desc;
138 vnode_t a_dvp;
139 vnode_t *a_vpp;
140 struct componentname *a_cnp;
141 vfs_context_t a_context;
142 };
143 extern errno_t VNOP_LOOKUP(vnode_t, vnode_t *, struct componentname *, vfs_context_t);
144
145
146 /*
147 *#
148 *#% create dvp L L L
149 *#% create vpp - L -
150 *#
151 */
152
153 struct vnop_create_args {
154 struct vnodeop_desc *a_desc;
155 vnode_t a_dvp;
156 vnode_t *a_vpp;
157 struct componentname *a_cnp;
158 struct vnode_attr *a_vap;
159 vfs_context_t a_context;
160 };
161 extern errno_t VNOP_CREATE(vnode_t, vnode_t *, struct componentname *, struct vnode_attr *, vfs_context_t);
162
163 /*
164 *#
165 *#% whiteout dvp L L L
166 *#% whiteout cnp - - -
167 *#% whiteout flag - - -
168 *#
169 */
170 struct vnop_whiteout_args {
171 struct vnodeop_desc *a_desc;
172 vnode_t a_dvp;
173 struct componentname *a_cnp;
174 int a_flags;
175 vfs_context_t a_context;
176 };
177 extern errno_t VNOP_WHITEOUT(vnode_t, struct componentname *, int, vfs_context_t);
178
179 /*
180 *#
181 *#% mknod dvp L U U
182 *#% mknod vpp - X -
183 *#
184 */
185 struct vnop_mknod_args {
186 struct vnodeop_desc *a_desc;
187 vnode_t a_dvp;
188 vnode_t *a_vpp;
189 struct componentname *a_cnp;
190 struct vnode_attr *a_vap;
191 vfs_context_t a_context;
192 };
193 extern errno_t VNOP_MKNOD(vnode_t, vnode_t *, struct componentname *, struct vnode_attr *, vfs_context_t);
194
195 /*
196 *#
197 *#% open vp L L L
198 *#
199 */
200 struct vnop_open_args {
201 struct vnodeop_desc *a_desc;
202 vnode_t a_vp;
203 int a_mode;
204 vfs_context_t a_context;
205 };
206 extern errno_t VNOP_OPEN(vnode_t, int, vfs_context_t);
207
208 /*
209 *#
210 *#% close vp U U U
211 *#
212 */
213 struct vnop_close_args {
214 struct vnodeop_desc *a_desc;
215 vnode_t a_vp;
216 int a_fflag;
217 vfs_context_t a_context;
218 };
219 extern errno_t VNOP_CLOSE(vnode_t, int, vfs_context_t);
220
221 /*
222 *#
223 *#% access vp L L L
224 *#
225 */
226 struct vnop_access_args {
227 struct vnodeop_desc *a_desc;
228 vnode_t a_vp;
229 int a_action;
230 vfs_context_t a_context;
231 };
232 extern errno_t VNOP_ACCESS(vnode_t, int, vfs_context_t);
233
234
235 /*
236 *#
237 *#% getattr vp = = =
238 *#
239 */
240 struct vnop_getattr_args {
241 struct vnodeop_desc *a_desc;
242 vnode_t a_vp;
243 struct vnode_attr *a_vap;
244 vfs_context_t a_context;
245 };
246 extern errno_t VNOP_GETATTR(vnode_t, struct vnode_attr *, vfs_context_t);
247
248 /*
249 *#
250 *#% setattr vp L L L
251 *#
252 */
253 struct vnop_setattr_args {
254 struct vnodeop_desc *a_desc;
255 vnode_t a_vp;
256 struct vnode_attr *a_vap;
257 vfs_context_t a_context;
258 };
259 extern errno_t VNOP_SETATTR(vnode_t, struct vnode_attr *, vfs_context_t);
260
261 /*
262 *#
263 *#% getattrlist vp = = =
264 *#
265 */
266 struct vnop_getattrlist_args {
267 struct vnodeop_desc *a_desc;
268 vnode_t a_vp;
269 struct attrlist *a_alist;
270 struct uio *a_uio;
271 int a_options;
272 vfs_context_t a_context;
273 };
274 extern errno_t VNOP_GETATTRLIST(vnode_t, struct attrlist *, struct uio *, int, vfs_context_t);
275
276
277 /*
278 *#
279 *#% setattrlist vp L L L
280 *#
281 */
282 struct vnop_setattrlist_args {
283 struct vnodeop_desc *a_desc;
284 vnode_t a_vp;
285 struct attrlist *a_alist;
286 struct uio *a_uio;
287 int a_options;
288 vfs_context_t a_context;
289 };
290 extern errno_t VNOP_SETATTRLIST(vnode_t, struct attrlist *, struct uio *, int, vfs_context_t);
291
292
293 /*
294 *#
295 *#% read vp L L L
296 *#
297 */
298 struct vnop_read_args {
299 struct vnodeop_desc *a_desc;
300 vnode_t a_vp;
301 struct uio *a_uio;
302 int a_ioflag;
303 vfs_context_t a_context;
304 };
305 extern errno_t VNOP_READ(vnode_t, struct uio *, int, vfs_context_t);
306
307
308 /*
309 *#
310 *#% write vp L L L
311 *#
312 */
313 struct vnop_write_args {
314 struct vnodeop_desc *a_desc;
315 vnode_t a_vp;
316 struct uio *a_uio;
317 int a_ioflag;
318 vfs_context_t a_context;
319 };
320 extern errno_t VNOP_WRITE(vnode_t, struct uio *, int, vfs_context_t);
321
322
323 /*
324 *#
325 *#% ioctl vp U U U
326 *#
327 */
328 struct vnop_ioctl_args {
329 struct vnodeop_desc *a_desc;
330 vnode_t a_vp;
331 u_long a_command;
332 caddr_t a_data;
333 int a_fflag;
334 vfs_context_t a_context;
335 };
336 extern errno_t VNOP_IOCTL(vnode_t, u_long, caddr_t, int, vfs_context_t);
337
338
339 /*
340 *#
341 *#% select vp U U U
342 *#
343 */
344 struct vnop_select_args {
345 struct vnodeop_desc *a_desc;
346 vnode_t a_vp;
347 int a_which;
348 int a_fflags;
349 void *a_wql;
350 vfs_context_t a_context;
351 };
352 extern errno_t VNOP_SELECT(vnode_t, int, int, void *, vfs_context_t);
353
354
355 /*
356 *#
357 *#% exchange fvp L L L
358 *#% exchange tvp L L L
359 *#
360 */
361 struct vnop_exchange_args {
362 struct vnodeop_desc *a_desc;
363 vnode_t a_fvp;
364 vnode_t a_tvp;
365 int a_options;
366 vfs_context_t a_context;
367 };
368 extern errno_t VNOP_EXCHANGE(vnode_t, vnode_t, int, vfs_context_t);
369
370
371 /*
372 *#
373 *#% revoke vp U U U
374 *#
375 */
376 struct vnop_revoke_args {
377 struct vnodeop_desc *a_desc;
378 vnode_t a_vp;
379 int a_flags;
380 vfs_context_t a_context;
381 };
382 extern errno_t VNOP_REVOKE(vnode_t, int, vfs_context_t);
383
384
385 /*
386 *#
387 *# mmap - vp U U U
388 *#
389 */
390 struct vnop_mmap_args {
391 struct vnodeop_desc *a_desc;
392 vnode_t a_vp;
393 int a_fflags;
394 vfs_context_t a_context;
395 };
396 extern errno_t VNOP_MMAP(vnode_t, int, vfs_context_t);
397
398 /*
399 *#
400 *# mnomap - vp U U U
401 *#
402 */
403 struct vnop_mnomap_args {
404 struct vnodeop_desc *a_desc;
405 vnode_t a_vp;
406 vfs_context_t a_context;
407 };
408 extern errno_t VNOP_MNOMAP(vnode_t, vfs_context_t);
409
410
411 /*
412 *#
413 *#% fsync vp L L L
414 *#
415 */
416 struct vnop_fsync_args {
417 struct vnodeop_desc *a_desc;
418 vnode_t a_vp;
419 int a_waitfor;
420 vfs_context_t a_context;
421 };
422 extern errno_t VNOP_FSYNC(vnode_t, int, vfs_context_t);
423
424
425 /*
426 *#
427 *#% remove dvp L U U
428 *#% remove vp L U U
429 *#
430 */
431 struct vnop_remove_args {
432 struct vnodeop_desc *a_desc;
433 vnode_t a_dvp;
434 vnode_t a_vp;
435 struct componentname *a_cnp;
436 int a_flags;
437 vfs_context_t a_context;
438 };
439 extern errno_t VNOP_REMOVE(vnode_t, vnode_t, struct componentname *, int, vfs_context_t);
440
441
442 /*
443 *#
444 *#% link vp U U U
445 *#% link tdvp L U U
446 *#
447 */
448 struct vnop_link_args {
449 struct vnodeop_desc *a_desc;
450 vnode_t a_vp;
451 vnode_t a_tdvp;
452 struct componentname *a_cnp;
453 vfs_context_t a_context;
454 };
455 extern errno_t VNOP_LINK(vnode_t, vnode_t, struct componentname *, vfs_context_t);
456
457
458 /*
459 *#
460 *#% rename fdvp U U U
461 *#% rename fvp U U U
462 *#% rename tdvp L U U
463 *#% rename tvp X U U
464 *#
465 */
466 struct vnop_rename_args {
467 struct vnodeop_desc *a_desc;
468 vnode_t a_fdvp;
469 vnode_t a_fvp;
470 struct componentname *a_fcnp;
471 vnode_t a_tdvp;
472 vnode_t a_tvp;
473 struct componentname *a_tcnp;
474 vfs_context_t a_context;
475 };
476 extern errno_t VNOP_RENAME(vnode_t, vnode_t, struct componentname *, vnode_t, vnode_t, struct componentname *, vfs_context_t);
477
478
479 /*
480 *#
481 *#% mkdir dvp L U U
482 *#% mkdir vpp - L -
483 *#
484 */
485 struct vnop_mkdir_args {
486 struct vnodeop_desc *a_desc;
487 vnode_t a_dvp;
488 vnode_t *a_vpp;
489 struct componentname *a_cnp;
490 struct vnode_attr *a_vap;
491 vfs_context_t a_context;
492 };
493 extern errno_t VNOP_MKDIR(vnode_t, vnode_t *, struct componentname *, struct vnode_attr *, vfs_context_t);
494
495
496 /*
497 *#
498 *#% rmdir dvp L U U
499 *#% rmdir vp L U U
500 *#
501 */
502 struct vnop_rmdir_args {
503 struct vnodeop_desc *a_desc;
504 vnode_t a_dvp;
505 vnode_t a_vp;
506 struct componentname *a_cnp;
507 vfs_context_t a_context;
508 };
509 extern errno_t VNOP_RMDIR(vnode_t, vnode_t, struct componentname *, vfs_context_t);
510
511
512 /*
513 *#
514 *#% symlink dvp L U U
515 *#% symlink vpp - U -
516 *#
517 */
518 struct vnop_symlink_args {
519 struct vnodeop_desc *a_desc;
520 vnode_t a_dvp;
521 vnode_t *a_vpp;
522 struct componentname *a_cnp;
523 struct vnode_attr *a_vap;
524 char *a_target;
525 vfs_context_t a_context;
526 };
527 extern errno_t VNOP_SYMLINK(vnode_t, vnode_t *, struct componentname *, struct vnode_attr *, char *, vfs_context_t);
528
529
530 /*
531 *#
532 *#% readdir vp L L L
533 *#
534 *
535 * When VNOP_READDIR is called from the NFS Server, the nfs_data
536 * argument is non-NULL.
537 *
538 * The value of nfs_eofflag should be set to TRUE if the end of
539 * the directory was reached while reading.
540 *
541 * The directory seek offset (cookies) are returned to the NFS client and
542 * may be used later to restart a directory read part way through
543 * the directory. There is one cookie returned for each directory
544 * entry returned and its size is determince from nfs_sizeofcookie.
545 * The value of the cookie should be the logical offset within the
546 * directory where the on-disc version of the appropriate directory
547 * entry starts. Memory for the cookies is allocated from M_TEMP
548 * and it is freed by the caller of VNOP_READDIR.
549 *
550 */
551
552 struct vnop_readdir_args {
553 struct vnodeop_desc *a_desc;
554 vnode_t a_vp;
555 struct uio *a_uio;
556 int a_flags;
557 int *a_eofflag;
558 int *a_numdirent;
559 vfs_context_t a_context;
560 };
561 extern errno_t VNOP_READDIR(vnode_t, struct uio *, int, int *, int *, vfs_context_t);
562
563
564 /*
565 *#
566 *#% readdirattr vp L L L
567 *#
568 */
569 struct vnop_readdirattr_args {
570 struct vnodeop_desc *a_desc;
571 vnode_t a_vp;
572 struct attrlist *a_alist;
573 struct uio *a_uio;
574 u_long a_maxcount;
575 u_long a_options;
576 u_long *a_newstate;
577 int *a_eofflag;
578 u_long *a_actualcount;
579 vfs_context_t a_context;
580 };
581 extern errno_t VNOP_READDIRATTR(vnode_t, struct attrlist *, struct uio *, u_long, u_long, u_long *, int *, u_long *, vfs_context_t);
582
583
584 /*
585 *#
586 *#% readlink vp L L L
587 *#
588 */
589 struct vnop_readlink_args {
590 struct vnodeop_desc *a_desc;
591 vnode_t a_vp;
592 struct uio *a_uio;
593 vfs_context_t a_context;
594 };
595 extern errno_t VNOP_READLINK(vnode_t, struct uio *, vfs_context_t);
596
597
598 /*
599 *#
600 *#% inactive vp L U U
601 *#
602 */
603 struct vnop_inactive_args {
604 struct vnodeop_desc *a_desc;
605 vnode_t a_vp;
606 vfs_context_t a_context;
607 };
608 extern errno_t VNOP_INACTIVE(vnode_t, vfs_context_t);
609
610
611 /*
612 *#
613 *#% reclaim vp U U U
614 *#
615 */
616 struct vnop_reclaim_args {
617 struct vnodeop_desc *a_desc;
618 vnode_t a_vp;
619 vfs_context_t a_context;
620 };
621 extern errno_t VNOP_RECLAIM(vnode_t, vfs_context_t);
622
623
624 /*
625 *#
626 *#% pathconf vp L L L
627 *#
628 */
629 struct vnop_pathconf_args {
630 struct vnodeop_desc *a_desc;
631 vnode_t a_vp;
632 int a_name;
633 register_t *a_retval;
634 vfs_context_t a_context;
635 };
636 extern errno_t VNOP_PATHCONF(vnode_t, int, register_t *, vfs_context_t); /* register_t??????? */
637
638
639 /*
640 *#
641 *#% advlock vp U U U
642 *#
643 */
644 struct vnop_advlock_args {
645 struct vnodeop_desc *a_desc;
646 vnode_t a_vp;
647 caddr_t a_id;
648 int a_op;
649 struct flock *a_fl;
650 int a_flags;
651 vfs_context_t a_context;
652 };
653 extern errno_t VNOP_ADVLOCK(vnode_t, caddr_t, int, struct flock *, int, vfs_context_t);
654
655 /*
656 *#
657 *#% allocate vp L L L
658 *#
659 */
660 struct vnop_allocate_args {
661 struct vnodeop_desc *a_desc;
662 vnode_t a_vp;
663 off_t a_length;
664 u_int32_t a_flags;
665 off_t *a_bytesallocated;
666 off_t a_offset;
667 vfs_context_t a_context;
668 };
669 extern errno_t VNOP_ALLOCATE(vnode_t, off_t, u_int32_t, off_t *, off_t, vfs_context_t);
670
671 /*
672 *#
673 *#% pagein vp = = =
674 *#
675 */
676 struct vnop_pagein_args {
677 struct vnodeop_desc *a_desc;
678 vnode_t a_vp;
679 upl_t a_pl;
680 vm_offset_t a_pl_offset;
681 off_t a_f_offset;
682 size_t a_size;
683 int a_flags;
684 vfs_context_t a_context;
685 };
686 extern errno_t VNOP_PAGEIN(vnode_t, upl_t, vm_offset_t, off_t, size_t, int, vfs_context_t); /* vm_offset_t ? */
687
688
689 /*
690 *#
691 *#% pageout vp = = =
692 *#
693 */
694 struct vnop_pageout_args {
695 struct vnodeop_desc *a_desc;
696 vnode_t a_vp;
697 upl_t a_pl;
698 vm_offset_t a_pl_offset;
699 off_t a_f_offset;
700 size_t a_size;
701 int a_flags;
702 vfs_context_t a_context;
703 };
704 extern errno_t VNOP_PAGEOUT(vnode_t, upl_t, vm_offset_t, off_t, size_t, int, vfs_context_t);
705
706
707 #ifdef BSD_KERNEL_PRIVATE
708 /*
709 *#% devblocksize vp = = =
710 *#
711 */
712 struct vnop_devblocksize_args {
713 struct vnodeop_desc *a_desc;
714 vnode_t a_vp;
715 register_t *a_retval;
716 };
717 #endif /* BSD_KERNEL_PRIVATE */
718
719 /*
720 *#
721 *#% searchfs vp L L L
722 *#
723 */
724 struct vnop_searchfs_args {
725 struct vnodeop_desc *a_desc;
726 vnode_t a_vp;
727 void *a_searchparams1;
728 void *a_searchparams2;
729 struct attrlist *a_searchattrs;
730 u_long a_maxmatches;
731 struct timeval *a_timelimit;
732 struct attrlist *a_returnattrs;
733 u_long *a_nummatches;
734 u_long a_scriptcode;
735 u_long a_options;
736 struct uio *a_uio;
737 struct searchstate *a_searchstate;
738 vfs_context_t a_context;
739 };
740 extern errno_t VNOP_SEARCHFS(vnode_t, void *, void *, struct attrlist *, u_long, struct timeval *, struct attrlist *, u_long *, u_long, u_long, struct uio *, struct searchstate *, vfs_context_t);
741
742
743 /*
744 *#
745 *#% copyfile fvp U U U
746 *#% copyfile tdvp L U U
747 *#% copyfile tvp X U U
748 *#
749 */
750 struct vnop_copyfile_args {
751 struct vnodeop_desc *a_desc;
752 vnode_t a_fvp;
753 vnode_t a_tdvp;
754 vnode_t a_tvp;
755 struct componentname *a_tcnp;
756 int a_mode;
757 int a_flags;
758 vfs_context_t a_context;
759 };
760 extern errno_t VNOP_COPYFILE(vnode_t, vnode_t, vnode_t, struct componentname *, int, int, vfs_context_t);
761
762
763 struct vnop_getxattr_args {
764 struct vnodeop_desc *a_desc;
765 vnode_t a_vp;
766 char * a_name;
767 uio_t a_uio;
768 size_t *a_size;
769 int a_options;
770 vfs_context_t a_context;
771 };
772 extern struct vnodeop_desc vnop_getxattr_desc;
773 extern errno_t VNOP_GETXATTR(vnode_t, const char *, uio_t, size_t *, int, vfs_context_t);
774
775 struct vnop_setxattr_args {
776 struct vnodeop_desc *a_desc;
777 vnode_t a_vp;
778 char * a_name;
779 uio_t a_uio;
780 int a_options;
781 vfs_context_t a_context;
782 };
783 extern struct vnodeop_desc vnop_setxattr_desc;
784 extern errno_t VNOP_SETXATTR(vnode_t, const char *, uio_t, int, vfs_context_t);
785
786 struct vnop_removexattr_args {
787 struct vnodeop_desc *a_desc;
788 vnode_t a_vp;
789 char * a_name;
790 int a_options;
791 vfs_context_t a_context;
792 };
793 extern struct vnodeop_desc vnop_removexattr_desc;
794 extern errno_t VNOP_REMOVEXATTR(vnode_t, const char *, int, vfs_context_t);
795
796 struct vnop_listxattr_args {
797 struct vnodeop_desc *a_desc;
798 vnode_t a_vp;
799 uio_t a_uio;
800 size_t *a_size;
801 int a_options;
802 vfs_context_t a_context;
803 };
804 extern struct vnodeop_desc vnop_listxattr_desc;
805 extern errno_t VNOP_LISTXATTR(vnode_t, uio_t, size_t *, int, vfs_context_t);
806
807
808 /*
809 *#
810 *#% blktooff vp = = =
811 *#
812 */
813 struct vnop_blktooff_args {
814 struct vnodeop_desc *a_desc;
815 vnode_t a_vp;
816 daddr64_t a_lblkno;
817 off_t *a_offset;
818 };
819 extern errno_t VNOP_BLKTOOFF(vnode_t, daddr64_t, off_t *);
820
821
822 /*
823 *#
824 *#% offtoblk vp = = =
825 *#
826 */
827 struct vnop_offtoblk_args {
828 struct vnodeop_desc *a_desc;
829 vnode_t a_vp;
830 off_t a_offset;
831 daddr64_t *a_lblkno;
832 };
833 extern errno_t VNOP_OFFTOBLK(vnode_t, off_t, daddr64_t *);
834
835
836 /*
837 *#
838 *#% blockmap vp L L L
839 *#
840 */
841 struct vnop_blockmap_args {
842 struct vnodeop_desc *a_desc;
843 vnode_t a_vp;
844 off_t a_foffset;
845 size_t a_size;
846 daddr64_t *a_bpn;
847 size_t *a_run;
848 void *a_poff;
849 int a_flags;
850 vfs_context_t a_context;
851 };
852 extern errno_t VNOP_BLOCKMAP(vnode_t, off_t, size_t, daddr64_t *, size_t *, void *,
853 int, vfs_context_t);
854
855 struct vnop_strategy_args {
856 struct vnodeop_desc *a_desc;
857 struct buf *a_bp;
858 };
859 extern errno_t VNOP_STRATEGY(struct buf *bp);
860
861 struct vnop_bwrite_args {
862 struct vnodeop_desc *a_desc;
863 buf_t a_bp;
864 };
865 extern errno_t VNOP_BWRITE(buf_t);
866
867
868 struct vnop_kqfilt_add_args {
869 struct vnodeop_desc *a_desc;
870 struct vnode *a_vp;
871 struct knote *a_kn;
872 vfs_context_t a_context;
873 };
874 extern struct vnodeop_desc vnop_kqfilt_add_desc;
875 extern errno_t VNOP_KQFILT_ADD(vnode_t , struct knote *, vfs_context_t);
876
877 struct vnop_kqfilt_remove_args {
878 struct vnodeop_desc *a_desc;
879 struct vnode *a_vp;
880 uintptr_t a_ident;
881 vfs_context_t a_context;
882 };
883 extern struct vnodeop_desc vnop_kqfilt_remove_desc;
884 errno_t VNOP_KQFILT_REMOVE(vnode_t , uintptr_t , vfs_context_t);
885
886 __END_DECLS
887
888 #endif /* KERNEL */
889
890 #endif /* !_SYS_VNODE_IF_H_ */