]> git.saurik.com Git - apple/xnu.git/blob - bsd/vfs/vnode_if.c
xnu-2422.1.72.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_compound_open_vp_offsets[] = {
110 VOPARG_OFFSETOF(struct vnop_compound_open_args, a_dvp),
111 VDESC_NO_OFFSET
112 };
113
114 struct vnodeop_desc vnop_compound_open_desc = {
115 0,
116 "vnop_compound_open",
117 0 | VDESC_VP0_WILLRELE,
118 vnop_compound_open_vp_offsets,
119 VOPARG_OFFSETOF(struct vnop_compound_open_args, a_vpp),
120 VDESC_NO_OFFSET,
121 VDESC_NO_OFFSET,
122 VOPARG_OFFSETOF(struct vnop_compound_open_args, a_cnp),
123 VOPARG_OFFSETOF(struct vnop_compound_open_args, a_context),
124 NULL
125 };
126
127 int vnop_create_vp_offsets[] = {
128 VOPARG_OFFSETOF(struct vnop_create_args,a_dvp),
129 VDESC_NO_OFFSET
130 };
131 struct vnodeop_desc vnop_create_desc = {
132 0,
133 "vnop_create",
134 0 | VDESC_VP0_WILLRELE,
135 vnop_create_vp_offsets,
136 VOPARG_OFFSETOF(struct vnop_create_args, a_vpp),
137 VDESC_NO_OFFSET,
138 VDESC_NO_OFFSET,
139 VOPARG_OFFSETOF(struct vnop_create_args, a_cnp),
140 VOPARG_OFFSETOF(struct vnop_create_args, a_context),
141 NULL
142 };
143
144 int vnop_whiteout_vp_offsets[] = {
145 VOPARG_OFFSETOF(struct vnop_whiteout_args,a_dvp),
146 VDESC_NO_OFFSET
147 };
148 struct vnodeop_desc vnop_whiteout_desc = {
149 0,
150 "vnop_whiteout",
151 0 | VDESC_VP0_WILLRELE,
152 vnop_whiteout_vp_offsets,
153 VDESC_NO_OFFSET,
154 VDESC_NO_OFFSET,
155 VDESC_NO_OFFSET,
156 VOPARG_OFFSETOF(struct vnop_whiteout_args, a_cnp),
157 VOPARG_OFFSETOF(struct vnop_whiteout_args, a_context),
158 NULL
159 };
160
161 int vnop_mknod_vp_offsets[] = {
162 VOPARG_OFFSETOF(struct vnop_mknod_args,a_dvp),
163 VDESC_NO_OFFSET
164 };
165 struct vnodeop_desc vnop_mknod_desc = {
166 0,
167 "vnop_mknod",
168 0 | VDESC_VP0_WILLRELE | VDESC_VPP_WILLRELE,
169 vnop_mknod_vp_offsets,
170 VOPARG_OFFSETOF(struct vnop_mknod_args, a_vpp),
171 VDESC_NO_OFFSET,
172 VDESC_NO_OFFSET,
173 VOPARG_OFFSETOF(struct vnop_mknod_args, a_cnp),
174 VOPARG_OFFSETOF(struct vnop_mknod_args, a_context),
175 NULL
176 };
177
178 int vnop_open_vp_offsets[] = {
179 VOPARG_OFFSETOF(struct vnop_open_args,a_vp),
180 VDESC_NO_OFFSET
181 };
182 struct vnodeop_desc vnop_open_desc = {
183 0,
184 "vnop_open",
185 0,
186 vnop_open_vp_offsets,
187 VDESC_NO_OFFSET,
188 VDESC_NO_OFFSET,
189 VDESC_NO_OFFSET,
190 VDESC_NO_OFFSET,
191 VOPARG_OFFSETOF(struct vnop_open_args, a_context),
192 NULL
193 };
194
195 int vnop_close_vp_offsets[] = {
196 VOPARG_OFFSETOF(struct vnop_close_args,a_vp),
197 VDESC_NO_OFFSET
198 };
199 struct vnodeop_desc vnop_close_desc = {
200 0,
201 "vnop_close",
202 0,
203 vnop_close_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_access_vp_offsets[] = {
213 VOPARG_OFFSETOF(struct vnop_access_args,a_vp),
214 VDESC_NO_OFFSET
215 };
216 struct vnodeop_desc vnop_access_desc = {
217 0,
218 "vnop_access",
219 0,
220 vnop_access_vp_offsets,
221 VDESC_NO_OFFSET,
222 VDESC_NO_OFFSET,
223 VDESC_NO_OFFSET,
224 VDESC_NO_OFFSET,
225 VOPARG_OFFSETOF(struct vnop_close_args, a_context),
226 NULL
227 };
228
229 int vnop_getattr_vp_offsets[] = {
230 VOPARG_OFFSETOF(struct vnop_getattr_args,a_vp),
231 VDESC_NO_OFFSET
232 };
233 struct vnodeop_desc vnop_getattr_desc = {
234 0,
235 "vnop_getattr",
236 0,
237 vnop_getattr_vp_offsets,
238 VDESC_NO_OFFSET,
239 VDESC_NO_OFFSET,
240 VDESC_NO_OFFSET,
241 VDESC_NO_OFFSET,
242 VOPARG_OFFSETOF(struct vnop_getattr_args, a_context),
243 NULL
244 };
245
246 int vnop_setattr_vp_offsets[] = {
247 VOPARG_OFFSETOF(struct vnop_setattr_args,a_vp),
248 VDESC_NO_OFFSET
249 };
250 struct vnodeop_desc vnop_setattr_desc = {
251 0,
252 "vnop_setattr",
253 0,
254 vnop_setattr_vp_offsets,
255 VDESC_NO_OFFSET,
256 VDESC_NO_OFFSET,
257 VDESC_NO_OFFSET,
258 VDESC_NO_OFFSET,
259 VOPARG_OFFSETOF(struct vnop_setattr_args, a_context),
260 NULL
261 };
262
263 int vnop_read_vp_offsets[] = {
264 VOPARG_OFFSETOF(struct vnop_read_args,a_vp),
265 VDESC_NO_OFFSET
266 };
267 struct vnodeop_desc vnop_read_desc = {
268 0,
269 "vnop_read",
270 0,
271 vnop_read_vp_offsets,
272 VDESC_NO_OFFSET,
273 VDESC_NO_OFFSET,
274 VDESC_NO_OFFSET,
275 VDESC_NO_OFFSET,
276 VOPARG_OFFSETOF(struct vnop_read_args, a_context),
277 NULL
278 };
279
280 int vnop_write_vp_offsets[] = {
281 VOPARG_OFFSETOF(struct vnop_write_args,a_vp),
282 VDESC_NO_OFFSET
283 };
284 struct vnodeop_desc vnop_write_desc = {
285 0,
286 "vnop_write",
287 0,
288 vnop_write_vp_offsets,
289 VDESC_NO_OFFSET,
290 VDESC_NO_OFFSET,
291 VDESC_NO_OFFSET,
292 VDESC_NO_OFFSET,
293 VOPARG_OFFSETOF(struct vnop_write_args, a_context),
294 NULL
295 };
296
297 int vnop_ioctl_vp_offsets[] = {
298 VOPARG_OFFSETOF(struct vnop_ioctl_args,a_vp),
299 VDESC_NO_OFFSET
300 };
301 struct vnodeop_desc vnop_ioctl_desc = {
302 0,
303 "vnop_ioctl",
304 0,
305 vnop_ioctl_vp_offsets,
306 VDESC_NO_OFFSET,
307 VDESC_NO_OFFSET,
308 VDESC_NO_OFFSET,
309 VDESC_NO_OFFSET,
310 VOPARG_OFFSETOF(struct vnop_ioctl_args, a_context),
311 NULL
312 };
313
314 int vnop_select_vp_offsets[] = {
315 VOPARG_OFFSETOF(struct vnop_select_args,a_vp),
316 VDESC_NO_OFFSET
317 };
318 struct vnodeop_desc vnop_select_desc = {
319 0,
320 "vnop_select",
321 0,
322 vnop_select_vp_offsets,
323 VDESC_NO_OFFSET,
324 VDESC_NO_OFFSET,
325 VDESC_NO_OFFSET,
326 VDESC_NO_OFFSET,
327 VOPARG_OFFSETOF(struct vnop_select_args, a_context),
328 NULL
329 };
330
331 int vnop_exchange_vp_offsets[] = {
332 VOPARG_OFFSETOF(struct vnop_exchange_args,a_fvp),
333 VOPARG_OFFSETOF(struct vnop_exchange_args,a_tvp),
334 VDESC_NO_OFFSET
335 };
336 struct vnodeop_desc vnop_exchange_desc = {
337 0,
338 "vnop_exchange",
339 0,
340 vnop_exchange_vp_offsets,
341 VDESC_NO_OFFSET,
342 VDESC_NO_OFFSET,
343 VDESC_NO_OFFSET,
344 VDESC_NO_OFFSET,
345 VOPARG_OFFSETOF(struct vnop_exchange_args, a_context),
346 NULL
347 };
348
349 int vnop_kqfilt_add_vp_offsets[] = {
350 VOPARG_OFFSETOF(struct vnop_kqfilt_add_args,a_vp),
351 VDESC_NO_OFFSET
352 };
353 struct vnodeop_desc vnop_kqfilt_add_desc = {
354 0,
355 "vnop_kqfilt_add",
356 0,
357 vnop_kqfilt_add_vp_offsets,
358 VDESC_NO_OFFSET,
359 VDESC_NO_OFFSET,
360 VDESC_NO_OFFSET,
361 VDESC_NO_OFFSET,
362 VOPARG_OFFSETOF(struct vnop_kqfilt_add_args, a_context),
363 NULL
364 };
365
366 int vnop_kqfilt_remove_vp_offsets[] = {
367 VOPARG_OFFSETOF(struct vnop_kqfilt_remove_args,a_vp),
368 VDESC_NO_OFFSET
369 };
370 struct vnodeop_desc vnop_kqfilt_remove_desc = {
371 0,
372 "vnop_kqfilt_remove",
373 0,
374 vnop_kqfilt_remove_vp_offsets,
375 VDESC_NO_OFFSET,
376 VDESC_NO_OFFSET,
377 VDESC_NO_OFFSET,
378 VDESC_NO_OFFSET,
379 VOPARG_OFFSETOF(struct vnop_kqfilt_remove_args, a_context),
380 NULL
381 };
382
383 int vnop_monitor_vp_offsets[] = {
384 VOPARG_OFFSETOF(struct vnop_monitor_args,a_vp),
385 VDESC_NO_OFFSET
386 };
387 struct vnodeop_desc vnop_monitor_desc = {
388 0,
389 "vnop_monitor",
390 0,
391 vnop_monitor_vp_offsets,
392 VDESC_NO_OFFSET,
393 VDESC_NO_OFFSET,
394 VDESC_NO_OFFSET,
395 VDESC_NO_OFFSET,
396 VOPARG_OFFSETOF(struct vnop_monitor_args, a_context),
397 NULL
398 };
399
400 int vnop_setlabel_vp_offsets[] = {
401 VOPARG_OFFSETOF(struct vnop_setlabel_args,a_vp),
402 VDESC_NO_OFFSET
403 };
404 struct vnodeop_desc vnop_setlabel_desc = {
405 0,
406 "vnop_setlabel",
407 0,
408 vnop_setlabel_vp_offsets,
409 VDESC_NO_OFFSET,
410 VDESC_NO_OFFSET,
411 VDESC_NO_OFFSET,
412 VDESC_NO_OFFSET,
413 VOPARG_OFFSETOF(struct vnop_setlabel_args, a_context),
414 NULL,
415 };
416
417 int vnop_revoke_vp_offsets[] = {
418 VOPARG_OFFSETOF(struct vnop_revoke_args,a_vp),
419 VDESC_NO_OFFSET
420 };
421 struct vnodeop_desc vnop_revoke_desc = {
422 0,
423 "vnop_revoke",
424 0,
425 vnop_revoke_vp_offsets,
426 VDESC_NO_OFFSET,
427 VDESC_NO_OFFSET,
428 VDESC_NO_OFFSET,
429 VDESC_NO_OFFSET,
430 VDESC_NO_OFFSET,
431 NULL
432 };
433
434
435 int vnop_mmap_vp_offsets[] = {
436 VOPARG_OFFSETOF(struct vnop_mmap_args,a_vp),
437 VDESC_NO_OFFSET
438 };
439 struct vnodeop_desc vnop_mmap_desc = {
440 0,
441 "vnop_mmap",
442 0,
443 vnop_mmap_vp_offsets,
444 VDESC_NO_OFFSET,
445 VDESC_NO_OFFSET,
446 VDESC_NO_OFFSET,
447 VDESC_NO_OFFSET,
448 VDESC_NO_OFFSET,
449 NULL
450 };
451
452
453 int vnop_mnomap_vp_offsets[] = {
454 VOPARG_OFFSETOF(struct vnop_mnomap_args,a_vp),
455 VDESC_NO_OFFSET
456 };
457 struct vnodeop_desc vnop_mnomap_desc = {
458 0,
459 "vnop_mnomap",
460 0,
461 vnop_mnomap_vp_offsets,
462 VDESC_NO_OFFSET,
463 VDESC_NO_OFFSET,
464 VDESC_NO_OFFSET,
465 VDESC_NO_OFFSET,
466 VDESC_NO_OFFSET,
467 NULL
468 };
469
470
471 int vnop_fsync_vp_offsets[] = {
472 VOPARG_OFFSETOF(struct vnop_fsync_args,a_vp),
473 VDESC_NO_OFFSET
474 };
475 struct vnodeop_desc vnop_fsync_desc = {
476 0,
477 "vnop_fsync",
478 0,
479 vnop_fsync_vp_offsets,
480 VDESC_NO_OFFSET,
481 VDESC_NO_OFFSET,
482 VDESC_NO_OFFSET,
483 VDESC_NO_OFFSET,
484 VOPARG_OFFSETOF(struct vnop_fsync_args, a_context),
485 NULL
486 };
487
488 int vnop_remove_vp_offsets[] = {
489 VOPARG_OFFSETOF(struct vnop_remove_args,a_dvp),
490 VOPARG_OFFSETOF(struct vnop_remove_args,a_vp),
491 VDESC_NO_OFFSET
492 };
493 struct vnodeop_desc vnop_remove_desc = {
494 0,
495 "vnop_remove",
496 0 | VDESC_VP0_WILLRELE | VDESC_VP1_WILLRELE,
497 vnop_remove_vp_offsets,
498 VDESC_NO_OFFSET,
499 VDESC_NO_OFFSET,
500 VDESC_NO_OFFSET,
501 VOPARG_OFFSETOF(struct vnop_remove_args, a_cnp),
502 VOPARG_OFFSETOF(struct vnop_remove_args, a_context),
503 NULL
504 };
505
506 int vnop_remove_extended_vp_offsets[] = {
507 VOPARG_OFFSETOF(struct vnop_remove_args,a_dvp),
508 VDESC_NO_OFFSET
509 };
510 struct vnodeop_desc vnop_compound_remove_desc = {
511 0,
512 "vnop_compound_remove",
513 0,
514 vnop_remove_vp_offsets,
515 VOPARG_OFFSETOF(struct vnop_compound_remove_args, a_vpp),
516 VDESC_NO_OFFSET,
517 VDESC_NO_OFFSET,
518 VOPARG_OFFSETOF(struct vnop_remove_args, a_cnp),
519 VOPARG_OFFSETOF(struct vnop_remove_args, a_context),
520 NULL
521 };
522
523 int vnop_link_vp_offsets[] = {
524 VOPARG_OFFSETOF(struct vnop_link_args,a_vp),
525 VOPARG_OFFSETOF(struct vnop_link_args,a_tdvp),
526 VDESC_NO_OFFSET
527 };
528 struct vnodeop_desc vnop_link_desc = {
529 0,
530 "vnop_link",
531 0 | VDESC_VP1_WILLRELE,
532 vnop_link_vp_offsets,
533 VDESC_NO_OFFSET,
534 VDESC_NO_OFFSET,
535 VDESC_NO_OFFSET,
536 VOPARG_OFFSETOF(struct vnop_link_args, a_cnp),
537 VOPARG_OFFSETOF(struct vnop_link_args, a_context),
538 NULL
539 };
540
541 int vnop_rename_vp_offsets[] = {
542 VOPARG_OFFSETOF(struct vnop_rename_args,a_fdvp),
543 VOPARG_OFFSETOF(struct vnop_rename_args,a_fvp),
544 VOPARG_OFFSETOF(struct vnop_rename_args,a_tdvp),
545 VOPARG_OFFSETOF(struct vnop_rename_args,a_tvp),
546 VDESC_NO_OFFSET
547 };
548 struct vnodeop_desc vnop_rename_desc = {
549 0,
550 "vnop_rename",
551 0 | VDESC_VP0_WILLRELE | VDESC_VP1_WILLRELE | VDESC_VP2_WILLRELE | VDESC_VP3_WILLRELE,
552 vnop_rename_vp_offsets,
553 VDESC_NO_OFFSET,
554 VDESC_NO_OFFSET,
555 VDESC_NO_OFFSET,
556 VOPARG_OFFSETOF(struct vnop_rename_args, a_fcnp),
557 VOPARG_OFFSETOF(struct vnop_rename_args, a_context),
558 NULL
559 };
560
561 int vnop_compound_rename_vp_offsets[] = {
562 VOPARG_OFFSETOF(struct vnop_compound_rename_args,a_fdvp),
563 VOPARG_OFFSETOF(struct vnop_compound_rename_args,a_fvpp),
564 VOPARG_OFFSETOF(struct vnop_compound_rename_args,a_tdvp),
565 VOPARG_OFFSETOF(struct vnop_compound_rename_args,a_tvpp),
566 VDESC_NO_OFFSET
567 };
568 struct vnodeop_desc vnop_compound_rename_desc = {
569 0,
570 "vnop_compound_rename",
571 0 | VDESC_VP0_WILLRELE | VDESC_VP1_WILLRELE | VDESC_VP2_WILLRELE | VDESC_VP3_WILLRELE,
572 vnop_compound_rename_vp_offsets,
573 VDESC_NO_OFFSET,
574 VDESC_NO_OFFSET,
575 VDESC_NO_OFFSET,
576 VOPARG_OFFSETOF(struct vnop_compound_rename_args, a_fcnp),
577 VOPARG_OFFSETOF(struct vnop_compound_rename_args, a_context),
578 NULL
579 };
580
581 int vnop_mkdir_vp_offsets[] = {
582 VOPARG_OFFSETOF(struct vnop_mkdir_args,a_dvp),
583 VDESC_NO_OFFSET
584 };
585 struct vnodeop_desc vnop_mkdir_desc = {
586 0,
587 "vnop_mkdir",
588 0 | VDESC_VP0_WILLRELE,
589 vnop_mkdir_vp_offsets,
590 VOPARG_OFFSETOF(struct vnop_mkdir_args, a_vpp),
591 VDESC_NO_OFFSET,
592 VDESC_NO_OFFSET,
593 VOPARG_OFFSETOF(struct vnop_mkdir_args, a_cnp),
594 VOPARG_OFFSETOF(struct vnop_mkdir_args, a_context),
595 NULL
596 };
597
598 int vnop_compound_mkdir_vp_offsets[] = {
599 VOPARG_OFFSETOF(struct vnop_compound_mkdir_args,a_dvp),
600 VDESC_NO_OFFSET
601 };
602 struct vnodeop_desc vnop_compound_mkdir_desc = {
603 0,
604 "vnop_compound_mkdir",
605 0 | VDESC_VP0_WILLRELE,
606 vnop_compound_mkdir_vp_offsets,
607 VOPARG_OFFSETOF(struct vnop_compound_mkdir_args, a_vpp),
608 VDESC_NO_OFFSET,
609 VDESC_NO_OFFSET,
610 VOPARG_OFFSETOF(struct vnop_compound_mkdir_args, a_cnp),
611 VOPARG_OFFSETOF(struct vnop_compound_mkdir_args, a_context),
612 NULL
613 };
614
615
616 int vnop_rmdir_vp_offsets[] = {
617 VOPARG_OFFSETOF(struct vnop_rmdir_args,a_dvp),
618 VOPARG_OFFSETOF(struct vnop_rmdir_args,a_vp),
619 VDESC_NO_OFFSET
620 };
621 struct vnodeop_desc vnop_rmdir_desc = {
622 0,
623 "vnop_rmdir",
624 0 | VDESC_VP0_WILLRELE | VDESC_VP1_WILLRELE,
625 vnop_rmdir_vp_offsets,
626 VDESC_NO_OFFSET,
627 VDESC_NO_OFFSET,
628 VDESC_NO_OFFSET,
629 VOPARG_OFFSETOF(struct vnop_rmdir_args, a_cnp),
630 VOPARG_OFFSETOF(struct vnop_rmdir_args, a_context),
631 NULL
632 };
633
634 int vnop_compound_rmdir_vp_offsets[] = {
635 VOPARG_OFFSETOF(struct vnop_compound_rmdir_args,a_dvp),
636 VDESC_NO_OFFSET
637 };
638 struct vnodeop_desc vnop_compound_rmdir_desc = {
639 0,
640 "vnop_compound_rmdir",
641 0 | VDESC_VP0_WILLRELE | VDESC_VP1_WILLRELE,
642 vnop_rmdir_vp_offsets,
643 VDESC_NO_OFFSET,
644 VDESC_NO_OFFSET,
645 VDESC_NO_OFFSET,
646 VOPARG_OFFSETOF(struct vnop_compound_rmdir_args, a_cnp),
647 VOPARG_OFFSETOF(struct vnop_compound_rmdir_args, a_context),
648 NULL
649 };
650
651 int vnop_symlink_vp_offsets[] = {
652 VOPARG_OFFSETOF(struct vnop_symlink_args,a_dvp),
653 VDESC_NO_OFFSET
654 };
655 struct vnodeop_desc vnop_symlink_desc = {
656 0,
657 "vnop_symlink",
658 0 | VDESC_VP0_WILLRELE | VDESC_VPP_WILLRELE,
659 vnop_symlink_vp_offsets,
660 VOPARG_OFFSETOF(struct vnop_symlink_args, a_vpp),
661 VDESC_NO_OFFSET,
662 VDESC_NO_OFFSET,
663 VOPARG_OFFSETOF(struct vnop_symlink_args, a_cnp),
664 VOPARG_OFFSETOF(struct vnop_symlink_args, a_context),
665 NULL
666 };
667
668 int vnop_readdir_vp_offsets[] = {
669 VOPARG_OFFSETOF(struct vnop_readdir_args,a_vp),
670 VDESC_NO_OFFSET
671 };
672 struct vnodeop_desc vnop_readdir_desc = {
673 0,
674 "vnop_readdir",
675 0,
676 vnop_readdir_vp_offsets,
677 VDESC_NO_OFFSET,
678 VDESC_NO_OFFSET,
679 VDESC_NO_OFFSET,
680 VDESC_NO_OFFSET,
681 VOPARG_OFFSETOF(struct vnop_symlink_args, a_context),
682 NULL
683 };
684
685 int vnop_readdirattr_vp_offsets[] = {
686 VOPARG_OFFSETOF(struct vnop_readdirattr_args,a_vp),
687 VDESC_NO_OFFSET
688 };
689 struct vnodeop_desc vnop_readdirattr_desc = {
690 0,
691 "vnop_readdirattr",
692 0,
693 vnop_readdirattr_vp_offsets,
694 VDESC_NO_OFFSET,
695 VDESC_NO_OFFSET,
696 VDESC_NO_OFFSET,
697 VDESC_NO_OFFSET,
698 VOPARG_OFFSETOF(struct vnop_readdirattr_args, a_context),
699 NULL
700 };
701
702 int vnop_readlink_vp_offsets[] = {
703 VOPARG_OFFSETOF(struct vnop_readlink_args,a_vp),
704 VDESC_NO_OFFSET
705 };
706 struct vnodeop_desc vnop_readlink_desc = {
707 0,
708 "vnop_readlink",
709 0,
710 vnop_readlink_vp_offsets,
711 VDESC_NO_OFFSET,
712 VDESC_NO_OFFSET,
713 VDESC_NO_OFFSET,
714 VDESC_NO_OFFSET,
715 VOPARG_OFFSETOF(struct vnop_readlink_args, a_context),
716 NULL
717 };
718
719 int vnop_inactive_vp_offsets[] = {
720 VOPARG_OFFSETOF(struct vnop_inactive_args,a_vp),
721 VDESC_NO_OFFSET
722 };
723 struct vnodeop_desc vnop_inactive_desc = {
724 0,
725 "vnop_inactive",
726 0,
727 vnop_inactive_vp_offsets,
728 VDESC_NO_OFFSET,
729 VDESC_NO_OFFSET,
730 VDESC_NO_OFFSET,
731 VDESC_NO_OFFSET,
732 VOPARG_OFFSETOF(struct vnop_inactive_args, a_context),
733 NULL
734 };
735
736 int vnop_reclaim_vp_offsets[] = {
737 VOPARG_OFFSETOF(struct vnop_reclaim_args,a_vp),
738 VDESC_NO_OFFSET
739 };
740 struct vnodeop_desc vnop_reclaim_desc = {
741 0,
742 "vnop_reclaim",
743 0,
744 vnop_reclaim_vp_offsets,
745 VDESC_NO_OFFSET,
746 VDESC_NO_OFFSET,
747 VDESC_NO_OFFSET,
748 VDESC_NO_OFFSET,
749 VOPARG_OFFSETOF(struct vnop_reclaim_args, a_context),
750 NULL
751 };
752
753 int vnop_pathconf_vp_offsets[] = {
754 VOPARG_OFFSETOF(struct vnop_pathconf_args,a_vp),
755 VDESC_NO_OFFSET
756 };
757 struct vnodeop_desc vnop_pathconf_desc = {
758 0,
759 "vnop_pathconf",
760 0,
761 vnop_pathconf_vp_offsets,
762 VDESC_NO_OFFSET,
763 VDESC_NO_OFFSET,
764 VDESC_NO_OFFSET,
765 VDESC_NO_OFFSET,
766 VOPARG_OFFSETOF(struct vnop_pathconf_args, a_context),
767 NULL
768 };
769
770 int vnop_advlock_vp_offsets[] = {
771 VOPARG_OFFSETOF(struct vnop_advlock_args,a_vp),
772 VDESC_NO_OFFSET
773 };
774 struct vnodeop_desc vnop_advlock_desc = {
775 0,
776 "vnop_advlock",
777 0,
778 vnop_advlock_vp_offsets,
779 VDESC_NO_OFFSET,
780 VDESC_NO_OFFSET,
781 VDESC_NO_OFFSET,
782 VDESC_NO_OFFSET,
783 VOPARG_OFFSETOF(struct vnop_advlock_args, a_context),
784 NULL
785 };
786
787 int vnop_allocate_vp_offsets[] = {
788 VOPARG_OFFSETOF(struct vnop_allocate_args,a_vp),
789 VDESC_NO_OFFSET
790 };
791 struct vnodeop_desc vnop_allocate_desc = {
792 0,
793 "vnop_allocate",
794 0,
795 vnop_allocate_vp_offsets,
796 VDESC_NO_OFFSET,
797 VDESC_NO_OFFSET,
798 VDESC_NO_OFFSET,
799 VDESC_NO_OFFSET,
800 VOPARG_OFFSETOF(struct vnop_allocate_args, a_context),
801 NULL
802 };
803
804 int vnop_pagein_vp_offsets[] = {
805 VOPARG_OFFSETOF(struct vnop_pagein_args,a_vp),
806 VDESC_NO_OFFSET
807 };
808 struct vnodeop_desc vnop_pagein_desc = {
809 0,
810 "vnop_pagein",
811 0,
812 vnop_pagein_vp_offsets,
813 VDESC_NO_OFFSET,
814 VDESC_NO_OFFSET,
815 VDESC_NO_OFFSET,
816 VDESC_NO_OFFSET,
817 VOPARG_OFFSETOF(struct vnop_pagein_args, a_context),
818 NULL
819 };
820
821 int vnop_pageout_vp_offsets[] = {
822 VOPARG_OFFSETOF(struct vnop_pageout_args,a_vp),
823 VDESC_NO_OFFSET
824 };
825 struct vnodeop_desc vnop_pageout_desc = {
826 0,
827 "vnop_pageout",
828 0,
829 vnop_pageout_vp_offsets,
830 VDESC_NO_OFFSET,
831 VDESC_NO_OFFSET,
832 VDESC_NO_OFFSET,
833 VDESC_NO_OFFSET,
834 VOPARG_OFFSETOF(struct vnop_pageout_args, a_context),
835 NULL
836 };
837
838 int vnop_searchfs_vp_offsets[] = {
839 VOPARG_OFFSETOF(struct vnop_searchfs_args,a_vp),
840 VDESC_NO_OFFSET
841 };
842 struct vnodeop_desc vnop_searchfs_desc = {
843 0,
844 "vnop_searchfs",
845 0,
846 vnop_searchfs_vp_offsets,
847 VDESC_NO_OFFSET,
848 VDESC_NO_OFFSET,
849 VDESC_NO_OFFSET,
850 VDESC_NO_OFFSET,
851 VDESC_NO_OFFSET,
852 NULL
853 };
854
855 int vnop_copyfile_vp_offsets[] = {
856 VOPARG_OFFSETOF(struct vnop_copyfile_args,a_fvp),
857 VOPARG_OFFSETOF(struct vnop_copyfile_args,a_tdvp),
858 VOPARG_OFFSETOF(struct vnop_copyfile_args,a_tvp),
859 VDESC_NO_OFFSET
860 };
861 struct vnodeop_desc vnop_copyfile_desc = {
862 0,
863 "vnop_copyfile",
864 0 | VDESC_VP0_WILLRELE | VDESC_VP1_WILLRELE | VDESC_VP2_WILLRELE,
865 vnop_copyfile_vp_offsets,
866 VDESC_NO_OFFSET,
867 VDESC_NO_OFFSET,
868 VDESC_NO_OFFSET,
869 VOPARG_OFFSETOF(struct vnop_copyfile_args, a_tcnp),
870 VDESC_NO_OFFSET,
871 NULL
872 };
873
874 int vop_getxattr_vp_offsets[] = {
875 VOPARG_OFFSETOF(struct vnop_getxattr_args,a_vp),
876 VDESC_NO_OFFSET
877 };
878 struct vnodeop_desc vnop_getxattr_desc = {
879 0,
880 "vnop_getxattr",
881 0,
882 vop_getxattr_vp_offsets,
883 VDESC_NO_OFFSET,
884 VDESC_NO_OFFSET,
885 VDESC_NO_OFFSET,
886 VDESC_NO_OFFSET,
887 VOPARG_OFFSETOF(struct vnop_getxattr_args, a_context),
888 NULL
889 };
890
891 int vop_setxattr_vp_offsets[] = {
892 VOPARG_OFFSETOF(struct vnop_setxattr_args,a_vp),
893 VDESC_NO_OFFSET
894 };
895 struct vnodeop_desc vnop_setxattr_desc = {
896 0,
897 "vnop_setxattr",
898 0,
899 vop_setxattr_vp_offsets,
900 VDESC_NO_OFFSET,
901 VDESC_NO_OFFSET,
902 VDESC_NO_OFFSET,
903 VDESC_NO_OFFSET,
904 VOPARG_OFFSETOF(struct vnop_setxattr_args, a_context),
905 NULL
906 };
907
908 int vop_removexattr_vp_offsets[] = {
909 VOPARG_OFFSETOF(struct vnop_removexattr_args,a_vp),
910 VDESC_NO_OFFSET
911 };
912 struct vnodeop_desc vnop_removexattr_desc = {
913 0,
914 "vnop_removexattr",
915 0,
916 vop_removexattr_vp_offsets,
917 VDESC_NO_OFFSET,
918 VDESC_NO_OFFSET,
919 VDESC_NO_OFFSET,
920 VDESC_NO_OFFSET,
921 VOPARG_OFFSETOF(struct vnop_removexattr_args, a_context),
922 NULL
923 };
924
925 int vop_listxattr_vp_offsets[] = {
926 VOPARG_OFFSETOF(struct vnop_listxattr_args,a_vp),
927 VDESC_NO_OFFSET
928 };
929 struct vnodeop_desc vnop_listxattr_desc = {
930 0,
931 "vnop_listxattr",
932 0,
933 vop_listxattr_vp_offsets,
934 VDESC_NO_OFFSET,
935 VDESC_NO_OFFSET,
936 VDESC_NO_OFFSET,
937 VDESC_NO_OFFSET,
938 VOPARG_OFFSETOF(struct vnop_listxattr_args, a_context),
939 NULL
940 };
941
942 int vnop_blktooff_vp_offsets[] = {
943 VOPARG_OFFSETOF(struct vnop_blktooff_args,a_vp),
944 VDESC_NO_OFFSET
945 };
946 struct vnodeop_desc vnop_blktooff_desc = {
947 0,
948 "vnop_blktooff",
949 0,
950 vnop_blktooff_vp_offsets,
951 VDESC_NO_OFFSET,
952 VDESC_NO_OFFSET,
953 VDESC_NO_OFFSET,
954 VDESC_NO_OFFSET,
955 VDESC_NO_OFFSET,
956 NULL
957 };
958
959 int vnop_offtoblk_vp_offsets[] = {
960 VOPARG_OFFSETOF(struct vnop_offtoblk_args,a_vp),
961 VDESC_NO_OFFSET
962 };
963 struct vnodeop_desc vnop_offtoblk_desc = {
964 0,
965 "vnop_offtoblk",
966 0,
967 vnop_offtoblk_vp_offsets,
968 VDESC_NO_OFFSET,
969 VDESC_NO_OFFSET,
970 VDESC_NO_OFFSET,
971 VDESC_NO_OFFSET,
972 VDESC_NO_OFFSET,
973 NULL
974 };
975
976 int vnop_blockmap_vp_offsets[] = {
977 VOPARG_OFFSETOF(struct vnop_blockmap_args,a_vp),
978 VDESC_NO_OFFSET
979 };
980 struct vnodeop_desc vnop_blockmap_desc = {
981 0,
982 "vnop_blockmap",
983 0,
984 vnop_blockmap_vp_offsets,
985 VDESC_NO_OFFSET,
986 VDESC_NO_OFFSET,
987 VDESC_NO_OFFSET,
988 VDESC_NO_OFFSET,
989 VDESC_NO_OFFSET,
990 NULL
991 };
992
993 #if NAMEDSTREAMS
994 int vnop_getnamedstream_vp_offsets[] = {
995 VOPARG_OFFSETOF(struct vnop_getnamedstream_args, a_vp),
996 VDESC_NO_OFFSET
997 };
998 struct vnodeop_desc vnop_getnamedstream_desc = {
999 0,
1000 "vnop_getnamedstream",
1001 0,
1002 vnop_getnamedstream_vp_offsets,
1003 VOPARG_OFFSETOF(struct vnop_getnamedstream_args, a_svpp),
1004 VDESC_NO_OFFSET,
1005 VDESC_NO_OFFSET,
1006 VOPARG_OFFSETOF(struct vnop_getnamedstream_args, a_name),
1007 VOPARG_OFFSETOF(struct vnop_getnamedstream_args, a_context),
1008 NULL
1009 };
1010
1011 int vnop_makenamedstream_vp_offsets[] = {
1012 VOPARG_OFFSETOF(struct vnop_makenamedstream_args, a_vp),
1013 VDESC_NO_OFFSET
1014 };
1015 struct vnodeop_desc vnop_makenamedstream_desc = {
1016 0,
1017 "vnop_makenamedstream",
1018 0, /* flags */
1019 vnop_makenamedstream_vp_offsets,
1020 VOPARG_OFFSETOF(struct vnop_makenamedstream_args, a_svpp),
1021 VDESC_NO_OFFSET,
1022 VDESC_NO_OFFSET,
1023 VOPARG_OFFSETOF(struct vnop_makenamedstream_args, a_name),
1024 VOPARG_OFFSETOF(struct vnop_makenamedstream_args, a_context),
1025 NULL
1026 };
1027
1028 int vnop_removenamedstream_vp_offsets[] = {
1029 VOPARG_OFFSETOF(struct vnop_removenamedstream_args, a_vp),
1030 VDESC_NO_OFFSET
1031 };
1032 struct vnodeop_desc vnop_removenamedstream_desc = {
1033 0,
1034 "vnop_removenamedstream",
1035 0,
1036 vnop_removenamedstream_vp_offsets,
1037 VDESC_NO_OFFSET,
1038 VDESC_NO_OFFSET,
1039 VDESC_NO_OFFSET,
1040 VOPARG_OFFSETOF(struct vnop_removenamedstream_args, a_name),
1041 VOPARG_OFFSETOF(struct vnop_removenamedstream_args, a_context),
1042 NULL
1043 };
1044 #else
1045 /* These symbols are in the exports list so they need to always be defined. */
1046 int vnop_getnamedstream_desc;
1047 int vnop_makenamedstream_desc;
1048 int vnop_removenamedstream_desc;
1049 #endif
1050
1051 /* Special cases: */
1052
1053 int vnop_strategy_vp_offsets[] = {
1054 VDESC_NO_OFFSET
1055 };
1056 struct vnodeop_desc vnop_strategy_desc = {
1057 0,
1058 "vnop_strategy",
1059 0,
1060 vnop_strategy_vp_offsets,
1061 VDESC_NO_OFFSET,
1062 VDESC_NO_OFFSET,
1063 VDESC_NO_OFFSET,
1064 VDESC_NO_OFFSET,
1065 VDESC_NO_OFFSET,
1066 NULL
1067 };
1068
1069 int vnop_bwrite_vp_offsets[] = {
1070 VDESC_NO_OFFSET
1071 };
1072 struct vnodeop_desc vnop_bwrite_desc = {
1073 0,
1074 "vnop_bwrite",
1075 0,
1076 vnop_bwrite_vp_offsets,
1077 VDESC_NO_OFFSET,
1078 VDESC_NO_OFFSET,
1079 VDESC_NO_OFFSET,
1080 VDESC_NO_OFFSET,
1081 VDESC_NO_OFFSET,
1082 NULL
1083 };
1084
1085 /* End of special cases. */
1086
1087 struct vnodeop_desc *vfs_op_descs[] = {
1088 &vnop_default_desc, /* MUST BE FIRST */
1089 &vnop_strategy_desc, /* XXX: SPECIAL CASE */
1090 &vnop_bwrite_desc, /* XXX: SPECIAL CASE */
1091
1092 &vnop_lookup_desc,
1093 &vnop_create_desc,
1094 &vnop_mknod_desc,
1095 &vnop_whiteout_desc,
1096 &vnop_open_desc,
1097 &vnop_compound_open_desc,
1098 &vnop_close_desc,
1099 &vnop_access_desc,
1100 &vnop_getattr_desc,
1101 &vnop_setattr_desc,
1102 &vnop_read_desc,
1103 &vnop_write_desc,
1104 &vnop_ioctl_desc,
1105 &vnop_select_desc,
1106 &vnop_exchange_desc,
1107 &vnop_kqfilt_add_desc,
1108 &vnop_kqfilt_remove_desc,
1109 &vnop_setlabel_desc,
1110 &vnop_revoke_desc,
1111 &vnop_mmap_desc,
1112 &vnop_mnomap_desc,
1113 &vnop_fsync_desc,
1114 &vnop_remove_desc,
1115 &vnop_compound_remove_desc,
1116 &vnop_link_desc,
1117 &vnop_rename_desc,
1118 &vnop_compound_rename_desc,
1119 &vnop_mkdir_desc,
1120 &vnop_compound_mkdir_desc,
1121 &vnop_rmdir_desc,
1122 &vnop_compound_rmdir_desc,
1123 &vnop_symlink_desc,
1124 &vnop_readdir_desc,
1125 &vnop_readdirattr_desc,
1126 &vnop_readlink_desc,
1127 &vnop_inactive_desc,
1128 &vnop_reclaim_desc,
1129 &vnop_pathconf_desc,
1130 &vnop_advlock_desc,
1131 &vnop_allocate_desc,
1132 &vnop_pagein_desc,
1133 &vnop_pageout_desc,
1134 &vnop_searchfs_desc,
1135 &vnop_copyfile_desc,
1136 &vnop_getxattr_desc,
1137 &vnop_setxattr_desc,
1138 &vnop_removexattr_desc,
1139 &vnop_listxattr_desc,
1140 &vnop_blktooff_desc,
1141 &vnop_offtoblk_desc,
1142 &vnop_blockmap_desc,
1143 &vnop_monitor_desc,
1144 #if NAMEDSTREAMS
1145 &vnop_getnamedstream_desc,
1146 &vnop_makenamedstream_desc,
1147 &vnop_removenamedstream_desc,
1148 #endif
1149 NULL
1150 };
1151