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