1/* $NetBSD: vnode_if.h,v 1.91 2016/01/26 23:30:10 pooka Exp $ */
2
3/*
4 * Warning: DO NOT EDIT! This file is automatically generated!
5 * (Modifications made here may easily be lost!)
6 *
7 * Created from the file:
8 * NetBSD: vnode_if.src,v 1.69 2015/04/20 23:08:07 riastradh Exp
9 * by the script:
10 * NetBSD: vnode_if.sh,v 1.60 2014/01/13 12:07:55 hannken 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. Neither the name of the University nor the names of its contributors
26 * may be used to endorse or promote products derived from this software
27 * without specific prior written permission.
28 *
29 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
30 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
31 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
32 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
33 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
34 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
35 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
36 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
37 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
38 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
39 * SUCH DAMAGE.
40 */
41
42#ifndef _SYS_VNODE_IF_H_
43#define _SYS_VNODE_IF_H_
44
45extern const struct vnodeop_desc vop_default_desc;
46
47struct buf;
48
49#ifndef _KERNEL
50#include <stdbool.h>
51#endif
52
53#define VOP_BWRITE_DESCOFFSET 1
54struct vop_bwrite_args {
55 const struct vnodeop_desc *a_desc;
56 struct vnode *a_vp;
57 struct buf *a_bp;
58};
59extern const struct vnodeop_desc vop_bwrite_desc;
60int VOP_BWRITE(struct vnode *, struct buf *);
61
62#define VOP_LOOKUP_DESCOFFSET 2
63struct vop_lookup_v2_args {
64 const struct vnodeop_desc *a_desc;
65 struct vnode *a_dvp;
66 struct vnode **a_vpp;
67 struct componentname *a_cnp;
68};
69extern const struct vnodeop_desc vop_lookup_desc;
70int VOP_LOOKUP(struct vnode *, struct vnode **, struct componentname *);
71
72#define VOP_CREATE_DESCOFFSET 3
73struct vop_create_v3_args {
74 const struct vnodeop_desc *a_desc;
75 struct vnode *a_dvp;
76 struct vnode **a_vpp;
77 struct componentname *a_cnp;
78 struct vattr *a_vap;
79};
80extern const struct vnodeop_desc vop_create_desc;
81int VOP_CREATE(struct vnode *, struct vnode **, struct componentname *,
82 struct vattr *);
83
84#define VOP_MKNOD_DESCOFFSET 4
85struct vop_mknod_v3_args {
86 const struct vnodeop_desc *a_desc;
87 struct vnode *a_dvp;
88 struct vnode **a_vpp;
89 struct componentname *a_cnp;
90 struct vattr *a_vap;
91};
92extern const struct vnodeop_desc vop_mknod_desc;
93int VOP_MKNOD(struct vnode *, struct vnode **, struct componentname *,
94 struct vattr *);
95
96#define VOP_OPEN_DESCOFFSET 5
97struct vop_open_args {
98 const struct vnodeop_desc *a_desc;
99 struct vnode *a_vp;
100 int a_mode;
101 kauth_cred_t a_cred;
102};
103extern const struct vnodeop_desc vop_open_desc;
104int VOP_OPEN(struct vnode *, int, kauth_cred_t);
105
106#define VOP_CLOSE_DESCOFFSET 6
107struct vop_close_args {
108 const struct vnodeop_desc *a_desc;
109 struct vnode *a_vp;
110 int a_fflag;
111 kauth_cred_t a_cred;
112};
113extern const struct vnodeop_desc vop_close_desc;
114int VOP_CLOSE(struct vnode *, int, kauth_cred_t);
115
116#define VOP_ACCESS_DESCOFFSET 7
117struct vop_access_args {
118 const struct vnodeop_desc *a_desc;
119 struct vnode *a_vp;
120 int a_mode;
121 kauth_cred_t a_cred;
122};
123extern const struct vnodeop_desc vop_access_desc;
124int VOP_ACCESS(struct vnode *, int, kauth_cred_t);
125
126#define VOP_GETATTR_DESCOFFSET 8
127struct vop_getattr_args {
128 const struct vnodeop_desc *a_desc;
129 struct vnode *a_vp;
130 struct vattr *a_vap;
131 kauth_cred_t a_cred;
132};
133extern const struct vnodeop_desc vop_getattr_desc;
134int VOP_GETATTR(struct vnode *, struct vattr *, kauth_cred_t);
135
136#define VOP_SETATTR_DESCOFFSET 9
137struct vop_setattr_args {
138 const struct vnodeop_desc *a_desc;
139 struct vnode *a_vp;
140 struct vattr *a_vap;
141 kauth_cred_t a_cred;
142};
143extern const struct vnodeop_desc vop_setattr_desc;
144int VOP_SETATTR(struct vnode *, struct vattr *, kauth_cred_t);
145
146#define VOP_READ_DESCOFFSET 10
147struct vop_read_args {
148 const struct vnodeop_desc *a_desc;
149 struct vnode *a_vp;
150 struct uio *a_uio;
151 int a_ioflag;
152 kauth_cred_t a_cred;
153};
154extern const struct vnodeop_desc vop_read_desc;
155int VOP_READ(struct vnode *, struct uio *, int, kauth_cred_t);
156
157#define VOP_WRITE_DESCOFFSET 11
158struct vop_write_args {
159 const struct vnodeop_desc *a_desc;
160 struct vnode *a_vp;
161 struct uio *a_uio;
162 int a_ioflag;
163 kauth_cred_t a_cred;
164};
165extern const struct vnodeop_desc vop_write_desc;
166int VOP_WRITE(struct vnode *, struct uio *, int, kauth_cred_t);
167
168#define VOP_FALLOCATE_DESCOFFSET 12
169struct vop_fallocate_args {
170 const struct vnodeop_desc *a_desc;
171 struct vnode *a_vp;
172 off_t a_pos;
173 off_t a_len;
174};
175extern const struct vnodeop_desc vop_fallocate_desc;
176int VOP_FALLOCATE(struct vnode *, off_t, off_t);
177
178#define VOP_FDISCARD_DESCOFFSET 13
179struct vop_fdiscard_args {
180 const struct vnodeop_desc *a_desc;
181 struct vnode *a_vp;
182 off_t a_pos;
183 off_t a_len;
184};
185extern const struct vnodeop_desc vop_fdiscard_desc;
186int VOP_FDISCARD(struct vnode *, off_t, off_t);
187
188#define VOP_IOCTL_DESCOFFSET 14
189struct vop_ioctl_args {
190 const struct vnodeop_desc *a_desc;
191 struct vnode *a_vp;
192 u_long a_command;
193 void *a_data;
194 int a_fflag;
195 kauth_cred_t a_cred;
196};
197extern const struct vnodeop_desc vop_ioctl_desc;
198int VOP_IOCTL(struct vnode *, u_long, void *, int, kauth_cred_t);
199
200#define VOP_FCNTL_DESCOFFSET 15
201struct vop_fcntl_args {
202 const struct vnodeop_desc *a_desc;
203 struct vnode *a_vp;
204 u_int a_command;
205 void *a_data;
206 int a_fflag;
207 kauth_cred_t a_cred;
208};
209extern const struct vnodeop_desc vop_fcntl_desc;
210int VOP_FCNTL(struct vnode *, u_int, void *, int, kauth_cred_t);
211
212#define VOP_POLL_DESCOFFSET 16
213struct vop_poll_args {
214 const struct vnodeop_desc *a_desc;
215 struct vnode *a_vp;
216 int a_events;
217};
218extern const struct vnodeop_desc vop_poll_desc;
219int VOP_POLL(struct vnode *, int);
220
221#define VOP_KQFILTER_DESCOFFSET 17
222struct vop_kqfilter_args {
223 const struct vnodeop_desc *a_desc;
224 struct vnode *a_vp;
225 struct knote *a_kn;
226};
227extern const struct vnodeop_desc vop_kqfilter_desc;
228int VOP_KQFILTER(struct vnode *, struct knote *);
229
230#define VOP_REVOKE_DESCOFFSET 18
231struct vop_revoke_args {
232 const struct vnodeop_desc *a_desc;
233 struct vnode *a_vp;
234 int a_flags;
235};
236extern const struct vnodeop_desc vop_revoke_desc;
237int VOP_REVOKE(struct vnode *, int);
238
239#define VOP_MMAP_DESCOFFSET 19
240struct vop_mmap_args {
241 const struct vnodeop_desc *a_desc;
242 struct vnode *a_vp;
243 vm_prot_t a_prot;
244 kauth_cred_t a_cred;
245};
246extern const struct vnodeop_desc vop_mmap_desc;
247int VOP_MMAP(struct vnode *, vm_prot_t, kauth_cred_t);
248
249#define VOP_FSYNC_DESCOFFSET 20
250struct vop_fsync_args {
251 const struct vnodeop_desc *a_desc;
252 struct vnode *a_vp;
253 kauth_cred_t a_cred;
254 int a_flags;
255 off_t a_offlo;
256 off_t a_offhi;
257};
258extern const struct vnodeop_desc vop_fsync_desc;
259int VOP_FSYNC(struct vnode *, kauth_cred_t, int, off_t, off_t);
260
261#define VOP_SEEK_DESCOFFSET 21
262struct vop_seek_args {
263 const struct vnodeop_desc *a_desc;
264 struct vnode *a_vp;
265 off_t a_oldoff;
266 off_t a_newoff;
267 kauth_cred_t a_cred;
268};
269extern const struct vnodeop_desc vop_seek_desc;
270int VOP_SEEK(struct vnode *, off_t, off_t, kauth_cred_t);
271
272#define VOP_REMOVE_DESCOFFSET 22
273struct vop_remove_args {
274 const struct vnodeop_desc *a_desc;
275 struct vnode *a_dvp;
276 struct vnode *a_vp;
277 struct componentname *a_cnp;
278};
279extern const struct vnodeop_desc vop_remove_desc;
280int VOP_REMOVE(struct vnode *, struct vnode *, struct componentname *);
281
282#define VOP_LINK_DESCOFFSET 23
283struct vop_link_v2_args {
284 const struct vnodeop_desc *a_desc;
285 struct vnode *a_dvp;
286 struct vnode *a_vp;
287 struct componentname *a_cnp;
288};
289extern const struct vnodeop_desc vop_link_desc;
290int VOP_LINK(struct vnode *, struct vnode *, struct componentname *);
291
292#define VOP_RENAME_DESCOFFSET 24
293struct vop_rename_args {
294 const struct vnodeop_desc *a_desc;
295 struct vnode *a_fdvp;
296 struct vnode *a_fvp;
297 struct componentname *a_fcnp;
298 struct vnode *a_tdvp;
299 struct vnode *a_tvp;
300 struct componentname *a_tcnp;
301};
302extern const struct vnodeop_desc vop_rename_desc;
303int VOP_RENAME(struct vnode *, struct vnode *, struct componentname *,
304 struct vnode *, struct vnode *, struct componentname *);
305
306#define VOP_MKDIR_DESCOFFSET 25
307struct vop_mkdir_v3_args {
308 const struct vnodeop_desc *a_desc;
309 struct vnode *a_dvp;
310 struct vnode **a_vpp;
311 struct componentname *a_cnp;
312 struct vattr *a_vap;
313};
314extern const struct vnodeop_desc vop_mkdir_desc;
315int VOP_MKDIR(struct vnode *, struct vnode **, struct componentname *,
316 struct vattr *);
317
318#define VOP_RMDIR_DESCOFFSET 26
319struct vop_rmdir_args {
320 const struct vnodeop_desc *a_desc;
321 struct vnode *a_dvp;
322 struct vnode *a_vp;
323 struct componentname *a_cnp;
324};
325extern const struct vnodeop_desc vop_rmdir_desc;
326int VOP_RMDIR(struct vnode *, struct vnode *, struct componentname *);
327
328#define VOP_SYMLINK_DESCOFFSET 27
329struct vop_symlink_v3_args {
330 const struct vnodeop_desc *a_desc;
331 struct vnode *a_dvp;
332 struct vnode **a_vpp;
333 struct componentname *a_cnp;
334 struct vattr *a_vap;
335 char *a_target;
336};
337extern const struct vnodeop_desc vop_symlink_desc;
338int VOP_SYMLINK(struct vnode *, struct vnode **, struct componentname *,
339 struct vattr *, char *);
340
341#define VOP_READDIR_DESCOFFSET 28
342struct vop_readdir_args {
343 const struct vnodeop_desc *a_desc;
344 struct vnode *a_vp;
345 struct uio *a_uio;
346 kauth_cred_t a_cred;
347 int *a_eofflag;
348 off_t **a_cookies;
349 int *a_ncookies;
350};
351extern const struct vnodeop_desc vop_readdir_desc;
352int VOP_READDIR(struct vnode *, struct uio *, kauth_cred_t, int *, off_t **,
353 int *);
354
355#define VOP_READLINK_DESCOFFSET 29
356struct vop_readlink_args {
357 const struct vnodeop_desc *a_desc;
358 struct vnode *a_vp;
359 struct uio *a_uio;
360 kauth_cred_t a_cred;
361};
362extern const struct vnodeop_desc vop_readlink_desc;
363int VOP_READLINK(struct vnode *, struct uio *, kauth_cred_t);
364
365#define VOP_ABORTOP_DESCOFFSET 30
366struct vop_abortop_args {
367 const struct vnodeop_desc *a_desc;
368 struct vnode *a_dvp;
369 struct componentname *a_cnp;
370};
371extern const struct vnodeop_desc vop_abortop_desc;
372int VOP_ABORTOP(struct vnode *, struct componentname *);
373
374#define VOP_INACTIVE_DESCOFFSET 31
375struct vop_inactive_args {
376 const struct vnodeop_desc *a_desc;
377 struct vnode *a_vp;
378 bool *a_recycle;
379};
380extern const struct vnodeop_desc vop_inactive_desc;
381int VOP_INACTIVE(struct vnode *, bool *);
382
383#define VOP_RECLAIM_DESCOFFSET 32
384struct vop_reclaim_args {
385 const struct vnodeop_desc *a_desc;
386 struct vnode *a_vp;
387};
388extern const struct vnodeop_desc vop_reclaim_desc;
389int VOP_RECLAIM(struct vnode *);
390
391#define VOP_LOCK_DESCOFFSET 33
392struct vop_lock_args {
393 const struct vnodeop_desc *a_desc;
394 struct vnode *a_vp;
395 int a_flags;
396};
397extern const struct vnodeop_desc vop_lock_desc;
398int VOP_LOCK(struct vnode *, int);
399
400#define VOP_UNLOCK_DESCOFFSET 34
401struct vop_unlock_args {
402 const struct vnodeop_desc *a_desc;
403 struct vnode *a_vp;
404};
405extern const struct vnodeop_desc vop_unlock_desc;
406int VOP_UNLOCK(struct vnode *);
407
408#define VOP_BMAP_DESCOFFSET 35
409struct vop_bmap_args {
410 const struct vnodeop_desc *a_desc;
411 struct vnode *a_vp;
412 daddr_t a_bn;
413 struct vnode **a_vpp;
414 daddr_t *a_bnp;
415 int *a_runp;
416};
417extern const struct vnodeop_desc vop_bmap_desc;
418int VOP_BMAP(struct vnode *, daddr_t, struct vnode **, daddr_t *, int *);
419
420#define VOP_STRATEGY_DESCOFFSET 36
421struct vop_strategy_args {
422 const struct vnodeop_desc *a_desc;
423 struct vnode *a_vp;
424 struct buf *a_bp;
425};
426extern const struct vnodeop_desc vop_strategy_desc;
427int VOP_STRATEGY(struct vnode *, struct buf *);
428
429#define VOP_PRINT_DESCOFFSET 37
430struct vop_print_args {
431 const struct vnodeop_desc *a_desc;
432 struct vnode *a_vp;
433};
434extern const struct vnodeop_desc vop_print_desc;
435int VOP_PRINT(struct vnode *);
436
437#define VOP_ISLOCKED_DESCOFFSET 38
438struct vop_islocked_args {
439 const struct vnodeop_desc *a_desc;
440 struct vnode *a_vp;
441};
442extern const struct vnodeop_desc vop_islocked_desc;
443int VOP_ISLOCKED(struct vnode *);
444
445#define VOP_PATHCONF_DESCOFFSET 39
446struct vop_pathconf_args {
447 const struct vnodeop_desc *a_desc;
448 struct vnode *a_vp;
449 int a_name;
450 register_t *a_retval;
451};
452extern const struct vnodeop_desc vop_pathconf_desc;
453int VOP_PATHCONF(struct vnode *, int, register_t *);
454
455#define VOP_ADVLOCK_DESCOFFSET 40
456struct vop_advlock_args {
457 const struct vnodeop_desc *a_desc;
458 struct vnode *a_vp;
459 void *a_id;
460 int a_op;
461 struct flock *a_fl;
462 int a_flags;
463};
464extern const struct vnodeop_desc vop_advlock_desc;
465int VOP_ADVLOCK(struct vnode *, void *, int, struct flock *, int);
466
467#define VOP_WHITEOUT_DESCOFFSET 41
468struct vop_whiteout_args {
469 const struct vnodeop_desc *a_desc;
470 struct vnode *a_dvp;
471 struct componentname *a_cnp;
472 int a_flags;
473};
474extern const struct vnodeop_desc vop_whiteout_desc;
475int VOP_WHITEOUT(struct vnode *, struct componentname *, int);
476
477#define VOP_GETPAGES_DESCOFFSET 42
478struct vop_getpages_args {
479 const struct vnodeop_desc *a_desc;
480 struct vnode *a_vp;
481 voff_t a_offset;
482 struct vm_page **a_m;
483 int *a_count;
484 int a_centeridx;
485 vm_prot_t a_access_type;
486 int a_advice;
487 int a_flags;
488};
489extern const struct vnodeop_desc vop_getpages_desc;
490int VOP_GETPAGES(struct vnode *, voff_t, struct vm_page **, int *, int,
491 vm_prot_t, int, int);
492
493#define VOP_PUTPAGES_DESCOFFSET 43
494struct vop_putpages_args {
495 const struct vnodeop_desc *a_desc;
496 struct vnode *a_vp;
497 voff_t a_offlo;
498 voff_t a_offhi;
499 int a_flags;
500};
501extern const struct vnodeop_desc vop_putpages_desc;
502int VOP_PUTPAGES(struct vnode *, voff_t, voff_t, int);
503
504#define VOP_CLOSEEXTATTR_DESCOFFSET 44
505struct vop_closeextattr_args {
506 const struct vnodeop_desc *a_desc;
507 struct vnode *a_vp;
508 int a_commit;
509 kauth_cred_t a_cred;
510};
511extern const struct vnodeop_desc vop_closeextattr_desc;
512int VOP_CLOSEEXTATTR(struct vnode *, int, kauth_cred_t);
513
514#define VOP_GETEXTATTR_DESCOFFSET 45
515struct vop_getextattr_args {
516 const struct vnodeop_desc *a_desc;
517 struct vnode *a_vp;
518 int a_attrnamespace;
519 const char *a_name;
520 struct uio *a_uio;
521 size_t *a_size;
522 kauth_cred_t a_cred;
523};
524extern const struct vnodeop_desc vop_getextattr_desc;
525int VOP_GETEXTATTR(struct vnode *, int, const char *, struct uio *,
526 size_t *, kauth_cred_t);
527
528#define VOP_LISTEXTATTR_DESCOFFSET 46
529struct vop_listextattr_args {
530 const struct vnodeop_desc *a_desc;
531 struct vnode *a_vp;
532 int a_attrnamespace;
533 struct uio *a_uio;
534 size_t *a_size;
535 int a_flag;
536 kauth_cred_t a_cred;
537};
538extern const struct vnodeop_desc vop_listextattr_desc;
539int VOP_LISTEXTATTR(struct vnode *, int, struct uio *, size_t *, int,
540 kauth_cred_t);
541
542#define VOP_OPENEXTATTR_DESCOFFSET 47
543struct vop_openextattr_args {
544 const struct vnodeop_desc *a_desc;
545 struct vnode *a_vp;
546 kauth_cred_t a_cred;
547};
548extern const struct vnodeop_desc vop_openextattr_desc;
549int VOP_OPENEXTATTR(struct vnode *, kauth_cred_t);
550
551#define VOP_DELETEEXTATTR_DESCOFFSET 48
552struct vop_deleteextattr_args {
553 const struct vnodeop_desc *a_desc;
554 struct vnode *a_vp;
555 int a_attrnamespace;
556 const char *a_name;
557 kauth_cred_t a_cred;
558};
559extern const struct vnodeop_desc vop_deleteextattr_desc;
560int VOP_DELETEEXTATTR(struct vnode *, int, const char *, kauth_cred_t);
561
562#define VOP_SETEXTATTR_DESCOFFSET 49
563struct vop_setextattr_args {
564 const struct vnodeop_desc *a_desc;
565 struct vnode *a_vp;
566 int a_attrnamespace;
567 const char *a_name;
568 struct uio *a_uio;
569 kauth_cred_t a_cred;
570};
571extern const struct vnodeop_desc vop_setextattr_desc;
572int VOP_SETEXTATTR(struct vnode *, int, const char *, struct uio *,
573 kauth_cred_t);
574
575#define VNODE_OPS_COUNT 50
576
577#endif /* !_SYS_VNODE_IF_H_ */
578