vnode_if.c revision 1.33.2.4 1 /* $NetBSD: vnode_if.c,v 1.33.2.4 2001/11/14 19:16:50 nathanw Exp $ */
2
3 /*
4 * Warning: This file is generated automatically.
5 * (Modifications made here may easily be lost!)
6 *
7 * Created from the file:
8 * NetBSD: vnode_if.src,v 1.30 2001/09/15 20:36:37 chs Exp
9 * by the script:
10 * NetBSD: vnode_if.sh,v 1.30 2001/11/12 14:34:24 lukem Exp
11 */
12
13 /*
14 * Copyright (c) 1992, 1993, 1994, 1995
15 * The Regents of the University of California. All rights reserved.
16 *
17 * Redistribution and use in source and binary forms, with or without
18 * modification, are permitted provided that the following conditions
19 * are met:
20 * 1. Redistributions of source code must retain the above copyright
21 * notice, this list of conditions and the following disclaimer.
22 * 2. Redistributions in binary form must reproduce the above copyright
23 * notice, this list of conditions and the following disclaimer in the
24 * documentation and/or other materials provided with the distribution.
25 * 3. All advertising materials mentioning features or use of this software
26 * must display the following acknowledgement:
27 * This product includes software developed by the University of
28 * California, Berkeley and its contributors.
29 * 4. Neither the name of the University nor the names of its contributors
30 * may be used to endorse or promote products derived from this software
31 * without specific prior written permission.
32 *
33 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
34 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
35 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
36 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
37 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
38 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
39 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
40 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
41 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
42 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
43 * SUCH DAMAGE.
44 */
45
46 #include <sys/cdefs.h>
47 __KERNEL_RCSID(0, "$NetBSD: vnode_if.c,v 1.33.2.4 2001/11/14 19:16:50 nathanw Exp $");
48
49
50 /*
51 * If we have LKM support, always include the non-inline versions for
52 * LKMs. Otherwise, do it based on the option.
53 */
54 #ifdef LKM
55 #define VNODE_OP_NOINLINE
56 #else
57 #include "opt_vnode_op_noinline.h"
58 #endif
59
60 #include <sys/param.h>
61 #include <sys/mount.h>
62 #include <sys/buf.h>
63 #include <sys/vnode.h>
64
65 const struct vnodeop_desc vop_default_desc = {
66 0,
67 "default",
68 0,
69 NULL,
70 VDESC_NO_OFFSET,
71 VDESC_NO_OFFSET,
72 VDESC_NO_OFFSET,
73 VDESC_NO_OFFSET,
74 NULL,
75 };
76
77
78 /* Special cases: */
79
80 const int vop_strategy_vp_offsets[] = {
81 VDESC_NO_OFFSET
82 };
83 const struct vnodeop_desc vop_strategy_desc = {
84 1,
85 "vop_strategy",
86 0,
87 vop_strategy_vp_offsets,
88 VDESC_NO_OFFSET,
89 VDESC_NO_OFFSET,
90 VDESC_NO_OFFSET,
91 VDESC_NO_OFFSET,
92 NULL,
93 };
94 #ifdef VNODE_OP_NOINLINE
95 int
96 VOP_STRATEGY(bp)
97 struct buf *bp;
98 {
99 struct vop_strategy_args a;
100 a.a_desc = VDESC(vop_strategy);
101 a.a_bp = bp;
102 return (VCALL(bp->b_vp, VOFFSET(vop_strategy), &a));
103 }
104 #endif
105
106 const int vop_bwrite_vp_offsets[] = {
107 VDESC_NO_OFFSET
108 };
109 const struct vnodeop_desc vop_bwrite_desc = {
110 2,
111 "vop_bwrite",
112 0,
113 vop_bwrite_vp_offsets,
114 VDESC_NO_OFFSET,
115 VDESC_NO_OFFSET,
116 VDESC_NO_OFFSET,
117 VDESC_NO_OFFSET,
118 NULL,
119 };
120 #ifdef VNODE_OP_NOINLINE
121 int
122 VOP_BWRITE(bp)
123 struct buf *bp;
124 {
125 struct vop_bwrite_args a;
126 a.a_desc = VDESC(vop_bwrite);
127 a.a_bp = bp;
128 return (VCALL(bp->b_vp, VOFFSET(vop_bwrite), &a));
129 }
130 #endif
131
132 /* End of special cases */
133
134 const int vop_lookup_vp_offsets[] = {
135 VOPARG_OFFSETOF(struct vop_lookup_args,a_dvp),
136 VDESC_NO_OFFSET
137 };
138 const struct vnodeop_desc vop_lookup_desc = {
139 3,
140 "vop_lookup",
141 0,
142 vop_lookup_vp_offsets,
143 VOPARG_OFFSETOF(struct vop_lookup_args, a_vpp),
144 VDESC_NO_OFFSET,
145 VDESC_NO_OFFSET,
146 VOPARG_OFFSETOF(struct vop_lookup_args, a_cnp),
147 NULL,
148 };
149 #ifdef VNODE_OP_NOINLINE
150 int
151 VOP_LOOKUP(dvp, vpp, cnp)
152 struct vnode *dvp;
153 struct vnode **vpp;
154 struct componentname *cnp;
155 {
156 struct vop_lookup_args a;
157 a.a_desc = VDESC(vop_lookup);
158 a.a_dvp = dvp;
159 a.a_vpp = vpp;
160 a.a_cnp = cnp;
161 return (VCALL(dvp, VOFFSET(vop_lookup), &a));
162 }
163 #endif
164
165 const int vop_create_vp_offsets[] = {
166 VOPARG_OFFSETOF(struct vop_create_args,a_dvp),
167 VDESC_NO_OFFSET
168 };
169 const struct vnodeop_desc vop_create_desc = {
170 4,
171 "vop_create",
172 0 | VDESC_VP0_WILLPUT,
173 vop_create_vp_offsets,
174 VOPARG_OFFSETOF(struct vop_create_args, a_vpp),
175 VDESC_NO_OFFSET,
176 VDESC_NO_OFFSET,
177 VOPARG_OFFSETOF(struct vop_create_args, a_cnp),
178 NULL,
179 };
180 #ifdef VNODE_OP_NOINLINE
181 int
182 VOP_CREATE(dvp, vpp, cnp, vap)
183 struct vnode *dvp;
184 struct vnode **vpp;
185 struct componentname *cnp;
186 struct vattr *vap;
187 {
188 struct vop_create_args a;
189 a.a_desc = VDESC(vop_create);
190 a.a_dvp = dvp;
191 a.a_vpp = vpp;
192 a.a_cnp = cnp;
193 a.a_vap = vap;
194 return (VCALL(dvp, VOFFSET(vop_create), &a));
195 }
196 #endif
197
198 const int vop_mknod_vp_offsets[] = {
199 VOPARG_OFFSETOF(struct vop_mknod_args,a_dvp),
200 VDESC_NO_OFFSET
201 };
202 const struct vnodeop_desc vop_mknod_desc = {
203 5,
204 "vop_mknod",
205 0 | VDESC_VP0_WILLPUT,
206 vop_mknod_vp_offsets,
207 VOPARG_OFFSETOF(struct vop_mknod_args, a_vpp),
208 VDESC_NO_OFFSET,
209 VDESC_NO_OFFSET,
210 VOPARG_OFFSETOF(struct vop_mknod_args, a_cnp),
211 NULL,
212 };
213 #ifdef VNODE_OP_NOINLINE
214 int
215 VOP_MKNOD(dvp, vpp, cnp, vap)
216 struct vnode *dvp;
217 struct vnode **vpp;
218 struct componentname *cnp;
219 struct vattr *vap;
220 {
221 struct vop_mknod_args a;
222 a.a_desc = VDESC(vop_mknod);
223 a.a_dvp = dvp;
224 a.a_vpp = vpp;
225 a.a_cnp = cnp;
226 a.a_vap = vap;
227 return (VCALL(dvp, VOFFSET(vop_mknod), &a));
228 }
229 #endif
230
231 const int vop_open_vp_offsets[] = {
232 VOPARG_OFFSETOF(struct vop_open_args,a_vp),
233 VDESC_NO_OFFSET
234 };
235 const struct vnodeop_desc vop_open_desc = {
236 6,
237 "vop_open",
238 0,
239 vop_open_vp_offsets,
240 VDESC_NO_OFFSET,
241 VOPARG_OFFSETOF(struct vop_open_args, a_cred),
242 VOPARG_OFFSETOF(struct vop_open_args, a_p),
243 VDESC_NO_OFFSET,
244 NULL,
245 };
246 #ifdef VNODE_OP_NOINLINE
247 int
248 VOP_OPEN(vp, mode, cred, p)
249 struct vnode *vp;
250 int mode;
251 struct ucred *cred;
252 struct proc *p;
253 {
254 struct vop_open_args a;
255 a.a_desc = VDESC(vop_open);
256 a.a_vp = vp;
257 a.a_mode = mode;
258 a.a_cred = cred;
259 a.a_p = p;
260 return (VCALL(vp, VOFFSET(vop_open), &a));
261 }
262 #endif
263
264 const int vop_close_vp_offsets[] = {
265 VOPARG_OFFSETOF(struct vop_close_args,a_vp),
266 VDESC_NO_OFFSET
267 };
268 const struct vnodeop_desc vop_close_desc = {
269 7,
270 "vop_close",
271 0,
272 vop_close_vp_offsets,
273 VDESC_NO_OFFSET,
274 VOPARG_OFFSETOF(struct vop_close_args, a_cred),
275 VOPARG_OFFSETOF(struct vop_close_args, a_p),
276 VDESC_NO_OFFSET,
277 NULL,
278 };
279 #ifdef VNODE_OP_NOINLINE
280 int
281 VOP_CLOSE(vp, fflag, cred, p)
282 struct vnode *vp;
283 int fflag;
284 struct ucred *cred;
285 struct proc *p;
286 {
287 struct vop_close_args a;
288 a.a_desc = VDESC(vop_close);
289 a.a_vp = vp;
290 a.a_fflag = fflag;
291 a.a_cred = cred;
292 a.a_p = p;
293 return (VCALL(vp, VOFFSET(vop_close), &a));
294 }
295 #endif
296
297 const int vop_access_vp_offsets[] = {
298 VOPARG_OFFSETOF(struct vop_access_args,a_vp),
299 VDESC_NO_OFFSET
300 };
301 const struct vnodeop_desc vop_access_desc = {
302 8,
303 "vop_access",
304 0,
305 vop_access_vp_offsets,
306 VDESC_NO_OFFSET,
307 VOPARG_OFFSETOF(struct vop_access_args, a_cred),
308 VOPARG_OFFSETOF(struct vop_access_args, a_p),
309 VDESC_NO_OFFSET,
310 NULL,
311 };
312 #ifdef VNODE_OP_NOINLINE
313 int
314 VOP_ACCESS(vp, mode, cred, p)
315 struct vnode *vp;
316 int mode;
317 struct ucred *cred;
318 struct proc *p;
319 {
320 struct vop_access_args a;
321 a.a_desc = VDESC(vop_access);
322 a.a_vp = vp;
323 a.a_mode = mode;
324 a.a_cred = cred;
325 a.a_p = p;
326 return (VCALL(vp, VOFFSET(vop_access), &a));
327 }
328 #endif
329
330 const int vop_getattr_vp_offsets[] = {
331 VOPARG_OFFSETOF(struct vop_getattr_args,a_vp),
332 VDESC_NO_OFFSET
333 };
334 const struct vnodeop_desc vop_getattr_desc = {
335 9,
336 "vop_getattr",
337 0,
338 vop_getattr_vp_offsets,
339 VDESC_NO_OFFSET,
340 VOPARG_OFFSETOF(struct vop_getattr_args, a_cred),
341 VOPARG_OFFSETOF(struct vop_getattr_args, a_p),
342 VDESC_NO_OFFSET,
343 NULL,
344 };
345 #ifdef VNODE_OP_NOINLINE
346 int
347 VOP_GETATTR(vp, vap, cred, p)
348 struct vnode *vp;
349 struct vattr *vap;
350 struct ucred *cred;
351 struct proc *p;
352 {
353 struct vop_getattr_args a;
354 a.a_desc = VDESC(vop_getattr);
355 a.a_vp = vp;
356 a.a_vap = vap;
357 a.a_cred = cred;
358 a.a_p = p;
359 return (VCALL(vp, VOFFSET(vop_getattr), &a));
360 }
361 #endif
362
363 const int vop_setattr_vp_offsets[] = {
364 VOPARG_OFFSETOF(struct vop_setattr_args,a_vp),
365 VDESC_NO_OFFSET
366 };
367 const struct vnodeop_desc vop_setattr_desc = {
368 10,
369 "vop_setattr",
370 0,
371 vop_setattr_vp_offsets,
372 VDESC_NO_OFFSET,
373 VOPARG_OFFSETOF(struct vop_setattr_args, a_cred),
374 VOPARG_OFFSETOF(struct vop_setattr_args, a_p),
375 VDESC_NO_OFFSET,
376 NULL,
377 };
378 #ifdef VNODE_OP_NOINLINE
379 int
380 VOP_SETATTR(vp, vap, cred, p)
381 struct vnode *vp;
382 struct vattr *vap;
383 struct ucred *cred;
384 struct proc *p;
385 {
386 struct vop_setattr_args a;
387 a.a_desc = VDESC(vop_setattr);
388 a.a_vp = vp;
389 a.a_vap = vap;
390 a.a_cred = cred;
391 a.a_p = p;
392 return (VCALL(vp, VOFFSET(vop_setattr), &a));
393 }
394 #endif
395
396 const int vop_read_vp_offsets[] = {
397 VOPARG_OFFSETOF(struct vop_read_args,a_vp),
398 VDESC_NO_OFFSET
399 };
400 const struct vnodeop_desc vop_read_desc = {
401 11,
402 "vop_read",
403 0,
404 vop_read_vp_offsets,
405 VDESC_NO_OFFSET,
406 VOPARG_OFFSETOF(struct vop_read_args, a_cred),
407 VDESC_NO_OFFSET,
408 VDESC_NO_OFFSET,
409 NULL,
410 };
411 #ifdef VNODE_OP_NOINLINE
412 int
413 VOP_READ(vp, uio, ioflag, cred)
414 struct vnode *vp;
415 struct uio *uio;
416 int ioflag;
417 struct ucred *cred;
418 {
419 struct vop_read_args a;
420 a.a_desc = VDESC(vop_read);
421 a.a_vp = vp;
422 a.a_uio = uio;
423 a.a_ioflag = ioflag;
424 a.a_cred = cred;
425 return (VCALL(vp, VOFFSET(vop_read), &a));
426 }
427 #endif
428
429 const int vop_write_vp_offsets[] = {
430 VOPARG_OFFSETOF(struct vop_write_args,a_vp),
431 VDESC_NO_OFFSET
432 };
433 const struct vnodeop_desc vop_write_desc = {
434 12,
435 "vop_write",
436 0,
437 vop_write_vp_offsets,
438 VDESC_NO_OFFSET,
439 VOPARG_OFFSETOF(struct vop_write_args, a_cred),
440 VDESC_NO_OFFSET,
441 VDESC_NO_OFFSET,
442 NULL,
443 };
444 #ifdef VNODE_OP_NOINLINE
445 int
446 VOP_WRITE(vp, uio, ioflag, cred)
447 struct vnode *vp;
448 struct uio *uio;
449 int ioflag;
450 struct ucred *cred;
451 {
452 struct vop_write_args a;
453 a.a_desc = VDESC(vop_write);
454 a.a_vp = vp;
455 a.a_uio = uio;
456 a.a_ioflag = ioflag;
457 a.a_cred = cred;
458 return (VCALL(vp, VOFFSET(vop_write), &a));
459 }
460 #endif
461
462 const int vop_ioctl_vp_offsets[] = {
463 VOPARG_OFFSETOF(struct vop_ioctl_args,a_vp),
464 VDESC_NO_OFFSET
465 };
466 const struct vnodeop_desc vop_ioctl_desc = {
467 13,
468 "vop_ioctl",
469 0,
470 vop_ioctl_vp_offsets,
471 VDESC_NO_OFFSET,
472 VOPARG_OFFSETOF(struct vop_ioctl_args, a_cred),
473 VOPARG_OFFSETOF(struct vop_ioctl_args, a_p),
474 VDESC_NO_OFFSET,
475 NULL,
476 };
477 #ifdef VNODE_OP_NOINLINE
478 int
479 VOP_IOCTL(vp, command, data, fflag, cred, p)
480 struct vnode *vp;
481 u_long command;
482 caddr_t data;
483 int fflag;
484 struct ucred *cred;
485 struct proc *p;
486 {
487 struct vop_ioctl_args a;
488 a.a_desc = VDESC(vop_ioctl);
489 a.a_vp = vp;
490 a.a_command = command;
491 a.a_data = data;
492 a.a_fflag = fflag;
493 a.a_cred = cred;
494 a.a_p = p;
495 return (VCALL(vp, VOFFSET(vop_ioctl), &a));
496 }
497 #endif
498
499 const int vop_fcntl_vp_offsets[] = {
500 VOPARG_OFFSETOF(struct vop_fcntl_args,a_vp),
501 VDESC_NO_OFFSET
502 };
503 const struct vnodeop_desc vop_fcntl_desc = {
504 14,
505 "vop_fcntl",
506 0,
507 vop_fcntl_vp_offsets,
508 VDESC_NO_OFFSET,
509 VOPARG_OFFSETOF(struct vop_fcntl_args, a_cred),
510 VOPARG_OFFSETOF(struct vop_fcntl_args, a_p),
511 VDESC_NO_OFFSET,
512 NULL,
513 };
514 #ifdef VNODE_OP_NOINLINE
515 int
516 VOP_FCNTL(vp, command, data, fflag, cred, p)
517 struct vnode *vp;
518 u_int command;
519 caddr_t data;
520 int fflag;
521 struct ucred *cred;
522 struct proc *p;
523 {
524 struct vop_fcntl_args a;
525 a.a_desc = VDESC(vop_fcntl);
526 a.a_vp = vp;
527 a.a_command = command;
528 a.a_data = data;
529 a.a_fflag = fflag;
530 a.a_cred = cred;
531 a.a_p = p;
532 return (VCALL(vp, VOFFSET(vop_fcntl), &a));
533 }
534 #endif
535
536 const int vop_poll_vp_offsets[] = {
537 VOPARG_OFFSETOF(struct vop_poll_args,a_vp),
538 VDESC_NO_OFFSET
539 };
540 const struct vnodeop_desc vop_poll_desc = {
541 15,
542 "vop_poll",
543 0,
544 vop_poll_vp_offsets,
545 VDESC_NO_OFFSET,
546 VDESC_NO_OFFSET,
547 VOPARG_OFFSETOF(struct vop_poll_args, a_p),
548 VDESC_NO_OFFSET,
549 NULL,
550 };
551 #ifdef VNODE_OP_NOINLINE
552 int
553 VOP_POLL(vp, events, p)
554 struct vnode *vp;
555 int events;
556 struct proc *p;
557 {
558 struct vop_poll_args a;
559 a.a_desc = VDESC(vop_poll);
560 a.a_vp = vp;
561 a.a_events = events;
562 a.a_p = p;
563 return (VCALL(vp, VOFFSET(vop_poll), &a));
564 }
565 #endif
566
567 const int vop_revoke_vp_offsets[] = {
568 VOPARG_OFFSETOF(struct vop_revoke_args,a_vp),
569 VDESC_NO_OFFSET
570 };
571 const struct vnodeop_desc vop_revoke_desc = {
572 16,
573 "vop_revoke",
574 0,
575 vop_revoke_vp_offsets,
576 VDESC_NO_OFFSET,
577 VDESC_NO_OFFSET,
578 VDESC_NO_OFFSET,
579 VDESC_NO_OFFSET,
580 NULL,
581 };
582 #ifdef VNODE_OP_NOINLINE
583 int
584 VOP_REVOKE(vp, flags)
585 struct vnode *vp;
586 int flags;
587 {
588 struct vop_revoke_args a;
589 a.a_desc = VDESC(vop_revoke);
590 a.a_vp = vp;
591 a.a_flags = flags;
592 return (VCALL(vp, VOFFSET(vop_revoke), &a));
593 }
594 #endif
595
596 const int vop_mmap_vp_offsets[] = {
597 VOPARG_OFFSETOF(struct vop_mmap_args,a_vp),
598 VDESC_NO_OFFSET
599 };
600 const struct vnodeop_desc vop_mmap_desc = {
601 17,
602 "vop_mmap",
603 0,
604 vop_mmap_vp_offsets,
605 VDESC_NO_OFFSET,
606 VOPARG_OFFSETOF(struct vop_mmap_args, a_cred),
607 VOPARG_OFFSETOF(struct vop_mmap_args, a_p),
608 VDESC_NO_OFFSET,
609 NULL,
610 };
611 #ifdef VNODE_OP_NOINLINE
612 int
613 VOP_MMAP(vp, fflags, cred, p)
614 struct vnode *vp;
615 int fflags;
616 struct ucred *cred;
617 struct proc *p;
618 {
619 struct vop_mmap_args a;
620 a.a_desc = VDESC(vop_mmap);
621 a.a_vp = vp;
622 a.a_fflags = fflags;
623 a.a_cred = cred;
624 a.a_p = p;
625 return (VCALL(vp, VOFFSET(vop_mmap), &a));
626 }
627 #endif
628
629 const int vop_fsync_vp_offsets[] = {
630 VOPARG_OFFSETOF(struct vop_fsync_args,a_vp),
631 VDESC_NO_OFFSET
632 };
633 const struct vnodeop_desc vop_fsync_desc = {
634 18,
635 "vop_fsync",
636 0,
637 vop_fsync_vp_offsets,
638 VDESC_NO_OFFSET,
639 VOPARG_OFFSETOF(struct vop_fsync_args, a_cred),
640 VOPARG_OFFSETOF(struct vop_fsync_args, a_p),
641 VDESC_NO_OFFSET,
642 NULL,
643 };
644 #ifdef VNODE_OP_NOINLINE
645 int
646 VOP_FSYNC(vp, cred, flags, offlo, offhi, p)
647 struct vnode *vp;
648 struct ucred *cred;
649 int flags;
650 off_t offlo;
651 off_t offhi;
652 struct proc *p;
653 {
654 struct vop_fsync_args a;
655 a.a_desc = VDESC(vop_fsync);
656 a.a_vp = vp;
657 a.a_cred = cred;
658 a.a_flags = flags;
659 a.a_offlo = offlo;
660 a.a_offhi = offhi;
661 a.a_p = p;
662 return (VCALL(vp, VOFFSET(vop_fsync), &a));
663 }
664 #endif
665
666 const int vop_seek_vp_offsets[] = {
667 VOPARG_OFFSETOF(struct vop_seek_args,a_vp),
668 VDESC_NO_OFFSET
669 };
670 const struct vnodeop_desc vop_seek_desc = {
671 19,
672 "vop_seek",
673 0,
674 vop_seek_vp_offsets,
675 VDESC_NO_OFFSET,
676 VOPARG_OFFSETOF(struct vop_seek_args, a_cred),
677 VDESC_NO_OFFSET,
678 VDESC_NO_OFFSET,
679 NULL,
680 };
681 #ifdef VNODE_OP_NOINLINE
682 int
683 VOP_SEEK(vp, oldoff, newoff, cred)
684 struct vnode *vp;
685 off_t oldoff;
686 off_t newoff;
687 struct ucred *cred;
688 {
689 struct vop_seek_args a;
690 a.a_desc = VDESC(vop_seek);
691 a.a_vp = vp;
692 a.a_oldoff = oldoff;
693 a.a_newoff = newoff;
694 a.a_cred = cred;
695 return (VCALL(vp, VOFFSET(vop_seek), &a));
696 }
697 #endif
698
699 const int vop_remove_vp_offsets[] = {
700 VOPARG_OFFSETOF(struct vop_remove_args,a_dvp),
701 VOPARG_OFFSETOF(struct vop_remove_args,a_vp),
702 VDESC_NO_OFFSET
703 };
704 const struct vnodeop_desc vop_remove_desc = {
705 20,
706 "vop_remove",
707 0 | VDESC_VP0_WILLPUT | VDESC_VP1_WILLPUT,
708 vop_remove_vp_offsets,
709 VDESC_NO_OFFSET,
710 VDESC_NO_OFFSET,
711 VDESC_NO_OFFSET,
712 VOPARG_OFFSETOF(struct vop_remove_args, a_cnp),
713 NULL,
714 };
715 #ifdef VNODE_OP_NOINLINE
716 int
717 VOP_REMOVE(dvp, vp, cnp)
718 struct vnode *dvp;
719 struct vnode *vp;
720 struct componentname *cnp;
721 {
722 struct vop_remove_args a;
723 a.a_desc = VDESC(vop_remove);
724 a.a_dvp = dvp;
725 a.a_vp = vp;
726 a.a_cnp = cnp;
727 return (VCALL(dvp, VOFFSET(vop_remove), &a));
728 }
729 #endif
730
731 const int vop_link_vp_offsets[] = {
732 VOPARG_OFFSETOF(struct vop_link_args,a_dvp),
733 VOPARG_OFFSETOF(struct vop_link_args,a_vp),
734 VDESC_NO_OFFSET
735 };
736 const struct vnodeop_desc vop_link_desc = {
737 21,
738 "vop_link",
739 0 | VDESC_VP0_WILLPUT,
740 vop_link_vp_offsets,
741 VDESC_NO_OFFSET,
742 VDESC_NO_OFFSET,
743 VDESC_NO_OFFSET,
744 VOPARG_OFFSETOF(struct vop_link_args, a_cnp),
745 NULL,
746 };
747 #ifdef VNODE_OP_NOINLINE
748 int
749 VOP_LINK(dvp, vp, cnp)
750 struct vnode *dvp;
751 struct vnode *vp;
752 struct componentname *cnp;
753 {
754 struct vop_link_args a;
755 a.a_desc = VDESC(vop_link);
756 a.a_dvp = dvp;
757 a.a_vp = vp;
758 a.a_cnp = cnp;
759 return (VCALL(dvp, VOFFSET(vop_link), &a));
760 }
761 #endif
762
763 const int vop_rename_vp_offsets[] = {
764 VOPARG_OFFSETOF(struct vop_rename_args,a_fdvp),
765 VOPARG_OFFSETOF(struct vop_rename_args,a_fvp),
766 VOPARG_OFFSETOF(struct vop_rename_args,a_tdvp),
767 VOPARG_OFFSETOF(struct vop_rename_args,a_tvp),
768 VDESC_NO_OFFSET
769 };
770 const struct vnodeop_desc vop_rename_desc = {
771 22,
772 "vop_rename",
773 0 | VDESC_VP0_WILLRELE | VDESC_VP1_WILLRELE | VDESC_VP2_WILLPUT | VDESC_VP3_WILLRELE,
774 vop_rename_vp_offsets,
775 VDESC_NO_OFFSET,
776 VDESC_NO_OFFSET,
777 VDESC_NO_OFFSET,
778 VOPARG_OFFSETOF(struct vop_rename_args, a_fcnp),
779 NULL,
780 };
781 #ifdef VNODE_OP_NOINLINE
782 int
783 VOP_RENAME(fdvp, fvp, fcnp, tdvp, tvp, tcnp)
784 struct vnode *fdvp;
785 struct vnode *fvp;
786 struct componentname *fcnp;
787 struct vnode *tdvp;
788 struct vnode *tvp;
789 struct componentname *tcnp;
790 {
791 struct vop_rename_args a;
792 a.a_desc = VDESC(vop_rename);
793 a.a_fdvp = fdvp;
794 a.a_fvp = fvp;
795 a.a_fcnp = fcnp;
796 a.a_tdvp = tdvp;
797 a.a_tvp = tvp;
798 a.a_tcnp = tcnp;
799 return (VCALL(fdvp, VOFFSET(vop_rename), &a));
800 }
801 #endif
802
803 const int vop_mkdir_vp_offsets[] = {
804 VOPARG_OFFSETOF(struct vop_mkdir_args,a_dvp),
805 VDESC_NO_OFFSET
806 };
807 const struct vnodeop_desc vop_mkdir_desc = {
808 23,
809 "vop_mkdir",
810 0 | VDESC_VP0_WILLPUT,
811 vop_mkdir_vp_offsets,
812 VOPARG_OFFSETOF(struct vop_mkdir_args, a_vpp),
813 VDESC_NO_OFFSET,
814 VDESC_NO_OFFSET,
815 VOPARG_OFFSETOF(struct vop_mkdir_args, a_cnp),
816 NULL,
817 };
818 #ifdef VNODE_OP_NOINLINE
819 int
820 VOP_MKDIR(dvp, vpp, cnp, vap)
821 struct vnode *dvp;
822 struct vnode **vpp;
823 struct componentname *cnp;
824 struct vattr *vap;
825 {
826 struct vop_mkdir_args a;
827 a.a_desc = VDESC(vop_mkdir);
828 a.a_dvp = dvp;
829 a.a_vpp = vpp;
830 a.a_cnp = cnp;
831 a.a_vap = vap;
832 return (VCALL(dvp, VOFFSET(vop_mkdir), &a));
833 }
834 #endif
835
836 const int vop_rmdir_vp_offsets[] = {
837 VOPARG_OFFSETOF(struct vop_rmdir_args,a_dvp),
838 VOPARG_OFFSETOF(struct vop_rmdir_args,a_vp),
839 VDESC_NO_OFFSET
840 };
841 const struct vnodeop_desc vop_rmdir_desc = {
842 24,
843 "vop_rmdir",
844 0 | VDESC_VP0_WILLPUT | VDESC_VP1_WILLPUT,
845 vop_rmdir_vp_offsets,
846 VDESC_NO_OFFSET,
847 VDESC_NO_OFFSET,
848 VDESC_NO_OFFSET,
849 VOPARG_OFFSETOF(struct vop_rmdir_args, a_cnp),
850 NULL,
851 };
852 #ifdef VNODE_OP_NOINLINE
853 int
854 VOP_RMDIR(dvp, vp, cnp)
855 struct vnode *dvp;
856 struct vnode *vp;
857 struct componentname *cnp;
858 {
859 struct vop_rmdir_args a;
860 a.a_desc = VDESC(vop_rmdir);
861 a.a_dvp = dvp;
862 a.a_vp = vp;
863 a.a_cnp = cnp;
864 return (VCALL(dvp, VOFFSET(vop_rmdir), &a));
865 }
866 #endif
867
868 const int vop_symlink_vp_offsets[] = {
869 VOPARG_OFFSETOF(struct vop_symlink_args,a_dvp),
870 VDESC_NO_OFFSET
871 };
872 const struct vnodeop_desc vop_symlink_desc = {
873 25,
874 "vop_symlink",
875 0 | VDESC_VP0_WILLPUT,
876 vop_symlink_vp_offsets,
877 VOPARG_OFFSETOF(struct vop_symlink_args, a_vpp),
878 VDESC_NO_OFFSET,
879 VDESC_NO_OFFSET,
880 VOPARG_OFFSETOF(struct vop_symlink_args, a_cnp),
881 NULL,
882 };
883 #ifdef VNODE_OP_NOINLINE
884 int
885 VOP_SYMLINK(dvp, vpp, cnp, vap, target)
886 struct vnode *dvp;
887 struct vnode **vpp;
888 struct componentname *cnp;
889 struct vattr *vap;
890 char *target;
891 {
892 struct vop_symlink_args a;
893 a.a_desc = VDESC(vop_symlink);
894 a.a_dvp = dvp;
895 a.a_vpp = vpp;
896 a.a_cnp = cnp;
897 a.a_vap = vap;
898 a.a_target = target;
899 return (VCALL(dvp, VOFFSET(vop_symlink), &a));
900 }
901 #endif
902
903 const int vop_readdir_vp_offsets[] = {
904 VOPARG_OFFSETOF(struct vop_readdir_args,a_vp),
905 VDESC_NO_OFFSET
906 };
907 const struct vnodeop_desc vop_readdir_desc = {
908 26,
909 "vop_readdir",
910 0,
911 vop_readdir_vp_offsets,
912 VDESC_NO_OFFSET,
913 VOPARG_OFFSETOF(struct vop_readdir_args, a_cred),
914 VDESC_NO_OFFSET,
915 VDESC_NO_OFFSET,
916 NULL,
917 };
918 #ifdef VNODE_OP_NOINLINE
919 int
920 VOP_READDIR(vp, uio, cred, eofflag, cookies, ncookies)
921 struct vnode *vp;
922 struct uio *uio;
923 struct ucred *cred;
924 int *eofflag;
925 off_t **cookies;
926 int *ncookies;
927 {
928 struct vop_readdir_args a;
929 a.a_desc = VDESC(vop_readdir);
930 a.a_vp = vp;
931 a.a_uio = uio;
932 a.a_cred = cred;
933 a.a_eofflag = eofflag;
934 a.a_cookies = cookies;
935 a.a_ncookies = ncookies;
936 return (VCALL(vp, VOFFSET(vop_readdir), &a));
937 }
938 #endif
939
940 const int vop_readlink_vp_offsets[] = {
941 VOPARG_OFFSETOF(struct vop_readlink_args,a_vp),
942 VDESC_NO_OFFSET
943 };
944 const struct vnodeop_desc vop_readlink_desc = {
945 27,
946 "vop_readlink",
947 0,
948 vop_readlink_vp_offsets,
949 VDESC_NO_OFFSET,
950 VOPARG_OFFSETOF(struct vop_readlink_args, a_cred),
951 VDESC_NO_OFFSET,
952 VDESC_NO_OFFSET,
953 NULL,
954 };
955 #ifdef VNODE_OP_NOINLINE
956 int
957 VOP_READLINK(vp, uio, cred)
958 struct vnode *vp;
959 struct uio *uio;
960 struct ucred *cred;
961 {
962 struct vop_readlink_args a;
963 a.a_desc = VDESC(vop_readlink);
964 a.a_vp = vp;
965 a.a_uio = uio;
966 a.a_cred = cred;
967 return (VCALL(vp, VOFFSET(vop_readlink), &a));
968 }
969 #endif
970
971 const int vop_abortop_vp_offsets[] = {
972 VOPARG_OFFSETOF(struct vop_abortop_args,a_dvp),
973 VDESC_NO_OFFSET
974 };
975 const struct vnodeop_desc vop_abortop_desc = {
976 28,
977 "vop_abortop",
978 0,
979 vop_abortop_vp_offsets,
980 VDESC_NO_OFFSET,
981 VDESC_NO_OFFSET,
982 VDESC_NO_OFFSET,
983 VOPARG_OFFSETOF(struct vop_abortop_args, a_cnp),
984 NULL,
985 };
986 #ifdef VNODE_OP_NOINLINE
987 int
988 VOP_ABORTOP(dvp, cnp)
989 struct vnode *dvp;
990 struct componentname *cnp;
991 {
992 struct vop_abortop_args a;
993 a.a_desc = VDESC(vop_abortop);
994 a.a_dvp = dvp;
995 a.a_cnp = cnp;
996 return (VCALL(dvp, VOFFSET(vop_abortop), &a));
997 }
998 #endif
999
1000 const int vop_inactive_vp_offsets[] = {
1001 VOPARG_OFFSETOF(struct vop_inactive_args,a_vp),
1002 VDESC_NO_OFFSET
1003 };
1004 const struct vnodeop_desc vop_inactive_desc = {
1005 29,
1006 "vop_inactive",
1007 0 | VDESC_VP0_WILLUNLOCK,
1008 vop_inactive_vp_offsets,
1009 VDESC_NO_OFFSET,
1010 VDESC_NO_OFFSET,
1011 VOPARG_OFFSETOF(struct vop_inactive_args, a_p),
1012 VDESC_NO_OFFSET,
1013 NULL,
1014 };
1015 #ifdef VNODE_OP_NOINLINE
1016 int
1017 VOP_INACTIVE(vp, p)
1018 struct vnode *vp;
1019 struct proc *p;
1020 {
1021 struct vop_inactive_args a;
1022 a.a_desc = VDESC(vop_inactive);
1023 a.a_vp = vp;
1024 a.a_p = p;
1025 return (VCALL(vp, VOFFSET(vop_inactive), &a));
1026 }
1027 #endif
1028
1029 const int vop_reclaim_vp_offsets[] = {
1030 VOPARG_OFFSETOF(struct vop_reclaim_args,a_vp),
1031 VDESC_NO_OFFSET
1032 };
1033 const struct vnodeop_desc vop_reclaim_desc = {
1034 30,
1035 "vop_reclaim",
1036 0,
1037 vop_reclaim_vp_offsets,
1038 VDESC_NO_OFFSET,
1039 VDESC_NO_OFFSET,
1040 VOPARG_OFFSETOF(struct vop_reclaim_args, a_p),
1041 VDESC_NO_OFFSET,
1042 NULL,
1043 };
1044 #ifdef VNODE_OP_NOINLINE
1045 int
1046 VOP_RECLAIM(vp, p)
1047 struct vnode *vp;
1048 struct proc *p;
1049 {
1050 struct vop_reclaim_args a;
1051 a.a_desc = VDESC(vop_reclaim);
1052 a.a_vp = vp;
1053 a.a_p = p;
1054 return (VCALL(vp, VOFFSET(vop_reclaim), &a));
1055 }
1056 #endif
1057
1058 const int vop_lock_vp_offsets[] = {
1059 VOPARG_OFFSETOF(struct vop_lock_args,a_vp),
1060 VDESC_NO_OFFSET
1061 };
1062 const struct vnodeop_desc vop_lock_desc = {
1063 31,
1064 "vop_lock",
1065 0,
1066 vop_lock_vp_offsets,
1067 VDESC_NO_OFFSET,
1068 VDESC_NO_OFFSET,
1069 VDESC_NO_OFFSET,
1070 VDESC_NO_OFFSET,
1071 NULL,
1072 };
1073 #ifdef VNODE_OP_NOINLINE
1074 int
1075 VOP_LOCK(vp, flags)
1076 struct vnode *vp;
1077 int flags;
1078 {
1079 struct vop_lock_args a;
1080 a.a_desc = VDESC(vop_lock);
1081 a.a_vp = vp;
1082 a.a_flags = flags;
1083 return (VCALL(vp, VOFFSET(vop_lock), &a));
1084 }
1085 #endif
1086
1087 const int vop_unlock_vp_offsets[] = {
1088 VOPARG_OFFSETOF(struct vop_unlock_args,a_vp),
1089 VDESC_NO_OFFSET
1090 };
1091 const struct vnodeop_desc vop_unlock_desc = {
1092 32,
1093 "vop_unlock",
1094 0,
1095 vop_unlock_vp_offsets,
1096 VDESC_NO_OFFSET,
1097 VDESC_NO_OFFSET,
1098 VDESC_NO_OFFSET,
1099 VDESC_NO_OFFSET,
1100 NULL,
1101 };
1102 #ifdef VNODE_OP_NOINLINE
1103 int
1104 VOP_UNLOCK(vp, flags)
1105 struct vnode *vp;
1106 int flags;
1107 {
1108 struct vop_unlock_args a;
1109 a.a_desc = VDESC(vop_unlock);
1110 a.a_vp = vp;
1111 a.a_flags = flags;
1112 return (VCALL(vp, VOFFSET(vop_unlock), &a));
1113 }
1114 #endif
1115
1116 const int vop_bmap_vp_offsets[] = {
1117 VOPARG_OFFSETOF(struct vop_bmap_args,a_vp),
1118 VDESC_NO_OFFSET
1119 };
1120 const struct vnodeop_desc vop_bmap_desc = {
1121 33,
1122 "vop_bmap",
1123 0,
1124 vop_bmap_vp_offsets,
1125 VOPARG_OFFSETOF(struct vop_bmap_args, a_vpp),
1126 VDESC_NO_OFFSET,
1127 VDESC_NO_OFFSET,
1128 VDESC_NO_OFFSET,
1129 NULL,
1130 };
1131 #ifdef VNODE_OP_NOINLINE
1132 int
1133 VOP_BMAP(vp, bn, vpp, bnp, runp)
1134 struct vnode *vp;
1135 daddr_t bn;
1136 struct vnode **vpp;
1137 daddr_t *bnp;
1138 int *runp;
1139 {
1140 struct vop_bmap_args a;
1141 a.a_desc = VDESC(vop_bmap);
1142 a.a_vp = vp;
1143 a.a_bn = bn;
1144 a.a_vpp = vpp;
1145 a.a_bnp = bnp;
1146 a.a_runp = runp;
1147 return (VCALL(vp, VOFFSET(vop_bmap), &a));
1148 }
1149 #endif
1150
1151 const int vop_print_vp_offsets[] = {
1152 VOPARG_OFFSETOF(struct vop_print_args,a_vp),
1153 VDESC_NO_OFFSET
1154 };
1155 const struct vnodeop_desc vop_print_desc = {
1156 34,
1157 "vop_print",
1158 0,
1159 vop_print_vp_offsets,
1160 VDESC_NO_OFFSET,
1161 VDESC_NO_OFFSET,
1162 VDESC_NO_OFFSET,
1163 VDESC_NO_OFFSET,
1164 NULL,
1165 };
1166 #ifdef VNODE_OP_NOINLINE
1167 int
1168 VOP_PRINT(vp)
1169 struct vnode *vp;
1170 {
1171 struct vop_print_args a;
1172 a.a_desc = VDESC(vop_print);
1173 a.a_vp = vp;
1174 return (VCALL(vp, VOFFSET(vop_print), &a));
1175 }
1176 #endif
1177
1178 const int vop_islocked_vp_offsets[] = {
1179 VOPARG_OFFSETOF(struct vop_islocked_args,a_vp),
1180 VDESC_NO_OFFSET
1181 };
1182 const struct vnodeop_desc vop_islocked_desc = {
1183 35,
1184 "vop_islocked",
1185 0,
1186 vop_islocked_vp_offsets,
1187 VDESC_NO_OFFSET,
1188 VDESC_NO_OFFSET,
1189 VDESC_NO_OFFSET,
1190 VDESC_NO_OFFSET,
1191 NULL,
1192 };
1193 #ifdef VNODE_OP_NOINLINE
1194 int
1195 VOP_ISLOCKED(vp)
1196 struct vnode *vp;
1197 {
1198 struct vop_islocked_args a;
1199 a.a_desc = VDESC(vop_islocked);
1200 a.a_vp = vp;
1201 return (VCALL(vp, VOFFSET(vop_islocked), &a));
1202 }
1203 #endif
1204
1205 const int vop_pathconf_vp_offsets[] = {
1206 VOPARG_OFFSETOF(struct vop_pathconf_args,a_vp),
1207 VDESC_NO_OFFSET
1208 };
1209 const struct vnodeop_desc vop_pathconf_desc = {
1210 36,
1211 "vop_pathconf",
1212 0,
1213 vop_pathconf_vp_offsets,
1214 VDESC_NO_OFFSET,
1215 VDESC_NO_OFFSET,
1216 VDESC_NO_OFFSET,
1217 VDESC_NO_OFFSET,
1218 NULL,
1219 };
1220 #ifdef VNODE_OP_NOINLINE
1221 int
1222 VOP_PATHCONF(vp, name, retval)
1223 struct vnode *vp;
1224 int name;
1225 register_t *retval;
1226 {
1227 struct vop_pathconf_args a;
1228 a.a_desc = VDESC(vop_pathconf);
1229 a.a_vp = vp;
1230 a.a_name = name;
1231 a.a_retval = retval;
1232 return (VCALL(vp, VOFFSET(vop_pathconf), &a));
1233 }
1234 #endif
1235
1236 const int vop_advlock_vp_offsets[] = {
1237 VOPARG_OFFSETOF(struct vop_advlock_args,a_vp),
1238 VDESC_NO_OFFSET
1239 };
1240 const struct vnodeop_desc vop_advlock_desc = {
1241 37,
1242 "vop_advlock",
1243 0,
1244 vop_advlock_vp_offsets,
1245 VDESC_NO_OFFSET,
1246 VDESC_NO_OFFSET,
1247 VDESC_NO_OFFSET,
1248 VDESC_NO_OFFSET,
1249 NULL,
1250 };
1251 #ifdef VNODE_OP_NOINLINE
1252 int
1253 VOP_ADVLOCK(vp, id, op, fl, flags)
1254 struct vnode *vp;
1255 caddr_t id;
1256 int op;
1257 struct flock *fl;
1258 int flags;
1259 {
1260 struct vop_advlock_args a;
1261 a.a_desc = VDESC(vop_advlock);
1262 a.a_vp = vp;
1263 a.a_id = id;
1264 a.a_op = op;
1265 a.a_fl = fl;
1266 a.a_flags = flags;
1267 return (VCALL(vp, VOFFSET(vop_advlock), &a));
1268 }
1269 #endif
1270
1271 const int vop_blkatoff_vp_offsets[] = {
1272 VOPARG_OFFSETOF(struct vop_blkatoff_args,a_vp),
1273 VDESC_NO_OFFSET
1274 };
1275 const struct vnodeop_desc vop_blkatoff_desc = {
1276 38,
1277 "vop_blkatoff",
1278 0,
1279 vop_blkatoff_vp_offsets,
1280 VDESC_NO_OFFSET,
1281 VDESC_NO_OFFSET,
1282 VDESC_NO_OFFSET,
1283 VDESC_NO_OFFSET,
1284 NULL,
1285 };
1286 #ifdef VNODE_OP_NOINLINE
1287 int
1288 VOP_BLKATOFF(vp, offset, res, bpp)
1289 struct vnode *vp;
1290 off_t offset;
1291 char **res;
1292 struct buf **bpp;
1293 {
1294 struct vop_blkatoff_args a;
1295 a.a_desc = VDESC(vop_blkatoff);
1296 a.a_vp = vp;
1297 a.a_offset = offset;
1298 a.a_res = res;
1299 a.a_bpp = bpp;
1300 return (VCALL(vp, VOFFSET(vop_blkatoff), &a));
1301 }
1302 #endif
1303
1304 const int vop_valloc_vp_offsets[] = {
1305 VOPARG_OFFSETOF(struct vop_valloc_args,a_pvp),
1306 VDESC_NO_OFFSET
1307 };
1308 const struct vnodeop_desc vop_valloc_desc = {
1309 39,
1310 "vop_valloc",
1311 0,
1312 vop_valloc_vp_offsets,
1313 VOPARG_OFFSETOF(struct vop_valloc_args, a_vpp),
1314 VOPARG_OFFSETOF(struct vop_valloc_args, a_cred),
1315 VDESC_NO_OFFSET,
1316 VDESC_NO_OFFSET,
1317 NULL,
1318 };
1319 #ifdef VNODE_OP_NOINLINE
1320 int
1321 VOP_VALLOC(pvp, mode, cred, vpp)
1322 struct vnode *pvp;
1323 int mode;
1324 struct ucred *cred;
1325 struct vnode **vpp;
1326 {
1327 struct vop_valloc_args a;
1328 a.a_desc = VDESC(vop_valloc);
1329 a.a_pvp = pvp;
1330 a.a_mode = mode;
1331 a.a_cred = cred;
1332 a.a_vpp = vpp;
1333 return (VCALL(pvp, VOFFSET(vop_valloc), &a));
1334 }
1335 #endif
1336
1337 const int vop_balloc_vp_offsets[] = {
1338 VOPARG_OFFSETOF(struct vop_balloc_args,a_vp),
1339 VDESC_NO_OFFSET
1340 };
1341 const struct vnodeop_desc vop_balloc_desc = {
1342 40,
1343 "vop_balloc",
1344 0,
1345 vop_balloc_vp_offsets,
1346 VDESC_NO_OFFSET,
1347 VOPARG_OFFSETOF(struct vop_balloc_args, a_cred),
1348 VDESC_NO_OFFSET,
1349 VDESC_NO_OFFSET,
1350 NULL,
1351 };
1352 #ifdef VNODE_OP_NOINLINE
1353 int
1354 VOP_BALLOC(vp, startoffset, size, cred, flags, bpp)
1355 struct vnode *vp;
1356 off_t startoffset;
1357 int size;
1358 struct ucred *cred;
1359 int flags;
1360 struct buf **bpp;
1361 {
1362 struct vop_balloc_args a;
1363 a.a_desc = VDESC(vop_balloc);
1364 a.a_vp = vp;
1365 a.a_startoffset = startoffset;
1366 a.a_size = size;
1367 a.a_cred = cred;
1368 a.a_flags = flags;
1369 a.a_bpp = bpp;
1370 return (VCALL(vp, VOFFSET(vop_balloc), &a));
1371 }
1372 #endif
1373
1374 const int vop_reallocblks_vp_offsets[] = {
1375 VOPARG_OFFSETOF(struct vop_reallocblks_args,a_vp),
1376 VDESC_NO_OFFSET
1377 };
1378 const struct vnodeop_desc vop_reallocblks_desc = {
1379 41,
1380 "vop_reallocblks",
1381 0,
1382 vop_reallocblks_vp_offsets,
1383 VDESC_NO_OFFSET,
1384 VDESC_NO_OFFSET,
1385 VDESC_NO_OFFSET,
1386 VDESC_NO_OFFSET,
1387 NULL,
1388 };
1389 #ifdef VNODE_OP_NOINLINE
1390 int
1391 VOP_REALLOCBLKS(vp, buflist)
1392 struct vnode *vp;
1393 struct cluster_save *buflist;
1394 {
1395 struct vop_reallocblks_args a;
1396 a.a_desc = VDESC(vop_reallocblks);
1397 a.a_vp = vp;
1398 a.a_buflist = buflist;
1399 return (VCALL(vp, VOFFSET(vop_reallocblks), &a));
1400 }
1401 #endif
1402
1403 const int vop_vfree_vp_offsets[] = {
1404 VOPARG_OFFSETOF(struct vop_vfree_args,a_pvp),
1405 VDESC_NO_OFFSET
1406 };
1407 const struct vnodeop_desc vop_vfree_desc = {
1408 42,
1409 "vop_vfree",
1410 0,
1411 vop_vfree_vp_offsets,
1412 VDESC_NO_OFFSET,
1413 VDESC_NO_OFFSET,
1414 VDESC_NO_OFFSET,
1415 VDESC_NO_OFFSET,
1416 NULL,
1417 };
1418 #ifdef VNODE_OP_NOINLINE
1419 int
1420 VOP_VFREE(pvp, ino, mode)
1421 struct vnode *pvp;
1422 ino_t ino;
1423 int mode;
1424 {
1425 struct vop_vfree_args a;
1426 a.a_desc = VDESC(vop_vfree);
1427 a.a_pvp = pvp;
1428 a.a_ino = ino;
1429 a.a_mode = mode;
1430 return (VCALL(pvp, VOFFSET(vop_vfree), &a));
1431 }
1432 #endif
1433
1434 const int vop_truncate_vp_offsets[] = {
1435 VOPARG_OFFSETOF(struct vop_truncate_args,a_vp),
1436 VDESC_NO_OFFSET
1437 };
1438 const struct vnodeop_desc vop_truncate_desc = {
1439 43,
1440 "vop_truncate",
1441 0,
1442 vop_truncate_vp_offsets,
1443 VDESC_NO_OFFSET,
1444 VOPARG_OFFSETOF(struct vop_truncate_args, a_cred),
1445 VOPARG_OFFSETOF(struct vop_truncate_args, a_p),
1446 VDESC_NO_OFFSET,
1447 NULL,
1448 };
1449 #ifdef VNODE_OP_NOINLINE
1450 int
1451 VOP_TRUNCATE(vp, length, flags, cred, p)
1452 struct vnode *vp;
1453 off_t length;
1454 int flags;
1455 struct ucred *cred;
1456 struct proc *p;
1457 {
1458 struct vop_truncate_args a;
1459 a.a_desc = VDESC(vop_truncate);
1460 a.a_vp = vp;
1461 a.a_length = length;
1462 a.a_flags = flags;
1463 a.a_cred = cred;
1464 a.a_p = p;
1465 return (VCALL(vp, VOFFSET(vop_truncate), &a));
1466 }
1467 #endif
1468
1469 const int vop_update_vp_offsets[] = {
1470 VOPARG_OFFSETOF(struct vop_update_args,a_vp),
1471 VDESC_NO_OFFSET
1472 };
1473 const struct vnodeop_desc vop_update_desc = {
1474 44,
1475 "vop_update",
1476 0,
1477 vop_update_vp_offsets,
1478 VDESC_NO_OFFSET,
1479 VDESC_NO_OFFSET,
1480 VDESC_NO_OFFSET,
1481 VDESC_NO_OFFSET,
1482 NULL,
1483 };
1484 #ifdef VNODE_OP_NOINLINE
1485 int
1486 VOP_UPDATE(vp, access, modify, flags)
1487 struct vnode *vp;
1488 struct timespec *access;
1489 struct timespec *modify;
1490 int flags;
1491 {
1492 struct vop_update_args a;
1493 a.a_desc = VDESC(vop_update);
1494 a.a_vp = vp;
1495 a.a_access = access;
1496 a.a_modify = modify;
1497 a.a_flags = flags;
1498 return (VCALL(vp, VOFFSET(vop_update), &a));
1499 }
1500 #endif
1501
1502 const int vop_lease_vp_offsets[] = {
1503 VOPARG_OFFSETOF(struct vop_lease_args,a_vp),
1504 VDESC_NO_OFFSET
1505 };
1506 const struct vnodeop_desc vop_lease_desc = {
1507 45,
1508 "vop_lease",
1509 0,
1510 vop_lease_vp_offsets,
1511 VDESC_NO_OFFSET,
1512 VOPARG_OFFSETOF(struct vop_lease_args, a_cred),
1513 VOPARG_OFFSETOF(struct vop_lease_args, a_p),
1514 VDESC_NO_OFFSET,
1515 NULL,
1516 };
1517 #ifdef VNODE_OP_NOINLINE
1518 int
1519 VOP_LEASE(vp, p, cred, flag)
1520 struct vnode *vp;
1521 struct proc *p;
1522 struct ucred *cred;
1523 int flag;
1524 {
1525 struct vop_lease_args a;
1526 a.a_desc = VDESC(vop_lease);
1527 a.a_vp = vp;
1528 a.a_p = p;
1529 a.a_cred = cred;
1530 a.a_flag = flag;
1531 return (VCALL(vp, VOFFSET(vop_lease), &a));
1532 }
1533 #endif
1534
1535 const int vop_whiteout_vp_offsets[] = {
1536 VOPARG_OFFSETOF(struct vop_whiteout_args,a_dvp),
1537 VDESC_NO_OFFSET
1538 };
1539 const struct vnodeop_desc vop_whiteout_desc = {
1540 46,
1541 "vop_whiteout",
1542 0,
1543 vop_whiteout_vp_offsets,
1544 VDESC_NO_OFFSET,
1545 VDESC_NO_OFFSET,
1546 VDESC_NO_OFFSET,
1547 VOPARG_OFFSETOF(struct vop_whiteout_args, a_cnp),
1548 NULL,
1549 };
1550 #ifdef VNODE_OP_NOINLINE
1551 int
1552 VOP_WHITEOUT(dvp, cnp, flags)
1553 struct vnode *dvp;
1554 struct componentname *cnp;
1555 int flags;
1556 {
1557 struct vop_whiteout_args a;
1558 a.a_desc = VDESC(vop_whiteout);
1559 a.a_dvp = dvp;
1560 a.a_cnp = cnp;
1561 a.a_flags = flags;
1562 return (VCALL(dvp, VOFFSET(vop_whiteout), &a));
1563 }
1564 #endif
1565
1566 const int vop_getpages_vp_offsets[] = {
1567 VOPARG_OFFSETOF(struct vop_getpages_args,a_vp),
1568 VDESC_NO_OFFSET
1569 };
1570 const struct vnodeop_desc vop_getpages_desc = {
1571 47,
1572 "vop_getpages",
1573 0,
1574 vop_getpages_vp_offsets,
1575 VDESC_NO_OFFSET,
1576 VDESC_NO_OFFSET,
1577 VDESC_NO_OFFSET,
1578 VDESC_NO_OFFSET,
1579 NULL,
1580 };
1581 #ifdef VNODE_OP_NOINLINE
1582 int
1583 VOP_GETPAGES(vp, offset, m, count, centeridx, access_type, advice, flags)
1584 struct vnode *vp;
1585 voff_t offset;
1586 struct vm_page **m;
1587 int *count;
1588 int centeridx;
1589 vm_prot_t access_type;
1590 int advice;
1591 int flags;
1592 {
1593 struct vop_getpages_args a;
1594 a.a_desc = VDESC(vop_getpages);
1595 a.a_vp = vp;
1596 a.a_offset = offset;
1597 a.a_m = m;
1598 a.a_count = count;
1599 a.a_centeridx = centeridx;
1600 a.a_access_type = access_type;
1601 a.a_advice = advice;
1602 a.a_flags = flags;
1603 return (VCALL(vp, VOFFSET(vop_getpages), &a));
1604 }
1605 #endif
1606
1607 const int vop_putpages_vp_offsets[] = {
1608 VOPARG_OFFSETOF(struct vop_putpages_args,a_vp),
1609 VDESC_NO_OFFSET
1610 };
1611 const struct vnodeop_desc vop_putpages_desc = {
1612 48,
1613 "vop_putpages",
1614 0,
1615 vop_putpages_vp_offsets,
1616 VDESC_NO_OFFSET,
1617 VDESC_NO_OFFSET,
1618 VDESC_NO_OFFSET,
1619 VDESC_NO_OFFSET,
1620 NULL,
1621 };
1622 #ifdef VNODE_OP_NOINLINE
1623 int
1624 VOP_PUTPAGES(vp, offlo, offhi, flags)
1625 struct vnode *vp;
1626 voff_t offlo;
1627 voff_t offhi;
1628 int flags;
1629 {
1630 struct vop_putpages_args a;
1631 a.a_desc = VDESC(vop_putpages);
1632 a.a_vp = vp;
1633 a.a_offlo = offlo;
1634 a.a_offhi = offhi;
1635 a.a_flags = flags;
1636 return (VCALL(vp, VOFFSET(vop_putpages), &a));
1637 }
1638 #endif
1639
1640 /* End of special cases. */
1641
1642 const struct vnodeop_desc * const vfs_op_descs[] = {
1643 &vop_default_desc, /* MUST BE FIRST */
1644 &vop_strategy_desc, /* XXX: SPECIAL CASE */
1645 &vop_bwrite_desc, /* XXX: SPECIAL CASE */
1646
1647 &vop_lookup_desc,
1648 &vop_create_desc,
1649 &vop_mknod_desc,
1650 &vop_open_desc,
1651 &vop_close_desc,
1652 &vop_access_desc,
1653 &vop_getattr_desc,
1654 &vop_setattr_desc,
1655 &vop_read_desc,
1656 &vop_write_desc,
1657 &vop_ioctl_desc,
1658 &vop_fcntl_desc,
1659 &vop_poll_desc,
1660 &vop_revoke_desc,
1661 &vop_mmap_desc,
1662 &vop_fsync_desc,
1663 &vop_seek_desc,
1664 &vop_remove_desc,
1665 &vop_link_desc,
1666 &vop_rename_desc,
1667 &vop_mkdir_desc,
1668 &vop_rmdir_desc,
1669 &vop_symlink_desc,
1670 &vop_readdir_desc,
1671 &vop_readlink_desc,
1672 &vop_abortop_desc,
1673 &vop_inactive_desc,
1674 &vop_reclaim_desc,
1675 &vop_lock_desc,
1676 &vop_unlock_desc,
1677 &vop_bmap_desc,
1678 &vop_print_desc,
1679 &vop_islocked_desc,
1680 &vop_pathconf_desc,
1681 &vop_advlock_desc,
1682 &vop_blkatoff_desc,
1683 &vop_valloc_desc,
1684 &vop_balloc_desc,
1685 &vop_reallocblks_desc,
1686 &vop_vfree_desc,
1687 &vop_truncate_desc,
1688 &vop_update_desc,
1689 &vop_lease_desc,
1690 &vop_whiteout_desc,
1691 &vop_getpages_desc,
1692 &vop_putpages_desc,
1693 NULL
1694 };
1695
1696