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
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_create_vp_offsets[] = {
110	VOPARG_OFFSETOF(struct vnop_create_args,a_dvp),
111	VDESC_NO_OFFSET
112};
113struct 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
126int vnop_whiteout_vp_offsets[] = {
127	VOPARG_OFFSETOF(struct vnop_whiteout_args,a_dvp),
128	VDESC_NO_OFFSET
129};
130struct 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
143int vnop_mknod_vp_offsets[] = {
144       VOPARG_OFFSETOF(struct vnop_mknod_args,a_dvp),
145       VDESC_NO_OFFSET
146};
147struct 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
160int vnop_open_vp_offsets[] = {
161	VOPARG_OFFSETOF(struct vnop_open_args,a_vp),
162	VDESC_NO_OFFSET
163};
164struct 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
177int vnop_close_vp_offsets[] = {
178	VOPARG_OFFSETOF(struct vnop_close_args,a_vp),
179	VDESC_NO_OFFSET
180};
181struct 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
194int vnop_access_vp_offsets[] = {
195	VOPARG_OFFSETOF(struct vnop_access_args,a_vp),
196	VDESC_NO_OFFSET
197};
198struct 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
211int vnop_getattr_vp_offsets[] = {
212	VOPARG_OFFSETOF(struct vnop_getattr_args,a_vp),
213	VDESC_NO_OFFSET
214};
215struct 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
228int vnop_setattr_vp_offsets[] = {
229	VOPARG_OFFSETOF(struct vnop_setattr_args,a_vp),
230	VDESC_NO_OFFSET
231};
232struct 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
245int vnop_read_vp_offsets[] = {
246	VOPARG_OFFSETOF(struct vnop_read_args,a_vp),
247	VDESC_NO_OFFSET
248};
249struct 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
262int vnop_write_vp_offsets[] = {
263	VOPARG_OFFSETOF(struct vnop_write_args,a_vp),
264	VDESC_NO_OFFSET
265};
266struct 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
279int vnop_ioctl_vp_offsets[] = {
280	VOPARG_OFFSETOF(struct vnop_ioctl_args,a_vp),
281	VDESC_NO_OFFSET
282};
283struct 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
296int vnop_select_vp_offsets[] = {
297	VOPARG_OFFSETOF(struct vnop_select_args,a_vp),
298	VDESC_NO_OFFSET
299};
300struct 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
313int 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};
318struct 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
331int vnop_kqfilt_add_vp_offsets[] = {
332	VOPARG_OFFSETOF(struct vnop_kqfilt_add_args,a_vp),
333	VDESC_NO_OFFSET
334};
335struct 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
348int vnop_kqfilt_remove_vp_offsets[] = {
349	VOPARG_OFFSETOF(struct vnop_kqfilt_remove_args,a_vp),
350	VDESC_NO_OFFSET
351};
352struct 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
365int vnop_setlabel_vp_offsets[] = {
366	VOPARG_OFFSETOF(struct vnop_setlabel_args,a_vp),
367	VDESC_NO_OFFSET
368};
369struct 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
382int vnop_revoke_vp_offsets[] = {
383	VOPARG_OFFSETOF(struct vnop_revoke_args,a_vp),
384	VDESC_NO_OFFSET
385};
386struct 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
400int vnop_mmap_vp_offsets[] = {
401	VOPARG_OFFSETOF(struct vnop_mmap_args,a_vp),
402	VDESC_NO_OFFSET
403};
404struct 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
418int vnop_mnomap_vp_offsets[] = {
419	VOPARG_OFFSETOF(struct vnop_mnomap_args,a_vp),
420	VDESC_NO_OFFSET
421};
422struct 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
436int vnop_fsync_vp_offsets[] = {
437	VOPARG_OFFSETOF(struct vnop_fsync_args,a_vp),
438	VDESC_NO_OFFSET
439};
440struct 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
453int 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};
458struct 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
471int 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};
476struct 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
489int 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};
496struct 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
509int vnop_mkdir_vp_offsets[] = {
510       VOPARG_OFFSETOF(struct vnop_mkdir_args,a_dvp),
511       VDESC_NO_OFFSET
512};
513struct 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
526int 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};
531struct 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
544int vnop_symlink_vp_offsets[] = {
545       VOPARG_OFFSETOF(struct vnop_symlink_args,a_dvp),
546       VDESC_NO_OFFSET
547};
548struct 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
561int vnop_readdir_vp_offsets[] = {
562	VOPARG_OFFSETOF(struct vnop_readdir_args,a_vp),
563	VDESC_NO_OFFSET
564};
565struct 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
578int vnop_readdirattr_vp_offsets[] = {
579	VOPARG_OFFSETOF(struct vnop_readdirattr_args,a_vp),
580	VDESC_NO_OFFSET
581};
582struct 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
595int vnop_readlink_vp_offsets[] = {
596	VOPARG_OFFSETOF(struct vnop_readlink_args,a_vp),
597	VDESC_NO_OFFSET
598};
599struct 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
612int vnop_inactive_vp_offsets[] = {
613	VOPARG_OFFSETOF(struct vnop_inactive_args,a_vp),
614	VDESC_NO_OFFSET
615};
616struct 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
629int vnop_reclaim_vp_offsets[] = {
630	VOPARG_OFFSETOF(struct vnop_reclaim_args,a_vp),
631	VDESC_NO_OFFSET
632};
633struct 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
646int vnop_pathconf_vp_offsets[] = {
647	VOPARG_OFFSETOF(struct vnop_pathconf_args,a_vp),
648	VDESC_NO_OFFSET
649};
650struct 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
663int vnop_advlock_vp_offsets[] = {
664	VOPARG_OFFSETOF(struct vnop_advlock_args,a_vp),
665	VDESC_NO_OFFSET
666};
667struct 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
680int vnop_allocate_vp_offsets[] = {
681	VOPARG_OFFSETOF(struct vnop_allocate_args,a_vp),
682	VDESC_NO_OFFSET
683};
684struct 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
697int vnop_pagein_vp_offsets[] = {
698	VOPARG_OFFSETOF(struct vnop_pagein_args,a_vp),
699	VDESC_NO_OFFSET
700};
701struct 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
714int vnop_pageout_vp_offsets[] = {
715	VOPARG_OFFSETOF(struct vnop_pageout_args,a_vp),
716	VDESC_NO_OFFSET
717};
718struct 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
731int vnop_searchfs_vp_offsets[] = {
732	VOPARG_OFFSETOF(struct vnop_searchfs_args,a_vp),
733	VDESC_NO_OFFSET
734};
735struct 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
748int 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};
754struct 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
767int vop_getxattr_vp_offsets[] = {
768	VOPARG_OFFSETOF(struct vnop_getxattr_args,a_vp),
769	VDESC_NO_OFFSET
770};
771struct 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
784int vop_setxattr_vp_offsets[] = {
785	VOPARG_OFFSETOF(struct vnop_setxattr_args,a_vp),
786	VDESC_NO_OFFSET
787};
788struct 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
801int vop_removexattr_vp_offsets[] = {
802	VOPARG_OFFSETOF(struct vnop_removexattr_args,a_vp),
803	VDESC_NO_OFFSET
804};
805struct 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
818int vop_listxattr_vp_offsets[] = {
819	VOPARG_OFFSETOF(struct vnop_listxattr_args,a_vp),
820	VDESC_NO_OFFSET
821};
822struct 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
835int vnop_blktooff_vp_offsets[] = {
836	VOPARG_OFFSETOF(struct vnop_blktooff_args,a_vp),
837	VDESC_NO_OFFSET
838};
839struct 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
852int vnop_offtoblk_vp_offsets[] = {
853	VOPARG_OFFSETOF(struct vnop_offtoblk_args,a_vp),
854	VDESC_NO_OFFSET
855};
856struct 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
869int vnop_blockmap_vp_offsets[] = {
870	VOPARG_OFFSETOF(struct vnop_blockmap_args,a_vp),
871	VDESC_NO_OFFSET
872};
873struct 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
887int vnop_getnamedstream_vp_offsets[] = {
888	VOPARG_OFFSETOF(struct vnop_getnamedstream_args, a_vp),
889	VDESC_NO_OFFSET
890};
891struct 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
904int vnop_makenamedstream_vp_offsets[] = {
905	VOPARG_OFFSETOF(struct vnop_makenamedstream_args, a_vp),
906	VDESC_NO_OFFSET
907};
908struct 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
921int vnop_removenamedstream_vp_offsets[] = {
922	VOPARG_OFFSETOF(struct vnop_removenamedstream_args, a_vp),
923	VDESC_NO_OFFSET
924};
925struct 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. */
939int vnop_getnamedstream_desc;
940int vnop_makenamedstream_desc;
941int vnop_removenamedstream_desc;
942#endif
943
944/* Special cases: */
945
946int vnop_strategy_vp_offsets[] = {
947	VDESC_NO_OFFSET
948};
949struct 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
962int vnop_bwrite_vp_offsets[] = {
963	VDESC_NO_OFFSET
964};
965struct 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
980struct 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
1039