Loading include/linux/device.h +145 −138 Original line number Diff line number Diff line Loading @@ -25,7 +25,8 @@ #include <asm/device.h> #define DEVICE_NAME_SIZE 50 #define DEVICE_NAME_HALF __stringify(20) /* Less than half to accommodate slop */ /* DEVICE_NAME_HALF is really less than half to accommodate slop */ #define DEVICE_NAME_HALF __stringify(20) #define DEVICE_ID_SIZE 32 #define BUS_ID_SIZE KOBJ_NAME_LEN Loading @@ -40,8 +41,8 @@ struct bus_type_private; struct bus_attribute { struct attribute attr; ssize_t (*show)(struct bus_type *, char * buf); ssize_t (*store)(struct bus_type *, const char * buf, size_t count); ssize_t (*show)(struct bus_type *bus, char *buf); ssize_t (*store)(struct bus_type *bus, const char *buf, size_t count); }; #define BUS_ATTR(_name, _mode, _show, _store) \ Loading Loading @@ -79,9 +80,10 @@ extern int __must_check bus_rescan_devices(struct bus_type * bus); /* iterator helpers for buses */ int bus_for_each_dev(struct bus_type *bus, struct device *start, void *data, int (*fn)(struct device *, void *)); int (*fn)(struct device *dev, void *data)); struct device *bus_find_device(struct bus_type *bus, struct device *start, void *data, int (*match)(struct device *, void *)); void *data, int (*match)(struct device *dev, void *data)); int __must_check bus_for_each_drv(struct bus_type *bus, struct device_driver *start, void *data, Loading Loading @@ -136,34 +138,40 @@ extern void driver_unregister(struct device_driver * drv); extern struct device_driver *get_driver(struct device_driver *drv); extern void put_driver(struct device_driver *drv); extern struct device_driver *driver_find(const char *name, struct bus_type *bus); extern struct device_driver *driver_find(const char *name, struct bus_type *bus); extern int driver_probe_done(void); /* sysfs interface for exporting driver attributes */ struct driver_attribute { struct attribute attr; ssize_t (*show)(struct device_driver *, char * buf); ssize_t (*store)(struct device_driver *, const char * buf, size_t count); ssize_t (*show)(struct device_driver *driver, char *buf); ssize_t (*store)(struct device_driver *driver, const char *buf, size_t count); }; #define DRIVER_ATTR(_name, _mode, _show, _store) \ struct driver_attribute driver_attr_##_name = __ATTR(_name,_mode,_show,_store) struct driver_attribute driver_attr_##_name = \ __ATTR(_name, _mode, _show, _store) extern int __must_check driver_create_file(struct device_driver *, struct driver_attribute *); extern void driver_remove_file(struct device_driver *, struct driver_attribute *); extern int __must_check driver_create_file(struct device_driver *driver, struct driver_attribute *attr); extern void driver_remove_file(struct device_driver *driver, struct driver_attribute *attr); extern int __must_check driver_add_kobj(struct device_driver *drv, struct kobject *kobj, const char *fmt, ...); extern int __must_check driver_for_each_device(struct device_driver *drv, struct device *start, void *data, int (*fn)(struct device *, void *)); struct device *start, void *data, int (*fn)(struct device *dev, void *)); struct device *driver_find_device(struct device_driver *drv, struct device *start, void *data, int (*match)(struct device *, void *)); int (*match)(struct device *dev, void *data)); /* * device classes Loading @@ -189,12 +197,12 @@ struct class { void (*class_release)(struct class *class); void (*dev_release)(struct device *dev); int (*suspend)(struct device *, pm_message_t state); int (*resume)(struct device *); int (*suspend)(struct device *dev, pm_message_t state); int (*resume)(struct device *dev); }; extern int __must_check class_register(struct class *); extern void class_unregister(struct class *); extern int __must_check class_register(struct class *class); extern void class_unregister(struct class *class); extern int class_for_each_device(struct class *class, void *data, int (*fn)(struct device *dev, void *data)); extern struct device *class_find_device(struct class *class, void *data, Loading @@ -205,16 +213,17 @@ extern struct class_device *class_find_child(struct class *class, void *data, struct class_attribute { struct attribute attr; ssize_t (*show)(struct class *, char * buf); ssize_t (*store)(struct class *, const char * buf, size_t count); ssize_t (*show)(struct class *class, char *buf); ssize_t (*store)(struct class *class, const char *buf, size_t count); }; #define CLASS_ATTR(_name, _mode, _show, _store) \ struct class_attribute class_attr_##_name = __ATTR(_name, _mode, _show, _store) extern int __must_check class_create_file(struct class *, const struct class_attribute *); extern void class_remove_file(struct class *, const struct class_attribute *); extern int __must_check class_create_file(struct class *class, const struct class_attribute *attr); extern void class_remove_file(struct class *class, const struct class_attribute *attr); struct class_device_attribute { struct attribute attr; Loading Loading @@ -257,26 +266,24 @@ struct class_device { struct list_head node; struct kobject kobj; struct class * class; /* required */ dev_t devt; /* dev_t, creates the sysfs "dev" */ struct device * dev; /* not necessary, but nice to have */ void * class_data; /* class-specific data */ struct class_device *parent; /* parent of this child device, if there is one */ struct attribute_group ** groups; /* optional groups */ struct class *class; dev_t devt; struct device *dev; void *class_data; struct class_device *parent; struct attribute_group **groups; void (*release)(struct class_device *dev); int (*uevent)(struct class_device *dev, struct kobj_uevent_env *env); char class_id[BUS_ID_SIZE]; /* unique to this class */ char class_id[BUS_ID_SIZE]; }; static inline void * class_get_devdata (struct class_device *dev) static inline void *class_get_devdata(struct class_device *dev) { return dev->class_data; } static inline void class_set_devdata (struct class_device *dev, void *data) static inline void class_set_devdata(struct class_device *dev, void *data) { dev->class_data = data; } Loading Loading @@ -353,13 +360,14 @@ struct device_attribute dev_attr_##_name = __ATTR(_name,_mode,_show,_store) extern int __must_check device_create_file(struct device *device, struct device_attribute *entry); extern void device_remove_file(struct device * dev, struct device_attribute * attr); extern void device_remove_file(struct device *dev, struct device_attribute *attr); extern int __must_check device_create_bin_file(struct device *dev, struct bin_attribute *attr); extern void device_remove_bin_file(struct device *dev, struct bin_attribute *attr); extern int device_schedule_callback_owner(struct device *dev, void (*func)(struct device *), struct module *owner); void (*func)(struct device *dev), struct module *owner); /* This is a macro to avoid include problems with THIS_MODULE */ #define device_schedule_callback(dev, func) \ Loading Loading @@ -472,14 +480,12 @@ static inline void set_dev_node(struct device *dev, int node) } #endif static inline void * dev_get_drvdata (struct device *dev) static inline void *dev_get_drvdata(struct device *dev) { return dev->driver_data; } static inline void dev_set_drvdata (struct device *dev, void *data) static inline void dev_set_drvdata(struct device *dev, void *data) { dev->driver_data = data; } Loading @@ -499,10 +505,10 @@ extern void device_unregister(struct device * dev); extern void device_initialize(struct device *dev); extern int __must_check device_add(struct device *dev); extern void device_del(struct device *dev); extern int device_for_each_child(struct device *, void *, int (*fn)(struct device *, void *)); extern struct device *device_find_child(struct device *, void *data, int (*match)(struct device *, void *)); extern int device_for_each_child(struct device *dev, void *data, int (*fn)(struct device *dev, void *data)); extern struct device *device_find_child(struct device *dev, void *data, int (*match)(struct device *dev, void *data)); extern int device_rename(struct device *dev, char *new_name); extern int device_move(struct device *dev, struct device *new_parent); Loading Loading @@ -560,7 +566,8 @@ extern void sysdev_shutdown(void); /* debugging and troubleshooting/diagnostic helpers. */ extern const char *dev_driver_string(struct device *dev); #define dev_printk(level, dev, format, arg...) \ printk(level "%s %s: " format , dev_driver_string(dev) , (dev)->bus_id , ## arg) printk(level "%s %s: " format , dev_driver_string(dev) , \ (dev)->bus_id , ## arg) #define dev_emerg(dev, format, arg...) \ dev_printk(KERN_EMERG , dev , format , ## arg) Loading Loading
include/linux/device.h +145 −138 Original line number Diff line number Diff line Loading @@ -25,7 +25,8 @@ #include <asm/device.h> #define DEVICE_NAME_SIZE 50 #define DEVICE_NAME_HALF __stringify(20) /* Less than half to accommodate slop */ /* DEVICE_NAME_HALF is really less than half to accommodate slop */ #define DEVICE_NAME_HALF __stringify(20) #define DEVICE_ID_SIZE 32 #define BUS_ID_SIZE KOBJ_NAME_LEN Loading @@ -40,8 +41,8 @@ struct bus_type_private; struct bus_attribute { struct attribute attr; ssize_t (*show)(struct bus_type *, char * buf); ssize_t (*store)(struct bus_type *, const char * buf, size_t count); ssize_t (*show)(struct bus_type *bus, char *buf); ssize_t (*store)(struct bus_type *bus, const char *buf, size_t count); }; #define BUS_ATTR(_name, _mode, _show, _store) \ Loading Loading @@ -79,9 +80,10 @@ extern int __must_check bus_rescan_devices(struct bus_type * bus); /* iterator helpers for buses */ int bus_for_each_dev(struct bus_type *bus, struct device *start, void *data, int (*fn)(struct device *, void *)); int (*fn)(struct device *dev, void *data)); struct device *bus_find_device(struct bus_type *bus, struct device *start, void *data, int (*match)(struct device *, void *)); void *data, int (*match)(struct device *dev, void *data)); int __must_check bus_for_each_drv(struct bus_type *bus, struct device_driver *start, void *data, Loading Loading @@ -136,34 +138,40 @@ extern void driver_unregister(struct device_driver * drv); extern struct device_driver *get_driver(struct device_driver *drv); extern void put_driver(struct device_driver *drv); extern struct device_driver *driver_find(const char *name, struct bus_type *bus); extern struct device_driver *driver_find(const char *name, struct bus_type *bus); extern int driver_probe_done(void); /* sysfs interface for exporting driver attributes */ struct driver_attribute { struct attribute attr; ssize_t (*show)(struct device_driver *, char * buf); ssize_t (*store)(struct device_driver *, const char * buf, size_t count); ssize_t (*show)(struct device_driver *driver, char *buf); ssize_t (*store)(struct device_driver *driver, const char *buf, size_t count); }; #define DRIVER_ATTR(_name, _mode, _show, _store) \ struct driver_attribute driver_attr_##_name = __ATTR(_name,_mode,_show,_store) struct driver_attribute driver_attr_##_name = \ __ATTR(_name, _mode, _show, _store) extern int __must_check driver_create_file(struct device_driver *, struct driver_attribute *); extern void driver_remove_file(struct device_driver *, struct driver_attribute *); extern int __must_check driver_create_file(struct device_driver *driver, struct driver_attribute *attr); extern void driver_remove_file(struct device_driver *driver, struct driver_attribute *attr); extern int __must_check driver_add_kobj(struct device_driver *drv, struct kobject *kobj, const char *fmt, ...); extern int __must_check driver_for_each_device(struct device_driver *drv, struct device *start, void *data, int (*fn)(struct device *, void *)); struct device *start, void *data, int (*fn)(struct device *dev, void *)); struct device *driver_find_device(struct device_driver *drv, struct device *start, void *data, int (*match)(struct device *, void *)); int (*match)(struct device *dev, void *data)); /* * device classes Loading @@ -189,12 +197,12 @@ struct class { void (*class_release)(struct class *class); void (*dev_release)(struct device *dev); int (*suspend)(struct device *, pm_message_t state); int (*resume)(struct device *); int (*suspend)(struct device *dev, pm_message_t state); int (*resume)(struct device *dev); }; extern int __must_check class_register(struct class *); extern void class_unregister(struct class *); extern int __must_check class_register(struct class *class); extern void class_unregister(struct class *class); extern int class_for_each_device(struct class *class, void *data, int (*fn)(struct device *dev, void *data)); extern struct device *class_find_device(struct class *class, void *data, Loading @@ -205,16 +213,17 @@ extern struct class_device *class_find_child(struct class *class, void *data, struct class_attribute { struct attribute attr; ssize_t (*show)(struct class *, char * buf); ssize_t (*store)(struct class *, const char * buf, size_t count); ssize_t (*show)(struct class *class, char *buf); ssize_t (*store)(struct class *class, const char *buf, size_t count); }; #define CLASS_ATTR(_name, _mode, _show, _store) \ struct class_attribute class_attr_##_name = __ATTR(_name, _mode, _show, _store) extern int __must_check class_create_file(struct class *, const struct class_attribute *); extern void class_remove_file(struct class *, const struct class_attribute *); extern int __must_check class_create_file(struct class *class, const struct class_attribute *attr); extern void class_remove_file(struct class *class, const struct class_attribute *attr); struct class_device_attribute { struct attribute attr; Loading Loading @@ -257,26 +266,24 @@ struct class_device { struct list_head node; struct kobject kobj; struct class * class; /* required */ dev_t devt; /* dev_t, creates the sysfs "dev" */ struct device * dev; /* not necessary, but nice to have */ void * class_data; /* class-specific data */ struct class_device *parent; /* parent of this child device, if there is one */ struct attribute_group ** groups; /* optional groups */ struct class *class; dev_t devt; struct device *dev; void *class_data; struct class_device *parent; struct attribute_group **groups; void (*release)(struct class_device *dev); int (*uevent)(struct class_device *dev, struct kobj_uevent_env *env); char class_id[BUS_ID_SIZE]; /* unique to this class */ char class_id[BUS_ID_SIZE]; }; static inline void * class_get_devdata (struct class_device *dev) static inline void *class_get_devdata(struct class_device *dev) { return dev->class_data; } static inline void class_set_devdata (struct class_device *dev, void *data) static inline void class_set_devdata(struct class_device *dev, void *data) { dev->class_data = data; } Loading Loading @@ -353,13 +360,14 @@ struct device_attribute dev_attr_##_name = __ATTR(_name,_mode,_show,_store) extern int __must_check device_create_file(struct device *device, struct device_attribute *entry); extern void device_remove_file(struct device * dev, struct device_attribute * attr); extern void device_remove_file(struct device *dev, struct device_attribute *attr); extern int __must_check device_create_bin_file(struct device *dev, struct bin_attribute *attr); extern void device_remove_bin_file(struct device *dev, struct bin_attribute *attr); extern int device_schedule_callback_owner(struct device *dev, void (*func)(struct device *), struct module *owner); void (*func)(struct device *dev), struct module *owner); /* This is a macro to avoid include problems with THIS_MODULE */ #define device_schedule_callback(dev, func) \ Loading Loading @@ -472,14 +480,12 @@ static inline void set_dev_node(struct device *dev, int node) } #endif static inline void * dev_get_drvdata (struct device *dev) static inline void *dev_get_drvdata(struct device *dev) { return dev->driver_data; } static inline void dev_set_drvdata (struct device *dev, void *data) static inline void dev_set_drvdata(struct device *dev, void *data) { dev->driver_data = data; } Loading @@ -499,10 +505,10 @@ extern void device_unregister(struct device * dev); extern void device_initialize(struct device *dev); extern int __must_check device_add(struct device *dev); extern void device_del(struct device *dev); extern int device_for_each_child(struct device *, void *, int (*fn)(struct device *, void *)); extern struct device *device_find_child(struct device *, void *data, int (*match)(struct device *, void *)); extern int device_for_each_child(struct device *dev, void *data, int (*fn)(struct device *dev, void *data)); extern struct device *device_find_child(struct device *dev, void *data, int (*match)(struct device *dev, void *data)); extern int device_rename(struct device *dev, char *new_name); extern int device_move(struct device *dev, struct device *new_parent); Loading Loading @@ -560,7 +566,8 @@ extern void sysdev_shutdown(void); /* debugging and troubleshooting/diagnostic helpers. */ extern const char *dev_driver_string(struct device *dev); #define dev_printk(level, dev, format, arg...) \ printk(level "%s %s: " format , dev_driver_string(dev) , (dev)->bus_id , ## arg) printk(level "%s %s: " format , dev_driver_string(dev) , \ (dev)->bus_id , ## arg) #define dev_emerg(dev, format, arg...) \ dev_printk(KERN_EMERG , dev , format , ## arg) Loading