vnode_if.src revision 127911
1190747Snwhitehorn#
2190747Snwhitehorn# Copyright (c) 1992, 1993
3190747Snwhitehorn#	The Regents of the University of California.  All rights reserved.
4190747Snwhitehorn#
5190747Snwhitehorn# Redistribution and use in source and binary forms, with or without
6190747Snwhitehorn# modification, are permitted provided that the following conditions
7190747Snwhitehorn# are met:
8190747Snwhitehorn# 1. Redistributions of source code must retain the above copyright
9190747Snwhitehorn#    notice, this list of conditions and the following disclaimer.
10190747Snwhitehorn# 2. Redistributions in binary form must reproduce the above copyright
11190747Snwhitehorn#    notice, this list of conditions and the following disclaimer in the
12190747Snwhitehorn#    documentation and/or other materials provided with the distribution.
13190747Snwhitehorn# 4. Neither the name of the University nor the names of its contributors
14190747Snwhitehorn#    may be used to endorse or promote products derived from this software
15190747Snwhitehorn#    without specific prior written permission.
16190747Snwhitehorn#
17190747Snwhitehorn# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
18190747Snwhitehorn# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19190747Snwhitehorn# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20190747Snwhitehorn# ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
21190747Snwhitehorn# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22190747Snwhitehorn# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23190747Snwhitehorn# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24190747Snwhitehorn# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25190747Snwhitehorn# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26190747Snwhitehorn# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27190747Snwhitehorn# SUCH DAMAGE.
28190747Snwhitehorn#
29190747Snwhitehorn#	@(#)vnode_if.src	8.12 (Berkeley) 5/14/95
30190747Snwhitehorn# $FreeBSD: head/sys/kern/vnode_if.src 127911 2004-04-05 21:03:37Z imp $
31190747Snwhitehorn#
32190747Snwhitehorn
33190747Snwhitehorn#
34190747Snwhitehorn# Above each of the vop descriptors is a specification of the locking
35190747Snwhitehorn# protocol used by each vop call.  The first column is the name of
36190747Snwhitehorn# the variable, the remaining three columns are in, out and error
37190747Snwhitehorn# respectively.  The "in" column defines the lock state on input,
38190747Snwhitehorn# the "out" column defines the state on succesful return, and the
39190747Snwhitehorn# "error" column defines the locking state on error exit.
40190747Snwhitehorn#
41190747Snwhitehorn# The locking value can take the following values:
42190747Snwhitehorn# L: locked; not converted to type of lock.
43190747Snwhitehorn# A: any lock type.
44190747Snwhitehorn# S: locked with shared lock.
45190747Snwhitehorn# E: locked with exclusive lock for this process.
46190747Snwhitehorn# O: locked with exclusive lock for other process.
47190747Snwhitehorn# U: unlocked.
48190747Snwhitehorn# -: not applicable.  vnode does not yet (or no longer) exists.
49190747Snwhitehorn# =: the same on input and output, may be either L or U.
50190747Snwhitehorn# X: locked if not nil.
51190747Snwhitehorn#
52190747Snwhitehorn# The paramater named "vpp" is assumed to be always used with double
53190747Snwhitehorn# indirection (**vpp) and that name is hard-codeed in vnode_if.awk !
54190747Snwhitehorn#
55190747Snwhitehorn# If other such parameters are introduced, they have to be added to
56190747Snwhitehorn# the AWK script at the head of the definition of "add_debug_code()".
57190747Snwhitehorn#
58190747Snwhitehorn
59190747Snwhitehorn#
60190747Snwhitehorn# islocked	vp	= = =
61190747Snwhitehorn#
62190747Snwhitehornvop_islocked {
63190747Snwhitehorn	IN struct vnode *vp;
64190747Snwhitehorn	IN struct thread *td;
65190747Snwhitehorn};
66190747Snwhitehorn
67190747Snwhitehorn#
68190747Snwhitehorn# lookup	dvp	L ? ?
69190747Snwhitehorn# lookup	vpp	- L -
70190747Snwhitehorn#! lookup	pre	vop_lookup_pre
71190747Snwhitehorn#! lookup	post	vop_lookup_post
72190747Snwhitehorn#
73190747Snwhitehorn# XXX - the lookup locking protocol defies simple description and depends
74190747Snwhitehorn#	on the flags and operation fields in the (cnp) structure.  Note
75190747Snwhitehorn#	especially that *vpp may equal dvp and both may be locked.
76190747Snwhitehorn#
77190747Snwhitehornvop_lookup {
78190747Snwhitehorn	IN struct vnode *dvp;
79208614Sraj	INOUT struct vnode **vpp;
80190747Snwhitehorn	IN struct componentname *cnp;
81190747Snwhitehorn};
82190747Snwhitehorn
83190747Snwhitehorn#
84190747Snwhitehorn#% cachedlookup	dvp	L ? ?
85190747Snwhitehorn#% cachedlookup	vpp	- L -
86190747Snwhitehorn#
87190747Snwhitehorn# This must be an exact copy of lookup.  See kern/vfs_cache.c for details.
88190747Snwhitehorn#
89190747Snwhitehornvop_cachedlookup {
90190747Snwhitehorn	IN struct vnode *dvp;
91194025Savg	INOUT struct vnode **vpp;
92194025Savg	IN struct componentname *cnp;
93190747Snwhitehorn};
94190747Snwhitehorn
95190747Snwhitehorn#
96190747Snwhitehorn#% create	dvp	L L L
97190747Snwhitehorn#% create	vpp	- L -
98190747Snwhitehorn#
99190747Snwhitehornvop_create {
100209801Snwhitehorn	IN struct vnode *dvp;
101190747Snwhitehorn	OUT struct vnode **vpp;
102190747Snwhitehorn	IN struct componentname *cnp;
103190747Snwhitehorn	IN struct vattr *vap;
104190747Snwhitehorn};
105190747Snwhitehorn
106190747Snwhitehorn#
107190747Snwhitehorn#% whiteout	dvp	L L L
108190747Snwhitehorn#
109190747Snwhitehornvop_whiteout {
110190747Snwhitehorn	IN struct vnode *dvp;
111190747Snwhitehorn	IN struct componentname *cnp;
112190747Snwhitehorn	IN int flags;
113190747Snwhitehorn};
114190747Snwhitehorn
115190747Snwhitehorn#
116190747Snwhitehorn#% mknod	dvp	L L L
117190747Snwhitehorn#% mknod	vpp	- L -
118190747Snwhitehorn#
119190747Snwhitehornvop_mknod {
120190747Snwhitehorn	IN struct vnode *dvp;
121190747Snwhitehorn	OUT struct vnode **vpp;
122190747Snwhitehorn	IN struct componentname *cnp;
123190747Snwhitehorn	IN struct vattr *vap;
124190747Snwhitehorn};
125190747Snwhitehorn
126190747Snwhitehorn#
127190747Snwhitehorn#% open		vp	L L L
128190747Snwhitehorn#
129190747Snwhitehornvop_open {
130190747Snwhitehorn	IN struct vnode *vp;
131190747Snwhitehorn	IN int mode;
132190747Snwhitehorn	IN struct ucred *cred;
133190747Snwhitehorn	IN struct thread *td;
134190747Snwhitehorn	IN int fdidx;
135190747Snwhitehorn};
136190747Snwhitehorn
137190747Snwhitehorn#
138190747Snwhitehorn#% close	vp	U U U
139190747Snwhitehorn#
140190747Snwhitehornvop_close {
141190747Snwhitehorn	IN struct vnode *vp;
142190747Snwhitehorn	IN int fflag;
143190747Snwhitehorn	IN struct ucred *cred;
144190747Snwhitehorn	IN struct thread *td;
145190747Snwhitehorn};
146190747Snwhitehorn
147190747Snwhitehorn#
148190747Snwhitehorn#% access	vp	L L L
149190747Snwhitehorn#
150190747Snwhitehornvop_access {
151190747Snwhitehorn	IN struct vnode *vp;
152190747Snwhitehorn	IN int mode;
153190747Snwhitehorn	IN struct ucred *cred;
154190747Snwhitehorn	IN struct thread *td;
155190747Snwhitehorn};
156190747Snwhitehorn
157190747Snwhitehorn#
158190747Snwhitehorn#% getattr	vp	L L L
159190747Snwhitehorn#
160190747Snwhitehornvop_getattr {
161190747Snwhitehorn	IN struct vnode *vp;
162190747Snwhitehorn	OUT struct vattr *vap;
163190747Snwhitehorn	IN struct ucred *cred;
164190747Snwhitehorn	IN struct thread *td;
165190747Snwhitehorn};
166190747Snwhitehorn
167190747Snwhitehorn#
168190747Snwhitehorn#% setattr	vp	L L L
169190747Snwhitehorn#
170190747Snwhitehornvop_setattr {
171190747Snwhitehorn	IN struct vnode *vp;
172190747Snwhitehorn	IN struct vattr *vap;
173190747Snwhitehorn	IN struct ucred *cred;
174190747Snwhitehorn	IN struct thread *td;
175190747Snwhitehorn};
176190747Snwhitehorn
177190747Snwhitehorn#
178190747Snwhitehorn#% read		vp	L L L
179190747Snwhitehorn#
180190747Snwhitehornvop_read {
181190747Snwhitehorn	IN struct vnode *vp;
182190747Snwhitehorn	INOUT struct uio *uio;
183190747Snwhitehorn	IN int ioflag;
184190747Snwhitehorn	IN struct ucred *cred;
185190747Snwhitehorn};
186190747Snwhitehorn
187190747Snwhitehorn#
188190747Snwhitehorn#% write	vp	L L L
189190747Snwhitehorn#
190190747Snwhitehornvop_write {
191190747Snwhitehorn	IN struct vnode *vp;
192190747Snwhitehorn	INOUT struct uio *uio;
193190747Snwhitehorn	IN int ioflag;
194190747Snwhitehorn	IN struct ucred *cred;
195190747Snwhitehorn};
196190747Snwhitehorn
197190747Snwhitehorn#
198190747Snwhitehorn#% lease	vp	= = =
199190747Snwhitehorn#
200190747Snwhitehornvop_lease {
201190747Snwhitehorn	IN struct vnode *vp;
202190747Snwhitehorn	IN struct thread *td;
203190747Snwhitehorn	IN struct ucred *cred;
204190747Snwhitehorn	IN int flag;
205190747Snwhitehorn};
206190747Snwhitehorn
207190747Snwhitehorn#
208190747Snwhitehorn#% ioctl	vp	U U U
209190747Snwhitehorn#
210190747Snwhitehornvop_ioctl {
211190747Snwhitehorn	IN struct vnode *vp;
212190747Snwhitehorn	IN u_long command;
213190747Snwhitehorn	IN caddr_t data;
214190747Snwhitehorn	IN int fflag;
215190747Snwhitehorn	IN struct ucred *cred;
216190747Snwhitehorn	IN struct thread *td;
217190747Snwhitehorn};
218190747Snwhitehorn
219190747Snwhitehorn#
220190747Snwhitehorn#% poll	vp	U U U
221190747Snwhitehorn#
222190747Snwhitehornvop_poll {
223190747Snwhitehorn	IN struct vnode *vp;
224190747Snwhitehorn	IN int events;
225190747Snwhitehorn	IN struct ucred *cred;
226190747Snwhitehorn	IN struct thread *td;
227190747Snwhitehorn};
228190747Snwhitehorn
229190747Snwhitehorn#
230190747Snwhitehorn#% kqfilter	vp	U U U
231190747Snwhitehorn#
232190747Snwhitehornvop_kqfilter {
233190747Snwhitehorn	IN struct vnode *vp;
234190747Snwhitehorn	IN struct knote *kn;
235190747Snwhitehorn};
236190747Snwhitehorn
237190747Snwhitehorn#
238190747Snwhitehorn#% revoke	vp	U U U
239190747Snwhitehorn#
240190747Snwhitehornvop_revoke {
241190747Snwhitehorn	IN struct vnode *vp;
242190747Snwhitehorn	IN int flags;
243190747Snwhitehorn};
244190747Snwhitehorn
245190747Snwhitehorn#
246190747Snwhitehorn#% fsync	vp	L L L
247190747Snwhitehorn#
248190747Snwhitehornvop_fsync {
249190747Snwhitehorn	IN struct vnode *vp;
250190747Snwhitehorn	IN struct ucred *cred;
251190747Snwhitehorn	IN int waitfor;
252190747Snwhitehorn	IN struct thread *td;
253190747Snwhitehorn};
254190747Snwhitehorn
255190747Snwhitehorn#
256190747Snwhitehorn#% remove	dvp	L L L
257190747Snwhitehorn#% remove	vp	L L L
258190747Snwhitehorn#
259208614Srajvop_remove {
260190747Snwhitehorn	IN struct vnode *dvp;
261190747Snwhitehorn	IN struct vnode *vp;
262190747Snwhitehorn	IN struct componentname *cnp;
263190747Snwhitehorn};
264190747Snwhitehorn
265190747Snwhitehorn#
266208614Sraj#% link		tdvp	L L L
267190747Snwhitehorn#% link		vp	L L L
268190747Snwhitehorn#
269190747Snwhitehornvop_link {
270190747Snwhitehorn	IN struct vnode *tdvp;
271190747Snwhitehorn	IN struct vnode *vp;
272190747Snwhitehorn	IN struct componentname *cnp;
273190747Snwhitehorn};
274190747Snwhitehorn
275190747Snwhitehorn#
276190747Snwhitehorn# rename	fdvp	U U U
277205496Snwhitehorn# rename	fvp	U U U
278190747Snwhitehorn# rename	tdvp	L U U
279190747Snwhitehorn# rename	tvp	X U U
280190747Snwhitehorn#! rename	pre	vop_rename_pre
281190747Snwhitehorn#
282190747Snwhitehornvop_rename {
283190747Snwhitehorn	IN WILLRELE struct vnode *fdvp;
284190747Snwhitehorn	IN WILLRELE struct vnode *fvp;
285190747Snwhitehorn	IN struct componentname *fcnp;
286190747Snwhitehorn	IN WILLRELE struct vnode *tdvp;
287190747Snwhitehorn	IN WILLRELE struct vnode *tvp;
288190747Snwhitehorn	IN struct componentname *tcnp;
289190747Snwhitehorn};
290190747Snwhitehorn
291190747Snwhitehorn#
292190747Snwhitehorn#% mkdir	dvp	L L L
293190747Snwhitehorn#% mkdir	vpp	- L -
294190747Snwhitehorn#
295190747Snwhitehornvop_mkdir {
296190747Snwhitehorn	IN struct vnode *dvp;
297190747Snwhitehorn	OUT struct vnode **vpp;
298190747Snwhitehorn	IN struct componentname *cnp;
299190747Snwhitehorn	IN struct vattr *vap;
300190747Snwhitehorn};
301190747Snwhitehorn
302190747Snwhitehorn#
303190747Snwhitehorn#% rmdir	dvp	L L L
304190747Snwhitehorn#% rmdir	vp	L L L
305190747Snwhitehorn#
306190747Snwhitehornvop_rmdir {
307190747Snwhitehorn	IN struct vnode *dvp;
308205496Snwhitehorn	IN struct vnode *vp;
309190747Snwhitehorn	IN struct componentname *cnp;
310190747Snwhitehorn};
311190747Snwhitehorn
312190747Snwhitehorn#
313190747Snwhitehorn#% symlink	dvp	L L L
314190747Snwhitehorn#% symlink	vpp	- L -
315190747Snwhitehorn#
316190747Snwhitehornvop_symlink {
317190747Snwhitehorn	IN struct vnode *dvp;
318190747Snwhitehorn	OUT struct vnode **vpp;
319190747Snwhitehorn	IN struct componentname *cnp;
320190747Snwhitehorn	IN struct vattr *vap;
321190747Snwhitehorn	IN char *target;
322190747Snwhitehorn};
323190747Snwhitehorn
324190747Snwhitehorn#
325190747Snwhitehorn#% readdir	vp	L L L
326190747Snwhitehorn#
327190747Snwhitehornvop_readdir {
328190747Snwhitehorn	IN struct vnode *vp;
329190747Snwhitehorn	INOUT struct uio *uio;
330205496Snwhitehorn	IN struct ucred *cred;
331190747Snwhitehorn	INOUT int *eofflag;
332190747Snwhitehorn	OUT int *ncookies;
333190747Snwhitehorn	INOUT u_long **cookies;
334190747Snwhitehorn};
335190747Snwhitehorn
336190747Snwhitehorn#
337190747Snwhitehorn#% readlink	vp	L L L
338190747Snwhitehorn#
339190747Snwhitehornvop_readlink {
340190747Snwhitehorn	IN struct vnode *vp;
341190747Snwhitehorn	INOUT struct uio *uio;
342190747Snwhitehorn	IN struct ucred *cred;
343190747Snwhitehorn};
344190747Snwhitehorn
345190747Snwhitehorn#
346190747Snwhitehorn#% inactive	vp	L U U
347190747Snwhitehorn#
348190747Snwhitehornvop_inactive {
349190747Snwhitehorn	IN struct vnode *vp;
350190747Snwhitehorn	IN struct thread *td;
351190747Snwhitehorn};
352205496Snwhitehorn
353190747Snwhitehorn#
354190747Snwhitehorn#% reclaim	vp	U U U
355190747Snwhitehorn#
356190747Snwhitehornvop_reclaim {
357190747Snwhitehorn	IN struct vnode *vp;
358190747Snwhitehorn	IN struct thread *td;
359190747Snwhitehorn};
360190747Snwhitehorn
361190747Snwhitehorn#
362190747Snwhitehorn#lock		vp	? ? ?
363190747Snwhitehorn#! lock		pre	vop_lock_pre
364190747Snwhitehorn#! lock		post	vop_lock_post
365190747Snwhitehorn#
366190747Snwhitehornvop_lock {
367190747Snwhitehorn	IN struct vnode *vp;
368190747Snwhitehorn	IN int flags;
369190747Snwhitehorn	IN struct thread *td;
370190747Snwhitehorn};
371190747Snwhitehorn
372190747Snwhitehorn#
373190747Snwhitehorn#unlock		vp	L ? L
374205496Snwhitehorn#! unlock	pre	vop_unlock_pre
375190747Snwhitehorn#! unlock	post	vop_unlock_post
376190747Snwhitehorn#
377190747Snwhitehornvop_unlock {
378190747Snwhitehorn	IN struct vnode *vp;
379190747Snwhitehorn	IN int flags;
380190747Snwhitehorn	IN struct thread *td;
381190747Snwhitehorn};
382190747Snwhitehorn
383190747Snwhitehorn#
384190747Snwhitehorn#% bmap		vp	L L L
385190747Snwhitehorn#% bmap		vpp	- U -
386190747Snwhitehorn#
387190747Snwhitehornvop_bmap {
388190747Snwhitehorn	IN struct vnode *vp;
389190747Snwhitehorn	IN daddr_t bn;
390190747Snwhitehorn	OUT struct vnode **vpp;
391190747Snwhitehorn	IN daddr_t *bnp;
392190747Snwhitehorn	OUT int *runp;
393190747Snwhitehorn	OUT int *runb;
394190747Snwhitehorn};
395190747Snwhitehorn
396205496Snwhitehorn#
397190747Snwhitehorn# strategy	vp	L L L
398190747Snwhitehorn#! strategy	pre	vop_strategy_pre
399190747Snwhitehorn#
400190747Snwhitehornvop_strategy {
401190747Snwhitehorn	IN struct vnode *vp;
402190747Snwhitehorn	IN struct buf *bp;
403190747Snwhitehorn};
404190747Snwhitehorn
405190747Snwhitehorn#
406190747Snwhitehorn# specstrategy	vp	L L L
407190747Snwhitehorn#! specstrategy	pre	vop_strategy_pre
408190747Snwhitehorn#
409190747Snwhitehornvop_specstrategy {
410190747Snwhitehorn	IN struct vnode *vp;
411190747Snwhitehorn	IN struct buf *bp;
412190747Snwhitehorn};
413190747Snwhitehorn
414190747Snwhitehorn#
415190747Snwhitehorn#% getwritemount vp	= = =
416190747Snwhitehorn#
417190747Snwhitehornvop_getwritemount {
418190747Snwhitehorn	IN struct vnode *vp;
419190747Snwhitehorn	OUT struct mount **mpp;
420190747Snwhitehorn};
421190747Snwhitehorn
422190747Snwhitehorn#
423190747Snwhitehorn#% print	vp	= = =
424190747Snwhitehorn#
425190747Snwhitehornvop_print {
426205496Snwhitehorn	IN struct vnode *vp;
427190747Snwhitehorn};
428190747Snwhitehorn
429190747Snwhitehorn#
430190747Snwhitehorn#% pathconf	vp	L L L
431190747Snwhitehorn#
432190747Snwhitehornvop_pathconf {
433190747Snwhitehorn	IN struct vnode *vp;
434190747Snwhitehorn	IN int name;
435190747Snwhitehorn	OUT register_t *retval;
436190747Snwhitehorn};
437190747Snwhitehorn
438190747Snwhitehorn#
439190747Snwhitehorn#% advlock	vp	U U U
440190747Snwhitehorn#
441190747Snwhitehornvop_advlock {
442190747Snwhitehorn	IN struct vnode *vp;
443190747Snwhitehorn	IN caddr_t id;
444190747Snwhitehorn	IN int op;
445190747Snwhitehorn	IN struct flock *fl;
446190747Snwhitehorn	IN int flags;
447190747Snwhitehorn};
448190747Snwhitehorn
449190747Snwhitehorn#
450190747Snwhitehorn#% reallocblks	vp	L L L
451190747Snwhitehorn#
452190747Snwhitehornvop_reallocblks {
453190747Snwhitehorn	IN struct vnode *vp;
454190747Snwhitehorn	IN struct cluster_save *buflist;
455190747Snwhitehorn};
456190747Snwhitehorn
457190747Snwhitehorn#
458190747Snwhitehorn#% getpages	vp	L L L
459190747Snwhitehorn#
460190747Snwhitehornvop_getpages {
461190747Snwhitehorn	IN struct vnode *vp;
462205496Snwhitehorn	IN vm_page_t *m;
463190747Snwhitehorn	IN int count;
464190747Snwhitehorn	IN int reqpage;
465190747Snwhitehorn	IN vm_ooffset_t offset;
466190747Snwhitehorn};
467190747Snwhitehorn
468190747Snwhitehorn#
469190747Snwhitehorn#% putpages	vp	L L L
470190747Snwhitehorn#
471190747Snwhitehornvop_putpages {
472190747Snwhitehorn	IN struct vnode *vp;
473190747Snwhitehorn	IN vm_page_t *m;
474190747Snwhitehorn	IN int count;
475190747Snwhitehorn	IN int sync;
476190747Snwhitehorn	IN int *rtvals;
477190747Snwhitehorn	IN vm_ooffset_t offset;
478190747Snwhitehorn};
479190747Snwhitehorn
480190747Snwhitehorn#
481190747Snwhitehorn#% freeblks	vp	- - -
482190747Snwhitehorn#
483190747Snwhitehorn# This call is used by the filesystem to release blocks back to 
484190747Snwhitehorn# device-driver.  This is useful if the driver has a lengthy 
485190747Snwhitehorn# erase handling or similar.
486190747Snwhitehorn#
487190747Snwhitehorn
488190747Snwhitehornvop_freeblks {
489190747Snwhitehorn	IN struct vnode *vp;
490190747Snwhitehorn	IN daddr_t addr;
491190747Snwhitehorn	IN daddr_t length;
492190747Snwhitehorn};
493190747Snwhitehorn
494194025Savg#
495194025Savg#% getacl	vp	L L L
496190747Snwhitehorn#
497205496Snwhitehornvop_getacl {
498190747Snwhitehorn	IN struct vnode *vp;
499190747Snwhitehorn	IN acl_type_t type;
500190747Snwhitehorn	OUT struct acl *aclp;
501190747Snwhitehorn	IN struct ucred *cred;
502190747Snwhitehorn	IN struct thread *td;
503190747Snwhitehorn};
504190747Snwhitehorn
505190747Snwhitehorn#
506190747Snwhitehorn#% setacl	vp	L L L
507190747Snwhitehorn#
508190747Snwhitehornvop_setacl {
509190747Snwhitehorn	IN struct vnode *vp;
510190747Snwhitehorn	IN acl_type_t type;
511190747Snwhitehorn	IN struct acl *aclp;
512190747Snwhitehorn	IN struct ucred *cred;
513190747Snwhitehorn	IN struct thread *td;
514190747Snwhitehorn};
515190747Snwhitehorn
516190747Snwhitehorn#
517190747Snwhitehorn#% aclcheck	vp	= = =
518190747Snwhitehorn#
519190747Snwhitehornvop_aclcheck {
520190747Snwhitehorn	IN struct vnode *vp;
521190747Snwhitehorn	IN acl_type_t type;
522190747Snwhitehorn	IN struct acl *aclp;
523190747Snwhitehorn	IN struct ucred *cred;
524190747Snwhitehorn	IN struct thread *td;
525190747Snwhitehorn};
526190747Snwhitehorn
527190747Snwhitehorn#
528190747Snwhitehorn#% closeextattr	vp	L L L
529190747Snwhitehorn#
530205496Snwhitehornvop_closeextattr {
531190747Snwhitehorn	IN struct vnode *vp;
532190747Snwhitehorn	IN int commit;
533190747Snwhitehorn	IN struct ucred *cred;
534190747Snwhitehorn	IN struct thread *td;
535190747Snwhitehorn};
536190747Snwhitehorn
537190747Snwhitehorn#
538190747Snwhitehorn#% getextattr	vp	L L L
539190747Snwhitehorn#
540190747Snwhitehornvop_getextattr {
541190747Snwhitehorn	IN struct vnode *vp;
542190747Snwhitehorn	IN int attrnamespace;
543190747Snwhitehorn	IN const char *name;
544190747Snwhitehorn	INOUT struct uio *uio;
545190747Snwhitehorn	OUT size_t *size;
546190747Snwhitehorn	IN struct ucred *cred;
547190747Snwhitehorn	IN struct thread *td;
548190747Snwhitehorn};
549190747Snwhitehorn
550190747Snwhitehorn#
551190747Snwhitehorn#% listextattr	vp	L L L
552190747Snwhitehorn#
553190747Snwhitehornvop_listextattr {
554190747Snwhitehorn	IN struct vnode *vp;
555190747Snwhitehorn	IN int attrnamespace;
556190747Snwhitehorn	INOUT struct uio *uio;
557190747Snwhitehorn	OUT size_t *size;
558190747Snwhitehorn	IN struct ucred *cred;
559190747Snwhitehorn	IN struct thread *td;
560190747Snwhitehorn};
561190747Snwhitehorn
562190747Snwhitehorn#
563205496Snwhitehorn#% openextattr	vp	L L L
564190747Snwhitehorn#
565190747Snwhitehornvop_openextattr {
566190747Snwhitehorn	IN struct vnode *vp;
567190747Snwhitehorn	IN struct ucred *cred;
568190747Snwhitehorn	IN struct thread *td;
569190747Snwhitehorn};
570190747Snwhitehorn
571190747Snwhitehorn#
572190747Snwhitehorn#% deleteextattr	vp	L L L
573190747Snwhitehorn#
574190747Snwhitehornvop_deleteextattr {
575190747Snwhitehorn	IN struct vnode *vp;
576190747Snwhitehorn	IN int attrnamespace;
577190747Snwhitehorn	IN const char *name;
578190747Snwhitehorn	IN struct ucred *cred;
579190747Snwhitehorn	IN struct thread *td;
580190747Snwhitehorn};
581190747Snwhitehorn
582190747Snwhitehorn#
583190747Snwhitehorn#% setextattr	vp	L L L
584190747Snwhitehorn#
585190747Snwhitehornvop_setextattr {
586190747Snwhitehorn	IN struct vnode *vp;
587190747Snwhitehorn	IN int attrnamespace;
588190747Snwhitehorn	IN const char *name;
589190747Snwhitehorn	INOUT struct uio *uio;
590205496Snwhitehorn	IN struct ucred *cred;
591190747Snwhitehorn	IN struct thread *td;
592190747Snwhitehorn};
593190747Snwhitehorn
594190747Snwhitehorn#
595190747Snwhitehorn#% createvobject	vp	L L L
596190747Snwhitehorn#
597190747Snwhitehornvop_createvobject {
598190747Snwhitehorn	IN struct vnode *vp;
599190747Snwhitehorn	IN struct ucred *cred;
600190747Snwhitehorn	IN struct thread *td;
601190747Snwhitehorn};
602190747Snwhitehorn
603190747Snwhitehorn#
604190747Snwhitehorn#% destroyvobject	vp	L L L
605190747Snwhitehorn#
606190747Snwhitehornvop_destroyvobject {
607190747Snwhitehorn	IN struct vnode *vp;
608190747Snwhitehorn};
609190747Snwhitehorn
610190747Snwhitehorn#
611190747Snwhitehorn#% getvobject	vp	L L L
612190747Snwhitehorn#
613190747Snwhitehornvop_getvobject {
614190747Snwhitehorn	IN struct vnode *vp;
615190747Snwhitehorn	OUT struct vm_object **objpp;
616190747Snwhitehorn};
617190747Snwhitehorn
618190747Snwhitehorn#
619190747Snwhitehorn#% setlabel	vp	L L L
620190747Snwhitehorn#
621190747Snwhitehornvop_setlabel {
622190747Snwhitehorn	IN struct vnode *vp;
623205496Snwhitehorn	IN struct label *label;
624190747Snwhitehorn	IN struct ucred *cred;
625190747Snwhitehorn	IN struct thread *td;
626190747Snwhitehorn};
627190747Snwhitehorn