Commit 59f69015 authored by Tejun Heo's avatar Tejun Heo Committed by Greg Kroah-Hartman

sysfs: clean up header files

sysfs is about to go through major overhaul making this a pretty good
opportunity to clean up (out-of-tree changes and pending patches will
need regeneration anyway).  Clean up headers.

* Kill space between * and symbolname.

* Move SYSFS_* type constants and flags into fs/sysfs/sysfs.h.
  They're internal to sysfs.

* Reformat function prototypes and add argument symbol names.

* Make dummy function definition order match that of function
  prototypes.

* Add some comments.

* Reorganize fs/sysfs/sysfs.h according to which file the declared
  variable or feature lives in.

This patch does not introduce any behavior change.
Signed-off-by: default avatarTejun Heo <htejun@gmail.com>
Acked-by: default avatarCornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent f88123ea
/* type-specific structures for sysfs_dirent->s_* union members */
struct sysfs_elem_dir { struct sysfs_elem_dir {
struct kobject * kobj; struct kobject *kobj;
}; };
struct sysfs_elem_symlink { struct sysfs_elem_symlink {
struct sysfs_dirent * target_sd; struct sysfs_dirent *target_sd;
}; };
struct sysfs_elem_attr { struct sysfs_elem_attr {
struct attribute * attr; struct attribute *attr;
}; };
struct sysfs_elem_bin_attr { struct sysfs_elem_bin_attr {
struct bin_attribute * bin_attr; struct bin_attribute *bin_attr;
}; };
/* /*
* sysfs_dirent - the building block of sysfs hierarchy. Each and
* every sysfs node is represented by single sysfs_dirent.
*
* As long as s_count reference is held, the sysfs_dirent itself is * As long as s_count reference is held, the sysfs_dirent itself is
* accessible. Dereferencing s_elem or any other outer entity * accessible. Dereferencing s_elem or any other outer entity
* requires s_active reference. * requires s_active reference.
...@@ -22,10 +26,10 @@ struct sysfs_elem_bin_attr { ...@@ -22,10 +26,10 @@ struct sysfs_elem_bin_attr {
struct sysfs_dirent { struct sysfs_dirent {
atomic_t s_count; atomic_t s_count;
atomic_t s_active; atomic_t s_active;
struct sysfs_dirent * s_parent; struct sysfs_dirent *s_parent;
struct sysfs_dirent * s_sibling; struct sysfs_dirent *s_sibling;
struct sysfs_dirent * s_children; struct sysfs_dirent *s_children;
const char * s_name; const char *s_name;
union { union {
struct sysfs_elem_dir dir; struct sysfs_elem_dir dir;
...@@ -37,12 +41,31 @@ struct sysfs_dirent { ...@@ -37,12 +41,31 @@ struct sysfs_dirent {
unsigned int s_flags; unsigned int s_flags;
umode_t s_mode; umode_t s_mode;
ino_t s_ino; ino_t s_ino;
struct iattr * s_iattr; struct iattr *s_iattr;
atomic_t s_event; atomic_t s_event;
}; };
#define SD_DEACTIVATED_BIAS INT_MIN #define SD_DEACTIVATED_BIAS INT_MIN
#define SYSFS_TYPE_MASK 0x00ff
#define SYSFS_ROOT 0x0001
#define SYSFS_DIR 0x0002
#define SYSFS_KOBJ_ATTR 0x0004
#define SYSFS_KOBJ_BIN_ATTR 0x0008
#define SYSFS_KOBJ_LINK 0x0020
#define SYSFS_COPY_NAME (SYSFS_DIR | SYSFS_KOBJ_LINK)
#define SYSFS_FLAG_MASK ~SYSFS_TYPE_MASK
#define SYSFS_FLAG_REMOVED 0x0200
static inline unsigned int sysfs_type(struct sysfs_dirent *sd)
{
return sd->s_flags & SYSFS_TYPE_MASK;
}
/*
* Context structure to be used while adding/removing nodes.
*/
struct sysfs_addrm_cxt { struct sysfs_addrm_cxt {
struct sysfs_dirent *parent_sd; struct sysfs_dirent *parent_sd;
struct inode *parent_inode; struct inode *parent_inode;
...@@ -50,59 +73,47 @@ struct sysfs_addrm_cxt { ...@@ -50,59 +73,47 @@ struct sysfs_addrm_cxt {
int cnt; int cnt;
}; };
/*
* mount.c
*/
extern struct sysfs_dirent sysfs_root; extern struct sysfs_dirent sysfs_root;
extern struct super_block *sysfs_sb;
extern struct kmem_cache *sysfs_dir_cachep; extern struct kmem_cache *sysfs_dir_cachep;
extern struct dentry *sysfs_get_dentry(struct sysfs_dirent *sd); /*
extern struct sysfs_dirent *sysfs_get_active(struct sysfs_dirent *sd); * dir.c
extern void sysfs_put_active(struct sysfs_dirent *sd); */
extern struct sysfs_dirent *sysfs_get_active_two(struct sysfs_dirent *sd);
extern void sysfs_put_active_two(struct sysfs_dirent *sd);
extern void sysfs_addrm_start(struct sysfs_addrm_cxt *acxt,
struct sysfs_dirent *parent_sd);
extern int sysfs_add_one(struct sysfs_addrm_cxt *acxt,
struct sysfs_dirent *sd);
extern void sysfs_remove_one(struct sysfs_addrm_cxt *acxt,
struct sysfs_dirent *sd);
extern void sysfs_addrm_finish(struct sysfs_addrm_cxt *acxt);
extern struct inode * sysfs_get_inode(struct sysfs_dirent *sd);
extern void release_sysfs_dirent(struct sysfs_dirent * sd);
extern struct sysfs_dirent *sysfs_find_dirent(struct sysfs_dirent *parent_sd,
const unsigned char *name);
extern struct sysfs_dirent *sysfs_get_dirent(struct sysfs_dirent *parent_sd,
const unsigned char *name);
extern struct sysfs_dirent *sysfs_new_dirent(const char *name, umode_t mode,
int type);
extern int sysfs_add_file(struct sysfs_dirent *dir_sd,
const struct attribute *attr, int type);
extern int sysfs_hash_and_remove(struct sysfs_dirent *dir_sd, const char *name);
extern struct sysfs_dirent *sysfs_find(struct sysfs_dirent *dir, const char * name);
extern int sysfs_create_subdir(struct kobject *kobj, const char *name,
struct sysfs_dirent **p_sd);
extern void sysfs_remove_subdir(struct sysfs_dirent *sd);
extern int sysfs_setattr(struct dentry *dentry, struct iattr *iattr);
extern spinlock_t sysfs_assoc_lock;
extern struct mutex sysfs_mutex; extern struct mutex sysfs_mutex;
extern struct mutex sysfs_rename_mutex; extern struct mutex sysfs_rename_mutex;
extern struct super_block * sysfs_sb; extern spinlock_t sysfs_assoc_lock;
extern const struct file_operations sysfs_dir_operations; extern const struct file_operations sysfs_dir_operations;
extern const struct file_operations sysfs_file_operations;
extern const struct file_operations bin_fops;
extern const struct inode_operations sysfs_dir_inode_operations; extern const struct inode_operations sysfs_dir_inode_operations;
extern const struct inode_operations sysfs_symlink_inode_operations;
static inline unsigned int sysfs_type(struct sysfs_dirent *sd) struct dentry *sysfs_get_dentry(struct sysfs_dirent *sd);
{ struct sysfs_dirent *sysfs_get_active(struct sysfs_dirent *sd);
return sd->s_flags & SYSFS_TYPE_MASK; void sysfs_put_active(struct sysfs_dirent *sd);
} struct sysfs_dirent *sysfs_get_active_two(struct sysfs_dirent *sd);
void sysfs_put_active_two(struct sysfs_dirent *sd);
static inline struct sysfs_dirent * sysfs_get(struct sysfs_dirent * sd) void sysfs_addrm_start(struct sysfs_addrm_cxt *acxt,
struct sysfs_dirent *parent_sd);
int sysfs_add_one(struct sysfs_addrm_cxt *acxt, struct sysfs_dirent *sd);
void sysfs_remove_one(struct sysfs_addrm_cxt *acxt, struct sysfs_dirent *sd);
void sysfs_addrm_finish(struct sysfs_addrm_cxt *acxt);
struct sysfs_dirent *sysfs_find_dirent(struct sysfs_dirent *parent_sd,
const unsigned char *name);
struct sysfs_dirent *sysfs_get_dirent(struct sysfs_dirent *parent_sd,
const unsigned char *name);
struct sysfs_dirent *sysfs_new_dirent(const char *name, umode_t mode, int type);
void release_sysfs_dirent(struct sysfs_dirent *sd);
int sysfs_create_subdir(struct kobject *kobj, const char *name,
struct sysfs_dirent **p_sd);
void sysfs_remove_subdir(struct sysfs_dirent *sd);
static inline struct sysfs_dirent *sysfs_get(struct sysfs_dirent *sd)
{ {
if (sd) { if (sd) {
WARN_ON(!atomic_read(&sd->s_count)); WARN_ON(!atomic_read(&sd->s_count));
...@@ -111,8 +122,33 @@ static inline struct sysfs_dirent * sysfs_get(struct sysfs_dirent * sd) ...@@ -111,8 +122,33 @@ static inline struct sysfs_dirent * sysfs_get(struct sysfs_dirent * sd)
return sd; return sd;
} }
static inline void sysfs_put(struct sysfs_dirent * sd) static inline void sysfs_put(struct sysfs_dirent *sd)
{ {
if (sd && atomic_dec_and_test(&sd->s_count)) if (sd && atomic_dec_and_test(&sd->s_count))
release_sysfs_dirent(sd); release_sysfs_dirent(sd);
} }
/*
* inode.c
*/
struct inode *sysfs_get_inode(struct sysfs_dirent *sd);
int sysfs_setattr(struct dentry *dentry, struct iattr *iattr);
int sysfs_hash_and_remove(struct sysfs_dirent *dir_sd, const char *name);
/*
* file.c
*/
extern const struct file_operations sysfs_file_operations;
int sysfs_add_file(struct sysfs_dirent *dir_sd,
const struct attribute *attr, int type);
/*
* bin.c
*/
extern const struct file_operations bin_fops;
/*
* symlink.c
*/
extern const struct inode_operations sysfs_symlink_inode_operations;
...@@ -23,14 +23,14 @@ struct module; ...@@ -23,14 +23,14 @@ struct module;
* until the tree gets cleaned up fully. * until the tree gets cleaned up fully.
*/ */
struct attribute { struct attribute {
const char * name; const char *name;
struct module * owner; struct module *owner;
mode_t mode; mode_t mode;
}; };
struct attribute_group { struct attribute_group {
const char * name; const char *name;
struct attribute ** attrs; struct attribute **attrs;
}; };
...@@ -74,65 +74,43 @@ struct sysfs_ops { ...@@ -74,65 +74,43 @@ struct sysfs_ops {
ssize_t (*store)(struct kobject *,struct attribute *,const char *, size_t); ssize_t (*store)(struct kobject *,struct attribute *,const char *, size_t);
}; };
#define SYSFS_TYPE_MASK 0x00ff
#define SYSFS_ROOT 0x0001
#define SYSFS_DIR 0x0002
#define SYSFS_KOBJ_ATTR 0x0004
#define SYSFS_KOBJ_BIN_ATTR 0x0008
#define SYSFS_KOBJ_LINK 0x0020
#define SYSFS_COPY_NAME (SYSFS_DIR | SYSFS_KOBJ_LINK)
#define SYSFS_FLAG_MASK ~SYSFS_TYPE_MASK
#define SYSFS_FLAG_REMOVED 0x0100
#ifdef CONFIG_SYSFS #ifdef CONFIG_SYSFS
extern int sysfs_schedule_callback(struct kobject *kobj, int sysfs_schedule_callback(struct kobject *kobj, void (*func)(void *),
void (*func)(void *), void *data, struct module *owner); void *data, struct module *owner);
extern int __must_check
sysfs_create_dir(struct kobject *);
extern void
sysfs_remove_dir(struct kobject *);
extern int __must_check
sysfs_rename_dir(struct kobject *kobj, const char *new_name);
extern int __must_check
sysfs_move_dir(struct kobject *, struct kobject *);
extern int __must_check
sysfs_create_file(struct kobject *, const struct attribute *);
extern int __must_check
sysfs_update_file(struct kobject *, const struct attribute *);
extern int __must_check int __must_check sysfs_create_dir(struct kobject *kobj);
sysfs_chmod_file(struct kobject *kobj, struct attribute *attr, mode_t mode); void sysfs_remove_dir(struct kobject *kobj);
int __must_check sysfs_rename_dir(struct kobject *kobj, const char *new_name);
int __must_check sysfs_move_dir(struct kobject *kobj,
struct kobject *new_parent_kobj);
extern void int __must_check sysfs_create_file(struct kobject *kobj,
sysfs_remove_file(struct kobject *, const struct attribute *); const struct attribute *attr);
int __must_check sysfs_update_file(struct kobject *kobj,
extern int __must_check const struct attribute *attr);
sysfs_create_link(struct kobject * kobj, struct kobject * target, const char * name); int __must_check sysfs_chmod_file(struct kobject *kobj, struct attribute *attr,
mode_t mode);
extern void void sysfs_remove_file(struct kobject *kobj, const struct attribute *attr);
sysfs_remove_link(struct kobject *, const char * name);
int __must_check sysfs_create_bin_file(struct kobject *kobj, int __must_check sysfs_create_bin_file(struct kobject *kobj,
struct bin_attribute *attr); struct bin_attribute *attr);
void sysfs_remove_bin_file(struct kobject *kobj, struct bin_attribute *attr); void sysfs_remove_bin_file(struct kobject *kobj, struct bin_attribute *attr);
int __must_check sysfs_create_group(struct kobject *, int __must_check sysfs_create_link(struct kobject *kobj, struct kobject *target,
const struct attribute_group *); const char *name);
void sysfs_remove_group(struct kobject *, const struct attribute_group *); void sysfs_remove_link(struct kobject *kobj, const char *name);
int __must_check sysfs_create_group(struct kobject *kobj,
const struct attribute_group *grp);
void sysfs_remove_group(struct kobject *kobj,
const struct attribute_group *grp);
int sysfs_add_file_to_group(struct kobject *kobj, int sysfs_add_file_to_group(struct kobject *kobj,
const struct attribute *attr, const char *group); const struct attribute *attr, const char *group);
void sysfs_remove_file_from_group(struct kobject *kobj, void sysfs_remove_file_from_group(struct kobject *kobj,
const struct attribute *attr, const char *group); const struct attribute *attr, const char *group);
void sysfs_notify(struct kobject * k, char *dir, char *attr); void sysfs_notify(struct kobject *kobj, char *dir, char *attr);
extern int __must_check sysfs_init(void); extern int __must_check sysfs_init(void);
...@@ -144,72 +122,81 @@ static inline int sysfs_schedule_callback(struct kobject *kobj, ...@@ -144,72 +122,81 @@ static inline int sysfs_schedule_callback(struct kobject *kobj,
return -ENOSYS; return -ENOSYS;
} }
static inline int sysfs_create_dir(struct kobject * kobj) static inline int sysfs_create_dir(struct kobject *kobj)
{ {
return 0; return 0;
} }
static inline void sysfs_remove_dir(struct kobject * k) static inline void sysfs_remove_dir(struct kobject *kobj)
{ {
; ;
} }
static inline int sysfs_rename_dir(struct kobject * kobj, const char *new_name) static inline int sysfs_rename_dir(struct kobject *kobj, const char *new_name)
{ {
return 0; return 0;
} }
static inline int sysfs_move_dir(struct kobject * k, struct kobject * new_parent) static inline int sysfs_move_dir(struct kobject *kobj,
struct kobject *new_parent_kobj)
{ {
return 0; return 0;
} }
static inline int sysfs_create_file(struct kobject * k, const struct attribute * a) static inline int sysfs_create_file(struct kobject *kobj,
const struct attribute *attr)
{ {
return 0; return 0;
} }
static inline int sysfs_update_file(struct kobject * k, const struct attribute * a) static inline int sysfs_update_file(struct kobject *kobj,
const struct attribute *attr)
{ {
return 0; return 0;
} }
static inline int sysfs_chmod_file(struct kobject *kobj, struct attribute *attr, mode_t mode) static inline int sysfs_chmod_file(struct kobject *kobj,
struct attribute *attr, mode_t mode)
{ {
return 0; return 0;
} }
static inline void sysfs_remove_file(struct kobject * k, const struct attribute * a) static inline void sysfs_remove_file(struct kobject *kobj,
const struct attribute *attr)
{ {
; ;
} }
static inline int sysfs_create_link(struct kobject * k, struct kobject * t, const char * n) static inline int sysfs_create_bin_file(struct kobject *kobj,
struct bin_attribute *attr)
{ {
return 0; return 0;
} }
static inline void sysfs_remove_link(struct kobject * k, const char * name) static inline int sysfs_remove_bin_file(struct kobject *kobj,
struct bin_attribute *attr)
{ {
; return 0;
} }
static inline int sysfs_create_link(struct kobject *kobj,
static inline int sysfs_create_bin_file(struct kobject * k, struct bin_attribute * a) struct kobject *target, const char *name)
{ {
return 0; return 0;
} }
static inline int sysfs_remove_bin_file(struct kobject * k, struct bin_attribute * a) static inline void sysfs_remove_link(struct kobject *kobj, const char *name)
{ {
return 0; ;
} }
static inline int sysfs_create_group(struct kobject * k, const struct attribute_group *g) static inline int sysfs_create_group(struct kobject *kobj,
const struct attribute_group *grp)
{ {
return 0; return 0;
} }
static inline void sysfs_remove_group(struct kobject * k, const struct attribute_group * g) static inline void sysfs_remove_group(struct kobject *kobj,
const struct attribute_group *grp)
{ {
; ;
} }
...@@ -225,7 +212,7 @@ static inline void sysfs_remove_file_from_group(struct kobject *kobj, ...@@ -225,7 +212,7 @@ static inline void sysfs_remove_file_from_group(struct kobject *kobj,
{ {
} }
static inline void sysfs_notify(struct kobject * k, char *dir, char *attr) static inline void sysfs_notify(struct kobject *kobj, char *dir, char *attr)
{ {
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment