diff options
Diffstat (limited to 'fs/sysfs/sysfs.h')
-rw-r--r-- | fs/sysfs/sysfs.h | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/fs/sysfs/sysfs.h b/fs/sysfs/sysfs.h index 030a39dbb02c..93847d54c2e3 100644 --- a/fs/sysfs/sysfs.h +++ b/fs/sysfs/sysfs.h | |||
@@ -58,6 +58,7 @@ struct sysfs_dirent { | |||
58 | struct sysfs_dirent *s_sibling; | 58 | struct sysfs_dirent *s_sibling; |
59 | const char *s_name; | 59 | const char *s_name; |
60 | 60 | ||
61 | const void *s_ns; | ||
61 | union { | 62 | union { |
62 | struct sysfs_elem_dir s_dir; | 63 | struct sysfs_elem_dir s_dir; |
63 | struct sysfs_elem_symlink s_symlink; | 64 | struct sysfs_elem_symlink s_symlink; |
@@ -81,14 +82,22 @@ struct sysfs_dirent { | |||
81 | #define SYSFS_COPY_NAME (SYSFS_DIR | SYSFS_KOBJ_LINK) | 82 | #define SYSFS_COPY_NAME (SYSFS_DIR | SYSFS_KOBJ_LINK) |
82 | #define SYSFS_ACTIVE_REF (SYSFS_KOBJ_ATTR | SYSFS_KOBJ_BIN_ATTR) | 83 | #define SYSFS_ACTIVE_REF (SYSFS_KOBJ_ATTR | SYSFS_KOBJ_BIN_ATTR) |
83 | 84 | ||
84 | #define SYSFS_FLAG_MASK ~SYSFS_TYPE_MASK | 85 | #define SYSFS_NS_TYPE_MASK 0xff00 |
85 | #define SYSFS_FLAG_REMOVED 0x0200 | 86 | #define SYSFS_NS_TYPE_SHIFT 8 |
87 | |||
88 | #define SYSFS_FLAG_MASK ~(SYSFS_NS_TYPE_MASK|SYSFS_TYPE_MASK) | ||
89 | #define SYSFS_FLAG_REMOVED 0x020000 | ||
86 | 90 | ||
87 | static inline unsigned int sysfs_type(struct sysfs_dirent *sd) | 91 | static inline unsigned int sysfs_type(struct sysfs_dirent *sd) |
88 | { | 92 | { |
89 | return sd->s_flags & SYSFS_TYPE_MASK; | 93 | return sd->s_flags & SYSFS_TYPE_MASK; |
90 | } | 94 | } |
91 | 95 | ||
96 | static inline enum kobj_ns_type sysfs_ns_type(struct sysfs_dirent *sd) | ||
97 | { | ||
98 | return (sd->s_flags & SYSFS_NS_TYPE_MASK) >> SYSFS_NS_TYPE_SHIFT; | ||
99 | } | ||
100 | |||
92 | #ifdef CONFIG_DEBUG_LOCK_ALLOC | 101 | #ifdef CONFIG_DEBUG_LOCK_ALLOC |
93 | #define sysfs_dirent_init_lockdep(sd) \ | 102 | #define sysfs_dirent_init_lockdep(sd) \ |
94 | do { \ | 103 | do { \ |
@@ -115,6 +124,7 @@ struct sysfs_addrm_cxt { | |||
115 | * mount.c | 124 | * mount.c |
116 | */ | 125 | */ |
117 | struct sysfs_super_info { | 126 | struct sysfs_super_info { |
127 | const void *ns[KOBJ_NS_TYPES]; | ||
118 | }; | 128 | }; |
119 | #define sysfs_info(SB) ((struct sysfs_super_info *)(SB->s_fs_info)) | 129 | #define sysfs_info(SB) ((struct sysfs_super_info *)(SB->s_fs_info)) |
120 | extern struct sysfs_dirent sysfs_root; | 130 | extern struct sysfs_dirent sysfs_root; |
@@ -140,8 +150,10 @@ void sysfs_remove_one(struct sysfs_addrm_cxt *acxt, struct sysfs_dirent *sd); | |||
140 | void sysfs_addrm_finish(struct sysfs_addrm_cxt *acxt); | 150 | void sysfs_addrm_finish(struct sysfs_addrm_cxt *acxt); |
141 | 151 | ||
142 | struct sysfs_dirent *sysfs_find_dirent(struct sysfs_dirent *parent_sd, | 152 | struct sysfs_dirent *sysfs_find_dirent(struct sysfs_dirent *parent_sd, |
153 | const void *ns, | ||
143 | const unsigned char *name); | 154 | const unsigned char *name); |
144 | struct sysfs_dirent *sysfs_get_dirent(struct sysfs_dirent *parent_sd, | 155 | struct sysfs_dirent *sysfs_get_dirent(struct sysfs_dirent *parent_sd, |
156 | const void *ns, | ||
145 | const unsigned char *name); | 157 | const unsigned char *name); |
146 | struct sysfs_dirent *sysfs_new_dirent(const char *name, umode_t mode, int type); | 158 | struct sysfs_dirent *sysfs_new_dirent(const char *name, umode_t mode, int type); |
147 | 159 | ||
@@ -152,7 +164,7 @@ int sysfs_create_subdir(struct kobject *kobj, const char *name, | |||
152 | void sysfs_remove_subdir(struct sysfs_dirent *sd); | 164 | void sysfs_remove_subdir(struct sysfs_dirent *sd); |
153 | 165 | ||
154 | int sysfs_rename(struct sysfs_dirent *sd, | 166 | int sysfs_rename(struct sysfs_dirent *sd, |
155 | struct sysfs_dirent *new_parent_sd, const char *new_name); | 167 | struct sysfs_dirent *new_parent_sd, const void *ns, const char *new_name); |
156 | 168 | ||
157 | static inline struct sysfs_dirent *__sysfs_get(struct sysfs_dirent *sd) | 169 | static inline struct sysfs_dirent *__sysfs_get(struct sysfs_dirent *sd) |
158 | { | 170 | { |
@@ -182,7 +194,7 @@ int sysfs_setattr(struct dentry *dentry, struct iattr *iattr); | |||
182 | int sysfs_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat); | 194 | int sysfs_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat); |
183 | int sysfs_setxattr(struct dentry *dentry, const char *name, const void *value, | 195 | int sysfs_setxattr(struct dentry *dentry, const char *name, const void *value, |
184 | size_t size, int flags); | 196 | size_t size, int flags); |
185 | int sysfs_hash_and_remove(struct sysfs_dirent *dir_sd, const char *name); | 197 | int sysfs_hash_and_remove(struct sysfs_dirent *dir_sd, const void *ns, const char *name); |
186 | int sysfs_inode_init(void); | 198 | int sysfs_inode_init(void); |
187 | 199 | ||
188 | /* | 200 | /* |