1
2/*
3 * Copyright (c) 2000-2014 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
78struct 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
92int vnop_lookup_vp_offsets[] = {
93	VOPARG_OFFSETOF(struct vnop_lookup_args,a_dvp),
94	VDESC_NO_OFFSET
95};
96struct 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
109int vnop_compound_open_vp_offsets[] = {
110	VOPARG_OFFSETOF(struct vnop_compound_open_args, a_dvp),
111	VDESC_NO_OFFSET
112};
113
114struct 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
127int vnop_create_vp_offsets[] = {
128	VOPARG_OFFSETOF(struct vnop_create_args,a_dvp),
129	VDESC_NO_OFFSET
130};
131struct 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
144int vnop_whiteout_vp_offsets[] = {
145	VOPARG_OFFSETOF(struct vnop_whiteout_args,a_dvp),
146	VDESC_NO_OFFSET
147};
148struct 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
161int vnop_mknod_vp_offsets[] = {
162       VOPARG_OFFSETOF(struct vnop_mknod_args,a_dvp),
163       VDESC_NO_OFFSET
164};
165struct 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
178int vnop_open_vp_offsets[] = {
179	VOPARG_OFFSETOF(struct vnop_open_args,a_vp),
180	VDESC_NO_OFFSET
181};
182struct 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
195int vnop_close_vp_offsets[] = {
196	VOPARG_OFFSETOF(struct vnop_close_args,a_vp),
197	VDESC_NO_OFFSET
198};
199struct 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
212int vnop_access_vp_offsets[] = {
213	VOPARG_OFFSETOF(struct vnop_access_args,a_vp),
214	VDESC_NO_OFFSET
215};
216struct 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
229int vnop_getattr_vp_offsets[] = {
230	VOPARG_OFFSETOF(struct vnop_getattr_args,a_vp),
231	VDESC_NO_OFFSET
232};
233struct 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
246int vnop_setattr_vp_offsets[] = {
247	VOPARG_OFFSETOF(struct vnop_setattr_args,a_vp),
248	VDESC_NO_OFFSET
249};
250struct 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
263int vnop_read_vp_offsets[] = {
264	VOPARG_OFFSETOF(struct vnop_read_args,a_vp),
265	VDESC_NO_OFFSET
266};
267struct 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
280int vnop_write_vp_offsets[] = {
281	VOPARG_OFFSETOF(struct vnop_write_args,a_vp),
282	VDESC_NO_OFFSET
283};
284struct 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
297int vnop_ioctl_vp_offsets[] = {
298	VOPARG_OFFSETOF(struct vnop_ioctl_args,a_vp),
299	VDESC_NO_OFFSET
300};
301struct 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
314int vnop_select_vp_offsets[] = {
315	VOPARG_OFFSETOF(struct vnop_select_args,a_vp),
316	VDESC_NO_OFFSET
317};
318struct 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
331int 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};
336struct 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
349int vnop_kqfilt_add_vp_offsets[] = {
350	VOPARG_OFFSETOF(struct vnop_kqfilt_add_args,a_vp),
351	VDESC_NO_OFFSET
352};
353struct 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
366int vnop_kqfilt_remove_vp_offsets[] = {
367	VOPARG_OFFSETOF(struct vnop_kqfilt_remove_args,a_vp),
368	VDESC_NO_OFFSET
369};
370struct 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
383int vnop_monitor_vp_offsets[] = {
384	VOPARG_OFFSETOF(struct vnop_monitor_args,a_vp),
385	VDESC_NO_OFFSET
386};
387struct 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
400int vnop_setlabel_vp_offsets[] = {
401	VOPARG_OFFSETOF(struct vnop_setlabel_args,a_vp),
402	VDESC_NO_OFFSET
403};
404struct 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
417int vnop_revoke_vp_offsets[] = {
418	VOPARG_OFFSETOF(struct vnop_revoke_args,a_vp),
419	VDESC_NO_OFFSET
420};
421struct 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
435int vnop_mmap_vp_offsets[] = {
436	VOPARG_OFFSETOF(struct vnop_mmap_args,a_vp),
437	VDESC_NO_OFFSET
438};
439struct 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
453int vnop_mnomap_vp_offsets[] = {
454	VOPARG_OFFSETOF(struct vnop_mnomap_args,a_vp),
455	VDESC_NO_OFFSET
456};
457struct 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
471int vnop_fsync_vp_offsets[] = {
472	VOPARG_OFFSETOF(struct vnop_fsync_args,a_vp),
473	VDESC_NO_OFFSET
474};
475struct 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
488int 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};
493struct 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
506int vnop_remove_extended_vp_offsets[] = {
507	VOPARG_OFFSETOF(struct vnop_remove_args,a_dvp),
508	VDESC_NO_OFFSET
509};
510struct 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
523int 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};
528struct 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
541int 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};
548struct 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
561int 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};
568struct 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
581int vnop_mkdir_vp_offsets[] = {
582       VOPARG_OFFSETOF(struct vnop_mkdir_args,a_dvp),
583       VDESC_NO_OFFSET
584};
585struct 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
598int vnop_compound_mkdir_vp_offsets[] = {
599       VOPARG_OFFSETOF(struct vnop_compound_mkdir_args,a_dvp),
600       VDESC_NO_OFFSET
601};
602struct 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
616int 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};
621struct 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
634int vnop_compound_rmdir_vp_offsets[] = {
635	VOPARG_OFFSETOF(struct vnop_compound_rmdir_args,a_dvp),
636	VDESC_NO_OFFSET
637};
638struct 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
651int vnop_symlink_vp_offsets[] = {
652       VOPARG_OFFSETOF(struct vnop_symlink_args,a_dvp),
653       VDESC_NO_OFFSET
654};
655struct 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
668int vnop_readdir_vp_offsets[] = {
669	VOPARG_OFFSETOF(struct vnop_readdir_args,a_vp),
670	VDESC_NO_OFFSET
671};
672struct 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
685int vnop_readdirattr_vp_offsets[] = {
686	VOPARG_OFFSETOF(struct vnop_readdirattr_args,a_vp),
687	VDESC_NO_OFFSET
688};
689struct 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
702int vnop_getattrlistbulk_vp_offsets[] = {
703	VOPARG_OFFSETOF(struct vnop_getattrlistbulk_args,a_vp),
704	VDESC_NO_OFFSET
705};
706struct vnodeop_desc vnop_getattrlistbulk_desc = {
707	0,
708	"vnop_getattrlistbulk",
709	0,
710	vnop_getattrlistbulk_vp_offsets,
711	VDESC_NO_OFFSET,
712	VDESC_NO_OFFSET,
713	VDESC_NO_OFFSET,
714	VDESC_NO_OFFSET,
715	VOPARG_OFFSETOF(struct vnop_getattrlistbulk_args, a_context),
716	NULL
717};
718
719int vnop_readlink_vp_offsets[] = {
720	VOPARG_OFFSETOF(struct vnop_readlink_args,a_vp),
721	VDESC_NO_OFFSET
722};
723struct vnodeop_desc vnop_readlink_desc = {
724	0,
725	"vnop_readlink",
726	0,
727	vnop_readlink_vp_offsets,
728	VDESC_NO_OFFSET,
729	VDESC_NO_OFFSET,
730	VDESC_NO_OFFSET,
731	VDESC_NO_OFFSET,
732	VOPARG_OFFSETOF(struct vnop_readlink_args, a_context),
733	NULL
734};
735
736int vnop_inactive_vp_offsets[] = {
737	VOPARG_OFFSETOF(struct vnop_inactive_args,a_vp),
738	VDESC_NO_OFFSET
739};
740struct vnodeop_desc vnop_inactive_desc = {
741	0,
742	"vnop_inactive",
743	0,
744	vnop_inactive_vp_offsets,
745	VDESC_NO_OFFSET,
746	VDESC_NO_OFFSET,
747	VDESC_NO_OFFSET,
748	VDESC_NO_OFFSET,
749	VOPARG_OFFSETOF(struct vnop_inactive_args, a_context),
750	NULL
751};
752
753int vnop_reclaim_vp_offsets[] = {
754	VOPARG_OFFSETOF(struct vnop_reclaim_args,a_vp),
755	VDESC_NO_OFFSET
756};
757struct vnodeop_desc vnop_reclaim_desc = {
758	0,
759	"vnop_reclaim",
760	0,
761	vnop_reclaim_vp_offsets,
762	VDESC_NO_OFFSET,
763	VDESC_NO_OFFSET,
764	VDESC_NO_OFFSET,
765	VDESC_NO_OFFSET,
766	VOPARG_OFFSETOF(struct vnop_reclaim_args, a_context),
767	NULL
768};
769
770int vnop_pathconf_vp_offsets[] = {
771	VOPARG_OFFSETOF(struct vnop_pathconf_args,a_vp),
772	VDESC_NO_OFFSET
773};
774struct vnodeop_desc vnop_pathconf_desc = {
775	0,
776	"vnop_pathconf",
777	0,
778	vnop_pathconf_vp_offsets,
779	VDESC_NO_OFFSET,
780	VDESC_NO_OFFSET,
781	VDESC_NO_OFFSET,
782	VDESC_NO_OFFSET,
783	VOPARG_OFFSETOF(struct vnop_pathconf_args, a_context),
784	NULL
785};
786
787int vnop_advlock_vp_offsets[] = {
788	VOPARG_OFFSETOF(struct vnop_advlock_args,a_vp),
789	VDESC_NO_OFFSET
790};
791struct vnodeop_desc vnop_advlock_desc = {
792	0,
793	"vnop_advlock",
794	0,
795	vnop_advlock_vp_offsets,
796	VDESC_NO_OFFSET,
797	VDESC_NO_OFFSET,
798	VDESC_NO_OFFSET,
799	VDESC_NO_OFFSET,
800	VOPARG_OFFSETOF(struct vnop_advlock_args, a_context),
801	NULL
802};
803
804int vnop_allocate_vp_offsets[] = {
805	VOPARG_OFFSETOF(struct vnop_allocate_args,a_vp),
806	VDESC_NO_OFFSET
807};
808struct vnodeop_desc vnop_allocate_desc = {
809	0,
810	"vnop_allocate",
811	0,
812	vnop_allocate_vp_offsets,
813	VDESC_NO_OFFSET,
814	VDESC_NO_OFFSET,
815	VDESC_NO_OFFSET,
816	VDESC_NO_OFFSET,
817	VOPARG_OFFSETOF(struct vnop_allocate_args, a_context),
818	NULL
819};
820
821int vnop_pagein_vp_offsets[] = {
822	VOPARG_OFFSETOF(struct vnop_pagein_args,a_vp),
823	VDESC_NO_OFFSET
824};
825struct vnodeop_desc vnop_pagein_desc = {
826	0,
827	"vnop_pagein",
828	0,
829	vnop_pagein_vp_offsets,
830	VDESC_NO_OFFSET,
831	VDESC_NO_OFFSET,
832	VDESC_NO_OFFSET,
833	VDESC_NO_OFFSET,
834	VOPARG_OFFSETOF(struct vnop_pagein_args, a_context),
835	NULL
836};
837
838int vnop_pageout_vp_offsets[] = {
839	VOPARG_OFFSETOF(struct vnop_pageout_args,a_vp),
840	VDESC_NO_OFFSET
841};
842struct vnodeop_desc vnop_pageout_desc = {
843	0,
844	"vnop_pageout",
845	0,
846	vnop_pageout_vp_offsets,
847	VDESC_NO_OFFSET,
848	VDESC_NO_OFFSET,
849	VDESC_NO_OFFSET,
850	VDESC_NO_OFFSET,
851	VOPARG_OFFSETOF(struct vnop_pageout_args, a_context),
852	NULL
853};
854
855int vnop_searchfs_vp_offsets[] = {
856	VOPARG_OFFSETOF(struct vnop_searchfs_args,a_vp),
857	VDESC_NO_OFFSET
858};
859struct vnodeop_desc vnop_searchfs_desc = {
860	0,
861	"vnop_searchfs",
862	0,
863	vnop_searchfs_vp_offsets,
864	VDESC_NO_OFFSET,
865	VDESC_NO_OFFSET,
866	VDESC_NO_OFFSET,
867	VDESC_NO_OFFSET,
868	VDESC_NO_OFFSET,
869	NULL
870};
871
872int vnop_copyfile_vp_offsets[] = {
873	VOPARG_OFFSETOF(struct vnop_copyfile_args,a_fvp),
874	VOPARG_OFFSETOF(struct vnop_copyfile_args,a_tdvp),
875	VOPARG_OFFSETOF(struct vnop_copyfile_args,a_tvp),
876	VDESC_NO_OFFSET
877};
878struct vnodeop_desc vnop_copyfile_desc = {
879	0,
880	"vnop_copyfile",
881	0 | VDESC_VP0_WILLRELE | VDESC_VP1_WILLRELE | VDESC_VP2_WILLRELE,
882	vnop_copyfile_vp_offsets,
883	VDESC_NO_OFFSET,
884	VDESC_NO_OFFSET,
885	VDESC_NO_OFFSET,
886	VOPARG_OFFSETOF(struct vnop_copyfile_args, a_tcnp),
887	VDESC_NO_OFFSET,
888	NULL
889};
890
891int vop_getxattr_vp_offsets[] = {
892	VOPARG_OFFSETOF(struct vnop_getxattr_args,a_vp),
893	VDESC_NO_OFFSET
894};
895struct vnodeop_desc vnop_getxattr_desc = {
896	0,
897	"vnop_getxattr",
898	0,
899	vop_getxattr_vp_offsets,
900	VDESC_NO_OFFSET,
901	VDESC_NO_OFFSET,
902	VDESC_NO_OFFSET,
903	VDESC_NO_OFFSET,
904	VOPARG_OFFSETOF(struct vnop_getxattr_args, a_context),
905	NULL
906};
907
908int vop_setxattr_vp_offsets[] = {
909	VOPARG_OFFSETOF(struct vnop_setxattr_args,a_vp),
910	VDESC_NO_OFFSET
911};
912struct vnodeop_desc vnop_setxattr_desc = {
913	0,
914	"vnop_setxattr",
915	0,
916	vop_setxattr_vp_offsets,
917	VDESC_NO_OFFSET,
918	VDESC_NO_OFFSET,
919	VDESC_NO_OFFSET,
920	VDESC_NO_OFFSET,
921	VOPARG_OFFSETOF(struct vnop_setxattr_args, a_context),
922	NULL
923};
924
925int vop_removexattr_vp_offsets[] = {
926	VOPARG_OFFSETOF(struct vnop_removexattr_args,a_vp),
927	VDESC_NO_OFFSET
928};
929struct vnodeop_desc vnop_removexattr_desc = {
930	0,
931	"vnop_removexattr",
932	0,
933	vop_removexattr_vp_offsets,
934	VDESC_NO_OFFSET,
935	VDESC_NO_OFFSET,
936	VDESC_NO_OFFSET,
937	VDESC_NO_OFFSET,
938	VOPARG_OFFSETOF(struct vnop_removexattr_args, a_context),
939	NULL
940};
941
942int vop_listxattr_vp_offsets[] = {
943	VOPARG_OFFSETOF(struct vnop_listxattr_args,a_vp),
944	VDESC_NO_OFFSET
945};
946struct vnodeop_desc vnop_listxattr_desc = {
947	0,
948	"vnop_listxattr",
949	0,
950	vop_listxattr_vp_offsets,
951	VDESC_NO_OFFSET,
952	VDESC_NO_OFFSET,
953	VDESC_NO_OFFSET,
954	VDESC_NO_OFFSET,
955	VOPARG_OFFSETOF(struct vnop_listxattr_args, a_context),
956	NULL
957};
958
959int vnop_blktooff_vp_offsets[] = {
960	VOPARG_OFFSETOF(struct vnop_blktooff_args,a_vp),
961	VDESC_NO_OFFSET
962};
963struct vnodeop_desc vnop_blktooff_desc = {
964	0,
965	"vnop_blktooff",
966	0,
967	vnop_blktooff_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
976int vnop_offtoblk_vp_offsets[] = {
977	VOPARG_OFFSETOF(struct vnop_offtoblk_args,a_vp),
978	VDESC_NO_OFFSET
979};
980struct vnodeop_desc vnop_offtoblk_desc = {
981	0,
982	"vnop_offtoblk",
983	0,
984	vnop_offtoblk_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
993int vnop_blockmap_vp_offsets[] = {
994	VOPARG_OFFSETOF(struct vnop_blockmap_args,a_vp),
995	VDESC_NO_OFFSET
996};
997struct vnodeop_desc vnop_blockmap_desc = {
998	0,
999	"vnop_blockmap",
1000	0,
1001	vnop_blockmap_vp_offsets,
1002	VDESC_NO_OFFSET,
1003	VDESC_NO_OFFSET,
1004	VDESC_NO_OFFSET,
1005	VDESC_NO_OFFSET,
1006	VDESC_NO_OFFSET,
1007	NULL
1008};
1009
1010#if NAMEDSTREAMS
1011int vnop_getnamedstream_vp_offsets[] = {
1012	VOPARG_OFFSETOF(struct vnop_getnamedstream_args, a_vp),
1013	VDESC_NO_OFFSET
1014};
1015struct vnodeop_desc vnop_getnamedstream_desc = {
1016	0,
1017	"vnop_getnamedstream",
1018	0,
1019	vnop_getnamedstream_vp_offsets,
1020	VOPARG_OFFSETOF(struct vnop_getnamedstream_args, a_svpp),
1021	VDESC_NO_OFFSET,
1022	VDESC_NO_OFFSET,
1023	VOPARG_OFFSETOF(struct vnop_getnamedstream_args, a_name),
1024	VOPARG_OFFSETOF(struct vnop_getnamedstream_args, a_context),
1025	NULL
1026};
1027
1028int vnop_makenamedstream_vp_offsets[] = {
1029	VOPARG_OFFSETOF(struct vnop_makenamedstream_args, a_vp),
1030	VDESC_NO_OFFSET
1031};
1032struct vnodeop_desc vnop_makenamedstream_desc = {
1033	0,
1034	"vnop_makenamedstream",
1035	0, /* flags */
1036	vnop_makenamedstream_vp_offsets,
1037	VOPARG_OFFSETOF(struct vnop_makenamedstream_args, a_svpp),
1038	VDESC_NO_OFFSET,
1039	VDESC_NO_OFFSET,
1040	VOPARG_OFFSETOF(struct vnop_makenamedstream_args, a_name),
1041	VOPARG_OFFSETOF(struct vnop_makenamedstream_args, a_context),
1042	NULL
1043};
1044
1045int vnop_removenamedstream_vp_offsets[] = {
1046	VOPARG_OFFSETOF(struct vnop_removenamedstream_args, a_vp),
1047	VDESC_NO_OFFSET
1048};
1049struct vnodeop_desc vnop_removenamedstream_desc = {
1050	0,
1051	"vnop_removenamedstream",
1052	0,
1053	vnop_removenamedstream_vp_offsets,
1054	VDESC_NO_OFFSET,
1055	VDESC_NO_OFFSET,
1056	VDESC_NO_OFFSET,
1057	VOPARG_OFFSETOF(struct vnop_removenamedstream_args, a_name),
1058	VOPARG_OFFSETOF(struct vnop_removenamedstream_args, a_context),
1059	NULL
1060};
1061#else
1062/* These symbols are in the exports list so they need to always be defined. */
1063int vnop_getnamedstream_desc;
1064int vnop_makenamedstream_desc;
1065int vnop_removenamedstream_desc;
1066#endif
1067
1068/* Special cases: */
1069
1070int vnop_strategy_vp_offsets[] = {
1071	VDESC_NO_OFFSET
1072};
1073struct vnodeop_desc vnop_strategy_desc = {
1074	0,
1075	"vnop_strategy",
1076	0,
1077	vnop_strategy_vp_offsets,
1078	VDESC_NO_OFFSET,
1079	VDESC_NO_OFFSET,
1080	VDESC_NO_OFFSET,
1081	VDESC_NO_OFFSET,
1082	VDESC_NO_OFFSET,
1083	NULL
1084};
1085
1086int vnop_bwrite_vp_offsets[] = {
1087	VDESC_NO_OFFSET
1088};
1089struct vnodeop_desc vnop_bwrite_desc = {
1090	0,
1091	"vnop_bwrite",
1092	0,
1093	vnop_bwrite_vp_offsets,
1094	VDESC_NO_OFFSET,
1095	VDESC_NO_OFFSET,
1096	VDESC_NO_OFFSET,
1097	VDESC_NO_OFFSET,
1098	VDESC_NO_OFFSET,
1099	NULL
1100};
1101
1102/* End of special cases. */
1103
1104struct vnodeop_desc *vfs_op_descs[] = {
1105	&vnop_default_desc,	/* MUST BE FIRST */
1106	&vnop_strategy_desc,	/* XXX: SPECIAL CASE */
1107	&vnop_bwrite_desc,	/* XXX: SPECIAL CASE */
1108
1109	&vnop_lookup_desc,
1110	&vnop_create_desc,
1111	&vnop_mknod_desc,
1112	&vnop_whiteout_desc,
1113	&vnop_open_desc,
1114	&vnop_compound_open_desc,
1115	&vnop_close_desc,
1116	&vnop_access_desc,
1117	&vnop_getattr_desc,
1118	&vnop_setattr_desc,
1119	&vnop_read_desc,
1120	&vnop_write_desc,
1121	&vnop_ioctl_desc,
1122	&vnop_select_desc,
1123	&vnop_exchange_desc,
1124	&vnop_kqfilt_add_desc,
1125	&vnop_kqfilt_remove_desc,
1126	&vnop_setlabel_desc,
1127	&vnop_revoke_desc,
1128	&vnop_mmap_desc,
1129	&vnop_mnomap_desc,
1130	&vnop_fsync_desc,
1131	&vnop_remove_desc,
1132	&vnop_compound_remove_desc,
1133	&vnop_link_desc,
1134	&vnop_rename_desc,
1135	&vnop_compound_rename_desc,
1136	&vnop_mkdir_desc,
1137	&vnop_compound_mkdir_desc,
1138	&vnop_rmdir_desc,
1139	&vnop_compound_rmdir_desc,
1140	&vnop_symlink_desc,
1141	&vnop_readdir_desc,
1142	&vnop_readdirattr_desc,
1143	&vnop_getattrlistbulk_desc,
1144	&vnop_readlink_desc,
1145	&vnop_inactive_desc,
1146	&vnop_reclaim_desc,
1147	&vnop_pathconf_desc,
1148	&vnop_advlock_desc,
1149	&vnop_allocate_desc,
1150	&vnop_pagein_desc,
1151	&vnop_pageout_desc,
1152	&vnop_searchfs_desc,
1153	&vnop_copyfile_desc,
1154	&vnop_getxattr_desc,
1155	&vnop_setxattr_desc,
1156	&vnop_removexattr_desc,
1157	&vnop_listxattr_desc,
1158	&vnop_blktooff_desc,
1159	&vnop_offtoblk_desc,
1160	&vnop_blockmap_desc,
1161	&vnop_monitor_desc,
1162#if NAMEDSTREAMS
1163	&vnop_getnamedstream_desc,
1164	&vnop_makenamedstream_desc,
1165	&vnop_removenamedstream_desc,
1166#endif
1167	NULL
1168};
1169
1170