]> git.saurik.com Git - apple/xnu.git/blob - bsd/vfs/vnode_if.c
4d72b5069ed02ea7f2838eccecdbe96c363a5d5f
[apple/xnu.git] / bsd / vfs / vnode_if.c
1
2 /*
3 * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
4 *
5 * @APPLE_LICENSE_HEADER_START@
6 *
7 * The contents of this file constitute Original Code as defined in and
8 * are subject to the Apple Public Source License Version 1.1 (the
9 * "License"). You may not use this file except in compliance with the
10 * License. Please obtain a copy of the License at
11 * http://www.apple.com/publicsource and read it before using this file.
12 *
13 * This Original Code and all software distributed under the License are
14 * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
18 * License for the specific language governing rights and limitations
19 * under the License.
20 *
21 * @APPLE_LICENSE_HEADER_END@
22 */
23 /*
24 * Copyright (c) 1995 NeXT Computer, Inc. All Rights Reserved
25 * Copyright (c) 1992, 1993, 1994, 1995
26 * The Regents of the University of California. All rights reserved.
27 *
28 * Redistribution and use in source and binary forms, with or without
29 * modification, are permitted provided that the following conditions
30 * are met:
31 * 1. Redistributions of source code must retain the above copyright
32 * notice, this list of conditions and the following disclaimer.
33 * 2. Redistributions in binary form must reproduce the above copyright
34 * notice, this list of conditions and the following disclaimer in the
35 * documentation and/or other materials provided with the distribution.
36 * 3. All advertising materials mentioning features or use of this software
37 * must display the following acknowledgement:
38 * This product includes software developed by the University of
39 * California, Berkeley and its contributors.
40 * 4. Neither the name of the University nor the names of its contributors
41 * may be used to endorse or promote products derived from this software
42 * without specific prior written permission.
43 *
44 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS AND
45 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
46 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
47 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
48 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
49 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
50 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
51 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
52 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
53 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
54 * SUCH DAMAGE.
55 */
56
57
58 /*
59 * Warning: This file is generated automatically.
60 * (Modifications made here may easily be lost!)
61 *
62 * Created by the script:
63 * @(#)vnode_if.sh 8.7 (Berkeley) 5/11/95
64 */
65
66
67 #include <sys/param.h>
68 #include <sys/mount.h>
69 #include <sys/vm.h>
70 #include <sys/vnode.h>
71
72 struct vnodeop_desc vop_default_desc = {
73 0,
74 "default",
75 0,
76 NULL,
77 VDESC_NO_OFFSET,
78 VDESC_NO_OFFSET,
79 VDESC_NO_OFFSET,
80 VDESC_NO_OFFSET,
81 NULL,
82 };
83
84
85 int vop_lookup_vp_offsets[] = {
86 VOPARG_OFFSETOF(struct vop_lookup_args,a_dvp),
87 VDESC_NO_OFFSET
88 };
89 struct vnodeop_desc vop_lookup_desc = {
90 0,
91 "vop_lookup",
92 0,
93 vop_lookup_vp_offsets,
94 VOPARG_OFFSETOF(struct vop_lookup_args, a_vpp),
95 VDESC_NO_OFFSET,
96 VDESC_NO_OFFSET,
97 VOPARG_OFFSETOF(struct vop_lookup_args, a_cnp),
98 NULL,
99 };
100
101 int vop_cachedlookup_vp_offsets[] = {
102 VOPARG_OFFSETOF(struct vop_cachedlookup_args,a_dvp),
103 VDESC_NO_OFFSET
104 };
105 struct vnodeop_desc vop_cachedlookup_desc = {
106 0,
107 "vop_cachedlookup",
108 0,
109 vop_cachedlookup_vp_offsets,
110 VOPARG_OFFSETOF(struct vop_cachedlookup_args, a_vpp),
111 VDESC_NO_OFFSET,
112 VDESC_NO_OFFSET,
113 VOPARG_OFFSETOF(struct vop_cachedlookup_args, a_cnp),
114 NULL,
115 };
116
117 int vop_create_vp_offsets[] = {
118 VOPARG_OFFSETOF(struct vop_create_args,a_dvp),
119 VDESC_NO_OFFSET
120 };
121 struct vnodeop_desc vop_create_desc = {
122 0,
123 "vop_create",
124 0 | VDESC_VP0_WILLRELE,
125 vop_create_vp_offsets,
126 VOPARG_OFFSETOF(struct vop_create_args, a_vpp),
127 VDESC_NO_OFFSET,
128 VDESC_NO_OFFSET,
129 VOPARG_OFFSETOF(struct vop_create_args, a_cnp),
130 NULL,
131 };
132
133 int vop_whiteout_vp_offsets[] = {
134 VOPARG_OFFSETOF(struct vop_whiteout_args,a_dvp),
135 VDESC_NO_OFFSET
136 };
137 struct vnodeop_desc vop_whiteout_desc = {
138 0,
139 "vop_whiteout",
140 0 | VDESC_VP0_WILLRELE,
141 vop_whiteout_vp_offsets,
142 VDESC_NO_OFFSET,
143 VDESC_NO_OFFSET,
144 VDESC_NO_OFFSET,
145 VOPARG_OFFSETOF(struct vop_whiteout_args, a_cnp),
146 NULL,
147 };
148
149 int vop_mknod_vp_offsets[] = {
150 VOPARG_OFFSETOF(struct vop_mknod_args,a_dvp),
151 VDESC_NO_OFFSET
152 };
153 struct vnodeop_desc vop_mknod_desc = {
154 0,
155 "vop_mknod",
156 0 | VDESC_VP0_WILLRELE | VDESC_VPP_WILLRELE,
157 vop_mknod_vp_offsets,
158 VOPARG_OFFSETOF(struct vop_mknod_args, a_vpp),
159 VDESC_NO_OFFSET,
160 VDESC_NO_OFFSET,
161 VOPARG_OFFSETOF(struct vop_mknod_args, a_cnp),
162 NULL,
163 };
164
165 int vop_mkcomplex_vp_offsets[] = {
166 VOPARG_OFFSETOF(struct vop_mkcomplex_args,a_dvp),
167 VDESC_NO_OFFSET
168 };
169 struct vnodeop_desc vop_mkcomplex_desc = {
170 0,
171 "vop_mkcomplex",
172 0 | VDESC_VP0_WILLRELE | VDESC_VPP_WILLRELE,
173 vop_mkcomplex_vp_offsets,
174 VOPARG_OFFSETOF(struct vop_mkcomplex_args, a_vpp),
175 VDESC_NO_OFFSET,
176 VDESC_NO_OFFSET,
177 VOPARG_OFFSETOF(struct vop_mkcomplex_args, a_cnp),
178 NULL,
179 };
180
181 int vop_open_vp_offsets[] = {
182 VOPARG_OFFSETOF(struct vop_open_args,a_vp),
183 VDESC_NO_OFFSET
184 };
185 struct vnodeop_desc vop_open_desc = {
186 0,
187 "vop_open",
188 0,
189 vop_open_vp_offsets,
190 VDESC_NO_OFFSET,
191 VOPARG_OFFSETOF(struct vop_open_args, a_cred),
192 VOPARG_OFFSETOF(struct vop_open_args, a_p),
193 VDESC_NO_OFFSET,
194 NULL,
195 };
196
197 int vop_close_vp_offsets[] = {
198 VOPARG_OFFSETOF(struct vop_close_args,a_vp),
199 VDESC_NO_OFFSET
200 };
201 struct vnodeop_desc vop_close_desc = {
202 0,
203 "vop_close",
204 0,
205 vop_close_vp_offsets,
206 VDESC_NO_OFFSET,
207 VOPARG_OFFSETOF(struct vop_close_args, a_cred),
208 VOPARG_OFFSETOF(struct vop_close_args, a_p),
209 VDESC_NO_OFFSET,
210 NULL,
211 };
212
213 int vop_access_vp_offsets[] = {
214 VOPARG_OFFSETOF(struct vop_access_args,a_vp),
215 VDESC_NO_OFFSET
216 };
217 struct vnodeop_desc vop_access_desc = {
218 0,
219 "vop_access",
220 0,
221 vop_access_vp_offsets,
222 VDESC_NO_OFFSET,
223 VOPARG_OFFSETOF(struct vop_access_args, a_cred),
224 VOPARG_OFFSETOF(struct vop_access_args, a_p),
225 VDESC_NO_OFFSET,
226 NULL,
227 };
228
229 int vop_getattr_vp_offsets[] = {
230 VOPARG_OFFSETOF(struct vop_getattr_args,a_vp),
231 VDESC_NO_OFFSET
232 };
233 struct vnodeop_desc vop_getattr_desc = {
234 0,
235 "vop_getattr",
236 0,
237 vop_getattr_vp_offsets,
238 VDESC_NO_OFFSET,
239 VOPARG_OFFSETOF(struct vop_getattr_args, a_cred),
240 VOPARG_OFFSETOF(struct vop_getattr_args, a_p),
241 VDESC_NO_OFFSET,
242 NULL,
243 };
244
245 int vop_setattr_vp_offsets[] = {
246 VOPARG_OFFSETOF(struct vop_setattr_args,a_vp),
247 VDESC_NO_OFFSET
248 };
249 struct vnodeop_desc vop_setattr_desc = {
250 0,
251 "vop_setattr",
252 0,
253 vop_setattr_vp_offsets,
254 VDESC_NO_OFFSET,
255 VOPARG_OFFSETOF(struct vop_setattr_args, a_cred),
256 VOPARG_OFFSETOF(struct vop_setattr_args, a_p),
257 VDESC_NO_OFFSET,
258 NULL,
259 };
260
261 int vop_getattrlist_vp_offsets[] = {
262 VOPARG_OFFSETOF(struct vop_getattrlist_args,a_vp),
263 VDESC_NO_OFFSET
264 };
265 struct vnodeop_desc vop_getattrlist_desc = {
266 0,
267 "vop_getattrlist",
268 0,
269 vop_getattrlist_vp_offsets,
270 VDESC_NO_OFFSET,
271 VOPARG_OFFSETOF(struct vop_getattrlist_args, a_cred),
272 VOPARG_OFFSETOF(struct vop_getattrlist_args, a_p),
273 VDESC_NO_OFFSET,
274 NULL,
275 };
276
277 int vop_setattrlist_vp_offsets[] = {
278 VOPARG_OFFSETOF(struct vop_setattrlist_args,a_vp),
279 VDESC_NO_OFFSET
280 };
281 struct vnodeop_desc vop_setattrlist_desc = {
282 0,
283 "vop_setattrlist",
284 0,
285 vop_setattrlist_vp_offsets,
286 VDESC_NO_OFFSET,
287 VOPARG_OFFSETOF(struct vop_setattrlist_args, a_cred),
288 VOPARG_OFFSETOF(struct vop_setattrlist_args, a_p),
289 VDESC_NO_OFFSET,
290 NULL,
291 };
292
293 int vop_read_vp_offsets[] = {
294 VOPARG_OFFSETOF(struct vop_read_args,a_vp),
295 VDESC_NO_OFFSET
296 };
297 struct vnodeop_desc vop_read_desc = {
298 0,
299 "vop_read",
300 0,
301 vop_read_vp_offsets,
302 VDESC_NO_OFFSET,
303 VOPARG_OFFSETOF(struct vop_read_args, a_cred),
304 VDESC_NO_OFFSET,
305 VDESC_NO_OFFSET,
306 NULL,
307 };
308
309 int vop_write_vp_offsets[] = {
310 VOPARG_OFFSETOF(struct vop_write_args,a_vp),
311 VDESC_NO_OFFSET
312 };
313 struct vnodeop_desc vop_write_desc = {
314 0,
315 "vop_write",
316 0,
317 vop_write_vp_offsets,
318 VDESC_NO_OFFSET,
319 VOPARG_OFFSETOF(struct vop_write_args, a_cred),
320 VDESC_NO_OFFSET,
321 VDESC_NO_OFFSET,
322 NULL,
323 };
324
325 int vop_lease_vp_offsets[] = {
326 VOPARG_OFFSETOF(struct vop_lease_args,a_vp),
327 VDESC_NO_OFFSET
328 };
329 struct vnodeop_desc vop_lease_desc = {
330 0,
331 "vop_lease",
332 0,
333 vop_lease_vp_offsets,
334 VDESC_NO_OFFSET,
335 VOPARG_OFFSETOF(struct vop_lease_args, a_cred),
336 VOPARG_OFFSETOF(struct vop_lease_args, a_p),
337 VDESC_NO_OFFSET,
338 NULL,
339 };
340
341 int vop_ioctl_vp_offsets[] = {
342 VOPARG_OFFSETOF(struct vop_ioctl_args,a_vp),
343 VDESC_NO_OFFSET
344 };
345 struct vnodeop_desc vop_ioctl_desc = {
346 0,
347 "vop_ioctl",
348 0,
349 vop_ioctl_vp_offsets,
350 VDESC_NO_OFFSET,
351 VOPARG_OFFSETOF(struct vop_ioctl_args, a_cred),
352 VOPARG_OFFSETOF(struct vop_ioctl_args, a_p),
353 VDESC_NO_OFFSET,
354 NULL,
355 };
356
357 int vop_select_vp_offsets[] = {
358 VOPARG_OFFSETOF(struct vop_select_args,a_vp),
359 VDESC_NO_OFFSET
360 };
361 struct vnodeop_desc vop_select_desc = {
362 0,
363 "vop_select",
364 0,
365 vop_select_vp_offsets,
366 VDESC_NO_OFFSET,
367 VOPARG_OFFSETOF(struct vop_select_args, a_cred),
368 VOPARG_OFFSETOF(struct vop_select_args, a_p),
369 VDESC_NO_OFFSET,
370 NULL,
371 };
372
373 int vop_exchange_vp_offsets[] = {
374 VOPARG_OFFSETOF(struct vop_exchange_args,a_fvp),
375 VOPARG_OFFSETOF(struct vop_exchange_args,a_tvp),
376 VDESC_NO_OFFSET
377 };
378 struct vnodeop_desc vop_exchange_desc = {
379 0,
380 "vop_exchange",
381 0,
382 vop_exchange_vp_offsets,
383 VDESC_NO_OFFSET,
384 VOPARG_OFFSETOF(struct vop_exchange_args, a_cred),
385 VOPARG_OFFSETOF(struct vop_exchange_args, a_p),
386 VDESC_NO_OFFSET,
387 NULL,
388 };
389
390 int vop_revoke_vp_offsets[] = {
391 VOPARG_OFFSETOF(struct vop_revoke_args,a_vp),
392 VDESC_NO_OFFSET
393 };
394 struct vnodeop_desc vop_revoke_desc = {
395 0,
396 "vop_revoke",
397 0,
398 vop_revoke_vp_offsets,
399 VDESC_NO_OFFSET,
400 VDESC_NO_OFFSET,
401 VDESC_NO_OFFSET,
402 VDESC_NO_OFFSET,
403 NULL,
404 };
405
406 int vop_mmap_vp_offsets[] = {
407 VOPARG_OFFSETOF(struct vop_mmap_args,a_vp),
408 VDESC_NO_OFFSET
409 };
410 struct vnodeop_desc vop_mmap_desc = {
411 0,
412 "vop_mmap",
413 0,
414 vop_mmap_vp_offsets,
415 VDESC_NO_OFFSET,
416 VOPARG_OFFSETOF(struct vop_mmap_args, a_cred),
417 VOPARG_OFFSETOF(struct vop_mmap_args, a_p),
418 VDESC_NO_OFFSET,
419 NULL,
420 };
421
422 int vop_fsync_vp_offsets[] = {
423 VOPARG_OFFSETOF(struct vop_fsync_args,a_vp),
424 VDESC_NO_OFFSET
425 };
426 struct vnodeop_desc vop_fsync_desc = {
427 0,
428 "vop_fsync",
429 0,
430 vop_fsync_vp_offsets,
431 VDESC_NO_OFFSET,
432 VOPARG_OFFSETOF(struct vop_fsync_args, a_cred),
433 VOPARG_OFFSETOF(struct vop_fsync_args, a_p),
434 VDESC_NO_OFFSET,
435 NULL,
436 };
437
438 int vop_seek_vp_offsets[] = {
439 VOPARG_OFFSETOF(struct vop_seek_args,a_vp),
440 VDESC_NO_OFFSET
441 };
442 struct vnodeop_desc vop_seek_desc = {
443 0,
444 "vop_seek",
445 0,
446 vop_seek_vp_offsets,
447 VDESC_NO_OFFSET,
448 VOPARG_OFFSETOF(struct vop_seek_args, a_cred),
449 VDESC_NO_OFFSET,
450 VDESC_NO_OFFSET,
451 NULL,
452 };
453
454 int vop_remove_vp_offsets[] = {
455 VOPARG_OFFSETOF(struct vop_remove_args,a_dvp),
456 VOPARG_OFFSETOF(struct vop_remove_args,a_vp),
457 VDESC_NO_OFFSET
458 };
459 struct vnodeop_desc vop_remove_desc = {
460 0,
461 "vop_remove",
462 0 | VDESC_VP0_WILLRELE | VDESC_VP1_WILLRELE,
463 vop_remove_vp_offsets,
464 VDESC_NO_OFFSET,
465 VDESC_NO_OFFSET,
466 VDESC_NO_OFFSET,
467 VOPARG_OFFSETOF(struct vop_remove_args, a_cnp),
468 NULL,
469 };
470
471 int vop_link_vp_offsets[] = {
472 VOPARG_OFFSETOF(struct vop_link_args,a_vp),
473 VOPARG_OFFSETOF(struct vop_link_args,a_tdvp),
474 VDESC_NO_OFFSET
475 };
476 struct vnodeop_desc vop_link_desc = {
477 0,
478 "vop_link",
479 0 | VDESC_VP0_WILLRELE,
480 vop_link_vp_offsets,
481 VDESC_NO_OFFSET,
482 VDESC_NO_OFFSET,
483 VDESC_NO_OFFSET,
484 VOPARG_OFFSETOF(struct vop_link_args, a_cnp),
485 NULL,
486 };
487
488 int vop_rename_vp_offsets[] = {
489 VOPARG_OFFSETOF(struct vop_rename_args,a_fdvp),
490 VOPARG_OFFSETOF(struct vop_rename_args,a_fvp),
491 VOPARG_OFFSETOF(struct vop_rename_args,a_tdvp),
492 VOPARG_OFFSETOF(struct vop_rename_args,a_tvp),
493 VDESC_NO_OFFSET
494 };
495 struct vnodeop_desc vop_rename_desc = {
496 0,
497 "vop_rename",
498 0 | VDESC_VP0_WILLRELE | VDESC_VP1_WILLRELE | VDESC_VP2_WILLRELE | VDESC_VP3_WILLRELE,
499 vop_rename_vp_offsets,
500 VDESC_NO_OFFSET,
501 VDESC_NO_OFFSET,
502 VDESC_NO_OFFSET,
503 VOPARG_OFFSETOF(struct vop_rename_args, a_fcnp),
504 NULL,
505 };
506
507 int vop_mkdir_vp_offsets[] = {
508 VOPARG_OFFSETOF(struct vop_mkdir_args,a_dvp),
509 VDESC_NO_OFFSET
510 };
511 struct vnodeop_desc vop_mkdir_desc = {
512 0,
513 "vop_mkdir",
514 0 | VDESC_VP0_WILLRELE,
515 vop_mkdir_vp_offsets,
516 VOPARG_OFFSETOF(struct vop_mkdir_args, a_vpp),
517 VDESC_NO_OFFSET,
518 VDESC_NO_OFFSET,
519 VOPARG_OFFSETOF(struct vop_mkdir_args, a_cnp),
520 NULL,
521 };
522
523 int vop_rmdir_vp_offsets[] = {
524 VOPARG_OFFSETOF(struct vop_rmdir_args,a_dvp),
525 VOPARG_OFFSETOF(struct vop_rmdir_args,a_vp),
526 VDESC_NO_OFFSET
527 };
528 struct vnodeop_desc vop_rmdir_desc = {
529 0,
530 "vop_rmdir",
531 0 | VDESC_VP0_WILLRELE | VDESC_VP1_WILLRELE,
532 vop_rmdir_vp_offsets,
533 VDESC_NO_OFFSET,
534 VDESC_NO_OFFSET,
535 VDESC_NO_OFFSET,
536 VOPARG_OFFSETOF(struct vop_rmdir_args, a_cnp),
537 NULL,
538 };
539
540 int vop_symlink_vp_offsets[] = {
541 VOPARG_OFFSETOF(struct vop_symlink_args,a_dvp),
542 VDESC_NO_OFFSET
543 };
544 struct vnodeop_desc vop_symlink_desc = {
545 0,
546 "vop_symlink",
547 0 | VDESC_VP0_WILLRELE | VDESC_VPP_WILLRELE,
548 vop_symlink_vp_offsets,
549 VOPARG_OFFSETOF(struct vop_symlink_args, a_vpp),
550 VDESC_NO_OFFSET,
551 VDESC_NO_OFFSET,
552 VOPARG_OFFSETOF(struct vop_symlink_args, a_cnp),
553 NULL,
554 };
555
556 int vop_readdir_vp_offsets[] = {
557 VOPARG_OFFSETOF(struct vop_readdir_args,a_vp),
558 VDESC_NO_OFFSET
559 };
560 struct vnodeop_desc vop_readdir_desc = {
561 0,
562 "vop_readdir",
563 0,
564 vop_readdir_vp_offsets,
565 VDESC_NO_OFFSET,
566 VOPARG_OFFSETOF(struct vop_readdir_args, a_cred),
567 VDESC_NO_OFFSET,
568 VDESC_NO_OFFSET,
569 NULL,
570 };
571
572 int vop_readdirattr_vp_offsets[] = {
573 VOPARG_OFFSETOF(struct vop_readdirattr_args,a_vp),
574 VDESC_NO_OFFSET
575 };
576 struct vnodeop_desc vop_readdirattr_desc = {
577 0,
578 "vop_readdirattr",
579 0,
580 vop_readdirattr_vp_offsets,
581 VDESC_NO_OFFSET,
582 VOPARG_OFFSETOF(struct vop_readdirattr_args, a_cred),
583 VDESC_NO_OFFSET,
584 VDESC_NO_OFFSET,
585 NULL,
586 };
587
588 int vop_readlink_vp_offsets[] = {
589 VOPARG_OFFSETOF(struct vop_readlink_args,a_vp),
590 VDESC_NO_OFFSET
591 };
592 struct vnodeop_desc vop_readlink_desc = {
593 0,
594 "vop_readlink",
595 0,
596 vop_readlink_vp_offsets,
597 VDESC_NO_OFFSET,
598 VOPARG_OFFSETOF(struct vop_readlink_args, a_cred),
599 VDESC_NO_OFFSET,
600 VDESC_NO_OFFSET,
601 NULL,
602 };
603
604 int vop_abortop_vp_offsets[] = {
605 VOPARG_OFFSETOF(struct vop_abortop_args,a_dvp),
606 VDESC_NO_OFFSET
607 };
608 struct vnodeop_desc vop_abortop_desc = {
609 0,
610 "vop_abortop",
611 0,
612 vop_abortop_vp_offsets,
613 VDESC_NO_OFFSET,
614 VDESC_NO_OFFSET,
615 VDESC_NO_OFFSET,
616 VOPARG_OFFSETOF(struct vop_abortop_args, a_cnp),
617 NULL,
618 };
619
620 int vop_inactive_vp_offsets[] = {
621 VOPARG_OFFSETOF(struct vop_inactive_args,a_vp),
622 VDESC_NO_OFFSET
623 };
624 struct vnodeop_desc vop_inactive_desc = {
625 0,
626 "vop_inactive",
627 0,
628 vop_inactive_vp_offsets,
629 VDESC_NO_OFFSET,
630 VDESC_NO_OFFSET,
631 VOPARG_OFFSETOF(struct vop_inactive_args, a_p),
632 VDESC_NO_OFFSET,
633 NULL,
634 };
635
636 int vop_reclaim_vp_offsets[] = {
637 VOPARG_OFFSETOF(struct vop_reclaim_args,a_vp),
638 VDESC_NO_OFFSET
639 };
640 struct vnodeop_desc vop_reclaim_desc = {
641 0,
642 "vop_reclaim",
643 0,
644 vop_reclaim_vp_offsets,
645 VDESC_NO_OFFSET,
646 VDESC_NO_OFFSET,
647 VOPARG_OFFSETOF(struct vop_reclaim_args, a_p),
648 VDESC_NO_OFFSET,
649 NULL,
650 };
651
652 int vop_lock_vp_offsets[] = {
653 VOPARG_OFFSETOF(struct vop_lock_args,a_vp),
654 VDESC_NO_OFFSET
655 };
656 struct vnodeop_desc vop_lock_desc = {
657 0,
658 "vop_lock",
659 0,
660 vop_lock_vp_offsets,
661 VDESC_NO_OFFSET,
662 VDESC_NO_OFFSET,
663 VOPARG_OFFSETOF(struct vop_lock_args, a_p),
664 VDESC_NO_OFFSET,
665 NULL,
666 };
667
668 int vop_unlock_vp_offsets[] = {
669 VOPARG_OFFSETOF(struct vop_unlock_args,a_vp),
670 VDESC_NO_OFFSET
671 };
672 struct vnodeop_desc vop_unlock_desc = {
673 0,
674 "vop_unlock",
675 0,
676 vop_unlock_vp_offsets,
677 VDESC_NO_OFFSET,
678 VDESC_NO_OFFSET,
679 VOPARG_OFFSETOF(struct vop_unlock_args, a_p),
680 VDESC_NO_OFFSET,
681 NULL,
682 };
683
684 int vop_bmap_vp_offsets[] = {
685 VOPARG_OFFSETOF(struct vop_bmap_args,a_vp),
686 VDESC_NO_OFFSET
687 };
688 struct vnodeop_desc vop_bmap_desc = {
689 0,
690 "vop_bmap",
691 0,
692 vop_bmap_vp_offsets,
693 VOPARG_OFFSETOF(struct vop_bmap_args, a_vpp),
694 VDESC_NO_OFFSET,
695 VDESC_NO_OFFSET,
696 VDESC_NO_OFFSET,
697 NULL,
698 };
699
700 int vop_print_vp_offsets[] = {
701 VOPARG_OFFSETOF(struct vop_print_args,a_vp),
702 VDESC_NO_OFFSET
703 };
704 struct vnodeop_desc vop_print_desc = {
705 0,
706 "vop_print",
707 0,
708 vop_print_vp_offsets,
709 VDESC_NO_OFFSET,
710 VDESC_NO_OFFSET,
711 VDESC_NO_OFFSET,
712 VDESC_NO_OFFSET,
713 NULL,
714 };
715
716 int vop_islocked_vp_offsets[] = {
717 VOPARG_OFFSETOF(struct vop_islocked_args,a_vp),
718 VDESC_NO_OFFSET
719 };
720 struct vnodeop_desc vop_islocked_desc = {
721 0,
722 "vop_islocked",
723 0,
724 vop_islocked_vp_offsets,
725 VDESC_NO_OFFSET,
726 VDESC_NO_OFFSET,
727 VDESC_NO_OFFSET,
728 VDESC_NO_OFFSET,
729 NULL,
730 };
731
732 int vop_pathconf_vp_offsets[] = {
733 VOPARG_OFFSETOF(struct vop_pathconf_args,a_vp),
734 VDESC_NO_OFFSET
735 };
736 struct vnodeop_desc vop_pathconf_desc = {
737 0,
738 "vop_pathconf",
739 0,
740 vop_pathconf_vp_offsets,
741 VDESC_NO_OFFSET,
742 VDESC_NO_OFFSET,
743 VDESC_NO_OFFSET,
744 VDESC_NO_OFFSET,
745 NULL,
746 };
747
748 int vop_advlock_vp_offsets[] = {
749 VOPARG_OFFSETOF(struct vop_advlock_args,a_vp),
750 VDESC_NO_OFFSET
751 };
752 struct vnodeop_desc vop_advlock_desc = {
753 0,
754 "vop_advlock",
755 0,
756 vop_advlock_vp_offsets,
757 VDESC_NO_OFFSET,
758 VDESC_NO_OFFSET,
759 VDESC_NO_OFFSET,
760 VDESC_NO_OFFSET,
761 NULL,
762 };
763
764 int vop_blkatoff_vp_offsets[] = {
765 VOPARG_OFFSETOF(struct vop_blkatoff_args,a_vp),
766 VDESC_NO_OFFSET
767 };
768 struct vnodeop_desc vop_blkatoff_desc = {
769 0,
770 "vop_blkatoff",
771 0,
772 vop_blkatoff_vp_offsets,
773 VDESC_NO_OFFSET,
774 VDESC_NO_OFFSET,
775 VDESC_NO_OFFSET,
776 VDESC_NO_OFFSET,
777 NULL,
778 };
779
780 int vop_valloc_vp_offsets[] = {
781 VOPARG_OFFSETOF(struct vop_valloc_args,a_pvp),
782 VDESC_NO_OFFSET
783 };
784 struct vnodeop_desc vop_valloc_desc = {
785 0,
786 "vop_valloc",
787 0,
788 vop_valloc_vp_offsets,
789 VOPARG_OFFSETOF(struct vop_valloc_args, a_vpp),
790 VOPARG_OFFSETOF(struct vop_valloc_args, a_cred),
791 VDESC_NO_OFFSET,
792 VDESC_NO_OFFSET,
793 NULL,
794 };
795
796 int vop_reallocblks_vp_offsets[] = {
797 VOPARG_OFFSETOF(struct vop_reallocblks_args,a_vp),
798 VDESC_NO_OFFSET
799 };
800 struct vnodeop_desc vop_reallocblks_desc = {
801 0,
802 "vop_reallocblks",
803 0,
804 vop_reallocblks_vp_offsets,
805 VDESC_NO_OFFSET,
806 VDESC_NO_OFFSET,
807 VDESC_NO_OFFSET,
808 VDESC_NO_OFFSET,
809 NULL,
810 };
811
812 int vop_vfree_vp_offsets[] = {
813 VOPARG_OFFSETOF(struct vop_vfree_args,a_pvp),
814 VDESC_NO_OFFSET
815 };
816 struct vnodeop_desc vop_vfree_desc = {
817 0,
818 "vop_vfree",
819 0,
820 vop_vfree_vp_offsets,
821 VDESC_NO_OFFSET,
822 VDESC_NO_OFFSET,
823 VDESC_NO_OFFSET,
824 VDESC_NO_OFFSET,
825 NULL,
826 };
827
828 int vop_truncate_vp_offsets[] = {
829 VOPARG_OFFSETOF(struct vop_truncate_args,a_vp),
830 VDESC_NO_OFFSET
831 };
832 struct vnodeop_desc vop_truncate_desc = {
833 0,
834 "vop_truncate",
835 0,
836 vop_truncate_vp_offsets,
837 VDESC_NO_OFFSET,
838 VOPARG_OFFSETOF(struct vop_truncate_args, a_cred),
839 VOPARG_OFFSETOF(struct vop_truncate_args, a_p),
840 VDESC_NO_OFFSET,
841 NULL,
842 };
843
844 int vop_allocate_vp_offsets[] = {
845 VOPARG_OFFSETOF(struct vop_allocate_args,a_vp),
846 VDESC_NO_OFFSET
847 };
848 struct vnodeop_desc vop_allocate_desc = {
849 0,
850 "vop_allocate",
851 0,
852 vop_allocate_vp_offsets,
853 VDESC_NO_OFFSET,
854 VOPARG_OFFSETOF(struct vop_allocate_args, a_cred),
855 VOPARG_OFFSETOF(struct vop_allocate_args, a_p),
856 VDESC_NO_OFFSET,
857 NULL,
858 };
859
860 int vop_update_vp_offsets[] = {
861 VOPARG_OFFSETOF(struct vop_update_args,a_vp),
862 VDESC_NO_OFFSET
863 };
864 struct vnodeop_desc vop_update_desc = {
865 0,
866 "vop_update",
867 0,
868 vop_update_vp_offsets,
869 VDESC_NO_OFFSET,
870 VDESC_NO_OFFSET,
871 VDESC_NO_OFFSET,
872 VDESC_NO_OFFSET,
873 NULL,
874 };
875
876 int vop_pgrd_vp_offsets[] = {
877 VOPARG_OFFSETOF(struct vop_pgrd_args,a_vp),
878 VDESC_NO_OFFSET
879 };
880 struct vnodeop_desc vop_pgrd_desc = {
881 0,
882 "vop_pgrd",
883 0,
884 vop_pgrd_vp_offsets,
885 VDESC_NO_OFFSET,
886 VOPARG_OFFSETOF(struct vop_pgrd_args, a_cred),
887 VDESC_NO_OFFSET,
888 VDESC_NO_OFFSET,
889 NULL,
890 };
891
892 int vop_pgwr_vp_offsets[] = {
893 VOPARG_OFFSETOF(struct vop_pgwr_args,a_vp),
894 VDESC_NO_OFFSET
895 };
896 struct vnodeop_desc vop_pgwr_desc = {
897 0,
898 "vop_pgwr",
899 0,
900 vop_pgwr_vp_offsets,
901 VDESC_NO_OFFSET,
902 VOPARG_OFFSETOF(struct vop_pgwr_args, a_cred),
903 VDESC_NO_OFFSET,
904 VDESC_NO_OFFSET,
905 NULL,
906 };
907
908 int vop_pagein_vp_offsets[] = {
909 VOPARG_OFFSETOF(struct vop_pagein_args,a_vp),
910 VDESC_NO_OFFSET
911 };
912 struct vnodeop_desc vop_pagein_desc = {
913 0,
914 "vop_pagein",
915 0,
916 vop_pagein_vp_offsets,
917 VDESC_NO_OFFSET,
918 VOPARG_OFFSETOF(struct vop_pagein_args, a_cred),
919 VDESC_NO_OFFSET,
920 VDESC_NO_OFFSET,
921 NULL,
922 };
923
924 int vop_pageout_vp_offsets[] = {
925 VOPARG_OFFSETOF(struct vop_pageout_args,a_vp),
926 VDESC_NO_OFFSET
927 };
928 struct vnodeop_desc vop_pageout_desc = {
929 0,
930 "vop_pageout",
931 0,
932 vop_pageout_vp_offsets,
933 VDESC_NO_OFFSET,
934 VOPARG_OFFSETOF(struct vop_pageout_args, a_cred),
935 VDESC_NO_OFFSET,
936 VDESC_NO_OFFSET,
937 NULL,
938 };
939
940 int vop_devblocksize_vp_offsets[] = {
941 VOPARG_OFFSETOF(struct vop_devblocksize_args,a_vp),
942 VDESC_NO_OFFSET
943 };
944 struct vnodeop_desc vop_devblocksize_desc = {
945 0,
946 "vop_devblocksize",
947 0,
948 vop_devblocksize_vp_offsets,
949 VDESC_NO_OFFSET,
950 VDESC_NO_OFFSET,
951 VDESC_NO_OFFSET,
952 VDESC_NO_OFFSET,
953 NULL,
954 };
955
956 int vop_searchfs_vp_offsets[] = {
957 VOPARG_OFFSETOF(struct vop_searchfs_args,a_vp),
958 VDESC_NO_OFFSET
959 };
960 struct vnodeop_desc vop_searchfs_desc = {
961 0,
962 "vop_searchfs",
963 0,
964 vop_searchfs_vp_offsets,
965 VDESC_NO_OFFSET,
966 VDESC_NO_OFFSET,
967 VDESC_NO_OFFSET,
968 VDESC_NO_OFFSET,
969 NULL,
970 };
971
972 int vop_copyfile_vp_offsets[] = {
973 VOPARG_OFFSETOF(struct vop_copyfile_args,a_fvp),
974 VOPARG_OFFSETOF(struct vop_copyfile_args,a_tdvp),
975 VOPARG_OFFSETOF(struct vop_copyfile_args,a_tvp),
976 VDESC_NO_OFFSET
977 };
978 struct vnodeop_desc vop_copyfile_desc = {
979 0,
980 "vop_copyfile",
981 0 | VDESC_VP0_WILLRELE | VDESC_VP1_WILLRELE | VDESC_VP2_WILLRELE,
982 vop_copyfile_vp_offsets,
983 VDESC_NO_OFFSET,
984 VDESC_NO_OFFSET,
985 VDESC_NO_OFFSET,
986 VOPARG_OFFSETOF(struct vop_copyfile_args, a_tcnp),
987 NULL,
988 };
989
990 int vop_blktooff_vp_offsets[] = {
991 VOPARG_OFFSETOF(struct vop_blktooff_args,a_vp),
992 VDESC_NO_OFFSET
993 };
994 struct vnodeop_desc vop_blktooff_desc = {
995 0,
996 "vop_blktooff",
997 0,
998 vop_blktooff_vp_offsets,
999 VDESC_NO_OFFSET,
1000 VDESC_NO_OFFSET,
1001 VDESC_NO_OFFSET,
1002 VDESC_NO_OFFSET,
1003 NULL,
1004 };
1005
1006 int vop_offtoblk_vp_offsets[] = {
1007 VOPARG_OFFSETOF(struct vop_offtoblk_args,a_vp),
1008 VDESC_NO_OFFSET
1009 };
1010 struct vnodeop_desc vop_offtoblk_desc = {
1011 0,
1012 "vop_offtoblk",
1013 0,
1014 vop_offtoblk_vp_offsets,
1015 VDESC_NO_OFFSET,
1016 VDESC_NO_OFFSET,
1017 VDESC_NO_OFFSET,
1018 VDESC_NO_OFFSET,
1019 NULL,
1020 };
1021
1022 int vop_cmap_vp_offsets[] = {
1023 VOPARG_OFFSETOF(struct vop_cmap_args,a_vp),
1024 VDESC_NO_OFFSET
1025 };
1026 struct vnodeop_desc vop_cmap_desc = {
1027 0,
1028 "vop_cmap",
1029 0,
1030 vop_cmap_vp_offsets,
1031 VDESC_NO_OFFSET,
1032 VDESC_NO_OFFSET,
1033 VDESC_NO_OFFSET,
1034 VDESC_NO_OFFSET,
1035 NULL,
1036 };
1037
1038 /* Special cases: */
1039
1040 int vop_strategy_vp_offsets[] = {
1041 VDESC_NO_OFFSET
1042 };
1043 struct vnodeop_desc vop_strategy_desc = {
1044 0,
1045 "vop_strategy",
1046 0,
1047 vop_strategy_vp_offsets,
1048 VDESC_NO_OFFSET,
1049 VDESC_NO_OFFSET,
1050 VDESC_NO_OFFSET,
1051 VDESC_NO_OFFSET,
1052 NULL,
1053 };
1054
1055 int vop_bwrite_vp_offsets[] = {
1056 VDESC_NO_OFFSET
1057 };
1058 struct vnodeop_desc vop_bwrite_desc = {
1059 0,
1060 "vop_bwrite",
1061 0,
1062 vop_bwrite_vp_offsets,
1063 VDESC_NO_OFFSET,
1064 VDESC_NO_OFFSET,
1065 VDESC_NO_OFFSET,
1066 VDESC_NO_OFFSET,
1067 NULL,
1068 };
1069
1070 /* End of special cases. */
1071
1072 struct vnodeop_desc *vfs_op_descs[] = {
1073 &vop_default_desc, /* MUST BE FIRST */
1074 &vop_strategy_desc, /* XXX: SPECIAL CASE */
1075 &vop_bwrite_desc, /* XXX: SPECIAL CASE */
1076
1077 &vop_lookup_desc,
1078 &vop_cachedlookup_desc,
1079 &vop_create_desc,
1080 &vop_whiteout_desc,
1081 &vop_mknod_desc,
1082 &vop_mkcomplex_desc,
1083 &vop_open_desc,
1084 &vop_close_desc,
1085 &vop_access_desc,
1086 &vop_getattr_desc,
1087 &vop_setattr_desc,
1088 &vop_getattrlist_desc,
1089 &vop_setattrlist_desc,
1090 &vop_read_desc,
1091 &vop_write_desc,
1092 &vop_lease_desc,
1093 &vop_ioctl_desc,
1094 &vop_select_desc,
1095 &vop_exchange_desc,
1096 &vop_revoke_desc,
1097 &vop_mmap_desc,
1098 &vop_fsync_desc,
1099 &vop_seek_desc,
1100 &vop_remove_desc,
1101 &vop_link_desc,
1102 &vop_rename_desc,
1103 &vop_mkdir_desc,
1104 &vop_rmdir_desc,
1105 &vop_symlink_desc,
1106 &vop_readdir_desc,
1107 &vop_readdirattr_desc,
1108 &vop_readlink_desc,
1109 &vop_abortop_desc,
1110 &vop_inactive_desc,
1111 &vop_reclaim_desc,
1112 &vop_lock_desc,
1113 &vop_unlock_desc,
1114 &vop_bmap_desc,
1115 &vop_print_desc,
1116 &vop_islocked_desc,
1117 &vop_pathconf_desc,
1118 &vop_advlock_desc,
1119 &vop_blkatoff_desc,
1120 &vop_valloc_desc,
1121 &vop_reallocblks_desc,
1122 &vop_vfree_desc,
1123 &vop_truncate_desc,
1124 &vop_allocate_desc,
1125 &vop_update_desc,
1126 &vop_pgrd_desc,
1127 &vop_pgwr_desc,
1128 &vop_pagein_desc,
1129 &vop_pageout_desc,
1130 &vop_devblocksize_desc,
1131 &vop_searchfs_desc,
1132 &vop_copyfile_desc,
1133 &vop_blktooff_desc,
1134 &vop_offtoblk_desc,
1135 &vop_cmap_desc,
1136 NULL
1137 };
1138