vnode_if.c revision 1.42 1 /* $NetBSD: vnode_if.c,v 1.42 2003/04/10 20:38:12 jdolecek 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.33 2003/04/10 20:35:36 jdolecek 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.42 2003/04/10 20:38:12 jdolecek 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 void *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 void *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_kqfilter_vp_offsets[] = {
568 VOPARG_OFFSETOF(struct vop_kqfilter_args,a_vp),
569 VDESC_NO_OFFSET
570 };
571 const struct vnodeop_desc vop_kqfilter_desc = {
572 16,
573 "vop_kqfilter",
574 0,
575 vop_kqfilter_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_KQFILTER(vp, kn)
585 struct vnode *vp;
586 struct knote *kn;
587 {
588 struct vop_kqfilter_args a;
589 a.a_desc = VDESC(vop_kqfilter);
590 a.a_vp = vp;
591 a.a_kn = kn;
592 return (VCALL(vp, VOFFSET(vop_kqfilter), &a));
593 }
594 #endif
595
596 const int vop_revoke_vp_offsets[] = {
597 VOPARG_OFFSETOF(struct vop_revoke_args,a_vp),
598 VDESC_NO_OFFSET
599 };
600 const struct vnodeop_desc vop_revoke_desc = {
601 17,
602 "vop_revoke",
603 0,
604 vop_revoke_vp_offsets,
605 VDESC_NO_OFFSET,
606 VDESC_NO_OFFSET,
607 VDESC_NO_OFFSET,
608 VDESC_NO_OFFSET,
609 NULL,
610 };
611 #ifdef VNODE_OP_NOINLINE
612 int
613 VOP_REVOKE(vp, flags)
614 struct vnode *vp;
615 int flags;
616 {
617 struct vop_revoke_args a;
618 a.a_desc = VDESC(vop_revoke);
619 a.a_vp = vp;
620 a.a_flags = flags;
621 return (VCALL(vp, VOFFSET(vop_revoke), &a));
622 }
623 #endif
624
625 const int vop_mmap_vp_offsets[] = {
626 VOPARG_OFFSETOF(struct vop_mmap_args,a_vp),
627 VDESC_NO_OFFSET
628 };
629 const struct vnodeop_desc vop_mmap_desc = {
630 18,
631 "vop_mmap",
632 0,
633 vop_mmap_vp_offsets,
634 VDESC_NO_OFFSET,
635 VOPARG_OFFSETOF(struct vop_mmap_args, a_cred),
636 VOPARG_OFFSETOF(struct vop_mmap_args, a_p),
637 VDESC_NO_OFFSET,
638 NULL,
639 };
640 #ifdef VNODE_OP_NOINLINE
641 int
642 VOP_MMAP(vp, fflags, cred, p)
643 struct vnode *vp;
644 int fflags;
645 struct ucred *cred;
646 struct proc *p;
647 {
648 struct vop_mmap_args a;
649 a.a_desc = VDESC(vop_mmap);
650 a.a_vp = vp;
651 a.a_fflags = fflags;
652 a.a_cred = cred;
653 a.a_p = p;
654 return (VCALL(vp, VOFFSET(vop_mmap), &a));
655 }
656 #endif
657
658 const int vop_fsync_vp_offsets[] = {
659 VOPARG_OFFSETOF(struct vop_fsync_args,a_vp),
660 VDESC_NO_OFFSET
661 };
662 const struct vnodeop_desc vop_fsync_desc = {
663 19,
664 "vop_fsync",
665 0,
666 vop_fsync_vp_offsets,
667 VDESC_NO_OFFSET,
668 VOPARG_OFFSETOF(struct vop_fsync_args, a_cred),
669 VOPARG_OFFSETOF(struct vop_fsync_args, a_p),
670 VDESC_NO_OFFSET,
671 NULL,
672 };
673 #ifdef VNODE_OP_NOINLINE
674 int
675 VOP_FSYNC(vp, cred, flags, offlo, offhi, p)
676 struct vnode *vp;
677 struct ucred *cred;
678 int flags;
679 off_t offlo;
680 off_t offhi;
681 struct proc *p;
682 {
683 struct vop_fsync_args a;
684 a.a_desc = VDESC(vop_fsync);
685 a.a_vp = vp;
686 a.a_cred = cred;
687 a.a_flags = flags;
688 a.a_offlo = offlo;
689 a.a_offhi = offhi;
690 a.a_p = p;
691 return (VCALL(vp, VOFFSET(vop_fsync), &a));
692 }
693 #endif
694
695 const int vop_seek_vp_offsets[] = {
696 VOPARG_OFFSETOF(struct vop_seek_args,a_vp),
697 VDESC_NO_OFFSET
698 };
699 const struct vnodeop_desc vop_seek_desc = {
700 20,
701 "vop_seek",
702 0,
703 vop_seek_vp_offsets,
704 VDESC_NO_OFFSET,
705 VOPARG_OFFSETOF(struct vop_seek_args, a_cred),
706 VDESC_NO_OFFSET,
707 VDESC_NO_OFFSET,
708 NULL,
709 };
710 #ifdef VNODE_OP_NOINLINE
711 int
712 VOP_SEEK(vp, oldoff, newoff, cred)
713 struct vnode *vp;
714 off_t oldoff;
715 off_t newoff;
716 struct ucred *cred;
717 {
718 struct vop_seek_args a;
719 a.a_desc = VDESC(vop_seek);
720 a.a_vp = vp;
721 a.a_oldoff = oldoff;
722 a.a_newoff = newoff;
723 a.a_cred = cred;
724 return (VCALL(vp, VOFFSET(vop_seek), &a));
725 }
726 #endif
727
728 const int vop_remove_vp_offsets[] = {
729 VOPARG_OFFSETOF(struct vop_remove_args,a_dvp),
730 VOPARG_OFFSETOF(struct vop_remove_args,a_vp),
731 VDESC_NO_OFFSET
732 };
733 const struct vnodeop_desc vop_remove_desc = {
734 21,
735 "vop_remove",
736 0 | VDESC_VP0_WILLPUT | VDESC_VP1_WILLPUT,
737 vop_remove_vp_offsets,
738 VDESC_NO_OFFSET,
739 VDESC_NO_OFFSET,
740 VDESC_NO_OFFSET,
741 VOPARG_OFFSETOF(struct vop_remove_args, a_cnp),
742 NULL,
743 };
744 #ifdef VNODE_OP_NOINLINE
745 int
746 VOP_REMOVE(dvp, vp, cnp)
747 struct vnode *dvp;
748 struct vnode *vp;
749 struct componentname *cnp;
750 {
751 struct vop_remove_args a;
752 a.a_desc = VDESC(vop_remove);
753 a.a_dvp = dvp;
754 a.a_vp = vp;
755 a.a_cnp = cnp;
756 return (VCALL(dvp, VOFFSET(vop_remove), &a));
757 }
758 #endif
759
760 const int vop_link_vp_offsets[] = {
761 VOPARG_OFFSETOF(struct vop_link_args,a_dvp),
762 VOPARG_OFFSETOF(struct vop_link_args,a_vp),
763 VDESC_NO_OFFSET
764 };
765 const struct vnodeop_desc vop_link_desc = {
766 22,
767 "vop_link",
768 0 | VDESC_VP0_WILLPUT,
769 vop_link_vp_offsets,
770 VDESC_NO_OFFSET,
771 VDESC_NO_OFFSET,
772 VDESC_NO_OFFSET,
773 VOPARG_OFFSETOF(struct vop_link_args, a_cnp),
774 NULL,
775 };
776 #ifdef VNODE_OP_NOINLINE
777 int
778 VOP_LINK(dvp, vp, cnp)
779 struct vnode *dvp;
780 struct vnode *vp;
781 struct componentname *cnp;
782 {
783 struct vop_link_args a;
784 a.a_desc = VDESC(vop_link);
785 a.a_dvp = dvp;
786 a.a_vp = vp;
787 a.a_cnp = cnp;
788 return (VCALL(dvp, VOFFSET(vop_link), &a));
789 }
790 #endif
791
792 const int vop_rename_vp_offsets[] = {
793 VOPARG_OFFSETOF(struct vop_rename_args,a_fdvp),
794 VOPARG_OFFSETOF(struct vop_rename_args,a_fvp),
795 VOPARG_OFFSETOF(struct vop_rename_args,a_tdvp),
796 VOPARG_OFFSETOF(struct vop_rename_args,a_tvp),
797 VDESC_NO_OFFSET
798 };
799 const struct vnodeop_desc vop_rename_desc = {
800 23,
801 "vop_rename",
802 0 | VDESC_VP0_WILLRELE | VDESC_VP1_WILLRELE | VDESC_VP2_WILLPUT | VDESC_VP3_WILLPUT,
803 vop_rename_vp_offsets,
804 VDESC_NO_OFFSET,
805 VDESC_NO_OFFSET,
806 VDESC_NO_OFFSET,
807 VOPARG_OFFSETOF(struct vop_rename_args, a_fcnp),
808 NULL,
809 };
810 #ifdef VNODE_OP_NOINLINE
811 int
812 VOP_RENAME(fdvp, fvp, fcnp, tdvp, tvp, tcnp)
813 struct vnode *fdvp;
814 struct vnode *fvp;
815 struct componentname *fcnp;
816 struct vnode *tdvp;
817 struct vnode *tvp;
818 struct componentname *tcnp;
819 {
820 struct vop_rename_args a;
821 a.a_desc = VDESC(vop_rename);
822 a.a_fdvp = fdvp;
823 a.a_fvp = fvp;
824 a.a_fcnp = fcnp;
825 a.a_tdvp = tdvp;
826 a.a_tvp = tvp;
827 a.a_tcnp = tcnp;
828 return (VCALL(fdvp, VOFFSET(vop_rename), &a));
829 }
830 #endif
831
832 const int vop_mkdir_vp_offsets[] = {
833 VOPARG_OFFSETOF(struct vop_mkdir_args,a_dvp),
834 VDESC_NO_OFFSET
835 };
836 const struct vnodeop_desc vop_mkdir_desc = {
837 24,
838 "vop_mkdir",
839 0 | VDESC_VP0_WILLPUT,
840 vop_mkdir_vp_offsets,
841 VOPARG_OFFSETOF(struct vop_mkdir_args, a_vpp),
842 VDESC_NO_OFFSET,
843 VDESC_NO_OFFSET,
844 VOPARG_OFFSETOF(struct vop_mkdir_args, a_cnp),
845 NULL,
846 };
847 #ifdef VNODE_OP_NOINLINE
848 int
849 VOP_MKDIR(dvp, vpp, cnp, vap)
850 struct vnode *dvp;
851 struct vnode **vpp;
852 struct componentname *cnp;
853 struct vattr *vap;
854 {
855 struct vop_mkdir_args a;
856 a.a_desc = VDESC(vop_mkdir);
857 a.a_dvp = dvp;
858 a.a_vpp = vpp;
859 a.a_cnp = cnp;
860 a.a_vap = vap;
861 return (VCALL(dvp, VOFFSET(vop_mkdir), &a));
862 }
863 #endif
864
865 const int vop_rmdir_vp_offsets[] = {
866 VOPARG_OFFSETOF(struct vop_rmdir_args,a_dvp),
867 VOPARG_OFFSETOF(struct vop_rmdir_args,a_vp),
868 VDESC_NO_OFFSET
869 };
870 const struct vnodeop_desc vop_rmdir_desc = {
871 25,
872 "vop_rmdir",
873 0 | VDESC_VP0_WILLPUT | VDESC_VP1_WILLPUT,
874 vop_rmdir_vp_offsets,
875 VDESC_NO_OFFSET,
876 VDESC_NO_OFFSET,
877 VDESC_NO_OFFSET,
878 VOPARG_OFFSETOF(struct vop_rmdir_args, a_cnp),
879 NULL,
880 };
881 #ifdef VNODE_OP_NOINLINE
882 int
883 VOP_RMDIR(dvp, vp, cnp)
884 struct vnode *dvp;
885 struct vnode *vp;
886 struct componentname *cnp;
887 {
888 struct vop_rmdir_args a;
889 a.a_desc = VDESC(vop_rmdir);
890 a.a_dvp = dvp;
891 a.a_vp = vp;
892 a.a_cnp = cnp;
893 return (VCALL(dvp, VOFFSET(vop_rmdir), &a));
894 }
895 #endif
896
897 const int vop_symlink_vp_offsets[] = {
898 VOPARG_OFFSETOF(struct vop_symlink_args,a_dvp),
899 VDESC_NO_OFFSET
900 };
901 const struct vnodeop_desc vop_symlink_desc = {
902 26,
903 "vop_symlink",
904 0 | VDESC_VP0_WILLPUT,
905 vop_symlink_vp_offsets,
906 VOPARG_OFFSETOF(struct vop_symlink_args, a_vpp),
907 VDESC_NO_OFFSET,
908 VDESC_NO_OFFSET,
909 VOPARG_OFFSETOF(struct vop_symlink_args, a_cnp),
910 NULL,
911 };
912 #ifdef VNODE_OP_NOINLINE
913 int
914 VOP_SYMLINK(dvp, vpp, cnp, vap, target)
915 struct vnode *dvp;
916 struct vnode **vpp;
917 struct componentname *cnp;
918 struct vattr *vap;
919 char *target;
920 {
921 struct vop_symlink_args a;
922 a.a_desc = VDESC(vop_symlink);
923 a.a_dvp = dvp;
924 a.a_vpp = vpp;
925 a.a_cnp = cnp;
926 a.a_vap = vap;
927 a.a_target = target;
928 return (VCALL(dvp, VOFFSET(vop_symlink), &a));
929 }
930 #endif
931
932 const int vop_readdir_vp_offsets[] = {
933 VOPARG_OFFSETOF(struct vop_readdir_args,a_vp),
934 VDESC_NO_OFFSET
935 };
936 const struct vnodeop_desc vop_readdir_desc = {
937 27,
938 "vop_readdir",
939 0,
940 vop_readdir_vp_offsets,
941 VDESC_NO_OFFSET,
942 VOPARG_OFFSETOF(struct vop_readdir_args, a_cred),
943 VDESC_NO_OFFSET,
944 VDESC_NO_OFFSET,
945 NULL,
946 };
947 #ifdef VNODE_OP_NOINLINE
948 int
949 VOP_READDIR(vp, uio, cred, eofflag, cookies, ncookies)
950 struct vnode *vp;
951 struct uio *uio;
952 struct ucred *cred;
953 int *eofflag;
954 off_t **cookies;
955 int *ncookies;
956 {
957 struct vop_readdir_args a;
958 a.a_desc = VDESC(vop_readdir);
959 a.a_vp = vp;
960 a.a_uio = uio;
961 a.a_cred = cred;
962 a.a_eofflag = eofflag;
963 a.a_cookies = cookies;
964 a.a_ncookies = ncookies;
965 return (VCALL(vp, VOFFSET(vop_readdir), &a));
966 }
967 #endif
968
969 const int vop_readlink_vp_offsets[] = {
970 VOPARG_OFFSETOF(struct vop_readlink_args,a_vp),
971 VDESC_NO_OFFSET
972 };
973 const struct vnodeop_desc vop_readlink_desc = {
974 28,
975 "vop_readlink",
976 0,
977 vop_readlink_vp_offsets,
978 VDESC_NO_OFFSET,
979 VOPARG_OFFSETOF(struct vop_readlink_args, a_cred),
980 VDESC_NO_OFFSET,
981 VDESC_NO_OFFSET,
982 NULL,
983 };
984 #ifdef VNODE_OP_NOINLINE
985 int
986 VOP_READLINK(vp, uio, cred)
987 struct vnode *vp;
988 struct uio *uio;
989 struct ucred *cred;
990 {
991 struct vop_readlink_args a;
992 a.a_desc = VDESC(vop_readlink);
993 a.a_vp = vp;
994 a.a_uio = uio;
995 a.a_cred = cred;
996 return (VCALL(vp, VOFFSET(vop_readlink), &a));
997 }
998 #endif
999
1000 const int vop_abortop_vp_offsets[] = {
1001 VOPARG_OFFSETOF(struct vop_abortop_args,a_dvp),
1002 VDESC_NO_OFFSET
1003 };
1004 const struct vnodeop_desc vop_abortop_desc = {
1005 29,
1006 "vop_abortop",
1007 0,
1008 vop_abortop_vp_offsets,
1009 VDESC_NO_OFFSET,
1010 VDESC_NO_OFFSET,
1011 VDESC_NO_OFFSET,
1012 VOPARG_OFFSETOF(struct vop_abortop_args, a_cnp),
1013 NULL,
1014 };
1015 #ifdef VNODE_OP_NOINLINE
1016 int
1017 VOP_ABORTOP(dvp, cnp)
1018 struct vnode *dvp;
1019 struct componentname *cnp;
1020 {
1021 struct vop_abortop_args a;
1022 a.a_desc = VDESC(vop_abortop);
1023 a.a_dvp = dvp;
1024 a.a_cnp = cnp;
1025 return (VCALL(dvp, VOFFSET(vop_abortop), &a));
1026 }
1027 #endif
1028
1029 const int vop_inactive_vp_offsets[] = {
1030 VOPARG_OFFSETOF(struct vop_inactive_args,a_vp),
1031 VDESC_NO_OFFSET
1032 };
1033 const struct vnodeop_desc vop_inactive_desc = {
1034 30,
1035 "vop_inactive",
1036 0 | VDESC_VP0_WILLUNLOCK,
1037 vop_inactive_vp_offsets,
1038 VDESC_NO_OFFSET,
1039 VDESC_NO_OFFSET,
1040 VOPARG_OFFSETOF(struct vop_inactive_args, a_p),
1041 VDESC_NO_OFFSET,
1042 NULL,
1043 };
1044 #ifdef VNODE_OP_NOINLINE
1045 int
1046 VOP_INACTIVE(vp, p)
1047 struct vnode *vp;
1048 struct proc *p;
1049 {
1050 struct vop_inactive_args a;
1051 a.a_desc = VDESC(vop_inactive);
1052 a.a_vp = vp;
1053 a.a_p = p;
1054 return (VCALL(vp, VOFFSET(vop_inactive), &a));
1055 }
1056 #endif
1057
1058 const int vop_reclaim_vp_offsets[] = {
1059 VOPARG_OFFSETOF(struct vop_reclaim_args,a_vp),
1060 VDESC_NO_OFFSET
1061 };
1062 const struct vnodeop_desc vop_reclaim_desc = {
1063 31,
1064 "vop_reclaim",
1065 0,
1066 vop_reclaim_vp_offsets,
1067 VDESC_NO_OFFSET,
1068 VDESC_NO_OFFSET,
1069 VOPARG_OFFSETOF(struct vop_reclaim_args, a_p),
1070 VDESC_NO_OFFSET,
1071 NULL,
1072 };
1073 #ifdef VNODE_OP_NOINLINE
1074 int
1075 VOP_RECLAIM(vp, p)
1076 struct vnode *vp;
1077 struct proc *p;
1078 {
1079 struct vop_reclaim_args a;
1080 a.a_desc = VDESC(vop_reclaim);
1081 a.a_vp = vp;
1082 a.a_p = p;
1083 return (VCALL(vp, VOFFSET(vop_reclaim), &a));
1084 }
1085 #endif
1086
1087 const int vop_lock_vp_offsets[] = {
1088 VOPARG_OFFSETOF(struct vop_lock_args,a_vp),
1089 VDESC_NO_OFFSET
1090 };
1091 const struct vnodeop_desc vop_lock_desc = {
1092 32,
1093 "vop_lock",
1094 0,
1095 vop_lock_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_LOCK(vp, flags)
1105 struct vnode *vp;
1106 int flags;
1107 {
1108 struct vop_lock_args a;
1109 a.a_desc = VDESC(vop_lock);
1110 a.a_vp = vp;
1111 a.a_flags = flags;
1112 return (VCALL(vp, VOFFSET(vop_lock), &a));
1113 }
1114 #endif
1115
1116 const int vop_unlock_vp_offsets[] = {
1117 VOPARG_OFFSETOF(struct vop_unlock_args,a_vp),
1118 VDESC_NO_OFFSET
1119 };
1120 const struct vnodeop_desc vop_unlock_desc = {
1121 33,
1122 "vop_unlock",
1123 0,
1124 vop_unlock_vp_offsets,
1125 VDESC_NO_OFFSET,
1126 VDESC_NO_OFFSET,
1127 VDESC_NO_OFFSET,
1128 VDESC_NO_OFFSET,
1129 NULL,
1130 };
1131 #ifdef VNODE_OP_NOINLINE
1132 int
1133 VOP_UNLOCK(vp, flags)
1134 struct vnode *vp;
1135 int flags;
1136 {
1137 struct vop_unlock_args a;
1138 a.a_desc = VDESC(vop_unlock);
1139 a.a_vp = vp;
1140 a.a_flags = flags;
1141 return (VCALL(vp, VOFFSET(vop_unlock), &a));
1142 }
1143 #endif
1144
1145 const int vop_bmap_vp_offsets[] = {
1146 VOPARG_OFFSETOF(struct vop_bmap_args,a_vp),
1147 VDESC_NO_OFFSET
1148 };
1149 const struct vnodeop_desc vop_bmap_desc = {
1150 34,
1151 "vop_bmap",
1152 0,
1153 vop_bmap_vp_offsets,
1154 VOPARG_OFFSETOF(struct vop_bmap_args, a_vpp),
1155 VDESC_NO_OFFSET,
1156 VDESC_NO_OFFSET,
1157 VDESC_NO_OFFSET,
1158 NULL,
1159 };
1160 #ifdef VNODE_OP_NOINLINE
1161 int
1162 VOP_BMAP(vp, bn, vpp, bnp, runp)
1163 struct vnode *vp;
1164 daddr_t bn;
1165 struct vnode **vpp;
1166 daddr_t *bnp;
1167 int *runp;
1168 {
1169 struct vop_bmap_args a;
1170 a.a_desc = VDESC(vop_bmap);
1171 a.a_vp = vp;
1172 a.a_bn = bn;
1173 a.a_vpp = vpp;
1174 a.a_bnp = bnp;
1175 a.a_runp = runp;
1176 return (VCALL(vp, VOFFSET(vop_bmap), &a));
1177 }
1178 #endif
1179
1180 const int vop_print_vp_offsets[] = {
1181 VOPARG_OFFSETOF(struct vop_print_args,a_vp),
1182 VDESC_NO_OFFSET
1183 };
1184 const struct vnodeop_desc vop_print_desc = {
1185 35,
1186 "vop_print",
1187 0,
1188 vop_print_vp_offsets,
1189 VDESC_NO_OFFSET,
1190 VDESC_NO_OFFSET,
1191 VDESC_NO_OFFSET,
1192 VDESC_NO_OFFSET,
1193 NULL,
1194 };
1195 #ifdef VNODE_OP_NOINLINE
1196 int
1197 VOP_PRINT(vp)
1198 struct vnode *vp;
1199 {
1200 struct vop_print_args a;
1201 a.a_desc = VDESC(vop_print);
1202 a.a_vp = vp;
1203 return (VCALL(vp, VOFFSET(vop_print), &a));
1204 }
1205 #endif
1206
1207 const int vop_islocked_vp_offsets[] = {
1208 VOPARG_OFFSETOF(struct vop_islocked_args,a_vp),
1209 VDESC_NO_OFFSET
1210 };
1211 const struct vnodeop_desc vop_islocked_desc = {
1212 36,
1213 "vop_islocked",
1214 0,
1215 vop_islocked_vp_offsets,
1216 VDESC_NO_OFFSET,
1217 VDESC_NO_OFFSET,
1218 VDESC_NO_OFFSET,
1219 VDESC_NO_OFFSET,
1220 NULL,
1221 };
1222 #ifdef VNODE_OP_NOINLINE
1223 int
1224 VOP_ISLOCKED(vp)
1225 struct vnode *vp;
1226 {
1227 struct vop_islocked_args a;
1228 a.a_desc = VDESC(vop_islocked);
1229 a.a_vp = vp;
1230 return (VCALL(vp, VOFFSET(vop_islocked), &a));
1231 }
1232 #endif
1233
1234 const int vop_pathconf_vp_offsets[] = {
1235 VOPARG_OFFSETOF(struct vop_pathconf_args,a_vp),
1236 VDESC_NO_OFFSET
1237 };
1238 const struct vnodeop_desc vop_pathconf_desc = {
1239 37,
1240 "vop_pathconf",
1241 0,
1242 vop_pathconf_vp_offsets,
1243 VDESC_NO_OFFSET,
1244 VDESC_NO_OFFSET,
1245 VDESC_NO_OFFSET,
1246 VDESC_NO_OFFSET,
1247 NULL,
1248 };
1249 #ifdef VNODE_OP_NOINLINE
1250 int
1251 VOP_PATHCONF(vp, name, retval)
1252 struct vnode *vp;
1253 int name;
1254 register_t *retval;
1255 {
1256 struct vop_pathconf_args a;
1257 a.a_desc = VDESC(vop_pathconf);
1258 a.a_vp = vp;
1259 a.a_name = name;
1260 a.a_retval = retval;
1261 return (VCALL(vp, VOFFSET(vop_pathconf), &a));
1262 }
1263 #endif
1264
1265 const int vop_advlock_vp_offsets[] = {
1266 VOPARG_OFFSETOF(struct vop_advlock_args,a_vp),
1267 VDESC_NO_OFFSET
1268 };
1269 const struct vnodeop_desc vop_advlock_desc = {
1270 38,
1271 "vop_advlock",
1272 0,
1273 vop_advlock_vp_offsets,
1274 VDESC_NO_OFFSET,
1275 VDESC_NO_OFFSET,
1276 VDESC_NO_OFFSET,
1277 VDESC_NO_OFFSET,
1278 NULL,
1279 };
1280 #ifdef VNODE_OP_NOINLINE
1281 int
1282 VOP_ADVLOCK(vp, id, op, fl, flags)
1283 struct vnode *vp;
1284 void *id;
1285 int op;
1286 struct flock *fl;
1287 int flags;
1288 {
1289 struct vop_advlock_args a;
1290 a.a_desc = VDESC(vop_advlock);
1291 a.a_vp = vp;
1292 a.a_id = id;
1293 a.a_op = op;
1294 a.a_fl = fl;
1295 a.a_flags = flags;
1296 return (VCALL(vp, VOFFSET(vop_advlock), &a));
1297 }
1298 #endif
1299
1300 const int vop_blkatoff_vp_offsets[] = {
1301 VOPARG_OFFSETOF(struct vop_blkatoff_args,a_vp),
1302 VDESC_NO_OFFSET
1303 };
1304 const struct vnodeop_desc vop_blkatoff_desc = {
1305 39,
1306 "vop_blkatoff",
1307 0,
1308 vop_blkatoff_vp_offsets,
1309 VDESC_NO_OFFSET,
1310 VDESC_NO_OFFSET,
1311 VDESC_NO_OFFSET,
1312 VDESC_NO_OFFSET,
1313 NULL,
1314 };
1315 #ifdef VNODE_OP_NOINLINE
1316 int
1317 VOP_BLKATOFF(vp, offset, res, bpp)
1318 struct vnode *vp;
1319 off_t offset;
1320 char **res;
1321 struct buf **bpp;
1322 {
1323 struct vop_blkatoff_args a;
1324 a.a_desc = VDESC(vop_blkatoff);
1325 a.a_vp = vp;
1326 a.a_offset = offset;
1327 a.a_res = res;
1328 a.a_bpp = bpp;
1329 return (VCALL(vp, VOFFSET(vop_blkatoff), &a));
1330 }
1331 #endif
1332
1333 const int vop_valloc_vp_offsets[] = {
1334 VOPARG_OFFSETOF(struct vop_valloc_args,a_pvp),
1335 VDESC_NO_OFFSET
1336 };
1337 const struct vnodeop_desc vop_valloc_desc = {
1338 40,
1339 "vop_valloc",
1340 0,
1341 vop_valloc_vp_offsets,
1342 VOPARG_OFFSETOF(struct vop_valloc_args, a_vpp),
1343 VOPARG_OFFSETOF(struct vop_valloc_args, a_cred),
1344 VDESC_NO_OFFSET,
1345 VDESC_NO_OFFSET,
1346 NULL,
1347 };
1348 #ifdef VNODE_OP_NOINLINE
1349 int
1350 VOP_VALLOC(pvp, mode, cred, vpp)
1351 struct vnode *pvp;
1352 int mode;
1353 struct ucred *cred;
1354 struct vnode **vpp;
1355 {
1356 struct vop_valloc_args a;
1357 a.a_desc = VDESC(vop_valloc);
1358 a.a_pvp = pvp;
1359 a.a_mode = mode;
1360 a.a_cred = cred;
1361 a.a_vpp = vpp;
1362 return (VCALL(pvp, VOFFSET(vop_valloc), &a));
1363 }
1364 #endif
1365
1366 const int vop_balloc_vp_offsets[] = {
1367 VOPARG_OFFSETOF(struct vop_balloc_args,a_vp),
1368 VDESC_NO_OFFSET
1369 };
1370 const struct vnodeop_desc vop_balloc_desc = {
1371 41,
1372 "vop_balloc",
1373 0,
1374 vop_balloc_vp_offsets,
1375 VDESC_NO_OFFSET,
1376 VOPARG_OFFSETOF(struct vop_balloc_args, a_cred),
1377 VDESC_NO_OFFSET,
1378 VDESC_NO_OFFSET,
1379 NULL,
1380 };
1381 #ifdef VNODE_OP_NOINLINE
1382 int
1383 VOP_BALLOC(vp, startoffset, size, cred, flags, bpp)
1384 struct vnode *vp;
1385 off_t startoffset;
1386 int size;
1387 struct ucred *cred;
1388 int flags;
1389 struct buf **bpp;
1390 {
1391 struct vop_balloc_args a;
1392 a.a_desc = VDESC(vop_balloc);
1393 a.a_vp = vp;
1394 a.a_startoffset = startoffset;
1395 a.a_size = size;
1396 a.a_cred = cred;
1397 a.a_flags = flags;
1398 a.a_bpp = bpp;
1399 return (VCALL(vp, VOFFSET(vop_balloc), &a));
1400 }
1401 #endif
1402
1403 const int vop_reallocblks_vp_offsets[] = {
1404 VOPARG_OFFSETOF(struct vop_reallocblks_args,a_vp),
1405 VDESC_NO_OFFSET
1406 };
1407 const struct vnodeop_desc vop_reallocblks_desc = {
1408 42,
1409 "vop_reallocblks",
1410 0,
1411 vop_reallocblks_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_REALLOCBLKS(vp, buflist)
1421 struct vnode *vp;
1422 struct cluster_save *buflist;
1423 {
1424 struct vop_reallocblks_args a;
1425 a.a_desc = VDESC(vop_reallocblks);
1426 a.a_vp = vp;
1427 a.a_buflist = buflist;
1428 return (VCALL(vp, VOFFSET(vop_reallocblks), &a));
1429 }
1430 #endif
1431
1432 const int vop_vfree_vp_offsets[] = {
1433 VOPARG_OFFSETOF(struct vop_vfree_args,a_pvp),
1434 VDESC_NO_OFFSET
1435 };
1436 const struct vnodeop_desc vop_vfree_desc = {
1437 43,
1438 "vop_vfree",
1439 0,
1440 vop_vfree_vp_offsets,
1441 VDESC_NO_OFFSET,
1442 VDESC_NO_OFFSET,
1443 VDESC_NO_OFFSET,
1444 VDESC_NO_OFFSET,
1445 NULL,
1446 };
1447 #ifdef VNODE_OP_NOINLINE
1448 int
1449 VOP_VFREE(pvp, ino, mode)
1450 struct vnode *pvp;
1451 ino_t ino;
1452 int mode;
1453 {
1454 struct vop_vfree_args a;
1455 a.a_desc = VDESC(vop_vfree);
1456 a.a_pvp = pvp;
1457 a.a_ino = ino;
1458 a.a_mode = mode;
1459 return (VCALL(pvp, VOFFSET(vop_vfree), &a));
1460 }
1461 #endif
1462
1463 const int vop_truncate_vp_offsets[] = {
1464 VOPARG_OFFSETOF(struct vop_truncate_args,a_vp),
1465 VDESC_NO_OFFSET
1466 };
1467 const struct vnodeop_desc vop_truncate_desc = {
1468 44,
1469 "vop_truncate",
1470 0,
1471 vop_truncate_vp_offsets,
1472 VDESC_NO_OFFSET,
1473 VOPARG_OFFSETOF(struct vop_truncate_args, a_cred),
1474 VOPARG_OFFSETOF(struct vop_truncate_args, a_p),
1475 VDESC_NO_OFFSET,
1476 NULL,
1477 };
1478 #ifdef VNODE_OP_NOINLINE
1479 int
1480 VOP_TRUNCATE(vp, length, flags, cred, p)
1481 struct vnode *vp;
1482 off_t length;
1483 int flags;
1484 struct ucred *cred;
1485 struct proc *p;
1486 {
1487 struct vop_truncate_args a;
1488 a.a_desc = VDESC(vop_truncate);
1489 a.a_vp = vp;
1490 a.a_length = length;
1491 a.a_flags = flags;
1492 a.a_cred = cred;
1493 a.a_p = p;
1494 return (VCALL(vp, VOFFSET(vop_truncate), &a));
1495 }
1496 #endif
1497
1498 const int vop_update_vp_offsets[] = {
1499 VOPARG_OFFSETOF(struct vop_update_args,a_vp),
1500 VDESC_NO_OFFSET
1501 };
1502 const struct vnodeop_desc vop_update_desc = {
1503 45,
1504 "vop_update",
1505 0,
1506 vop_update_vp_offsets,
1507 VDESC_NO_OFFSET,
1508 VDESC_NO_OFFSET,
1509 VDESC_NO_OFFSET,
1510 VDESC_NO_OFFSET,
1511 NULL,
1512 };
1513 #ifdef VNODE_OP_NOINLINE
1514 int
1515 VOP_UPDATE(vp, access, modify, flags)
1516 struct vnode *vp;
1517 struct timespec *access;
1518 struct timespec *modify;
1519 int flags;
1520 {
1521 struct vop_update_args a;
1522 a.a_desc = VDESC(vop_update);
1523 a.a_vp = vp;
1524 a.a_access = access;
1525 a.a_modify = modify;
1526 a.a_flags = flags;
1527 return (VCALL(vp, VOFFSET(vop_update), &a));
1528 }
1529 #endif
1530
1531 const int vop_lease_vp_offsets[] = {
1532 VOPARG_OFFSETOF(struct vop_lease_args,a_vp),
1533 VDESC_NO_OFFSET
1534 };
1535 const struct vnodeop_desc vop_lease_desc = {
1536 46,
1537 "vop_lease",
1538 0,
1539 vop_lease_vp_offsets,
1540 VDESC_NO_OFFSET,
1541 VOPARG_OFFSETOF(struct vop_lease_args, a_cred),
1542 VOPARG_OFFSETOF(struct vop_lease_args, a_p),
1543 VDESC_NO_OFFSET,
1544 NULL,
1545 };
1546 #ifdef VNODE_OP_NOINLINE
1547 int
1548 VOP_LEASE(vp, p, cred, flag)
1549 struct vnode *vp;
1550 struct proc *p;
1551 struct ucred *cred;
1552 int flag;
1553 {
1554 struct vop_lease_args a;
1555 a.a_desc = VDESC(vop_lease);
1556 a.a_vp = vp;
1557 a.a_p = p;
1558 a.a_cred = cred;
1559 a.a_flag = flag;
1560 return (VCALL(vp, VOFFSET(vop_lease), &a));
1561 }
1562 #endif
1563
1564 const int vop_whiteout_vp_offsets[] = {
1565 VOPARG_OFFSETOF(struct vop_whiteout_args,a_dvp),
1566 VDESC_NO_OFFSET
1567 };
1568 const struct vnodeop_desc vop_whiteout_desc = {
1569 47,
1570 "vop_whiteout",
1571 0,
1572 vop_whiteout_vp_offsets,
1573 VDESC_NO_OFFSET,
1574 VDESC_NO_OFFSET,
1575 VDESC_NO_OFFSET,
1576 VOPARG_OFFSETOF(struct vop_whiteout_args, a_cnp),
1577 NULL,
1578 };
1579 #ifdef VNODE_OP_NOINLINE
1580 int
1581 VOP_WHITEOUT(dvp, cnp, flags)
1582 struct vnode *dvp;
1583 struct componentname *cnp;
1584 int flags;
1585 {
1586 struct vop_whiteout_args a;
1587 a.a_desc = VDESC(vop_whiteout);
1588 a.a_dvp = dvp;
1589 a.a_cnp = cnp;
1590 a.a_flags = flags;
1591 return (VCALL(dvp, VOFFSET(vop_whiteout), &a));
1592 }
1593 #endif
1594
1595 const int vop_getpages_vp_offsets[] = {
1596 VOPARG_OFFSETOF(struct vop_getpages_args,a_vp),
1597 VDESC_NO_OFFSET
1598 };
1599 const struct vnodeop_desc vop_getpages_desc = {
1600 48,
1601 "vop_getpages",
1602 0,
1603 vop_getpages_vp_offsets,
1604 VDESC_NO_OFFSET,
1605 VDESC_NO_OFFSET,
1606 VDESC_NO_OFFSET,
1607 VDESC_NO_OFFSET,
1608 NULL,
1609 };
1610 #ifdef VNODE_OP_NOINLINE
1611 int
1612 VOP_GETPAGES(vp, offset, m, count, centeridx, access_type, advice, flags)
1613 struct vnode *vp;
1614 voff_t offset;
1615 struct vm_page **m;
1616 int *count;
1617 int centeridx;
1618 vm_prot_t access_type;
1619 int advice;
1620 int flags;
1621 {
1622 struct vop_getpages_args a;
1623 a.a_desc = VDESC(vop_getpages);
1624 a.a_vp = vp;
1625 a.a_offset = offset;
1626 a.a_m = m;
1627 a.a_count = count;
1628 a.a_centeridx = centeridx;
1629 a.a_access_type = access_type;
1630 a.a_advice = advice;
1631 a.a_flags = flags;
1632 return (VCALL(vp, VOFFSET(vop_getpages), &a));
1633 }
1634 #endif
1635
1636 const int vop_putpages_vp_offsets[] = {
1637 VOPARG_OFFSETOF(struct vop_putpages_args,a_vp),
1638 VDESC_NO_OFFSET
1639 };
1640 const struct vnodeop_desc vop_putpages_desc = {
1641 49,
1642 "vop_putpages",
1643 0,
1644 vop_putpages_vp_offsets,
1645 VDESC_NO_OFFSET,
1646 VDESC_NO_OFFSET,
1647 VDESC_NO_OFFSET,
1648 VDESC_NO_OFFSET,
1649 NULL,
1650 };
1651 #ifdef VNODE_OP_NOINLINE
1652 int
1653 VOP_PUTPAGES(vp, offlo, offhi, flags)
1654 struct vnode *vp;
1655 voff_t offlo;
1656 voff_t offhi;
1657 int flags;
1658 {
1659 struct vop_putpages_args a;
1660 a.a_desc = VDESC(vop_putpages);
1661 a.a_vp = vp;
1662 a.a_offlo = offlo;
1663 a.a_offhi = offhi;
1664 a.a_flags = flags;
1665 return (VCALL(vp, VOFFSET(vop_putpages), &a));
1666 }
1667 #endif
1668
1669 /* End of special cases. */
1670
1671 const struct vnodeop_desc * const vfs_op_descs[] = {
1672 &vop_default_desc, /* MUST BE FIRST */
1673 &vop_strategy_desc, /* XXX: SPECIAL CASE */
1674 &vop_bwrite_desc, /* XXX: SPECIAL CASE */
1675
1676 &vop_lookup_desc,
1677 &vop_create_desc,
1678 &vop_mknod_desc,
1679 &vop_open_desc,
1680 &vop_close_desc,
1681 &vop_access_desc,
1682 &vop_getattr_desc,
1683 &vop_setattr_desc,
1684 &vop_read_desc,
1685 &vop_write_desc,
1686 &vop_ioctl_desc,
1687 &vop_fcntl_desc,
1688 &vop_poll_desc,
1689 &vop_kqfilter_desc,
1690 &vop_revoke_desc,
1691 &vop_mmap_desc,
1692 &vop_fsync_desc,
1693 &vop_seek_desc,
1694 &vop_remove_desc,
1695 &vop_link_desc,
1696 &vop_rename_desc,
1697 &vop_mkdir_desc,
1698 &vop_rmdir_desc,
1699 &vop_symlink_desc,
1700 &vop_readdir_desc,
1701 &vop_readlink_desc,
1702 &vop_abortop_desc,
1703 &vop_inactive_desc,
1704 &vop_reclaim_desc,
1705 &vop_lock_desc,
1706 &vop_unlock_desc,
1707 &vop_bmap_desc,
1708 &vop_print_desc,
1709 &vop_islocked_desc,
1710 &vop_pathconf_desc,
1711 &vop_advlock_desc,
1712 &vop_blkatoff_desc,
1713 &vop_valloc_desc,
1714 &vop_balloc_desc,
1715 &vop_reallocblks_desc,
1716 &vop_vfree_desc,
1717 &vop_truncate_desc,
1718 &vop_update_desc,
1719 &vop_lease_desc,
1720 &vop_whiteout_desc,
1721 &vop_getpages_desc,
1722 &vop_putpages_desc,
1723 NULL
1724 };
1725
1726