X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;ds=sidebyside;f=include%2Flinux%2Fsysfs.h;h=06aa077a88e58fecc18f4ed15992cbab4760c0d5;hb=6a77f38946aaee1cd85eeec6cf4229b204c15071;hp=de2083939b74d2b2068535cc963b8722c0dd070a;hpb=5273a3df6485dc2ad6aa7ddd441b9a21970f003b;p=linux-2.6.git diff --git a/include/linux/sysfs.h b/include/linux/sysfs.h index de2083939..06aa077a8 100644 --- a/include/linux/sysfs.h +++ b/include/linux/sysfs.h @@ -2,6 +2,7 @@ * sysfs.h - definitions for the device driver filesystem * * Copyright (c) 2001,2002 Patrick Mochel + * Copyright (c) 2004 Silicon Graphics, Inc. * * Please see Documentation/filesystems/sysfs.txt for more information. */ @@ -9,6 +10,10 @@ #ifndef _SYSFS_H_ #define _SYSFS_H_ +#include + +#define SYSFS_SUPER_MAGIC 0x62656572 + struct kobject; struct module; @@ -24,11 +29,37 @@ struct attribute_group { }; + +/** + * Use these macros to make defining attributes easier. See include/linux/device.h + * for examples.. + */ + +#define __ATTR(_name,_mode,_show,_store) { \ + .attr = {.name = __stringify(_name), .mode = _mode, .owner = THIS_MODULE }, \ + .show = _show, \ + .store = _store, \ +} + +#define __ATTR_RO(_name) { \ + .attr = { .name = __stringify(_name), .mode = 0444, .owner = THIS_MODULE }, \ + .show = _name##_show, \ +} + +#define __ATTR_NULL { .attr = { .name = NULL } } + +#define attr_name(_attr) (_attr).attr.name + +struct vm_area_struct; + struct bin_attribute { struct attribute attr; size_t size; + void *private; ssize_t (*read)(struct kobject *, char *, loff_t, size_t); ssize_t (*write)(struct kobject *, char *, loff_t, size_t); + int (*mmap)(struct kobject *, struct bin_attribute *attr, + struct vm_area_struct *vma); }; struct sysfs_ops { @@ -36,6 +67,23 @@ struct sysfs_ops { ssize_t (*store)(struct kobject *,struct attribute *,const char *, size_t); }; +struct sysfs_dirent { + atomic_t s_count; + struct list_head s_sibling; + struct list_head s_children; + void * s_element; + int s_type; + umode_t s_mode; + struct dentry * s_dentry; +}; + +#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_NOT_PINNED (SYSFS_KOBJ_ATTR | SYSFS_KOBJ_BIN_ATTR | SYSFS_KOBJ_LINK) + #ifdef CONFIG_SYSFS extern int @@ -44,7 +92,7 @@ sysfs_create_dir(struct kobject *); extern void sysfs_remove_dir(struct kobject *); -extern void +extern int sysfs_rename_dir(struct kobject *, const char *new_name); extern int @@ -80,9 +128,9 @@ static inline void sysfs_remove_dir(struct kobject * k) ; } -static inline void sysfs_rename_dir(struct kobject * k, const char *new_name) +static inline int sysfs_rename_dir(struct kobject * k, const char *new_name) { - ; + return 0; } static inline int sysfs_create_file(struct kobject * k, const struct attribute * a)