]>
Commit | Line | Data |
---|---|---|
1 | ||
2 | /* | |
3 | * Copyright (c) 2000-2002 Apple Computer, Inc. All rights reserved. | |
4 | * | |
5 | * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ | |
6 | * | |
7 | * This file contains Original Code and/or Modifications of Original Code | |
8 | * as defined in and that are subject to the Apple Public Source License | |
9 | * Version 2.0 (the 'License'). You may not use this file except in | |
10 | * compliance with the License. The rights granted to you under the License | |
11 | * may not be used to create, or enable the creation or redistribution of, | |
12 | * unlawful or unlicensed copies of an Apple operating system, or to | |
13 | * circumvent, violate, or enable the circumvention or violation of, any | |
14 | * terms of an Apple operating system software license agreement. | |
15 | * | |
16 | * Please obtain a copy of the License at | |
17 | * http://www.opensource.apple.com/apsl/ and read it before using this file. | |
18 | * | |
19 | * The Original Code and all software distributed under the License are | |
20 | * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER | |
21 | * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, | |
22 | * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, | |
23 | * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. | |
24 | * Please see the License for the specific language governing rights and | |
25 | * limitations under the License. | |
26 | * | |
27 | * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ | |
28 | */ | |
29 | /* | |
30 | * Copyright (c) 1995 NeXT Computer, Inc. All Rights Reserved | |
31 | * Copyright (c) 1992, 1993, 1994, 1995 | |
32 | * The Regents of the University of California. All rights reserved. | |
33 | * | |
34 | * Redistribution and use in source and binary forms, with or without | |
35 | * modification, are permitted provided that the following conditions | |
36 | * are met: | |
37 | * 1. Redistributions of source code must retain the above copyright | |
38 | * notice, this list of conditions and the following disclaimer. | |
39 | * 2. Redistributions in binary form must reproduce the above copyright | |
40 | * notice, this list of conditions and the following disclaimer in the | |
41 | * documentation and/or other materials provided with the distribution. | |
42 | * 3. All advertising materials mentioning features or use of this software | |
43 | * must display the following acknowledgement: | |
44 | * This product includes software developed by the University of | |
45 | * California, Berkeley and its contributors. | |
46 | * 4. Neither the name of the University nor the names of its contributors | |
47 | * may be used to endorse or promote products derived from this software | |
48 | * without specific prior written permission. | |
49 | * | |
50 | * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS AND | |
51 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |
52 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |
53 | * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE | |
54 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |
55 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | |
56 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | |
57 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | |
58 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | |
59 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |
60 | * SUCH DAMAGE. | |
61 | */ | |
62 | /* | |
63 | * NOTICE: This file was modified by SPARTA, Inc. in 2005 to introduce | |
64 | * support for mandatory and extensible security protections. This notice | |
65 | * is included in support of clause 2.2 (b) of the Apple Public License, | |
66 | * Version 2.0. | |
67 | */ | |
68 | ||
69 | /* | |
70 | * Warning: This file is generated automatically. | |
71 | * (Modifications made here may easily be lost!) | |
72 | * | |
73 | * Created by the script: | |
74 | * @(#)vnode_if.sh 8.7 (Berkeley) 5/11/95 | |
75 | */ | |
76 | ||
77 | ||
78 | #ifndef _SYS_VNODE_IF_H_ | |
79 | #define _SYS_VNODE_IF_H_ | |
80 | ||
81 | #include <sys/appleapiopts.h> | |
82 | #include <sys/cdefs.h> | |
83 | #include <sys/kernel_types.h> | |
84 | #include <sys/buf.h> | |
85 | #ifdef BSD_KERNEL_PRIVATE | |
86 | #include <sys/vm.h> | |
87 | #endif | |
88 | #include <mach/memory_object_types.h> | |
89 | ||
90 | ||
91 | #ifdef KERNEL | |
92 | ||
93 | extern struct vnodeop_desc vnop_default_desc; | |
94 | extern struct vnodeop_desc vnop_lookup_desc; | |
95 | extern struct vnodeop_desc vnop_create_desc; | |
96 | extern struct vnodeop_desc vnop_whiteout_desc; | |
97 | extern struct vnodeop_desc vnop_mknod_desc; | |
98 | extern struct vnodeop_desc vnop_open_desc; | |
99 | extern struct vnodeop_desc vnop_close_desc; | |
100 | extern struct vnodeop_desc vnop_access_desc; | |
101 | extern struct vnodeop_desc vnop_getattr_desc; | |
102 | extern struct vnodeop_desc vnop_setattr_desc; | |
103 | extern struct vnodeop_desc vnop_read_desc; | |
104 | extern struct vnodeop_desc vnop_write_desc; | |
105 | extern struct vnodeop_desc vnop_ioctl_desc; | |
106 | extern struct vnodeop_desc vnop_select_desc; | |
107 | extern struct vnodeop_desc vnop_exchange_desc; | |
108 | extern struct vnodeop_desc vnop_revoke_desc; | |
109 | extern struct vnodeop_desc vnop_mmap_desc; | |
110 | extern struct vnodeop_desc vnop_mnomap_desc; | |
111 | extern struct vnodeop_desc vnop_fsync_desc; | |
112 | extern struct vnodeop_desc vnop_remove_desc; | |
113 | extern struct vnodeop_desc vnop_link_desc; | |
114 | extern struct vnodeop_desc vnop_rename_desc; | |
115 | extern struct vnodeop_desc vnop_mkdir_desc; | |
116 | extern struct vnodeop_desc vnop_rmdir_desc; | |
117 | extern struct vnodeop_desc vnop_symlink_desc; | |
118 | extern struct vnodeop_desc vnop_readdir_desc; | |
119 | extern struct vnodeop_desc vnop_readdirattr_desc; | |
120 | extern struct vnodeop_desc vnop_readlink_desc; | |
121 | extern struct vnodeop_desc vnop_inactive_desc; | |
122 | extern struct vnodeop_desc vnop_reclaim_desc; | |
123 | extern struct vnodeop_desc vnop_print_desc; | |
124 | extern struct vnodeop_desc vnop_pathconf_desc; | |
125 | extern struct vnodeop_desc vnop_advlock_desc; | |
126 | extern struct vnodeop_desc vnop_truncate_desc; | |
127 | extern struct vnodeop_desc vnop_allocate_desc; | |
128 | extern struct vnodeop_desc vnop_pagein_desc; | |
129 | extern struct vnodeop_desc vnop_pageout_desc; | |
130 | extern struct vnodeop_desc vnop_searchfs_desc; | |
131 | extern struct vnodeop_desc vnop_copyfile_desc; | |
132 | extern struct vnodeop_desc vnop_blktooff_desc; | |
133 | extern struct vnodeop_desc vnop_offtoblk_desc; | |
134 | extern struct vnodeop_desc vnop_blockmap_desc; | |
135 | extern struct vnodeop_desc vnop_strategy_desc; | |
136 | extern struct vnodeop_desc vnop_bwrite_desc; | |
137 | ||
138 | #ifdef __APPLE_API_UNSTABLE | |
139 | ||
140 | #if NAMEDSTREAMS | |
141 | extern struct vnodeop_desc vnop_getnamedstream_desc; | |
142 | extern struct vnodeop_desc vnop_makenamedstream_desc; | |
143 | extern struct vnodeop_desc vnop_removenamedstream_desc; | |
144 | #endif | |
145 | ||
146 | #endif | |
147 | ||
148 | __BEGIN_DECLS | |
149 | /* | |
150 | *# | |
151 | *#% lookup dvp L ? ? | |
152 | *#% lookup vpp - L - | |
153 | */ | |
154 | struct vnop_lookup_args { | |
155 | struct vnodeop_desc *a_desc; | |
156 | vnode_t a_dvp; | |
157 | vnode_t *a_vpp; | |
158 | struct componentname *a_cnp; | |
159 | vfs_context_t a_context; | |
160 | }; | |
161 | extern errno_t VNOP_LOOKUP(vnode_t, vnode_t *, struct componentname *, vfs_context_t); | |
162 | ||
163 | ||
164 | /* | |
165 | *# | |
166 | *#% create dvp L L L | |
167 | *#% create vpp - L - | |
168 | *# | |
169 | */ | |
170 | ||
171 | struct vnop_create_args { | |
172 | struct vnodeop_desc *a_desc; | |
173 | vnode_t a_dvp; | |
174 | vnode_t *a_vpp; | |
175 | struct componentname *a_cnp; | |
176 | struct vnode_attr *a_vap; | |
177 | vfs_context_t a_context; | |
178 | }; | |
179 | extern errno_t VNOP_CREATE(vnode_t, vnode_t *, struct componentname *, struct vnode_attr *, vfs_context_t); | |
180 | ||
181 | /* | |
182 | *# | |
183 | *#% whiteout dvp L L L | |
184 | *#% whiteout cnp - - - | |
185 | *#% whiteout flag - - - | |
186 | *# | |
187 | */ | |
188 | struct vnop_whiteout_args { | |
189 | struct vnodeop_desc *a_desc; | |
190 | vnode_t a_dvp; | |
191 | struct componentname *a_cnp; | |
192 | int a_flags; | |
193 | vfs_context_t a_context; | |
194 | }; | |
195 | extern errno_t VNOP_WHITEOUT(vnode_t, struct componentname *, int, vfs_context_t); | |
196 | ||
197 | /* | |
198 | *# | |
199 | *#% mknod dvp L U U | |
200 | *#% mknod vpp - X - | |
201 | *# | |
202 | */ | |
203 | struct vnop_mknod_args { | |
204 | struct vnodeop_desc *a_desc; | |
205 | vnode_t a_dvp; | |
206 | vnode_t *a_vpp; | |
207 | struct componentname *a_cnp; | |
208 | struct vnode_attr *a_vap; | |
209 | vfs_context_t a_context; | |
210 | }; | |
211 | extern errno_t VNOP_MKNOD(vnode_t, vnode_t *, struct componentname *, struct vnode_attr *, vfs_context_t); | |
212 | ||
213 | /* | |
214 | *# | |
215 | *#% open vp L L L | |
216 | *# | |
217 | */ | |
218 | struct vnop_open_args { | |
219 | struct vnodeop_desc *a_desc; | |
220 | vnode_t a_vp; | |
221 | int a_mode; | |
222 | vfs_context_t a_context; | |
223 | }; | |
224 | extern errno_t VNOP_OPEN(vnode_t, int, vfs_context_t); | |
225 | ||
226 | /* | |
227 | *# | |
228 | *#% close vp U U U | |
229 | *# | |
230 | */ | |
231 | struct vnop_close_args { | |
232 | struct vnodeop_desc *a_desc; | |
233 | vnode_t a_vp; | |
234 | int a_fflag; | |
235 | vfs_context_t a_context; | |
236 | }; | |
237 | extern errno_t VNOP_CLOSE(vnode_t, int, vfs_context_t); | |
238 | ||
239 | /* | |
240 | *# | |
241 | *#% access vp L L L | |
242 | *# | |
243 | */ | |
244 | struct vnop_access_args { | |
245 | struct vnodeop_desc *a_desc; | |
246 | vnode_t a_vp; | |
247 | int a_action; | |
248 | vfs_context_t a_context; | |
249 | }; | |
250 | extern errno_t VNOP_ACCESS(vnode_t, int, vfs_context_t); | |
251 | ||
252 | ||
253 | /* | |
254 | *# | |
255 | *#% getattr vp = = = | |
256 | *# | |
257 | */ | |
258 | struct vnop_getattr_args { | |
259 | struct vnodeop_desc *a_desc; | |
260 | vnode_t a_vp; | |
261 | struct vnode_attr *a_vap; | |
262 | vfs_context_t a_context; | |
263 | }; | |
264 | extern errno_t VNOP_GETATTR(vnode_t, struct vnode_attr *, vfs_context_t); | |
265 | ||
266 | /* | |
267 | *# | |
268 | *#% setattr vp L L L | |
269 | *# | |
270 | */ | |
271 | struct vnop_setattr_args { | |
272 | struct vnodeop_desc *a_desc; | |
273 | vnode_t a_vp; | |
274 | struct vnode_attr *a_vap; | |
275 | vfs_context_t a_context; | |
276 | }; | |
277 | extern errno_t VNOP_SETATTR(vnode_t, struct vnode_attr *, vfs_context_t); | |
278 | ||
279 | ||
280 | /* | |
281 | *# | |
282 | *#% read vp L L L | |
283 | *# | |
284 | */ | |
285 | struct vnop_read_args { | |
286 | struct vnodeop_desc *a_desc; | |
287 | vnode_t a_vp; | |
288 | struct uio *a_uio; | |
289 | int a_ioflag; | |
290 | vfs_context_t a_context; | |
291 | }; | |
292 | extern errno_t VNOP_READ(vnode_t, struct uio *, int, vfs_context_t); | |
293 | ||
294 | ||
295 | /* | |
296 | *# | |
297 | *#% write vp L L L | |
298 | *# | |
299 | */ | |
300 | struct vnop_write_args { | |
301 | struct vnodeop_desc *a_desc; | |
302 | vnode_t a_vp; | |
303 | struct uio *a_uio; | |
304 | int a_ioflag; | |
305 | vfs_context_t a_context; | |
306 | }; | |
307 | extern errno_t VNOP_WRITE(vnode_t, struct uio *, int, vfs_context_t); | |
308 | ||
309 | ||
310 | /* | |
311 | *# | |
312 | *#% ioctl vp U U U | |
313 | *# | |
314 | */ | |
315 | struct vnop_ioctl_args { | |
316 | struct vnodeop_desc *a_desc; | |
317 | vnode_t a_vp; | |
318 | u_long a_command; | |
319 | caddr_t a_data; | |
320 | int a_fflag; | |
321 | vfs_context_t a_context; | |
322 | }; | |
323 | extern errno_t VNOP_IOCTL(vnode_t, u_long, caddr_t, int, vfs_context_t); | |
324 | ||
325 | ||
326 | /* | |
327 | *# | |
328 | *#% select vp U U U | |
329 | *# | |
330 | */ | |
331 | struct vnop_select_args { | |
332 | struct vnodeop_desc *a_desc; | |
333 | vnode_t a_vp; | |
334 | int a_which; | |
335 | int a_fflags; | |
336 | void *a_wql; | |
337 | vfs_context_t a_context; | |
338 | }; | |
339 | extern errno_t VNOP_SELECT(vnode_t, int, int, void *, vfs_context_t); | |
340 | ||
341 | ||
342 | /* | |
343 | *# | |
344 | *#% exchange fvp L L L | |
345 | *#% exchange tvp L L L | |
346 | *# | |
347 | */ | |
348 | struct vnop_exchange_args { | |
349 | struct vnodeop_desc *a_desc; | |
350 | vnode_t a_fvp; | |
351 | vnode_t a_tvp; | |
352 | int a_options; | |
353 | vfs_context_t a_context; | |
354 | }; | |
355 | extern errno_t VNOP_EXCHANGE(vnode_t, vnode_t, int, vfs_context_t); | |
356 | ||
357 | ||
358 | /* | |
359 | *# | |
360 | *#% revoke vp U U U | |
361 | *# | |
362 | */ | |
363 | struct vnop_revoke_args { | |
364 | struct vnodeop_desc *a_desc; | |
365 | vnode_t a_vp; | |
366 | int a_flags; | |
367 | vfs_context_t a_context; | |
368 | }; | |
369 | extern errno_t VNOP_REVOKE(vnode_t, int, vfs_context_t); | |
370 | ||
371 | ||
372 | /* | |
373 | *# | |
374 | *# mmap - vp U U U | |
375 | *# | |
376 | */ | |
377 | struct vnop_mmap_args { | |
378 | struct vnodeop_desc *a_desc; | |
379 | vnode_t a_vp; | |
380 | int a_fflags; | |
381 | vfs_context_t a_context; | |
382 | }; | |
383 | extern errno_t VNOP_MMAP(vnode_t, int, vfs_context_t); | |
384 | ||
385 | /* | |
386 | *# | |
387 | *# mnomap - vp U U U | |
388 | *# | |
389 | */ | |
390 | struct vnop_mnomap_args { | |
391 | struct vnodeop_desc *a_desc; | |
392 | vnode_t a_vp; | |
393 | vfs_context_t a_context; | |
394 | }; | |
395 | extern errno_t VNOP_MNOMAP(vnode_t, vfs_context_t); | |
396 | ||
397 | ||
398 | /* | |
399 | *# | |
400 | *#% fsync vp L L L | |
401 | *# | |
402 | */ | |
403 | struct vnop_fsync_args { | |
404 | struct vnodeop_desc *a_desc; | |
405 | vnode_t a_vp; | |
406 | int a_waitfor; | |
407 | vfs_context_t a_context; | |
408 | }; | |
409 | extern errno_t VNOP_FSYNC(vnode_t, int, vfs_context_t); | |
410 | ||
411 | ||
412 | /* | |
413 | *# | |
414 | *#% remove dvp L U U | |
415 | *#% remove vp L U U | |
416 | *# | |
417 | */ | |
418 | struct vnop_remove_args { | |
419 | struct vnodeop_desc *a_desc; | |
420 | vnode_t a_dvp; | |
421 | vnode_t a_vp; | |
422 | struct componentname *a_cnp; | |
423 | int a_flags; | |
424 | vfs_context_t a_context; | |
425 | }; | |
426 | extern errno_t VNOP_REMOVE(vnode_t, vnode_t, struct componentname *, int, vfs_context_t); | |
427 | ||
428 | ||
429 | /* | |
430 | *# | |
431 | *#% link vp U U U | |
432 | *#% link tdvp L U U | |
433 | *# | |
434 | */ | |
435 | struct vnop_link_args { | |
436 | struct vnodeop_desc *a_desc; | |
437 | vnode_t a_vp; | |
438 | vnode_t a_tdvp; | |
439 | struct componentname *a_cnp; | |
440 | vfs_context_t a_context; | |
441 | }; | |
442 | extern errno_t VNOP_LINK(vnode_t, vnode_t, struct componentname *, vfs_context_t); | |
443 | ||
444 | ||
445 | /* | |
446 | *# | |
447 | *#% rename fdvp U U U | |
448 | *#% rename fvp U U U | |
449 | *#% rename tdvp L U U | |
450 | *#% rename tvp X U U | |
451 | *# | |
452 | */ | |
453 | struct vnop_rename_args { | |
454 | struct vnodeop_desc *a_desc; | |
455 | vnode_t a_fdvp; | |
456 | vnode_t a_fvp; | |
457 | struct componentname *a_fcnp; | |
458 | vnode_t a_tdvp; | |
459 | vnode_t a_tvp; | |
460 | struct componentname *a_tcnp; | |
461 | vfs_context_t a_context; | |
462 | }; | |
463 | extern errno_t VNOP_RENAME(vnode_t, vnode_t, struct componentname *, vnode_t, vnode_t, struct componentname *, vfs_context_t); | |
464 | ||
465 | ||
466 | /* | |
467 | *# | |
468 | *#% mkdir dvp L U U | |
469 | *#% mkdir vpp - L - | |
470 | *# | |
471 | */ | |
472 | struct vnop_mkdir_args { | |
473 | struct vnodeop_desc *a_desc; | |
474 | vnode_t a_dvp; | |
475 | vnode_t *a_vpp; | |
476 | struct componentname *a_cnp; | |
477 | struct vnode_attr *a_vap; | |
478 | vfs_context_t a_context; | |
479 | }; | |
480 | extern errno_t VNOP_MKDIR(vnode_t, vnode_t *, struct componentname *, struct vnode_attr *, vfs_context_t); | |
481 | ||
482 | ||
483 | /* | |
484 | *# | |
485 | *#% rmdir dvp L U U | |
486 | *#% rmdir vp L U U | |
487 | *# | |
488 | */ | |
489 | struct vnop_rmdir_args { | |
490 | struct vnodeop_desc *a_desc; | |
491 | vnode_t a_dvp; | |
492 | vnode_t a_vp; | |
493 | struct componentname *a_cnp; | |
494 | vfs_context_t a_context; | |
495 | }; | |
496 | extern errno_t VNOP_RMDIR(vnode_t, vnode_t, struct componentname *, vfs_context_t); | |
497 | ||
498 | ||
499 | /* | |
500 | *# | |
501 | *#% symlink dvp L U U | |
502 | *#% symlink vpp - U - | |
503 | *# | |
504 | */ | |
505 | struct vnop_symlink_args { | |
506 | struct vnodeop_desc *a_desc; | |
507 | vnode_t a_dvp; | |
508 | vnode_t *a_vpp; | |
509 | struct componentname *a_cnp; | |
510 | struct vnode_attr *a_vap; | |
511 | char *a_target; | |
512 | vfs_context_t a_context; | |
513 | }; | |
514 | extern errno_t VNOP_SYMLINK(vnode_t, vnode_t *, struct componentname *, struct vnode_attr *, char *, vfs_context_t); | |
515 | ||
516 | ||
517 | /* | |
518 | *# | |
519 | *#% readdir vp L L L | |
520 | *# | |
521 | * | |
522 | * When VNOP_READDIR is called from the NFS Server, the nfs_data | |
523 | * argument is non-NULL. | |
524 | * | |
525 | * The value of nfs_eofflag should be set to TRUE if the end of | |
526 | * the directory was reached while reading. | |
527 | * | |
528 | * The directory seek offset (cookies) are returned to the NFS client and | |
529 | * may be used later to restart a directory read part way through | |
530 | * the directory. There is one cookie returned for each directory | |
531 | * entry returned and its size is determince from nfs_sizeofcookie. | |
532 | * The value of the cookie should be the logical offset within the | |
533 | * directory where the on-disc version of the appropriate directory | |
534 | * entry starts. Memory for the cookies is allocated from M_TEMP | |
535 | * and it is freed by the caller of VNOP_READDIR. | |
536 | * | |
537 | */ | |
538 | ||
539 | struct vnop_readdir_args { | |
540 | struct vnodeop_desc *a_desc; | |
541 | vnode_t a_vp; | |
542 | struct uio *a_uio; | |
543 | int a_flags; | |
544 | int *a_eofflag; | |
545 | int *a_numdirent; | |
546 | vfs_context_t a_context; | |
547 | }; | |
548 | extern errno_t VNOP_READDIR(vnode_t, struct uio *, int, int *, int *, vfs_context_t); | |
549 | ||
550 | ||
551 | /* | |
552 | *# | |
553 | *#% readdirattr vp L L L | |
554 | *# | |
555 | */ | |
556 | struct vnop_readdirattr_args { | |
557 | struct vnodeop_desc *a_desc; | |
558 | vnode_t a_vp; | |
559 | struct attrlist *a_alist; | |
560 | struct uio *a_uio; | |
561 | u_long a_maxcount; | |
562 | u_long a_options; | |
563 | u_long *a_newstate; | |
564 | int *a_eofflag; | |
565 | u_long *a_actualcount; | |
566 | vfs_context_t a_context; | |
567 | }; | |
568 | extern errno_t VNOP_READDIRATTR(vnode_t, struct attrlist *, struct uio *, u_long, u_long, u_long *, int *, u_long *, vfs_context_t); | |
569 | ||
570 | ||
571 | /* | |
572 | *# | |
573 | *#% readlink vp L L L | |
574 | *# | |
575 | */ | |
576 | struct vnop_readlink_args { | |
577 | struct vnodeop_desc *a_desc; | |
578 | vnode_t a_vp; | |
579 | struct uio *a_uio; | |
580 | vfs_context_t a_context; | |
581 | }; | |
582 | extern errno_t VNOP_READLINK(vnode_t, struct uio *, vfs_context_t); | |
583 | ||
584 | ||
585 | /* | |
586 | *# | |
587 | *#% inactive vp L U U | |
588 | *# | |
589 | */ | |
590 | struct vnop_inactive_args { | |
591 | struct vnodeop_desc *a_desc; | |
592 | vnode_t a_vp; | |
593 | vfs_context_t a_context; | |
594 | }; | |
595 | extern errno_t VNOP_INACTIVE(vnode_t, vfs_context_t); | |
596 | ||
597 | ||
598 | /* | |
599 | *# | |
600 | *#% reclaim vp U U U | |
601 | *# | |
602 | */ | |
603 | struct vnop_reclaim_args { | |
604 | struct vnodeop_desc *a_desc; | |
605 | vnode_t a_vp; | |
606 | vfs_context_t a_context; | |
607 | }; | |
608 | extern errno_t VNOP_RECLAIM(vnode_t, vfs_context_t); | |
609 | ||
610 | ||
611 | /* | |
612 | *# | |
613 | *#% pathconf vp L L L | |
614 | *# | |
615 | */ | |
616 | struct vnop_pathconf_args { | |
617 | struct vnodeop_desc *a_desc; | |
618 | vnode_t a_vp; | |
619 | int a_name; | |
620 | register_t *a_retval; | |
621 | vfs_context_t a_context; | |
622 | }; | |
623 | extern errno_t VNOP_PATHCONF(vnode_t, int, register_t *, vfs_context_t); /* register_t??????? */ | |
624 | ||
625 | ||
626 | /* | |
627 | *# | |
628 | *#% advlock vp U U U | |
629 | *# | |
630 | */ | |
631 | struct vnop_advlock_args { | |
632 | struct vnodeop_desc *a_desc; | |
633 | vnode_t a_vp; | |
634 | caddr_t a_id; | |
635 | int a_op; | |
636 | struct flock *a_fl; | |
637 | int a_flags; | |
638 | vfs_context_t a_context; | |
639 | }; | |
640 | extern errno_t VNOP_ADVLOCK(vnode_t, caddr_t, int, struct flock *, int, vfs_context_t); | |
641 | ||
642 | /* | |
643 | *# | |
644 | *#% allocate vp L L L | |
645 | *# | |
646 | */ | |
647 | struct vnop_allocate_args { | |
648 | struct vnodeop_desc *a_desc; | |
649 | vnode_t a_vp; | |
650 | off_t a_length; | |
651 | u_int32_t a_flags; | |
652 | off_t *a_bytesallocated; | |
653 | off_t a_offset; | |
654 | vfs_context_t a_context; | |
655 | }; | |
656 | extern errno_t VNOP_ALLOCATE(vnode_t, off_t, u_int32_t, off_t *, off_t, vfs_context_t); | |
657 | ||
658 | /* | |
659 | *# | |
660 | *#% pagein vp = = = | |
661 | *# | |
662 | */ | |
663 | struct vnop_pagein_args { | |
664 | struct vnodeop_desc *a_desc; | |
665 | vnode_t a_vp; | |
666 | upl_t a_pl; | |
667 | vm_offset_t a_pl_offset; | |
668 | off_t a_f_offset; | |
669 | size_t a_size; | |
670 | int a_flags; | |
671 | vfs_context_t a_context; | |
672 | }; | |
673 | extern errno_t VNOP_PAGEIN(vnode_t, upl_t, vm_offset_t, off_t, size_t, int, vfs_context_t); /* vm_offset_t ? */ | |
674 | ||
675 | ||
676 | /* | |
677 | *# | |
678 | *#% pageout vp = = = | |
679 | *# | |
680 | */ | |
681 | struct vnop_pageout_args { | |
682 | struct vnodeop_desc *a_desc; | |
683 | vnode_t a_vp; | |
684 | upl_t a_pl; | |
685 | vm_offset_t a_pl_offset; | |
686 | off_t a_f_offset; | |
687 | size_t a_size; | |
688 | int a_flags; | |
689 | vfs_context_t a_context; | |
690 | }; | |
691 | extern errno_t VNOP_PAGEOUT(vnode_t, upl_t, vm_offset_t, off_t, size_t, int, vfs_context_t); | |
692 | ||
693 | ||
694 | /* | |
695 | *# | |
696 | *#% searchfs vp L L L | |
697 | *# | |
698 | */ | |
699 | struct vnop_searchfs_args { | |
700 | struct vnodeop_desc *a_desc; | |
701 | vnode_t a_vp; | |
702 | void *a_searchparams1; | |
703 | void *a_searchparams2; | |
704 | struct attrlist *a_searchattrs; | |
705 | u_long a_maxmatches; | |
706 | struct timeval *a_timelimit; | |
707 | struct attrlist *a_returnattrs; | |
708 | u_long *a_nummatches; | |
709 | u_long a_scriptcode; | |
710 | u_long a_options; | |
711 | struct uio *a_uio; | |
712 | struct searchstate *a_searchstate; | |
713 | vfs_context_t a_context; | |
714 | }; | |
715 | extern errno_t VNOP_SEARCHFS(vnode_t, void *, void *, struct attrlist *, u_long, struct timeval *, struct attrlist *, u_long *, u_long, u_long, struct uio *, struct searchstate *, vfs_context_t); | |
716 | ||
717 | ||
718 | /* | |
719 | *# | |
720 | *#% copyfile fvp U U U | |
721 | *#% copyfile tdvp L U U | |
722 | *#% copyfile tvp X U U | |
723 | *# | |
724 | */ | |
725 | struct vnop_copyfile_args { | |
726 | struct vnodeop_desc *a_desc; | |
727 | vnode_t a_fvp; | |
728 | vnode_t a_tdvp; | |
729 | vnode_t a_tvp; | |
730 | struct componentname *a_tcnp; | |
731 | int a_mode; | |
732 | int a_flags; | |
733 | vfs_context_t a_context; | |
734 | }; | |
735 | extern errno_t VNOP_COPYFILE(vnode_t, vnode_t, vnode_t, struct componentname *, int, int, vfs_context_t); | |
736 | ||
737 | ||
738 | struct vnop_getxattr_args { | |
739 | struct vnodeop_desc *a_desc; | |
740 | vnode_t a_vp; | |
741 | const char * a_name; | |
742 | uio_t a_uio; | |
743 | size_t *a_size; | |
744 | int a_options; | |
745 | vfs_context_t a_context; | |
746 | }; | |
747 | extern struct vnodeop_desc vnop_getxattr_desc; | |
748 | extern errno_t VNOP_GETXATTR(vnode_t, const char *, uio_t, size_t *, int, vfs_context_t); | |
749 | ||
750 | struct vnop_setxattr_args { | |
751 | struct vnodeop_desc *a_desc; | |
752 | vnode_t a_vp; | |
753 | const char * a_name; | |
754 | uio_t a_uio; | |
755 | int a_options; | |
756 | vfs_context_t a_context; | |
757 | }; | |
758 | extern struct vnodeop_desc vnop_setxattr_desc; | |
759 | extern errno_t VNOP_SETXATTR(vnode_t, const char *, uio_t, int, vfs_context_t); | |
760 | ||
761 | struct vnop_removexattr_args { | |
762 | struct vnodeop_desc *a_desc; | |
763 | vnode_t a_vp; | |
764 | const char * a_name; | |
765 | int a_options; | |
766 | vfs_context_t a_context; | |
767 | }; | |
768 | extern struct vnodeop_desc vnop_removexattr_desc; | |
769 | extern errno_t VNOP_REMOVEXATTR(vnode_t, const char *, int, vfs_context_t); | |
770 | ||
771 | struct vnop_listxattr_args { | |
772 | struct vnodeop_desc *a_desc; | |
773 | vnode_t a_vp; | |
774 | uio_t a_uio; | |
775 | size_t *a_size; | |
776 | int a_options; | |
777 | vfs_context_t a_context; | |
778 | }; | |
779 | extern struct vnodeop_desc vnop_listxattr_desc; | |
780 | extern errno_t VNOP_LISTXATTR(vnode_t, uio_t, size_t *, int, vfs_context_t); | |
781 | ||
782 | ||
783 | /* | |
784 | *# | |
785 | *#% blktooff vp = = = | |
786 | *# | |
787 | */ | |
788 | struct vnop_blktooff_args { | |
789 | struct vnodeop_desc *a_desc; | |
790 | vnode_t a_vp; | |
791 | daddr64_t a_lblkno; | |
792 | off_t *a_offset; | |
793 | }; | |
794 | extern errno_t VNOP_BLKTOOFF(vnode_t, daddr64_t, off_t *); | |
795 | ||
796 | ||
797 | /* | |
798 | *# | |
799 | *#% offtoblk vp = = = | |
800 | *# | |
801 | */ | |
802 | struct vnop_offtoblk_args { | |
803 | struct vnodeop_desc *a_desc; | |
804 | vnode_t a_vp; | |
805 | off_t a_offset; | |
806 | daddr64_t *a_lblkno; | |
807 | }; | |
808 | extern errno_t VNOP_OFFTOBLK(vnode_t, off_t, daddr64_t *); | |
809 | ||
810 | ||
811 | /* | |
812 | *# | |
813 | *#% blockmap vp L L L | |
814 | *# | |
815 | */ | |
816 | struct vnop_blockmap_args { | |
817 | struct vnodeop_desc *a_desc; | |
818 | vnode_t a_vp; | |
819 | off_t a_foffset; | |
820 | size_t a_size; | |
821 | daddr64_t *a_bpn; | |
822 | size_t *a_run; | |
823 | void *a_poff; | |
824 | int a_flags; | |
825 | vfs_context_t a_context; | |
826 | }; | |
827 | extern errno_t VNOP_BLOCKMAP(vnode_t, off_t, size_t, daddr64_t *, size_t *, void *, | |
828 | int, vfs_context_t); | |
829 | ||
830 | struct vnop_strategy_args { | |
831 | struct vnodeop_desc *a_desc; | |
832 | struct buf *a_bp; | |
833 | }; | |
834 | extern errno_t VNOP_STRATEGY(struct buf *bp); | |
835 | ||
836 | struct vnop_bwrite_args { | |
837 | struct vnodeop_desc *a_desc; | |
838 | buf_t a_bp; | |
839 | }; | |
840 | extern errno_t VNOP_BWRITE(buf_t); | |
841 | ||
842 | ||
843 | struct vnop_kqfilt_add_args { | |
844 | struct vnodeop_desc *a_desc; | |
845 | struct vnode *a_vp; | |
846 | struct knote *a_kn; | |
847 | vfs_context_t a_context; | |
848 | }; | |
849 | extern struct vnodeop_desc vnop_kqfilt_add_desc; | |
850 | extern errno_t VNOP_KQFILT_ADD(vnode_t , struct knote *, vfs_context_t); | |
851 | ||
852 | struct vnop_kqfilt_remove_args { | |
853 | struct vnodeop_desc *a_desc; | |
854 | struct vnode *a_vp; | |
855 | uintptr_t a_ident; | |
856 | vfs_context_t a_context; | |
857 | }; | |
858 | extern struct vnodeop_desc vnop_kqfilt_remove_desc; | |
859 | errno_t VNOP_KQFILT_REMOVE(vnode_t , uintptr_t , vfs_context_t); | |
860 | ||
861 | struct label; | |
862 | struct vnop_setlabel_args { | |
863 | struct vnodeop_desc *a_desc; | |
864 | struct vnode *a_vp; | |
865 | struct label *a_vl; | |
866 | vfs_context_t a_context; | |
867 | }; | |
868 | extern struct vnodeop_desc vnop_setlabel_desc; | |
869 | errno_t VNOP_SETLABEL(vnode_t, struct label *, vfs_context_t); | |
870 | ||
871 | #ifdef __APPLE_API_UNSTABLE | |
872 | ||
873 | #if NAMEDSTREAMS | |
874 | ||
875 | enum nsoperation { NS_OPEN, NS_CREATE, NS_DELETE }; | |
876 | ||
877 | struct vnop_getnamedstream_args { | |
878 | struct vnodeop_desc *a_desc; | |
879 | vnode_t a_vp; | |
880 | vnode_t *a_svpp; | |
881 | const char *a_name; | |
882 | enum nsoperation a_operation; | |
883 | int a_flags; | |
884 | vfs_context_t a_context; | |
885 | }; | |
886 | extern errno_t VNOP_GETNAMEDSTREAM(vnode_t, vnode_t *, const char *, enum nsoperation, int flags, vfs_context_t); | |
887 | ||
888 | struct vnop_makenamedstream_args { | |
889 | struct vnodeop_desc *a_desc; | |
890 | vnode_t *a_svpp; | |
891 | vnode_t a_vp; | |
892 | const char *a_name; | |
893 | int a_flags; | |
894 | vfs_context_t a_context; | |
895 | }; | |
896 | extern errno_t VNOP_MAKENAMEDSTREAM(vnode_t, vnode_t *, const char *, int flags, vfs_context_t); | |
897 | ||
898 | struct vnop_removenamedstream_args { | |
899 | struct vnodeop_desc *a_desc; | |
900 | vnode_t a_vp; | |
901 | vnode_t a_svp; | |
902 | const char *a_name; | |
903 | int a_flags; | |
904 | vfs_context_t a_context; | |
905 | }; | |
906 | extern errno_t VNOP_REMOVENAMEDSTREAM(vnode_t, vnode_t, const char *, int flags, vfs_context_t); | |
907 | #endif | |
908 | ||
909 | #endif | |
910 | ||
911 | __END_DECLS | |
912 | ||
913 | #endif /* KERNEL */ | |
914 | ||
915 | #endif /* !_SYS_VNODE_IF_H_ */ |