4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
21 /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
22 /* All Rights Reserved */
25 * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
26 * Use is subject to license terms.
29 #ifndef _SYS_FS_SUBR_H
30 #define _SYS_FS_SUBR_H
32 #pragma ident "%Z%%M% %I% %E% SMI"
34 #include <sys/types.h>
36 #include <sys/fcntl.h>
39 #include <sys/vnode.h>
42 #include <sys/share.h>
43 #include <sys/flock.h>
50 * Utilities shared among file system implementations.
55 extern int fs_nosys();
56 extern int fs_inval();
57 extern int fs_notdir();
58 extern int fs_nosys_map(struct vnode
*, offset_t
, struct as
*, caddr_t
*,
59 size_t, uchar_t
, uchar_t
, uint_t
, struct cred
*,
61 extern int fs_nosys_addmap(struct vnode
*, offset_t
, struct as
*, caddr_t
,
62 size_t, uchar_t
, uchar_t
, uint_t
, struct cred
*,
64 extern int fs_nosys_poll(struct vnode
*, short, int, short *,
65 struct pollhead
**, caller_context_t
*);
66 extern int fs_ioctl(vnode_t
*, int, intptr_t, int, cred_t
*, int *);
67 extern int fs_putpage(vnode_t
*, offset_t
, size_t, int, cred_t
*,
69 extern int fs_fsync(vnode_t
*, int, cred_t
*, caller_context_t
*);
70 extern int fs_sync(struct vfs
*, short, cred_t
*);
71 extern int fs_rwlock(vnode_t
*, int, caller_context_t
*);
72 extern void fs_rwunlock(vnode_t
*, int, caller_context_t
*);
73 extern int fs_cmp(vnode_t
*, vnode_t
*, caller_context_t
*);
74 extern int fs_seek(vnode_t
*, offset_t
, offset_t
*, caller_context_t
*);
75 extern int fs_frlock(vnode_t
*, int, struct flock64
*, int, offset_t
,
76 struct flk_callback
*, cred_t
*, caller_context_t
*);
77 extern int fs_setfl(vnode_t
*, int, int, cred_t
*, caller_context_t
*);
78 extern int fs_poll(vnode_t
*, short, int, short *, struct pollhead
**,
80 extern int fs_pathconf(struct vnode
*, int, ulong_t
*, struct cred
*,
82 extern void clkset(time_t);
83 extern void fs_dispose(struct vnode
*, page_t
*, int, int, struct cred
*,
85 extern void fs_nodispose(struct vnode
*, page_t
*, int, int, struct cred
*,
87 extern int fs_fab_acl(struct vnode
*, vsecattr_t
*, int flag
, cred_t
*,
89 extern int fs_shrlock(struct vnode
*, int, struct shrlock
*, int,
90 cred_t
*, caller_context_t
*);
91 extern int fs_vnevent_nosupport(vnode_t
*, vnevent_t
, vnode_t
*dvp
,
92 char *fnm
, caller_context_t
*);
93 extern int fs_vnevent_support(vnode_t
*, vnevent_t
, vnode_t
*dvp
,
94 char *fnm
, caller_context_t
*);
95 extern int fs_acl_nontrivial(struct vnode
*vp
, struct cred
*cr
);
96 extern int fs_need_estale_retry(int);
97 extern void fs_vscan_register(int (*av_scan
)(vnode_t
*, cred_t
*, int));
98 extern int fs_vscan(vnode_t
*, cred_t
*, int);
106 #endif /* _SYS_FS_SUBR_H */