]> git.saurik.com Git - apple/xnu.git/blob - bsd/vfs/vnode_if.c
xnu-1228.7.58.tar.gz
[apple/xnu.git] / bsd / vfs / vnode_if.c
1
2 /*
3 * Copyright (c) 2000-2002 Apple Computer, Inc. All rights reserved.
4 *
5 * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
6 *
7 * This file contains Original Code and/or Modifications of Original Code
8 * as defined in and that are subject to the Apple Public Source License
9 * Version 2.0 (the 'License'). You may not use this file except in
10 * compliance with the License. The rights granted to you under the License
11 * may not be used to create, or enable the creation or redistribution of,
12 * unlawful or unlicensed copies of an Apple operating system, or to
13 * circumvent, violate, or enable the circumvention or violation of, any
14 * terms of an Apple operating system software license agreement.
15 *
16 * Please obtain a copy of the License at
17 * http://www.opensource.apple.com/apsl/ and read it before using this file.
18 *
19 * The Original Code and all software distributed under the License are
20 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
21 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
22 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
23 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
24 * Please see the License for the specific language governing rights and
25 * limitations under the License.
26 *
27 * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
28 */
29 /*
30 * Copyright (c) 1995 NeXT Computer, Inc. All Rights Reserved
31 * Copyright (c) 1992, 1993, 1994, 1995
32 * The Regents of the University of California. All rights reserved.
33 *
34 * Redistribution and use in source and binary forms, with or without
35 * modification, are permitted provided that the following conditions
36 * are met:
37 * 1. Redistributions of source code must retain the above copyright
38 * notice, this list of conditions and the following disclaimer.
39 * 2. Redistributions in binary form must reproduce the above copyright
40 * notice, this list of conditions and the following disclaimer in the
41 * documentation and/or other materials provided with the distribution.
42 * 3. All advertising materials mentioning features or use of this software
43 * must display the following acknowledgement:
44 * This product includes software developed by the University of
45 * California, Berkeley and its contributors.
46 * 4. Neither the name of the University nor the names of its contributors
47 * may be used to endorse or promote products derived from this software
48 * without specific prior written permission.
49 *
50 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS AND
51 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
52 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
53 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
54 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
55 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
56 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
57 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
58 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
59 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
60 * SUCH DAMAGE.
61 */
62
63
64 /*
65 * Warning: This file is generated automatically.
66 * (Modifications made here may easily be lost!)
67 *
68 * Created by the script:
69 * @(#)vnode_if.sh 8.7 (Berkeley) 5/11/95
70 */
71
72
73 #include <sys/param.h>
74 #include <sys/mount_internal.h>
75 #include <sys/vm.h>
76 #include <sys/vnode_internal.h>
77
78 struct vnodeop_desc vnop_default_desc = {
79 0,
80 "default",
81 0,
82 NULL,
83 VDESC_NO_OFFSET,
84 VDESC_NO_OFFSET,
85 VDESC_NO_OFFSET,
86 VDESC_NO_OFFSET,
87 VDESC_NO_OFFSET,
88 NULL
89 };
90
91
92 int vnop_lookup_vp_offsets[] = {
93 VOPARG_OFFSETOF(struct vnop_lookup_args,a_dvp),
94 VDESC_NO_OFFSET
95 };
96 struct vnodeop_desc vnop_lookup_desc = {
97 0,
98 "vnop_lookup",
99 0,
100 vnop_lookup_vp_offsets,
101 VOPARG_OFFSETOF(struct vnop_lookup_args, a_vpp),
102 VDESC_NO_OFFSET,
103 VDESC_NO_OFFSET,
104 VOPARG_OFFSETOF(struct vnop_lookup_args, a_cnp),
105 VOPARG_OFFSETOF(struct vnop_lookup_args, a_context),
106 NULL
107 };
108
109 int vnop_create_vp_offsets[] = {
110 VOPARG_OFFSETOF(struct vnop_create_args,a_dvp),
111 VDESC_NO_OFFSET
112 };
113 struct vnodeop_desc vnop_create_desc = {
114 0,
115 "vnop_create",
116 0 | VDESC_VP0_WILLRELE,
117 vnop_create_vp_offsets,
118 VOPARG_OFFSETOF(struct vnop_create_args, a_vpp),
119 VDESC_NO_OFFSET,
120 VDESC_NO_OFFSET,
121 VOPARG_OFFSETOF(struct vnop_create_args, a_cnp),
122 VOPARG_OFFSETOF(struct vnop_create_args, a_context),
123 NULL
124 };
125
126 int vnop_whiteout_vp_offsets[] = {
127 VOPARG_OFFSETOF(struct vnop_whiteout_args,a_dvp),
128 VDESC_NO_OFFSET
129 };
130 struct vnodeop_desc vnop_whiteout_desc = {
131 0,
132 "vnop_whiteout",
133 0 | VDESC_VP0_WILLRELE,
134 vnop_whiteout_vp_offsets,
135 VDESC_NO_OFFSET,
136 VDESC_NO_OFFSET,
137 VDESC_NO_OFFSET,
138 VOPARG_OFFSETOF(struct vnop_whiteout_args, a_cnp),
139 VOPARG_OFFSETOF(struct vnop_whiteout_args, a_context),
140 NULL
141 };
142
143 int vnop_mknod_vp_offsets[] = {
144 VOPARG_OFFSETOF(struct vnop_mknod_args,a_dvp),
145 VDESC_NO_OFFSET
146 };
147 struct vnodeop_desc vnop_mknod_desc = {
148 0,
149 "vnop_mknod",
150 0 | VDESC_VP0_WILLRELE | VDESC_VPP_WILLRELE,
151 vnop_mknod_vp_offsets,
152 VOPARG_OFFSETOF(struct vnop_mknod_args, a_vpp),
153 VDESC_NO_OFFSET,
154 VDESC_NO_OFFSET,
155 VOPARG_OFFSETOF(struct vnop_mknod_args, a_cnp),
156 VOPARG_OFFSETOF(struct vnop_mknod_args, a_context),
157 NULL
158 };
159
160 int vnop_open_vp_offsets[] = {
161 VOPARG_OFFSETOF(struct vnop_open_args,a_vp),
162 VDESC_NO_OFFSET
163 };
164 struct vnodeop_desc vnop_open_desc = {
165 0,
166 "vnop_open",
167 0,
168 vnop_open_vp_offsets,
169 VDESC_NO_OFFSET,
170 VDESC_NO_OFFSET,
171 VDESC_NO_OFFSET,
172 VDESC_NO_OFFSET,
173 VOPARG_OFFSETOF(struct vnop_open_args, a_context),
174 NULL
175 };
176
177 int vnop_close_vp_offsets[] = {
178 VOPARG_OFFSETOF(struct vnop_close_args,a_vp),
179 VDESC_NO_OFFSET
180 };
181 struct vnodeop_desc vnop_close_desc = {
182 0,
183 "vnop_close",
184 0,
185 vnop_close_vp_offsets,
186 VDESC_NO_OFFSET,
187 VDESC_NO_OFFSET,
188 VDESC_NO_OFFSET,
189 VDESC_NO_OFFSET,
190 VOPARG_OFFSETOF(struct vnop_close_args, a_context),
191 NULL
192 };
193
194 int vnop_access_vp_offsets[] = {
195 VOPARG_OFFSETOF(struct vnop_access_args,a_vp),
196 VDESC_NO_OFFSET
197 };
198 struct vnodeop_desc vnop_access_desc = {
199 0,
200 "vnop_access",
201 0,
202 vnop_access_vp_offsets,
203 VDESC_NO_OFFSET,
204 VDESC_NO_OFFSET,
205 VDESC_NO_OFFSET,
206 VDESC_NO_OFFSET,
207 VOPARG_OFFSETOF(struct vnop_close_args, a_context),
208 NULL
209 };
210
211 int vnop_getattr_vp_offsets[] = {
212 VOPARG_OFFSETOF(struct vnop_getattr_args,a_vp),
213 VDESC_NO_OFFSET
214 };
215 struct vnodeop_desc vnop_getattr_desc = {
216 0,
217 "vnop_getattr",
218 0,
219 vnop_getattr_vp_offsets,
220 VDESC_NO_OFFSET,
221 VDESC_NO_OFFSET,
222 VDESC_NO_OFFSET,
223 VDESC_NO_OFFSET,
224 VOPARG_OFFSETOF(struct vnop_getattr_args, a_context),
225 NULL
226 };
227
228 int vnop_setattr_vp_offsets[] = {
229 VOPARG_OFFSETOF(struct vnop_setattr_args,a_vp),
230 VDESC_NO_OFFSET
231 };
232 struct vnodeop_desc vnop_setattr_desc = {
233 0,
234 "vnop_setattr",
235 0,
236 vnop_setattr_vp_offsets,
237 VDESC_NO_OFFSET,
238 VDESC_NO_OFFSET,
239 VDESC_NO_OFFSET,
240 VDESC_NO_OFFSET,
241 VOPARG_OFFSETOF(struct vnop_setattr_args, a_context),
242 NULL
243 };
244
245 int vnop_read_vp_offsets[] = {
246 VOPARG_OFFSETOF(struct vnop_read_args,a_vp),
247 VDESC_NO_OFFSET
248 };
249 struct vnodeop_desc vnop_read_desc = {
250 0,
251 "vnop_read",
252 0,
253 vnop_read_vp_offsets,
254 VDESC_NO_OFFSET,
255 VDESC_NO_OFFSET,
256 VDESC_NO_OFFSET,
257 VDESC_NO_OFFSET,
258 VOPARG_OFFSETOF(struct vnop_read_args, a_context),
259 NULL
260 };
261
262 int vnop_write_vp_offsets[] = {
263 VOPARG_OFFSETOF(struct vnop_write_args,a_vp),
264 VDESC_NO_OFFSET
265 };
266 struct vnodeop_desc vnop_write_desc = {
267 0,
268 "vnop_write",
269 0,
270 vnop_write_vp_offsets,
271 VDESC_NO_OFFSET,
272 VDESC_NO_OFFSET,
273 VDESC_NO_OFFSET,
274 VDESC_NO_OFFSET,
275 VOPARG_OFFSETOF(struct vnop_write_args, a_context),
276 NULL
277 };
278
279 int vnop_ioctl_vp_offsets[] = {
280 VOPARG_OFFSETOF(struct vnop_ioctl_args,a_vp),
281 VDESC_NO_OFFSET
282 };
283 struct vnodeop_desc vnop_ioctl_desc = {
284 0,
285 "vnop_ioctl",
286 0,
287 vnop_ioctl_vp_offsets,
288 VDESC_NO_OFFSET,
289 VDESC_NO_OFFSET,
290 VDESC_NO_OFFSET,
291 VDESC_NO_OFFSET,
292 VOPARG_OFFSETOF(struct vnop_ioctl_args, a_context),
293 NULL
294 };
295
296 int vnop_select_vp_offsets[] = {
297 VOPARG_OFFSETOF(struct vnop_select_args,a_vp),
298 VDESC_NO_OFFSET
299 };
300 struct vnodeop_desc vnop_select_desc = {
301 0,
302 "vnop_select",
303 0,
304 vnop_select_vp_offsets,
305 VDESC_NO_OFFSET,
306 VDESC_NO_OFFSET,
307 VDESC_NO_OFFSET,
308 VDESC_NO_OFFSET,
309 VOPARG_OFFSETOF(struct vnop_select_args, a_context),
310 NULL
311 };
312
313 int vnop_exchange_vp_offsets[] = {
314 VOPARG_OFFSETOF(struct vnop_exchange_args,a_fvp),
315 VOPARG_OFFSETOF(struct vnop_exchange_args,a_tvp),
316 VDESC_NO_OFFSET
317 };
318 struct vnodeop_desc vnop_exchange_desc = {
319 0,
320 "vnop_exchange",
321 0,
322 vnop_exchange_vp_offsets,
323 VDESC_NO_OFFSET,
324 VDESC_NO_OFFSET,
325 VDESC_NO_OFFSET,
326 VDESC_NO_OFFSET,
327 VOPARG_OFFSETOF(struct vnop_exchange_args, a_context),
328 NULL
329 };
330
331 int vnop_kqfilt_add_vp_offsets[] = {
332 VOPARG_OFFSETOF(struct vnop_kqfilt_add_args,a_vp),
333 VDESC_NO_OFFSET
334 };
335 struct vnodeop_desc vnop_kqfilt_add_desc = {
336 0,
337 "vnop_kqfilt_add",
338 0,
339 vnop_kqfilt_add_vp_offsets,
340 VDESC_NO_OFFSET,
341 VDESC_NO_OFFSET,
342 VDESC_NO_OFFSET,
343 VDESC_NO_OFFSET,
344 VOPARG_OFFSETOF(struct vnop_kqfilt_add_args, a_context),
345 NULL
346 };
347
348 int vnop_kqfilt_remove_vp_offsets[] = {
349 VOPARG_OFFSETOF(struct vnop_kqfilt_remove_args,a_vp),
350 VDESC_NO_OFFSET
351 };
352 struct vnodeop_desc vnop_kqfilt_remove_desc = {
353 0,
354 "vnop_kqfilt_remove",
355 0,
356 vnop_kqfilt_remove_vp_offsets,
357 VDESC_NO_OFFSET,
358 VDESC_NO_OFFSET,
359 VDESC_NO_OFFSET,
360 VDESC_NO_OFFSET,
361 VOPARG_OFFSETOF(struct vnop_kqfilt_remove_args, a_context),
362 NULL
363 };
364
365 int vnop_setlabel_vp_offsets[] = {
366 VOPARG_OFFSETOF(struct vnop_setlabel_args,a_vp),
367 VDESC_NO_OFFSET
368 };
369 struct vnodeop_desc vnop_setlabel_desc = {
370 0,
371 "vnop_setlabel",
372 0,
373 vnop_setlabel_vp_offsets,
374 VDESC_NO_OFFSET,
375 VDESC_NO_OFFSET,
376 VDESC_NO_OFFSET,
377 VDESC_NO_OFFSET,
378 VOPARG_OFFSETOF(struct vnop_setlabel_args, a_context),
379 NULL,
380 };
381
382 int vnop_revoke_vp_offsets[] = {
383 VOPARG_OFFSETOF(struct vnop_revoke_args,a_vp),
384 VDESC_NO_OFFSET
385 };
386 struct vnodeop_desc vnop_revoke_desc = {
387 0,
388 "vnop_revoke",
389 0,
390 vnop_revoke_vp_offsets,
391 VDESC_NO_OFFSET,
392 VDESC_NO_OFFSET,
393 VDESC_NO_OFFSET,
394 VDESC_NO_OFFSET,
395 VDESC_NO_OFFSET,
396 NULL
397 };
398
399
400 int vnop_mmap_vp_offsets[] = {
401 VOPARG_OFFSETOF(struct vnop_mmap_args,a_vp),
402 VDESC_NO_OFFSET
403 };
404 struct vnodeop_desc vnop_mmap_desc = {
405 0,
406 "vnop_mmap",
407 0,
408 vnop_mmap_vp_offsets,
409 VDESC_NO_OFFSET,
410 VDESC_NO_OFFSET,
411 VDESC_NO_OFFSET,
412 VDESC_NO_OFFSET,
413 VDESC_NO_OFFSET,
414 NULL
415 };
416
417
418 int vnop_mnomap_vp_offsets[] = {
419 VOPARG_OFFSETOF(struct vnop_mnomap_args,a_vp),
420 VDESC_NO_OFFSET
421 };
422 struct vnodeop_desc vnop_mnomap_desc = {
423 0,
424 "vnop_mnomap",
425 0,
426 vnop_mnomap_vp_offsets,
427 VDESC_NO_OFFSET,
428 VDESC_NO_OFFSET,
429 VDESC_NO_OFFSET,
430 VDESC_NO_OFFSET,
431 VDESC_NO_OFFSET,
432 NULL
433 };
434
435
436 int vnop_fsync_vp_offsets[] = {
437 VOPARG_OFFSETOF(struct vnop_fsync_args,a_vp),
438 VDESC_NO_OFFSET
439 };
440 struct vnodeop_desc vnop_fsync_desc = {
441 0,
442 "vnop_fsync",
443 0,
444 vnop_fsync_vp_offsets,
445 VDESC_NO_OFFSET,
446 VDESC_NO_OFFSET,
447 VDESC_NO_OFFSET,
448 VDESC_NO_OFFSET,
449 VOPARG_OFFSETOF(struct vnop_fsync_args, a_context),
450 NULL
451 };
452
453 int vnop_remove_vp_offsets[] = {
454 VOPARG_OFFSETOF(struct vnop_remove_args,a_dvp),
455 VOPARG_OFFSETOF(struct vnop_remove_args,a_vp),
456 VDESC_NO_OFFSET
457 };
458 struct vnodeop_desc vnop_remove_desc = {
459 0,
460 "vnop_remove",
461 0 | VDESC_VP0_WILLRELE | VDESC_VP1_WILLRELE,
462 vnop_remove_vp_offsets,
463 VDESC_NO_OFFSET,
464 VDESC_NO_OFFSET,
465 VDESC_NO_OFFSET,
466 VOPARG_OFFSETOF(struct vnop_remove_args, a_cnp),
467 VOPARG_OFFSETOF(struct vnop_remove_args, a_context),
468 NULL
469 };
470
471 int vnop_link_vp_offsets[] = {
472 VOPARG_OFFSETOF(struct vnop_link_args,a_vp),
473 VOPARG_OFFSETOF(struct vnop_link_args,a_tdvp),
474 VDESC_NO_OFFSET
475 };
476 struct vnodeop_desc vnop_link_desc = {
477 0,
478 "vnop_link",
479 0 | VDESC_VP1_WILLRELE,
480 vnop_link_vp_offsets,
481 VDESC_NO_OFFSET,
482 VDESC_NO_OFFSET,
483 VDESC_NO_OFFSET,
484 VOPARG_OFFSETOF(struct vnop_link_args, a_cnp),
485 VOPARG_OFFSETOF(struct vnop_link_args, a_context),
486 NULL
487 };
488
489 int vnop_rename_vp_offsets[] = {
490 VOPARG_OFFSETOF(struct vnop_rename_args,a_fdvp),
491 VOPARG_OFFSETOF(struct vnop_rename_args,a_fvp),
492 VOPARG_OFFSETOF(struct vnop_rename_args,a_tdvp),
493 VOPARG_OFFSETOF(struct vnop_rename_args,a_tvp),
494 VDESC_NO_OFFSET
495 };
496 struct vnodeop_desc vnop_rename_desc = {
497 0,
498 "vnop_rename",
499 0 | VDESC_VP0_WILLRELE | VDESC_VP1_WILLRELE | VDESC_VP2_WILLRELE | VDESC_VP3_WILLRELE,
500 vnop_rename_vp_offsets,
501 VDESC_NO_OFFSET,
502 VDESC_NO_OFFSET,
503 VDESC_NO_OFFSET,
504 VOPARG_OFFSETOF(struct vnop_rename_args, a_fcnp),
505 VOPARG_OFFSETOF(struct vnop_rename_args, a_context),
506 NULL
507 };
508
509 int vnop_mkdir_vp_offsets[] = {
510 VOPARG_OFFSETOF(struct vnop_mkdir_args,a_dvp),
511 VDESC_NO_OFFSET
512 };
513 struct vnodeop_desc vnop_mkdir_desc = {
514 0,
515 "vnop_mkdir",
516 0 | VDESC_VP0_WILLRELE,
517 vnop_mkdir_vp_offsets,
518 VOPARG_OFFSETOF(struct vnop_mkdir_args, a_vpp),
519 VDESC_NO_OFFSET,
520 VDESC_NO_OFFSET,
521 VOPARG_OFFSETOF(struct vnop_mkdir_args, a_cnp),
522 VOPARG_OFFSETOF(struct vnop_mkdir_args, a_context),
523 NULL
524 };
525
526 int vnop_rmdir_vp_offsets[] = {
527 VOPARG_OFFSETOF(struct vnop_rmdir_args,a_dvp),
528 VOPARG_OFFSETOF(struct vnop_rmdir_args,a_vp),
529 VDESC_NO_OFFSET
530 };
531 struct vnodeop_desc vnop_rmdir_desc = {
532 0,
533 "vnop_rmdir",
534 0 | VDESC_VP0_WILLRELE | VDESC_VP1_WILLRELE,
535 vnop_rmdir_vp_offsets,
536 VDESC_NO_OFFSET,
537 VDESC_NO_OFFSET,
538 VDESC_NO_OFFSET,
539 VOPARG_OFFSETOF(struct vnop_rmdir_args, a_cnp),
540 VOPARG_OFFSETOF(struct vnop_rmdir_args, a_context),
541 NULL
542 };
543
544 int vnop_symlink_vp_offsets[] = {
545 VOPARG_OFFSETOF(struct vnop_symlink_args,a_dvp),
546 VDESC_NO_OFFSET
547 };
548 struct vnodeop_desc vnop_symlink_desc = {
549 0,
550 "vnop_symlink",
551 0 | VDESC_VP0_WILLRELE | VDESC_VPP_WILLRELE,
552 vnop_symlink_vp_offsets,
553 VOPARG_OFFSETOF(struct vnop_symlink_args, a_vpp),
554 VDESC_NO_OFFSET,
555 VDESC_NO_OFFSET,
556 VOPARG_OFFSETOF(struct vnop_symlink_args, a_cnp),
557 VOPARG_OFFSETOF(struct vnop_symlink_args, a_context),
558 NULL
559 };
560
561 int vnop_readdir_vp_offsets[] = {
562 VOPARG_OFFSETOF(struct vnop_readdir_args,a_vp),
563 VDESC_NO_OFFSET
564 };
565 struct vnodeop_desc vnop_readdir_desc = {
566 0,
567 "vnop_readdir",
568 0,
569 vnop_readdir_vp_offsets,
570 VDESC_NO_OFFSET,
571 VDESC_NO_OFFSET,
572 VDESC_NO_OFFSET,
573 VDESC_NO_OFFSET,
574 VOPARG_OFFSETOF(struct vnop_symlink_args, a_context),
575 NULL
576 };
577
578 int vnop_readdirattr_vp_offsets[] = {
579 VOPARG_OFFSETOF(struct vnop_readdirattr_args,a_vp),
580 VDESC_NO_OFFSET
581 };
582 struct vnodeop_desc vnop_readdirattr_desc = {
583 0,
584 "vnop_readdirattr",
585 0,
586 vnop_readdirattr_vp_offsets,
587 VDESC_NO_OFFSET,
588 VDESC_NO_OFFSET,
589 VDESC_NO_OFFSET,
590 VDESC_NO_OFFSET,
591 VOPARG_OFFSETOF(struct vnop_readdirattr_args, a_context),
592 NULL
593 };
594
595 int vnop_readlink_vp_offsets[] = {
596 VOPARG_OFFSETOF(struct vnop_readlink_args,a_vp),
597 VDESC_NO_OFFSET
598 };
599 struct vnodeop_desc vnop_readlink_desc = {
600 0,
601 "vnop_readlink",
602 0,
603 vnop_readlink_vp_offsets,
604 VDESC_NO_OFFSET,
605 VDESC_NO_OFFSET,
606 VDESC_NO_OFFSET,
607 VDESC_NO_OFFSET,
608 VOPARG_OFFSETOF(struct vnop_readlink_args, a_context),
609 NULL
610 };
611
612 int vnop_inactive_vp_offsets[] = {
613 VOPARG_OFFSETOF(struct vnop_inactive_args,a_vp),
614 VDESC_NO_OFFSET
615 };
616 struct vnodeop_desc vnop_inactive_desc = {
617 0,
618 "vnop_inactive",
619 0,
620 vnop_inactive_vp_offsets,
621 VDESC_NO_OFFSET,
622 VDESC_NO_OFFSET,
623 VDESC_NO_OFFSET,
624 VDESC_NO_OFFSET,
625 VOPARG_OFFSETOF(struct vnop_inactive_args, a_context),
626 NULL
627 };
628
629 int vnop_reclaim_vp_offsets[] = {
630 VOPARG_OFFSETOF(struct vnop_reclaim_args,a_vp),
631 VDESC_NO_OFFSET
632 };
633 struct vnodeop_desc vnop_reclaim_desc = {
634 0,
635 "vnop_reclaim",
636 0,
637 vnop_reclaim_vp_offsets,
638 VDESC_NO_OFFSET,
639 VDESC_NO_OFFSET,
640 VDESC_NO_OFFSET,
641 VDESC_NO_OFFSET,
642 VOPARG_OFFSETOF(struct vnop_reclaim_args, a_context),
643 NULL
644 };
645
646 int vnop_pathconf_vp_offsets[] = {
647 VOPARG_OFFSETOF(struct vnop_pathconf_args,a_vp),
648 VDESC_NO_OFFSET
649 };
650 struct vnodeop_desc vnop_pathconf_desc = {
651 0,
652 "vnop_pathconf",
653 0,
654 vnop_pathconf_vp_offsets,
655 VDESC_NO_OFFSET,
656 VDESC_NO_OFFSET,
657 VDESC_NO_OFFSET,
658 VDESC_NO_OFFSET,
659 VOPARG_OFFSETOF(struct vnop_pathconf_args, a_context),
660 NULL
661 };
662
663 int vnop_advlock_vp_offsets[] = {
664 VOPARG_OFFSETOF(struct vnop_advlock_args,a_vp),
665 VDESC_NO_OFFSET
666 };
667 struct vnodeop_desc vnop_advlock_desc = {
668 0,
669 "vnop_advlock",
670 0,
671 vnop_advlock_vp_offsets,
672 VDESC_NO_OFFSET,
673 VDESC_NO_OFFSET,
674 VDESC_NO_OFFSET,
675 VDESC_NO_OFFSET,
676 VOPARG_OFFSETOF(struct vnop_advlock_args, a_context),
677 NULL
678 };
679
680 int vnop_allocate_vp_offsets[] = {
681 VOPARG_OFFSETOF(struct vnop_allocate_args,a_vp),
682 VDESC_NO_OFFSET
683 };
684 struct vnodeop_desc vnop_allocate_desc = {
685 0,
686 "vnop_allocate",
687 0,
688 vnop_allocate_vp_offsets,
689 VDESC_NO_OFFSET,
690 VDESC_NO_OFFSET,
691 VDESC_NO_OFFSET,
692 VDESC_NO_OFFSET,
693 VOPARG_OFFSETOF(struct vnop_allocate_args, a_context),
694 NULL
695 };
696
697 int vnop_pagein_vp_offsets[] = {
698 VOPARG_OFFSETOF(struct vnop_pagein_args,a_vp),
699 VDESC_NO_OFFSET
700 };
701 struct vnodeop_desc vnop_pagein_desc = {
702 0,
703 "vnop_pagein",
704 0,
705 vnop_pagein_vp_offsets,
706 VDESC_NO_OFFSET,
707 VDESC_NO_OFFSET,
708 VDESC_NO_OFFSET,
709 VDESC_NO_OFFSET,
710 VOPARG_OFFSETOF(struct vnop_pagein_args, a_context),
711 NULL
712 };
713
714 int vnop_pageout_vp_offsets[] = {
715 VOPARG_OFFSETOF(struct vnop_pageout_args,a_vp),
716 VDESC_NO_OFFSET
717 };
718 struct vnodeop_desc vnop_pageout_desc = {
719 0,
720 "vnop_pageout",
721 0,
722 vnop_pageout_vp_offsets,
723 VDESC_NO_OFFSET,
724 VDESC_NO_OFFSET,
725 VDESC_NO_OFFSET,
726 VDESC_NO_OFFSET,
727 VOPARG_OFFSETOF(struct vnop_pageout_args, a_context),
728 NULL
729 };
730
731 int vnop_searchfs_vp_offsets[] = {
732 VOPARG_OFFSETOF(struct vnop_searchfs_args,a_vp),
733 VDESC_NO_OFFSET
734 };
735 struct vnodeop_desc vnop_searchfs_desc = {
736 0,
737 "vnop_searchfs",
738 0,
739 vnop_searchfs_vp_offsets,
740 VDESC_NO_OFFSET,
741 VDESC_NO_OFFSET,
742 VDESC_NO_OFFSET,
743 VDESC_NO_OFFSET,
744 VDESC_NO_OFFSET,
745 NULL
746 };
747
748 int vnop_copyfile_vp_offsets[] = {
749 VOPARG_OFFSETOF(struct vnop_copyfile_args,a_fvp),
750 VOPARG_OFFSETOF(struct vnop_copyfile_args,a_tdvp),
751 VOPARG_OFFSETOF(struct vnop_copyfile_args,a_tvp),
752 VDESC_NO_OFFSET
753 };
754 struct vnodeop_desc vnop_copyfile_desc = {
755 0,
756 "vnop_copyfile",
757 0 | VDESC_VP0_WILLRELE | VDESC_VP1_WILLRELE | VDESC_VP2_WILLRELE,
758 vnop_copyfile_vp_offsets,
759 VDESC_NO_OFFSET,
760 VDESC_NO_OFFSET,
761 VDESC_NO_OFFSET,
762 VOPARG_OFFSETOF(struct vnop_copyfile_args, a_tcnp),
763 VDESC_NO_OFFSET,
764 NULL
765 };
766
767 int vop_getxattr_vp_offsets[] = {
768 VOPARG_OFFSETOF(struct vnop_getxattr_args,a_vp),
769 VDESC_NO_OFFSET
770 };
771 struct vnodeop_desc vnop_getxattr_desc = {
772 0,
773 "vnop_getxattr",
774 0,
775 vop_getxattr_vp_offsets,
776 VDESC_NO_OFFSET,
777 VDESC_NO_OFFSET,
778 VDESC_NO_OFFSET,
779 VDESC_NO_OFFSET,
780 VOPARG_OFFSETOF(struct vnop_getxattr_args, a_context),
781 NULL
782 };
783
784 int vop_setxattr_vp_offsets[] = {
785 VOPARG_OFFSETOF(struct vnop_setxattr_args,a_vp),
786 VDESC_NO_OFFSET
787 };
788 struct vnodeop_desc vnop_setxattr_desc = {
789 0,
790 "vnop_setxattr",
791 0,
792 vop_setxattr_vp_offsets,
793 VDESC_NO_OFFSET,
794 VDESC_NO_OFFSET,
795 VDESC_NO_OFFSET,
796 VDESC_NO_OFFSET,
797 VOPARG_OFFSETOF(struct vnop_setxattr_args, a_context),
798 NULL
799 };
800
801 int vop_removexattr_vp_offsets[] = {
802 VOPARG_OFFSETOF(struct vnop_removexattr_args,a_vp),
803 VDESC_NO_OFFSET
804 };
805 struct vnodeop_desc vnop_removexattr_desc = {
806 0,
807 "vnop_removexattr",
808 0,
809 vop_removexattr_vp_offsets,
810 VDESC_NO_OFFSET,
811 VDESC_NO_OFFSET,
812 VDESC_NO_OFFSET,
813 VDESC_NO_OFFSET,
814 VOPARG_OFFSETOF(struct vnop_removexattr_args, a_context),
815 NULL
816 };
817
818 int vop_listxattr_vp_offsets[] = {
819 VOPARG_OFFSETOF(struct vnop_listxattr_args,a_vp),
820 VDESC_NO_OFFSET
821 };
822 struct vnodeop_desc vnop_listxattr_desc = {
823 0,
824 "vnop_listxattr",
825 0,
826 vop_listxattr_vp_offsets,
827 VDESC_NO_OFFSET,
828 VDESC_NO_OFFSET,
829 VDESC_NO_OFFSET,
830 VDESC_NO_OFFSET,
831 VOPARG_OFFSETOF(struct vnop_listxattr_args, a_context),
832 NULL
833 };
834
835 int vnop_blktooff_vp_offsets[] = {
836 VOPARG_OFFSETOF(struct vnop_blktooff_args,a_vp),
837 VDESC_NO_OFFSET
838 };
839 struct vnodeop_desc vnop_blktooff_desc = {
840 0,
841 "vnop_blktooff",
842 0,
843 vnop_blktooff_vp_offsets,
844 VDESC_NO_OFFSET,
845 VDESC_NO_OFFSET,
846 VDESC_NO_OFFSET,
847 VDESC_NO_OFFSET,
848 VDESC_NO_OFFSET,
849 NULL
850 };
851
852 int vnop_offtoblk_vp_offsets[] = {
853 VOPARG_OFFSETOF(struct vnop_offtoblk_args,a_vp),
854 VDESC_NO_OFFSET
855 };
856 struct vnodeop_desc vnop_offtoblk_desc = {
857 0,
858 "vnop_offtoblk",
859 0,
860 vnop_offtoblk_vp_offsets,
861 VDESC_NO_OFFSET,
862 VDESC_NO_OFFSET,
863 VDESC_NO_OFFSET,
864 VDESC_NO_OFFSET,
865 VDESC_NO_OFFSET,
866 NULL
867 };
868
869 int vnop_blockmap_vp_offsets[] = {
870 VOPARG_OFFSETOF(struct vnop_blockmap_args,a_vp),
871 VDESC_NO_OFFSET
872 };
873 struct vnodeop_desc vnop_blockmap_desc = {
874 0,
875 "vnop_blockmap",
876 0,
877 vnop_blockmap_vp_offsets,
878 VDESC_NO_OFFSET,
879 VDESC_NO_OFFSET,
880 VDESC_NO_OFFSET,
881 VDESC_NO_OFFSET,
882 VDESC_NO_OFFSET,
883 NULL
884 };
885
886 #if NAMEDSTREAMS
887 int vnop_getnamedstream_vp_offsets[] = {
888 VOPARG_OFFSETOF(struct vnop_getnamedstream_args, a_vp),
889 VDESC_NO_OFFSET
890 };
891 struct vnodeop_desc vnop_getnamedstream_desc = {
892 0,
893 "vnop_getnamedstream",
894 0,
895 vnop_getnamedstream_vp_offsets,
896 VOPARG_OFFSETOF(struct vnop_getnamedstream_args, a_svpp),
897 VDESC_NO_OFFSET,
898 VDESC_NO_OFFSET,
899 VOPARG_OFFSETOF(struct vnop_getnamedstream_args, a_name),
900 VOPARG_OFFSETOF(struct vnop_getnamedstream_args, a_context),
901 NULL
902 };
903
904 int vnop_makenamedstream_vp_offsets[] = {
905 VOPARG_OFFSETOF(struct vnop_makenamedstream_args, a_vp),
906 VDESC_NO_OFFSET
907 };
908 struct vnodeop_desc vnop_makenamedstream_desc = {
909 0,
910 "vnop_makenamedstream",
911 0, /* flags */
912 vnop_makenamedstream_vp_offsets,
913 VOPARG_OFFSETOF(struct vnop_makenamedstream_args, a_svpp),
914 VDESC_NO_OFFSET,
915 VDESC_NO_OFFSET,
916 VOPARG_OFFSETOF(struct vnop_makenamedstream_args, a_name),
917 VOPARG_OFFSETOF(struct vnop_makenamedstream_args, a_context),
918 NULL
919 };
920
921 int vnop_removenamedstream_vp_offsets[] = {
922 VOPARG_OFFSETOF(struct vnop_removenamedstream_args, a_vp),
923 VDESC_NO_OFFSET
924 };
925 struct vnodeop_desc vnop_removenamedstream_desc = {
926 0,
927 "vnop_removenamedstream",
928 0,
929 vnop_removenamedstream_vp_offsets,
930 VDESC_NO_OFFSET,
931 VDESC_NO_OFFSET,
932 VDESC_NO_OFFSET,
933 VOPARG_OFFSETOF(struct vnop_removenamedstream_args, a_name),
934 VOPARG_OFFSETOF(struct vnop_removenamedstream_args, a_context),
935 NULL
936 };
937 #else
938 /* These symbols are in the exports list so they need to always be defined. */
939 int vnop_getnamedstream_desc;
940 int vnop_makenamedstream_desc;
941 int vnop_removenamedstream_desc;
942 #endif
943
944 /* Special cases: */
945
946 int vnop_strategy_vp_offsets[] = {
947 VDESC_NO_OFFSET
948 };
949 struct vnodeop_desc vnop_strategy_desc = {
950 0,
951 "vnop_strategy",
952 0,
953 vnop_strategy_vp_offsets,
954 VDESC_NO_OFFSET,
955 VDESC_NO_OFFSET,
956 VDESC_NO_OFFSET,
957 VDESC_NO_OFFSET,
958 VDESC_NO_OFFSET,
959 NULL
960 };
961
962 int vnop_bwrite_vp_offsets[] = {
963 VDESC_NO_OFFSET
964 };
965 struct vnodeop_desc vnop_bwrite_desc = {
966 0,
967 "vnop_bwrite",
968 0,
969 vnop_bwrite_vp_offsets,
970 VDESC_NO_OFFSET,
971 VDESC_NO_OFFSET,
972 VDESC_NO_OFFSET,
973 VDESC_NO_OFFSET,
974 VDESC_NO_OFFSET,
975 NULL
976 };
977
978 /* End of special cases. */
979
980 struct vnodeop_desc *vfs_op_descs[] = {
981 &vnop_default_desc, /* MUST BE FIRST */
982 &vnop_strategy_desc, /* XXX: SPECIAL CASE */
983 &vnop_bwrite_desc, /* XXX: SPECIAL CASE */
984
985 &vnop_lookup_desc,
986 &vnop_create_desc,
987 &vnop_mknod_desc,
988 &vnop_whiteout_desc,
989 &vnop_open_desc,
990 &vnop_close_desc,
991 &vnop_access_desc,
992 &vnop_getattr_desc,
993 &vnop_setattr_desc,
994 &vnop_read_desc,
995 &vnop_write_desc,
996 &vnop_ioctl_desc,
997 &vnop_select_desc,
998 &vnop_exchange_desc,
999 &vnop_kqfilt_add_desc,
1000 &vnop_kqfilt_remove_desc,
1001 &vnop_setlabel_desc,
1002 &vnop_revoke_desc,
1003 &vnop_mmap_desc,
1004 &vnop_mnomap_desc,
1005 &vnop_fsync_desc,
1006 &vnop_remove_desc,
1007 &vnop_link_desc,
1008 &vnop_rename_desc,
1009 &vnop_mkdir_desc,
1010 &vnop_rmdir_desc,
1011 &vnop_symlink_desc,
1012 &vnop_readdir_desc,
1013 &vnop_readdirattr_desc,
1014 &vnop_readlink_desc,
1015 &vnop_inactive_desc,
1016 &vnop_reclaim_desc,
1017 &vnop_pathconf_desc,
1018 &vnop_advlock_desc,
1019 &vnop_allocate_desc,
1020 &vnop_pagein_desc,
1021 &vnop_pageout_desc,
1022 &vnop_searchfs_desc,
1023 &vnop_copyfile_desc,
1024 &vnop_getxattr_desc,
1025 &vnop_setxattr_desc,
1026 &vnop_removexattr_desc,
1027 &vnop_listxattr_desc,
1028 &vnop_blktooff_desc,
1029 &vnop_offtoblk_desc,
1030 &vnop_blockmap_desc,
1031 #if NAMEDSTREAMS
1032 &vnop_getnamedstream_desc,
1033 &vnop_makenamedstream_desc,
1034 &vnop_removenamedstream_desc,
1035 #endif
1036 NULL
1037 };
1038