ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.6.tar.bz2
[linux-2.6.git] / fs / devpts / xattr.h
1 /*
2   File: fs/devpts/xattr.h
3  
4   Derived from fs/ext3/xattr.h, changed in the following ways:
5       drop everything related to persistent storage of EAs
6       pass dentry rather than inode to internal methods
7       only presently define a handler for security modules
8 */
9
10 #include <linux/config.h>
11 #include <linux/xattr.h>
12
13 /* Name indexes */
14 #define DEVPTS_XATTR_INDEX_MAX                  10
15 #define DEVPTS_XATTR_INDEX_SECURITY             1
16
17 # ifdef CONFIG_DEVPTS_FS_XATTR
18
19 struct devpts_xattr_handler {
20         char *prefix;
21         size_t (*list)(struct dentry *dentry, char *buffer);
22         int (*get)(struct dentry *dentry, const char *name, void *buffer,
23                    size_t size);
24         int (*set)(struct dentry *dentry, const char *name, const void *buffer,
25                    size_t size, int flags);
26 };
27
28 extern int devpts_xattr_register(int, struct devpts_xattr_handler *);
29 extern void devpts_xattr_unregister(int, struct devpts_xattr_handler *);
30
31 extern int devpts_setxattr(struct dentry *, const char *, const void *, size_t, int);
32 extern ssize_t devpts_getxattr(struct dentry *, const char *, void *, size_t);
33 extern ssize_t devpts_listxattr(struct dentry *, char *, size_t);
34 extern int devpts_removexattr(struct dentry *, const char *);
35
36 extern int init_devpts_xattr(void);
37 extern void exit_devpts_xattr(void);
38
39 # else  /* CONFIG_DEVPTS_FS_XATTR */
40 #  define devpts_setxattr               NULL
41 #  define devpts_getxattr               NULL
42 #  define devpts_listxattr      NULL
43 #  define devpts_removexattr    NULL
44
45 static inline int
46 init_devpts_xattr(void)
47 {
48         return 0;
49 }
50
51 static inline void
52 exit_devpts_xattr(void)
53 {
54 }
55
56 # endif  /* CONFIG_DEVPTS_FS_XATTR */
57
58 extern struct devpts_xattr_handler devpts_xattr_security_handler;
59