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