xref: /original-bsd/sys/sys/vnode_if.h (revision 3b3772fe)
1 /*
2  * This file is produced by the script /sys/kern/vnode_if.sh.
3  * Do not modify anything in here by hand.
4  *
5  *	@(#)vnode_if.h	7.4 (Berkeley) 07/03/92
6  */
7 extern struct vnodeop_desc vop_default_desc;
8 struct vop_lookup_args {
9 	struct vnodeop_desc *a_desc;
10 	struct vnode *a_dvp;
11 	struct vnode **a_vpp;
12 	struct componentname *a_cnp;
13 };
14 extern struct vnodeop_desc vop_lookup_desc;
15 static inline int VOP_LOOKUP(dvp, vpp, cnp)
16 	struct vnode *dvp;
17 	struct vnode **vpp;
18 	struct componentname *cnp;
19 {
20 	struct vop_lookup_args a;
21 
22 	a.a_desc = VDESC(vop_lookup);
23 	a.a_dvp = dvp;
24 	a.a_vpp = vpp;
25 	a.a_cnp = cnp;
26 	return (VCALL(dvp, VOFFSET(vop_lookup), &a));
27 }
28 struct vop_create_args {
29 	struct vnodeop_desc *a_desc;
30 	struct vnode *a_dvp;
31 	struct vnode **a_vpp;
32 	struct componentname *a_cnp;
33 	struct vattr *a_vap;
34 };
35 extern struct vnodeop_desc vop_create_desc;
36 static inline int VOP_CREATE(dvp, vpp, cnp, vap)
37 	struct vnode *dvp;
38 	struct vnode **vpp;
39 	struct componentname *cnp;
40 	struct vattr *vap;
41 {
42 	struct vop_create_args a;
43 
44 	a.a_desc = VDESC(vop_create);
45 	a.a_dvp = dvp;
46 	a.a_vpp = vpp;
47 	a.a_cnp = cnp;
48 	a.a_vap = vap;
49 	return (VCALL(dvp, VOFFSET(vop_create), &a));
50 }
51 struct vop_mknod_args {
52 	struct vnodeop_desc *a_desc;
53 	struct vnode *a_dvp;
54 	struct vnode **a_vpp;
55 	struct componentname *a_cnp;
56 	struct vattr *a_vap;
57 };
58 extern struct vnodeop_desc vop_mknod_desc;
59 static inline int VOP_MKNOD(dvp, vpp, cnp, vap)
60 	struct vnode *dvp;
61 	struct vnode **vpp;
62 	struct componentname *cnp;
63 	struct vattr *vap;
64 {
65 	struct vop_mknod_args a;
66 
67 	a.a_desc = VDESC(vop_mknod);
68 	a.a_dvp = dvp;
69 	a.a_vpp = vpp;
70 	a.a_cnp = cnp;
71 	a.a_vap = vap;
72 	return (VCALL(dvp, VOFFSET(vop_mknod), &a));
73 }
74 struct vop_open_args {
75 	struct vnodeop_desc *a_desc;
76 	struct vnode *a_vp;
77 	int a_mode;
78 	struct ucred *a_cred;
79 	struct proc *a_p;
80 };
81 extern struct vnodeop_desc vop_open_desc;
82 static inline int VOP_OPEN(vp, mode, cred, p)
83 	struct vnode *vp;
84 	int mode;
85 	struct ucred *cred;
86 	struct proc *p;
87 {
88 	struct vop_open_args a;
89 
90 	a.a_desc = VDESC(vop_open);
91 	a.a_vp = vp;
92 	a.a_mode = mode;
93 	a.a_cred = cred;
94 	a.a_p = p;
95 	return (VCALL(vp, VOFFSET(vop_open), &a));
96 }
97 struct vop_close_args {
98 	struct vnodeop_desc *a_desc;
99 	struct vnode *a_vp;
100 	int a_fflag;
101 	struct ucred *a_cred;
102 	struct proc *a_p;
103 };
104 extern struct vnodeop_desc vop_close_desc;
105 static inline int VOP_CLOSE(vp, fflag, cred, p)
106 	struct vnode *vp;
107 	int fflag;
108 	struct ucred *cred;
109 	struct proc *p;
110 {
111 	struct vop_close_args a;
112 
113 	a.a_desc = VDESC(vop_close);
114 	a.a_vp = vp;
115 	a.a_fflag = fflag;
116 	a.a_cred = cred;
117 	a.a_p = p;
118 	return (VCALL(vp, VOFFSET(vop_close), &a));
119 }
120 struct vop_access_args {
121 	struct vnodeop_desc *a_desc;
122 	struct vnode *a_vp;
123 	int a_mode;
124 	struct ucred *a_cred;
125 	struct proc *a_p;
126 };
127 extern struct vnodeop_desc vop_access_desc;
128 static inline int VOP_ACCESS(vp, mode, cred, p)
129 	struct vnode *vp;
130 	int mode;
131 	struct ucred *cred;
132 	struct proc *p;
133 {
134 	struct vop_access_args a;
135 
136 	a.a_desc = VDESC(vop_access);
137 	a.a_vp = vp;
138 	a.a_mode = mode;
139 	a.a_cred = cred;
140 	a.a_p = p;
141 	return (VCALL(vp, VOFFSET(vop_access), &a));
142 }
143 struct vop_getattr_args {
144 	struct vnodeop_desc *a_desc;
145 	struct vnode *a_vp;
146 	struct vattr *a_vap;
147 	struct ucred *a_cred;
148 	struct proc *a_p;
149 };
150 extern struct vnodeop_desc vop_getattr_desc;
151 static inline int VOP_GETATTR(vp, vap, cred, p)
152 	struct vnode *vp;
153 	struct vattr *vap;
154 	struct ucred *cred;
155 	struct proc *p;
156 {
157 	struct vop_getattr_args a;
158 
159 	a.a_desc = VDESC(vop_getattr);
160 	a.a_vp = vp;
161 	a.a_vap = vap;
162 	a.a_cred = cred;
163 	a.a_p = p;
164 	return (VCALL(vp, VOFFSET(vop_getattr), &a));
165 }
166 struct vop_setattr_args {
167 	struct vnodeop_desc *a_desc;
168 	struct vnode *a_vp;
169 	struct vattr *a_vap;
170 	struct ucred *a_cred;
171 	struct proc *a_p;
172 };
173 extern struct vnodeop_desc vop_setattr_desc;
174 static inline int VOP_SETATTR(vp, vap, cred, p)
175 	struct vnode *vp;
176 	struct vattr *vap;
177 	struct ucred *cred;
178 	struct proc *p;
179 {
180 	struct vop_setattr_args a;
181 
182 	a.a_desc = VDESC(vop_setattr);
183 	a.a_vp = vp;
184 	a.a_vap = vap;
185 	a.a_cred = cred;
186 	a.a_p = p;
187 	return (VCALL(vp, VOFFSET(vop_setattr), &a));
188 }
189 struct vop_read_args {
190 	struct vnodeop_desc *a_desc;
191 	struct vnode *a_vp;
192 	struct uio *a_uio;
193 	int a_ioflag;
194 	struct ucred *a_cred;
195 };
196 extern struct vnodeop_desc vop_read_desc;
197 static inline int VOP_READ(vp, uio, ioflag, cred)
198 	struct vnode *vp;
199 	struct uio *uio;
200 	int ioflag;
201 	struct ucred *cred;
202 {
203 	struct vop_read_args a;
204 
205 	a.a_desc = VDESC(vop_read);
206 	a.a_vp = vp;
207 	a.a_uio = uio;
208 	a.a_ioflag = ioflag;
209 	a.a_cred = cred;
210 	return (VCALL(vp, VOFFSET(vop_read), &a));
211 }
212 struct vop_write_args {
213 	struct vnodeop_desc *a_desc;
214 	struct vnode *a_vp;
215 	struct uio *a_uio;
216 	int a_ioflag;
217 	struct ucred *a_cred;
218 };
219 extern struct vnodeop_desc vop_write_desc;
220 static inline int VOP_WRITE(vp, uio, ioflag, cred)
221 	struct vnode *vp;
222 	struct uio *uio;
223 	int ioflag;
224 	struct ucred *cred;
225 {
226 	struct vop_write_args a;
227 
228 	a.a_desc = VDESC(vop_write);
229 	a.a_vp = vp;
230 	a.a_uio = uio;
231 	a.a_ioflag = ioflag;
232 	a.a_cred = cred;
233 	return (VCALL(vp, VOFFSET(vop_write), &a));
234 }
235 struct vop_ioctl_args {
236 	struct vnodeop_desc *a_desc;
237 	struct vnode *a_vp;
238 	int a_command;
239 	caddr_t a_data;
240 	int a_fflag;
241 	struct ucred *a_cred;
242 	struct proc *a_p;
243 };
244 extern struct vnodeop_desc vop_ioctl_desc;
245 static inline int VOP_IOCTL(vp, command, data, fflag, cred, p)
246 	struct vnode *vp;
247 	int command;
248 	caddr_t data;
249 	int fflag;
250 	struct ucred *cred;
251 	struct proc *p;
252 {
253 	struct vop_ioctl_args a;
254 
255 	a.a_desc = VDESC(vop_ioctl);
256 	a.a_vp = vp;
257 	a.a_command = command;
258 	a.a_data = data;
259 	a.a_fflag = fflag;
260 	a.a_cred = cred;
261 	a.a_p = p;
262 	return (VCALL(vp, VOFFSET(vop_ioctl), &a));
263 }
264 struct vop_select_args {
265 	struct vnodeop_desc *a_desc;
266 	struct vnode *a_vp;
267 	int a_which;
268 	int a_fflags;
269 	struct ucred *a_cred;
270 	struct proc *a_p;
271 };
272 extern struct vnodeop_desc vop_select_desc;
273 static inline int VOP_SELECT(vp, which, fflags, cred, p)
274 	struct vnode *vp;
275 	int which;
276 	int fflags;
277 	struct ucred *cred;
278 	struct proc *p;
279 {
280 	struct vop_select_args a;
281 
282 	a.a_desc = VDESC(vop_select);
283 	a.a_vp = vp;
284 	a.a_which = which;
285 	a.a_fflags = fflags;
286 	a.a_cred = cred;
287 	a.a_p = p;
288 	return (VCALL(vp, VOFFSET(vop_select), &a));
289 }
290 struct vop_mmap_args {
291 	struct vnodeop_desc *a_desc;
292 	struct vnode *a_vp;
293 	int a_fflags;
294 	struct ucred *a_cred;
295 	struct proc *a_p;
296 };
297 extern struct vnodeop_desc vop_mmap_desc;
298 static inline int VOP_MMAP(vp, fflags, cred, p)
299 	struct vnode *vp;
300 	int fflags;
301 	struct ucred *cred;
302 	struct proc *p;
303 {
304 	struct vop_mmap_args a;
305 
306 	a.a_desc = VDESC(vop_mmap);
307 	a.a_vp = vp;
308 	a.a_fflags = fflags;
309 	a.a_cred = cred;
310 	a.a_p = p;
311 	return (VCALL(vp, VOFFSET(vop_mmap), &a));
312 }
313 struct vop_fsync_args {
314 	struct vnodeop_desc *a_desc;
315 	struct vnode *a_vp;
316 	struct ucred *a_cred;
317 	int a_waitfor;
318 	struct proc *a_p;
319 };
320 extern struct vnodeop_desc vop_fsync_desc;
321 static inline int VOP_FSYNC(vp, cred, waitfor, p)
322 	struct vnode *vp;
323 	struct ucred *cred;
324 	int waitfor;
325 	struct proc *p;
326 {
327 	struct vop_fsync_args a;
328 
329 	a.a_desc = VDESC(vop_fsync);
330 	a.a_vp = vp;
331 	a.a_cred = cred;
332 	a.a_waitfor = waitfor;
333 	a.a_p = p;
334 	return (VCALL(vp, VOFFSET(vop_fsync), &a));
335 }
336 struct vop_seek_args {
337 	struct vnodeop_desc *a_desc;
338 	struct vnode *a_vp;
339 	off_t a_oldoff;
340 	off_t a_newoff;
341 	struct ucred *a_cred;
342 };
343 extern struct vnodeop_desc vop_seek_desc;
344 static inline int VOP_SEEK(vp, oldoff, newoff, cred)
345 	struct vnode *vp;
346 	off_t oldoff;
347 	off_t newoff;
348 	struct ucred *cred;
349 {
350 	struct vop_seek_args a;
351 
352 	a.a_desc = VDESC(vop_seek);
353 	a.a_vp = vp;
354 	a.a_oldoff = oldoff;
355 	a.a_newoff = newoff;
356 	a.a_cred = cred;
357 	return (VCALL(vp, VOFFSET(vop_seek), &a));
358 }
359 struct vop_remove_args {
360 	struct vnodeop_desc *a_desc;
361 	struct vnode *a_dvp;
362 	struct vnode *a_vp;
363 	struct componentname *a_cnp;
364 };
365 extern struct vnodeop_desc vop_remove_desc;
366 static inline int VOP_REMOVE(dvp, vp, cnp)
367 	struct vnode *dvp;
368 	struct vnode *vp;
369 	struct componentname *cnp;
370 {
371 	struct vop_remove_args a;
372 
373 	a.a_desc = VDESC(vop_remove);
374 	a.a_dvp = dvp;
375 	a.a_vp = vp;
376 	a.a_cnp = cnp;
377 	return (VCALL(dvp, VOFFSET(vop_remove), &a));
378 }
379 struct vop_link_args {
380 	struct vnodeop_desc *a_desc;
381 	struct vnode *a_vp;
382 	struct vnode *a_tdvp;
383 	struct componentname *a_cnp;
384 };
385 extern struct vnodeop_desc vop_link_desc;
386 static inline int VOP_LINK(vp, tdvp, cnp)
387 	struct vnode *vp;
388 	struct vnode *tdvp;
389 	struct componentname *cnp;
390 {
391 	struct vop_link_args a;
392 
393 	a.a_desc = VDESC(vop_link);
394 	a.a_vp = vp;
395 	a.a_tdvp = tdvp;
396 	a.a_cnp = cnp;
397 	return (VCALL(vp, VOFFSET(vop_link), &a));
398 }
399 struct vop_rename_args {
400 	struct vnodeop_desc *a_desc;
401 	struct vnode *a_fdvp;
402 	struct vnode *a_fvp;
403 	struct componentname *a_fcnp;
404 	struct vnode *a_tdvp;
405 	struct vnode *a_tvp;
406 	struct componentname *a_tcnp;
407 };
408 extern struct vnodeop_desc vop_rename_desc;
409 static inline int VOP_RENAME(fdvp, fvp, fcnp, tdvp, tvp, tcnp)
410 	struct vnode *fdvp;
411 	struct vnode *fvp;
412 	struct componentname *fcnp;
413 	struct vnode *tdvp;
414 	struct vnode *tvp;
415 	struct componentname *tcnp;
416 {
417 	struct vop_rename_args a;
418 
419 	a.a_desc = VDESC(vop_rename);
420 	a.a_fdvp = fdvp;
421 	a.a_fvp = fvp;
422 	a.a_fcnp = fcnp;
423 	a.a_tdvp = tdvp;
424 	a.a_tvp = tvp;
425 	a.a_tcnp = tcnp;
426 	return (VCALL(fdvp, VOFFSET(vop_rename), &a));
427 }
428 struct vop_mkdir_args {
429 	struct vnodeop_desc *a_desc;
430 	struct vnode *a_dvp;
431 	struct vnode **a_vpp;
432 	struct componentname *a_cnp;
433 	struct vattr *a_vap;
434 };
435 extern struct vnodeop_desc vop_mkdir_desc;
436 static inline int VOP_MKDIR(dvp, vpp, cnp, vap)
437 	struct vnode *dvp;
438 	struct vnode **vpp;
439 	struct componentname *cnp;
440 	struct vattr *vap;
441 {
442 	struct vop_mkdir_args a;
443 
444 	a.a_desc = VDESC(vop_mkdir);
445 	a.a_dvp = dvp;
446 	a.a_vpp = vpp;
447 	a.a_cnp = cnp;
448 	a.a_vap = vap;
449 	return (VCALL(dvp, VOFFSET(vop_mkdir), &a));
450 }
451 struct vop_rmdir_args {
452 	struct vnodeop_desc *a_desc;
453 	struct vnode *a_dvp;
454 	struct vnode *a_vp;
455 	struct componentname *a_cnp;
456 };
457 extern struct vnodeop_desc vop_rmdir_desc;
458 static inline int VOP_RMDIR(dvp, vp, cnp)
459 	struct vnode *dvp;
460 	struct vnode *vp;
461 	struct componentname *cnp;
462 {
463 	struct vop_rmdir_args a;
464 
465 	a.a_desc = VDESC(vop_rmdir);
466 	a.a_dvp = dvp;
467 	a.a_vp = vp;
468 	a.a_cnp = cnp;
469 	return (VCALL(dvp, VOFFSET(vop_rmdir), &a));
470 }
471 struct vop_symlink_args {
472 	struct vnodeop_desc *a_desc;
473 	struct vnode *a_dvp;
474 	struct vnode **a_vpp;
475 	struct componentname *a_cnp;
476 	struct vattr *a_vap;
477 	char *a_target;
478 };
479 extern struct vnodeop_desc vop_symlink_desc;
480 static inline int VOP_SYMLINK(dvp, vpp, cnp, vap, target)
481 	struct vnode *dvp;
482 	struct vnode **vpp;
483 	struct componentname *cnp;
484 	struct vattr *vap;
485 	char *target;
486 {
487 	struct vop_symlink_args a;
488 
489 	a.a_desc = VDESC(vop_symlink);
490 	a.a_dvp = dvp;
491 	a.a_vpp = vpp;
492 	a.a_cnp = cnp;
493 	a.a_vap = vap;
494 	a.a_target = target;
495 	return (VCALL(dvp, VOFFSET(vop_symlink), &a));
496 }
497 struct vop_readdir_args {
498 	struct vnodeop_desc *a_desc;
499 	struct vnode *a_vp;
500 	struct uio *a_uio;
501 	struct ucred *a_cred;
502 };
503 extern struct vnodeop_desc vop_readdir_desc;
504 static inline int VOP_READDIR(vp, uio, cred)
505 	struct vnode *vp;
506 	struct uio *uio;
507 	struct ucred *cred;
508 {
509 	struct vop_readdir_args a;
510 
511 	a.a_desc = VDESC(vop_readdir);
512 	a.a_vp = vp;
513 	a.a_uio = uio;
514 	a.a_cred = cred;
515 	return (VCALL(vp, VOFFSET(vop_readdir), &a));
516 }
517 struct vop_readlink_args {
518 	struct vnodeop_desc *a_desc;
519 	struct vnode *a_vp;
520 	struct uio *a_uio;
521 	struct ucred *a_cred;
522 };
523 extern struct vnodeop_desc vop_readlink_desc;
524 static inline int VOP_READLINK(vp, uio, cred)
525 	struct vnode *vp;
526 	struct uio *uio;
527 	struct ucred *cred;
528 {
529 	struct vop_readlink_args a;
530 
531 	a.a_desc = VDESC(vop_readlink);
532 	a.a_vp = vp;
533 	a.a_uio = uio;
534 	a.a_cred = cred;
535 	return (VCALL(vp, VOFFSET(vop_readlink), &a));
536 }
537 struct vop_abortop_args {
538 	struct vnodeop_desc *a_desc;
539 	struct vnode *a_dvp;
540 	struct componentname *a_cnp;
541 };
542 extern struct vnodeop_desc vop_abortop_desc;
543 static inline int VOP_ABORTOP(dvp, cnp)
544 	struct vnode *dvp;
545 	struct componentname *cnp;
546 {
547 	struct vop_abortop_args a;
548 
549 	a.a_desc = VDESC(vop_abortop);
550 	a.a_dvp = dvp;
551 	a.a_cnp = cnp;
552 	return (VCALL(dvp, VOFFSET(vop_abortop), &a));
553 }
554 struct vop_inactive_args {
555 	struct vnodeop_desc *a_desc;
556 	struct vnode *a_vp;
557 };
558 extern struct vnodeop_desc vop_inactive_desc;
559 static inline int VOP_INACTIVE(vp)
560 	struct vnode *vp;
561 {
562 	struct vop_inactive_args a;
563 
564 	a.a_desc = VDESC(vop_inactive);
565 	a.a_vp = vp;
566 	return (VCALL(vp, VOFFSET(vop_inactive), &a));
567 }
568 struct vop_reclaim_args {
569 	struct vnodeop_desc *a_desc;
570 	struct vnode *a_vp;
571 };
572 extern struct vnodeop_desc vop_reclaim_desc;
573 static inline int VOP_RECLAIM(vp)
574 	struct vnode *vp;
575 {
576 	struct vop_reclaim_args a;
577 
578 	a.a_desc = VDESC(vop_reclaim);
579 	a.a_vp = vp;
580 	return (VCALL(vp, VOFFSET(vop_reclaim), &a));
581 }
582 struct vop_lock_args {
583 	struct vnodeop_desc *a_desc;
584 	struct vnode *a_vp;
585 };
586 extern struct vnodeop_desc vop_lock_desc;
587 static inline int VOP_LOCK(vp)
588 	struct vnode *vp;
589 {
590 	struct vop_lock_args a;
591 
592 	a.a_desc = VDESC(vop_lock);
593 	a.a_vp = vp;
594 	return (VCALL(vp, VOFFSET(vop_lock), &a));
595 }
596 struct vop_unlock_args {
597 	struct vnodeop_desc *a_desc;
598 	struct vnode *a_vp;
599 };
600 extern struct vnodeop_desc vop_unlock_desc;
601 static inline int VOP_UNLOCK(vp)
602 	struct vnode *vp;
603 {
604 	struct vop_unlock_args a;
605 
606 	a.a_desc = VDESC(vop_unlock);
607 	a.a_vp = vp;
608 	return (VCALL(vp, VOFFSET(vop_unlock), &a));
609 }
610 struct vop_bmap_args {
611 	struct vnodeop_desc *a_desc;
612 	struct vnode *a_vp;
613 	daddr_t a_bn;
614 	struct vnode **a_vpp;
615 	daddr_t *a_bnp;
616 };
617 extern struct vnodeop_desc vop_bmap_desc;
618 static inline int VOP_BMAP(vp, bn, vpp, bnp)
619 	struct vnode *vp;
620 	daddr_t bn;
621 	struct vnode **vpp;
622 	daddr_t *bnp;
623 {
624 	struct vop_bmap_args a;
625 
626 	a.a_desc = VDESC(vop_bmap);
627 	a.a_vp = vp;
628 	a.a_bn = bn;
629 	a.a_vpp = vpp;
630 	a.a_bnp = bnp;
631 	return (VCALL(vp, VOFFSET(vop_bmap), &a));
632 }
633 struct vop_print_args {
634 	struct vnodeop_desc *a_desc;
635 	struct vnode *a_vp;
636 };
637 extern struct vnodeop_desc vop_print_desc;
638 static inline int VOP_PRINT(vp)
639 	struct vnode *vp;
640 {
641 	struct vop_print_args a;
642 
643 	a.a_desc = VDESC(vop_print);
644 	a.a_vp = vp;
645 	return (VCALL(vp, VOFFSET(vop_print), &a));
646 }
647 struct vop_islocked_args {
648 	struct vnodeop_desc *a_desc;
649 	struct vnode *a_vp;
650 };
651 extern struct vnodeop_desc vop_islocked_desc;
652 static inline int VOP_ISLOCKED(vp)
653 	struct vnode *vp;
654 {
655 	struct vop_islocked_args a;
656 
657 	a.a_desc = VDESC(vop_islocked);
658 	a.a_vp = vp;
659 	return (VCALL(vp, VOFFSET(vop_islocked), &a));
660 }
661 struct vop_advlock_args {
662 	struct vnodeop_desc *a_desc;
663 	struct vnode *a_vp;
664 	caddr_t a_id;
665 	int a_op;
666 	struct flock *a_fl;
667 	int a_flags;
668 };
669 extern struct vnodeop_desc vop_advlock_desc;
670 static inline int VOP_ADVLOCK(vp, id, op, fl, flags)
671 	struct vnode *vp;
672 	caddr_t id;
673 	int op;
674 	struct flock *fl;
675 	int flags;
676 {
677 	struct vop_advlock_args a;
678 
679 	a.a_desc = VDESC(vop_advlock);
680 	a.a_vp = vp;
681 	a.a_id = id;
682 	a.a_op = op;
683 	a.a_fl = fl;
684 	a.a_flags = flags;
685 	return (VCALL(vp, VOFFSET(vop_advlock), &a));
686 }
687 struct vop_blkatoff_args {
688 	struct vnodeop_desc *a_desc;
689 	struct vnode *a_vp;
690 	off_t a_offset;
691 	char **a_res;
692 	struct buf **a_bpp;
693 };
694 extern struct vnodeop_desc vop_blkatoff_desc;
695 static inline int VOP_BLKATOFF(vp, offset, res, bpp)
696 	struct vnode *vp;
697 	off_t offset;
698 	char **res;
699 	struct buf **bpp;
700 {
701 	struct vop_blkatoff_args a;
702 
703 	a.a_desc = VDESC(vop_blkatoff);
704 	a.a_vp = vp;
705 	a.a_offset = offset;
706 	a.a_res = res;
707 	a.a_bpp = bpp;
708 	return (VCALL(vp, VOFFSET(vop_blkatoff), &a));
709 }
710 struct vop_valloc_args {
711 	struct vnodeop_desc *a_desc;
712 	struct vnode *a_pvp;
713 	int a_mode;
714 	struct ucred *a_cred;
715 	struct vnode **a_vpp;
716 };
717 extern struct vnodeop_desc vop_valloc_desc;
718 static inline int VOP_VALLOC(pvp, mode, cred, vpp)
719 	struct vnode *pvp;
720 	int mode;
721 	struct ucred *cred;
722 	struct vnode **vpp;
723 {
724 	struct vop_valloc_args a;
725 
726 	a.a_desc = VDESC(vop_valloc);
727 	a.a_pvp = pvp;
728 	a.a_mode = mode;
729 	a.a_cred = cred;
730 	a.a_vpp = vpp;
731 	return (VCALL(pvp, VOFFSET(vop_valloc), &a));
732 }
733 struct vop_vfree_args {
734 	struct vnodeop_desc *a_desc;
735 	struct vnode *a_pvp;
736 	ino_t a_ino;
737 	int a_mode;
738 };
739 extern struct vnodeop_desc vop_vfree_desc;
740 static inline int VOP_VFREE(pvp, ino, mode)
741 	struct vnode *pvp;
742 	ino_t ino;
743 	int mode;
744 {
745 	struct vop_vfree_args a;
746 
747 	a.a_desc = VDESC(vop_vfree);
748 	a.a_pvp = pvp;
749 	a.a_ino = ino;
750 	a.a_mode = mode;
751 	return (VCALL(pvp, VOFFSET(vop_vfree), &a));
752 }
753 struct vop_truncate_args {
754 	struct vnodeop_desc *a_desc;
755 	struct vnode *a_vp;
756 	off_t a_length;
757 	int a_flags;
758 	struct ucred *a_cred;
759 	struct proc *a_p;
760 };
761 extern struct vnodeop_desc vop_truncate_desc;
762 static inline int VOP_TRUNCATE(vp, length, flags, cred, p)
763 	struct vnode *vp;
764 	off_t length;
765 	int flags;
766 	struct ucred *cred;
767 	struct proc *p;
768 {
769 	struct vop_truncate_args a;
770 
771 	a.a_desc = VDESC(vop_truncate);
772 	a.a_vp = vp;
773 	a.a_length = length;
774 	a.a_flags = flags;
775 	a.a_cred = cred;
776 	a.a_p = p;
777 	return (VCALL(vp, VOFFSET(vop_truncate), &a));
778 }
779 struct vop_update_args {
780 	struct vnodeop_desc *a_desc;
781 	struct vnode *a_vp;
782 	struct timeval *a_ta;
783 	struct timeval *a_tm;
784 	int a_waitfor;
785 };
786 extern struct vnodeop_desc vop_update_desc;
787 static inline int VOP_UPDATE(vp, ta, tm, waitfor)
788 	struct vnode *vp;
789 	struct timeval *ta;
790 	struct timeval *tm;
791 	int waitfor;
792 {
793 	struct vop_update_args a;
794 
795 	a.a_desc = VDESC(vop_update);
796 	a.a_vp = vp;
797 	a.a_ta = ta;
798 	a.a_tm = tm;
799 	a.a_waitfor = waitfor;
800 	return (VCALL(vp, VOFFSET(vop_update), &a));
801 }
802 #include <sys/buf.h>
803 struct vop_strategy_args {
804 	struct vnodeop_desc *a_desc;
805 	struct buf *a_bp;
806 };
807 extern struct vnodeop_desc vop_strategy_desc;
808 static inline int VOP_STRATEGY(bp)
809 	struct buf *bp;
810 {
811 	struct vop_strategy_args a;
812 
813 	a.a_desc = VDESC(vop_strategy);
814 	a.a_bp = bp;
815 	return (VCALL((bp)->b_vp, VOFFSET(vop_strategy), &a));
816 }
817 
818 struct vop_bwrite_args {
819 	struct vnodeop_desc *a_desc;
820 	struct buf *a_bp;
821 };
822 extern struct vnodeop_desc vop_bwrite_desc;
823 static inline int VOP_BWRITE(bp)
824 	struct buf *bp;
825 {
826 	struct vop_bwrite_args a;
827 
828 	a.a_desc = VDESC(vop_bwrite);
829 	a.a_bp = bp;
830 	return (VCALL((bp)->b_vp, VOFFSET(vop_bwrite), &a));
831 }
832