]>
Commit | Line | Data |
---|---|---|
1c79356b A |
1 | |
2 | /* | |
5d5c5d0d A |
3 | * Copyright (c) 2000-2002 Apple Computer, Inc. All rights reserved. |
4 | * | |
2d21ac55 | 5 | * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ |
1c79356b | 6 | * |
2d21ac55 A |
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. | |
8f6c56a5 | 15 | * |
2d21ac55 A |
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 | |
8f6c56a5 A |
21 | * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, |
22 | * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, | |
2d21ac55 A |
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. | |
8f6c56a5 | 26 | * |
2d21ac55 | 27 | * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ |
1c79356b A |
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 | */ | |
2d21ac55 A |
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 | */ | |
1c79356b A |
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 | ||
9bccf70c A |
78 | #ifndef _SYS_VNODE_IF_H_ |
79 | #define _SYS_VNODE_IF_H_ | |
1c79356b | 80 | |
9bccf70c | 81 | #include <sys/appleapiopts.h> |
91447636 A |
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; | |
91447636 A |
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; | |
91447636 A |
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 | ||
2d21ac55 A |
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 | ||
91447636 A |
148 | __BEGIN_DECLS |
149 | /* | |
150 | *# | |
151 | *#% lookup dvp L ? ? | |
152 | *#% lookup vpp - L - | |
153 | */ | |
154 | struct vnop_lookup_args { | |
1c79356b | 155 | struct vnodeop_desc *a_desc; |
91447636 A |
156 | vnode_t a_dvp; |
157 | vnode_t *a_vpp; | |
1c79356b | 158 | struct componentname *a_cnp; |
91447636 | 159 | vfs_context_t a_context; |
1c79356b | 160 | }; |
91447636 A |
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 { | |
1c79356b | 172 | struct vnodeop_desc *a_desc; |
91447636 A |
173 | vnode_t a_dvp; |
174 | vnode_t *a_vpp; | |
1c79356b | 175 | struct componentname *a_cnp; |
91447636 A |
176 | struct vnode_attr *a_vap; |
177 | vfs_context_t a_context; | |
1c79356b | 178 | }; |
91447636 A |
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 { | |
1c79356b | 189 | struct vnodeop_desc *a_desc; |
91447636 | 190 | vnode_t a_dvp; |
1c79356b A |
191 | struct componentname *a_cnp; |
192 | int a_flags; | |
91447636 | 193 | vfs_context_t a_context; |
1c79356b | 194 | }; |
91447636 A |
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; | |
1c79356b | 210 | }; |
91447636 A |
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 { | |
1c79356b | 219 | struct vnodeop_desc *a_desc; |
91447636 | 220 | vnode_t a_vp; |
1c79356b | 221 | int a_mode; |
91447636 | 222 | vfs_context_t a_context; |
1c79356b | 223 | }; |
91447636 A |
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 { | |
1c79356b | 232 | struct vnodeop_desc *a_desc; |
91447636 | 233 | vnode_t a_vp; |
1c79356b | 234 | int a_fflag; |
91447636 | 235 | vfs_context_t a_context; |
1c79356b | 236 | }; |
91447636 A |
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 { | |
1c79356b | 245 | struct vnodeop_desc *a_desc; |
91447636 A |
246 | vnode_t a_vp; |
247 | int a_action; | |
248 | vfs_context_t a_context; | |
1c79356b | 249 | }; |
91447636 A |
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 { | |
1c79356b | 259 | struct vnodeop_desc *a_desc; |
91447636 A |
260 | vnode_t a_vp; |
261 | struct vnode_attr *a_vap; | |
262 | vfs_context_t a_context; | |
1c79356b | 263 | }; |
91447636 A |
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 { | |
1c79356b | 272 | struct vnodeop_desc *a_desc; |
91447636 A |
273 | vnode_t a_vp; |
274 | struct vnode_attr *a_vap; | |
275 | vfs_context_t a_context; | |
1c79356b | 276 | }; |
91447636 A |
277 | extern errno_t VNOP_SETATTR(vnode_t, struct vnode_attr *, vfs_context_t); |
278 | ||
91447636 A |
279 | |
280 | /* | |
281 | *# | |
282 | *#% read vp L L L | |
283 | *# | |
284 | */ | |
285 | struct vnop_read_args { | |
1c79356b | 286 | struct vnodeop_desc *a_desc; |
91447636 | 287 | vnode_t a_vp; |
1c79356b A |
288 | struct uio *a_uio; |
289 | int a_ioflag; | |
91447636 | 290 | vfs_context_t a_context; |
1c79356b | 291 | }; |
91447636 A |
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 { | |
1c79356b | 301 | struct vnodeop_desc *a_desc; |
91447636 | 302 | vnode_t a_vp; |
1c79356b A |
303 | struct uio *a_uio; |
304 | int a_ioflag; | |
91447636 | 305 | vfs_context_t a_context; |
1c79356b | 306 | }; |
91447636 A |
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 { | |
1c79356b | 316 | struct vnodeop_desc *a_desc; |
91447636 | 317 | vnode_t a_vp; |
1c79356b A |
318 | u_long a_command; |
319 | caddr_t a_data; | |
320 | int a_fflag; | |
91447636 | 321 | vfs_context_t a_context; |
1c79356b | 322 | }; |
91447636 A |
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 { | |
1c79356b | 332 | struct vnodeop_desc *a_desc; |
91447636 | 333 | vnode_t a_vp; |
1c79356b A |
334 | int a_which; |
335 | int a_fflags; | |
9bccf70c | 336 | void *a_wql; |
91447636 | 337 | vfs_context_t a_context; |
55e303ae | 338 | }; |
91447636 A |
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 { | |
55e303ae | 349 | struct vnodeop_desc *a_desc; |
91447636 A |
350 | vnode_t a_fvp; |
351 | vnode_t a_tvp; | |
352 | int a_options; | |
353 | vfs_context_t a_context; | |
55e303ae | 354 | }; |
91447636 A |
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 { | |
1c79356b | 364 | struct vnodeop_desc *a_desc; |
91447636 | 365 | vnode_t a_vp; |
1c79356b | 366 | int a_flags; |
91447636 | 367 | vfs_context_t a_context; |
1c79356b | 368 | }; |
91447636 A |
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 { | |
1c79356b | 378 | struct vnodeop_desc *a_desc; |
91447636 | 379 | vnode_t a_vp; |
1c79356b | 380 | int a_fflags; |
91447636 | 381 | vfs_context_t a_context; |
1c79356b | 382 | }; |
91447636 A |
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 { | |
1c79356b | 391 | struct vnodeop_desc *a_desc; |
91447636 A |
392 | vnode_t a_vp; |
393 | vfs_context_t a_context; | |
1c79356b | 394 | }; |
91447636 A |
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 { | |
1c79356b | 404 | struct vnodeop_desc *a_desc; |
91447636 A |
405 | vnode_t a_vp; |
406 | int a_waitfor; | |
407 | vfs_context_t a_context; | |
1c79356b | 408 | }; |
91447636 A |
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 { | |
1c79356b | 419 | struct vnodeop_desc *a_desc; |
91447636 A |
420 | vnode_t a_dvp; |
421 | vnode_t a_vp; | |
1c79356b | 422 | struct componentname *a_cnp; |
91447636 A |
423 | int a_flags; |
424 | vfs_context_t a_context; | |
1c79356b | 425 | }; |
91447636 A |
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 { | |
1c79356b | 436 | struct vnodeop_desc *a_desc; |
91447636 A |
437 | vnode_t a_vp; |
438 | vnode_t a_tdvp; | |
1c79356b | 439 | struct componentname *a_cnp; |
91447636 | 440 | vfs_context_t a_context; |
1c79356b | 441 | }; |
91447636 A |
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 { | |
1c79356b | 454 | struct vnodeop_desc *a_desc; |
91447636 A |
455 | vnode_t a_fdvp; |
456 | vnode_t a_fvp; | |
1c79356b | 457 | struct componentname *a_fcnp; |
91447636 A |
458 | vnode_t a_tdvp; |
459 | vnode_t a_tvp; | |
1c79356b | 460 | struct componentname *a_tcnp; |
91447636 | 461 | vfs_context_t a_context; |
1c79356b | 462 | }; |
91447636 A |
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 { | |
1c79356b | 473 | struct vnodeop_desc *a_desc; |
91447636 A |
474 | vnode_t a_dvp; |
475 | vnode_t *a_vpp; | |
1c79356b | 476 | struct componentname *a_cnp; |
91447636 A |
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 { | |
1c79356b | 490 | struct vnodeop_desc *a_desc; |
91447636 A |
491 | vnode_t a_dvp; |
492 | vnode_t a_vp; | |
1c79356b | 493 | struct componentname *a_cnp; |
91447636 | 494 | vfs_context_t a_context; |
1c79356b | 495 | }; |
91447636 A |
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; | |
1c79356b | 513 | }; |
91447636 A |
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 { | |
1c79356b | 540 | struct vnodeop_desc *a_desc; |
91447636 | 541 | vnode_t a_vp; |
1c79356b | 542 | struct uio *a_uio; |
91447636 | 543 | int a_flags; |
1c79356b | 544 | int *a_eofflag; |
91447636 A |
545 | int *a_numdirent; |
546 | vfs_context_t a_context; | |
1c79356b | 547 | }; |
91447636 A |
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 { | |
1c79356b | 557 | struct vnodeop_desc *a_desc; |
91447636 | 558 | vnode_t a_vp; |
1c79356b A |
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; | |
91447636 | 566 | vfs_context_t a_context; |
1c79356b | 567 | }; |
91447636 A |
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 { | |
1c79356b | 577 | struct vnodeop_desc *a_desc; |
91447636 | 578 | vnode_t a_vp; |
1c79356b | 579 | struct uio *a_uio; |
91447636 | 580 | vfs_context_t a_context; |
1c79356b | 581 | }; |
91447636 A |
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 { | |
1c79356b | 591 | struct vnodeop_desc *a_desc; |
91447636 A |
592 | vnode_t a_vp; |
593 | vfs_context_t a_context; | |
1c79356b | 594 | }; |
91447636 A |
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 { | |
1c79356b | 604 | struct vnodeop_desc *a_desc; |
91447636 A |
605 | vnode_t a_vp; |
606 | vfs_context_t a_context; | |
1c79356b | 607 | }; |
91447636 A |
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 { | |
1c79356b | 617 | struct vnodeop_desc *a_desc; |
91447636 | 618 | vnode_t a_vp; |
1c79356b A |
619 | int a_name; |
620 | register_t *a_retval; | |
91447636 | 621 | vfs_context_t a_context; |
1c79356b | 622 | }; |
91447636 A |
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 { | |
1c79356b | 632 | struct vnodeop_desc *a_desc; |
91447636 | 633 | vnode_t a_vp; |
1c79356b A |
634 | caddr_t a_id; |
635 | int a_op; | |
636 | struct flock *a_fl; | |
637 | int a_flags; | |
91447636 | 638 | vfs_context_t a_context; |
1c79356b | 639 | }; |
91447636 A |
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 { | |
1c79356b | 648 | struct vnodeop_desc *a_desc; |
91447636 | 649 | vnode_t a_vp; |
1c79356b A |
650 | off_t a_length; |
651 | u_int32_t a_flags; | |
652 | off_t *a_bytesallocated; | |
0b4e3aa0 | 653 | off_t a_offset; |
91447636 | 654 | vfs_context_t a_context; |
1c79356b | 655 | }; |
91447636 A |
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 { | |
1c79356b | 664 | struct vnodeop_desc *a_desc; |
91447636 | 665 | vnode_t a_vp; |
1c79356b A |
666 | upl_t a_pl; |
667 | vm_offset_t a_pl_offset; | |
668 | off_t a_f_offset; | |
669 | size_t a_size; | |
1c79356b | 670 | int a_flags; |
91447636 | 671 | vfs_context_t a_context; |
1c79356b | 672 | }; |
91447636 A |
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 { | |
1c79356b | 682 | struct vnodeop_desc *a_desc; |
91447636 | 683 | vnode_t a_vp; |
1c79356b A |
684 | upl_t a_pl; |
685 | vm_offset_t a_pl_offset; | |
686 | off_t a_f_offset; | |
687 | size_t a_size; | |
1c79356b | 688 | int a_flags; |
91447636 | 689 | vfs_context_t a_context; |
1c79356b | 690 | }; |
91447636 A |
691 | extern errno_t VNOP_PAGEOUT(vnode_t, upl_t, vm_offset_t, off_t, size_t, int, vfs_context_t); |
692 | ||
693 | ||
91447636 A |
694 | /* |
695 | *# | |
696 | *#% searchfs vp L L L | |
697 | *# | |
698 | */ | |
699 | struct vnop_searchfs_args { | |
1c79356b | 700 | struct vnodeop_desc *a_desc; |
91447636 | 701 | vnode_t a_vp; |
1c79356b A |
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; | |
91447636 | 713 | vfs_context_t a_context; |
1c79356b | 714 | }; |
91447636 A |
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 { | |
1c79356b | 726 | struct vnodeop_desc *a_desc; |
91447636 A |
727 | vnode_t a_fvp; |
728 | vnode_t a_tdvp; | |
729 | vnode_t a_tvp; | |
1c79356b A |
730 | struct componentname *a_tcnp; |
731 | int a_mode; | |
732 | int a_flags; | |
91447636 | 733 | vfs_context_t a_context; |
1c79356b | 734 | }; |
91447636 A |
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 { | |
1c79356b | 739 | struct vnodeop_desc *a_desc; |
91447636 | 740 | vnode_t a_vp; |
2d21ac55 | 741 | const char * a_name; |
91447636 A |
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; | |
2d21ac55 | 753 | const char * a_name; |
91447636 A |
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; | |
2d21ac55 | 764 | const char * a_name; |
91447636 A |
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; | |
1c79356b A |
792 | off_t *a_offset; |
793 | }; | |
91447636 A |
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 { | |
1c79356b | 803 | struct vnodeop_desc *a_desc; |
91447636 | 804 | vnode_t a_vp; |
1c79356b | 805 | off_t a_offset; |
91447636 | 806 | daddr64_t *a_lblkno; |
1c79356b | 807 | }; |
91447636 A |
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 { | |
1c79356b | 817 | struct vnodeop_desc *a_desc; |
91447636 | 818 | vnode_t a_vp; |
1c79356b A |
819 | off_t a_foffset; |
820 | size_t a_size; | |
91447636 | 821 | daddr64_t *a_bpn; |
1c79356b A |
822 | size_t *a_run; |
823 | void *a_poff; | |
91447636 A |
824 | int a_flags; |
825 | vfs_context_t a_context; | |
1c79356b | 826 | }; |
91447636 A |
827 | extern errno_t VNOP_BLOCKMAP(vnode_t, off_t, size_t, daddr64_t *, size_t *, void *, |
828 | int, vfs_context_t); | |
1c79356b | 829 | |
91447636 | 830 | struct vnop_strategy_args { |
1c79356b A |
831 | struct vnodeop_desc *a_desc; |
832 | struct buf *a_bp; | |
833 | }; | |
91447636 A |
834 | extern errno_t VNOP_STRATEGY(struct buf *bp); |
835 | ||
836 | struct vnop_bwrite_args { | |
1c79356b | 837 | struct vnodeop_desc *a_desc; |
91447636 | 838 | buf_t a_bp; |
1c79356b | 839 | }; |
91447636 A |
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 | ||
2d21ac55 A |
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 | ||
91447636 A |
911 | __END_DECLS |
912 | ||
913 | #endif /* KERNEL */ | |
914 | ||
9bccf70c | 915 | #endif /* !_SYS_VNODE_IF_H_ */ |