All of lore.kernel.org
 help / color / mirror / Atom feed
diff for duplicates of <253818670505070621784dbd63@mail.gmail.com>

diff --git a/a/1.txt b/N1/1.txt
index d9baf97..4a7aff0 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -30,10 +30,3 @@ http://bmcsensors-26.sourceforge.net/)
 This first patch changes the core sysfs attribute and derived attributes.
 
 Signed-off-by: Yani Ioannou <yani.ioannou@gmail.com>
--------------- next part --------------
-A non-text attachment was scrubbed...
-Name: patch-linux-2.6.12-rc4-sysfsdyncallback-core.diff
-Type: text/x-patch
-Size: 17284 bytes
-Desc: not available
-Url : http://lists.lm-sensors.org/pipermail/lm-sensors/attachments/20050507/65896876/patch-linux-2.6.12-rc4-sysfsdyncallback-core.bin
diff --git a/N1/2.hdr b/N1/2.hdr
new file mode 100644
index 0000000..0ac126d
--- /dev/null
+++ b/N1/2.hdr
@@ -0,0 +1,4 @@
+Content-Type: text/x-patch; 
+	name=patch-linux-2.6.12-rc4-sysfsdyncallback-core.diff; charset=us-ascii
+Content-Transfer-Encoding: 7bit
+Content-Disposition: attachment; filename="patch-linux-2.6.12-rc4-sysfsdyncallback-core.diff"
diff --git a/N1/2.txt b/N1/2.txt
new file mode 100644
index 0000000..0e32893
--- /dev/null
+++ b/N1/2.txt
@@ -0,0 +1,444 @@
+diff -uprN -X dontdiff linux-2.6.12-rc4/drivers/base/bus.c linux-2.6.12-rc4-sysfsdyncallback-core/drivers/base/bus.c
+--- linux-2.6.12-rc4/drivers/base/bus.c	2005-05-07 03:37:15.000000000 -0400
++++ linux-2.6.12-rc4-sysfsdyncallback-core/drivers/base/bus.c	2005-05-07 04:31:56.000000000 -0400
+@@ -39,7 +39,7 @@ drv_attr_show(struct kobject * kobj, str
+ 	ssize_t ret = 0;
+ 
+ 	if (drv_attr->show)
+-		ret = drv_attr->show(drv, buf);
++		ret = drv_attr->show(drv, buf, attr->data);
+ 	return ret;
+ }
+ 
+@@ -52,7 +52,7 @@ drv_attr_store(struct kobject * kobj, st
+ 	ssize_t ret = 0;
+ 
+ 	if (drv_attr->store)
+-		ret = drv_attr->store(drv, buf, count);
++		ret = drv_attr->store(drv, buf, count, attr->data);
+ 	return ret;
+ }
+ 
+@@ -87,7 +87,7 @@ bus_attr_show(struct kobject * kobj, str
+ 	ssize_t ret = 0;
+ 
+ 	if (bus_attr->show)
+-		ret = bus_attr->show(bus, buf);
++		ret = bus_attr->show(bus, buf, attr->data);
+ 	return ret;
+ }
+ 
+@@ -100,7 +100,7 @@ bus_attr_store(struct kobject * kobj, st
+ 	ssize_t ret = 0;
+ 
+ 	if (bus_attr->store)
+-		ret = bus_attr->store(bus, buf, count);
++		ret = bus_attr->store(bus, buf, count, attr->data);
+ 	return ret;
+ }
+ 
+diff -uprN -X dontdiff linux-2.6.12-rc4/drivers/base/class.c linux-2.6.12-rc4-sysfsdyncallback-core/drivers/base/class.c
+--- linux-2.6.12-rc4/drivers/base/class.c	2005-05-07 03:37:15.000000000 -0400
++++ linux-2.6.12-rc4-sysfsdyncallback-core/drivers/base/class.c	2005-05-07 04:31:56.000000000 -0400
+@@ -29,7 +29,7 @@ class_attr_show(struct kobject * kobj, s
+ 	ssize_t ret = 0;
+ 
+ 	if (class_attr->show)
+-		ret = class_attr->show(dc, buf);
++		ret = class_attr->show(dc, buf, attr->data);
+ 	return ret;
+ }
+ 
+@@ -42,7 +42,7 @@ class_attr_store(struct kobject * kobj, 
+ 	ssize_t ret = 0;
+ 
+ 	if (class_attr->store)
+-		ret = class_attr->store(dc, buf, count);
++		ret = class_attr->store(dc, buf, count, attr->data);
+ 	return ret;
+ }
+ 
+@@ -206,7 +206,7 @@ class_device_attr_show(struct kobject * 
+ 	ssize_t ret = 0;
+ 
+ 	if (class_dev_attr->show)
+-		ret = class_dev_attr->show(cd, buf);
++		ret = class_dev_attr->show(cd, buf, attr->data);
+ 	return ret;
+ }
+ 
+@@ -219,7 +219,7 @@ class_device_attr_store(struct kobject *
+ 	ssize_t ret = 0;
+ 
+ 	if (class_dev_attr->store)
+-		ret = class_dev_attr->store(cd, buf, count);
++		ret = class_dev_attr->store(cd, buf, count, attr->data);
+ 	return ret;
+ }
+ 
+@@ -371,7 +371,7 @@ static void class_device_remove_attrs(st
+ 	}
+ }
+ 
+-static ssize_t show_dev(struct class_device *class_dev, char *buf)
++static ssize_t show_dev(struct class_device *class_dev, char *buf, void *data)
+ {
+ 	return print_dev_t(buf, class_dev->devt);
+ }
+diff -uprN -X dontdiff linux-2.6.12-rc4/drivers/base/core.c linux-2.6.12-rc4-sysfsdyncallback-core/drivers/base/core.c
+--- linux-2.6.12-rc4/drivers/base/core.c	2005-05-07 03:37:15.000000000 -0400
++++ linux-2.6.12-rc4-sysfsdyncallback-core/drivers/base/core.c	2005-05-07 04:31:56.000000000 -0400
+@@ -41,7 +41,7 @@ dev_attr_show(struct kobject * kobj, str
+ 	ssize_t ret = 0;
+ 
+ 	if (dev_attr->show)
+-		ret = dev_attr->show(dev, buf);
++		ret = dev_attr->show(dev, buf, attr->data);
+ 	return ret;
+ }
+ 
+@@ -54,7 +54,7 @@ dev_attr_store(struct kobject * kobj, st
+ 	ssize_t ret = 0;
+ 
+ 	if (dev_attr->store)
+-		ret = dev_attr->store(dev, buf, count);
++		ret = dev_attr->store(dev, buf, count, attr->data);
+ 	return ret;
+ }
+ 
+diff -uprN -X dontdiff linux-2.6.12-rc4/drivers/base/sys.c linux-2.6.12-rc4-sysfsdyncallback-core/drivers/base/sys.c
+--- linux-2.6.12-rc4/drivers/base/sys.c	2005-05-07 03:37:15.000000000 -0400
++++ linux-2.6.12-rc4-sysfsdyncallback-core/drivers/base/sys.c	2005-05-07 04:31:56.000000000 -0400
+@@ -36,7 +36,7 @@ sysdev_show(struct kobject * kobj, struc
+ 	struct sysdev_attribute * sysdev_attr = to_sysdev_attr(attr);
+ 
+ 	if (sysdev_attr->show)
+-		return sysdev_attr->show(sysdev, buffer);
++		return sysdev_attr->show(sysdev, buffer, attr->data);
+ 	return 0;
+ }
+ 
+@@ -49,7 +49,7 @@ sysdev_store(struct kobject * kobj, stru
+ 	struct sysdev_attribute * sysdev_attr = to_sysdev_attr(attr);
+ 
+ 	if (sysdev_attr->store)
+-		return sysdev_attr->store(sysdev, buffer, count);
++		return sysdev_attr->store(sysdev, buffer, count, attr->data);
+ 	return 0;
+ }
+ 
+diff -uprN -X dontdiff linux-2.6.12-rc4/drivers/block/genhd.c linux-2.6.12-rc4-sysfsdyncallback-core/drivers/block/genhd.c
+--- linux-2.6.12-rc4/drivers/block/genhd.c	2005-05-07 03:37:15.000000000 -0400
++++ linux-2.6.12-rc4-sysfsdyncallback-core/drivers/block/genhd.c	2005-05-07 04:31:56.000000000 -0400
+@@ -325,7 +325,7 @@ static ssize_t disk_attr_show(struct kob
+ 	ssize_t ret = 0;
+ 
+ 	if (disk_attr->show)
+-		ret = disk_attr->show(disk,page);
++		ret = disk_attr->show(disk,page,attr->data);
+ 	return ret;
+ }
+ 
+diff -uprN -X dontdiff linux-2.6.12-rc4/drivers/cpufreq/cpufreq.c linux-2.6.12-rc4-sysfsdyncallback-core/drivers/cpufreq/cpufreq.c
+--- linux-2.6.12-rc4/drivers/cpufreq/cpufreq.c	2005-05-07 03:37:16.000000000 -0400
++++ linux-2.6.12-rc4-sysfsdyncallback-core/drivers/cpufreq/cpufreq.c	2005-05-07 04:31:56.000000000 -0400
+@@ -521,7 +521,7 @@ static ssize_t show(struct kobject * kob
+ 	policy = cpufreq_cpu_get(policy->cpu);
+ 	if (!policy)
+ 		return -EINVAL;
+-	ret = fattr->show ? fattr->show(policy,buf) : 0;
++	ret = fattr->show ? fattr->show(policy,buf,attr->data) : 0;
+ 	cpufreq_cpu_put(policy);
+ 	return ret;
+ }
+@@ -535,7 +535,7 @@ static ssize_t store(struct kobject * ko
+ 	policy = cpufreq_cpu_get(policy->cpu);
+ 	if (!policy)
+ 		return -EINVAL;
+-	ret = fattr->store ? fattr->store(policy,buf,count) : 0;
++	ret = fattr->store ? fattr->store(policy,buf,count,attr->data) : 0;
+ 	cpufreq_cpu_put(policy);
+ 	return ret;
+ }
+diff -uprN -X dontdiff linux-2.6.12-rc4/drivers/pci/pci-driver.c linux-2.6.12-rc4-sysfsdyncallback-core/drivers/pci/pci-driver.c
+--- linux-2.6.12-rc4/drivers/pci/pci-driver.c	2005-05-07 03:37:18.000000000 -0400
++++ linux-2.6.12-rc4-sysfsdyncallback-core/drivers/pci/pci-driver.c	2005-05-07 04:31:56.000000000 -0400
+@@ -56,7 +56,8 @@ pci_device_probe_dynamic(struct pci_driv
+  * and causes the driver to probe for all devices again.
+  */
+ static inline ssize_t
+-store_new_id(struct device_driver *driver, const char *buf, size_t count)
++store_new_id(struct device_driver *driver, const char *buf, size_t count, 
++		void *data)
+ {
+ 	struct dynid *dynid;
+ 	struct bus_type * bus;
+@@ -339,7 +340,7 @@ pci_driver_attr_show(struct kobject * ko
+ 
+ 	if (get_driver(driver)) {
+ 		if (dattr->show)
+-			ret = dattr->show(driver, buf);
++			ret = dattr->show(driver, buf, attr->data);
+ 		put_driver(driver);
+ 	}
+ 	return ret;
+@@ -355,7 +356,7 @@ pci_driver_attr_store(struct kobject * k
+ 
+ 	if (get_driver(driver)) {
+ 		if (dattr->store)
+-			ret = dattr->store(driver, buf, count);
++			ret = dattr->store(driver, buf, count, attr->data);
+ 		put_driver(driver);
+ 	}
+ 	return ret;
+diff -uprN -X dontdiff linux-2.6.12-rc4/fs/sysfs/file.c linux-2.6.12-rc4-sysfsdyncallback-core/fs/sysfs/file.c
+--- linux-2.6.12-rc4/fs/sysfs/file.c	2005-05-07 03:37:22.000000000 -0400
++++ linux-2.6.12-rc4-sysfsdyncallback-core/fs/sysfs/file.c	2005-05-07 04:31:56.000000000 -0400
+@@ -26,7 +26,7 @@ subsys_attr_show(struct kobject * kobj, 
+ 	ssize_t ret = 0;
+ 
+ 	if (sattr->show)
+-		ret = sattr->show(s,page);
++		ret = sattr->show(s,page,attr->data);
+ 	return ret;
+ }
+ 
+@@ -39,7 +39,7 @@ subsys_attr_store(struct kobject * kobj,
+ 	ssize_t ret = 0;
+ 
+ 	if (sattr->store)
+-		ret = sattr->store(s,page,count);
++		ret = sattr->store(s,page,count,attr->data);
+ 	return ret;
+ }
+ 
+diff -uprN -X dontdiff linux-2.6.12-rc4/include/linux/cpufreq.h linux-2.6.12-rc4-sysfsdyncallback-core/include/linux/cpufreq.h
+--- linux-2.6.12-rc4/include/linux/cpufreq.h	2005-05-07 03:37:24.000000000 -0400
++++ linux-2.6.12-rc4-sysfsdyncallback-core/include/linux/cpufreq.h	2005-05-07 04:31:56.000000000 -0400
+@@ -240,8 +240,9 @@ static inline void cpufreq_verify_within
+ 
+ struct freq_attr {
+ 	struct attribute attr;
+-	ssize_t (*show)(struct cpufreq_policy *, char *);
+-	ssize_t (*store)(struct cpufreq_policy *, const char *, size_t count);
++	ssize_t (*show)(struct cpufreq_policy *, char *, void * data);
++	ssize_t (*store)(struct cpufreq_policy *, const char *, size_t count,
++			void * data);
+ };
+ 
+ 
+diff -uprN -X dontdiff linux-2.6.12-rc4/include/linux/device.h linux-2.6.12-rc4-sysfsdyncallback-core/include/linux/device.h
+--- linux-2.6.12-rc4/include/linux/device.h	2005-05-07 03:37:24.000000000 -0400
++++ linux-2.6.12-rc4-sysfsdyncallback-core/include/linux/device.h	2005-05-07 04:31:56.000000000 -0400
+@@ -87,8 +87,9 @@ int bus_for_each_drv(struct bus_type * b
+ 
+ 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 *, char * buf, void * data);
++	ssize_t (*store)(struct bus_type *, const char * buf, size_t count,
++			void * data);
+ };
+ 
+ #define BUS_ATTR(_name,_mode,_show,_store)	\
+@@ -127,8 +128,9 @@ extern struct device_driver *driver_find
+ 
+ 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 *, char * buf, void * data);
++	ssize_t (*store)(struct device_driver *, const char * buf, size_t count,
++			void * data);
+ };
+ 
+ #define DRIVER_ATTR(_name,_mode,_show,_store)	\
+@@ -168,8 +170,9 @@ extern void class_put(struct class *);
+ 
+ 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 *, char * buf, void * data);
++	ssize_t (*store)(struct class *, const char * buf, size_t count, 
++			void * data);
+ };
+ 
+ #define CLASS_ATTR(_name,_mode,_show,_store)			\
+@@ -217,8 +220,8 @@ extern void class_device_put(struct clas
+ 
+ struct class_device_attribute {
+ 	struct attribute	attr;
+-	ssize_t (*show)(struct class_device *, char * buf);
+-	ssize_t (*store)(struct class_device *, const char * buf, size_t count);
++	ssize_t (*show)(struct class_device *, char * buf, void * data);
++	ssize_t (*store)(struct class_device *, const char * buf, size_t count, void * data);
+ };
+ 
+ #define CLASS_DEVICE_ATTR(_name,_mode,_show,_store)		\
+@@ -335,8 +338,9 @@ extern void driver_attach(struct device_
+ 
+ struct device_attribute {
+ 	struct attribute	attr;
+-	ssize_t (*show)(struct device * dev, char * buf);
+-	ssize_t (*store)(struct device * dev, const char * buf, size_t count);
++	ssize_t (*show)(struct device * dev, char * buf, void * data);
++	ssize_t (*store)(struct device * dev, const char * buf, size_t count,
++			void * data);
+ };
+ 
+ #define DEVICE_ATTR(_name,_mode,_show,_store) \
+diff -uprN -X dontdiff linux-2.6.12-rc4/include/linux/genhd.h linux-2.6.12-rc4-sysfsdyncallback-core/include/linux/genhd.h
+--- linux-2.6.12-rc4/include/linux/genhd.h	2005-03-02 02:37:49.000000000 -0500
++++ linux-2.6.12-rc4-sysfsdyncallback-core/include/linux/genhd.h	2005-05-07 04:31:56.000000000 -0400
+@@ -131,7 +131,7 @@ struct gendisk {
+ /* Structure for sysfs attributes on block devices */
+ struct disk_attribute {
+ 	struct attribute attr;
+-	ssize_t (*show)(struct gendisk *, char *);
++	ssize_t (*show)(struct gendisk *, char *, void * data);
+ };
+ 
+ /* 
+diff -uprN -X dontdiff linux-2.6.12-rc4/include/linux/kobject.h linux-2.6.12-rc4-sysfsdyncallback-core/include/linux/kobject.h
+--- linux-2.6.12-rc4/include/linux/kobject.h	2005-05-07 03:37:24.000000000 -0400
++++ linux-2.6.12-rc4-sysfsdyncallback-core/include/linux/kobject.h	2005-05-07 04:31:56.000000000 -0400
+@@ -234,8 +234,9 @@ static inline void subsys_put(struct sub
+ 
+ struct subsys_attribute {
+ 	struct attribute attr;
+-	ssize_t (*show)(struct subsystem *, char *);
+-	ssize_t (*store)(struct subsystem *, const char *, size_t); 
++	ssize_t (*show)(struct subsystem *, char *, void * data);
++	ssize_t (*store)(struct subsystem *, const char *, size_t, 
++			void * data); 
+ };
+ 
+ extern int subsys_create_file(struct subsystem * , struct subsys_attribute *);
+diff -uprN -X dontdiff linux-2.6.12-rc4/include/linux/module.h linux-2.6.12-rc4-sysfsdyncallback-core/include/linux/module.h
+--- linux-2.6.12-rc4/include/linux/module.h	2005-05-07 03:37:24.000000000 -0400
++++ linux-2.6.12-rc4-sysfsdyncallback-core/include/linux/module.h	2005-05-07 04:31:56.000000000 -0400
+@@ -48,9 +48,10 @@ struct module;
+ 
+ struct module_attribute {
+         struct attribute attr;
+-        ssize_t (*show)(struct module_attribute *, struct module *, char *);
++        ssize_t (*show)(struct module_attribute *, struct module *, char *, 
++			void * data);
+         ssize_t (*store)(struct module_attribute *, struct module *,
+-			 const char *, size_t count);
++			 const char *, size_t count, void * data);
+ };
+ 
+ struct module_kobject
+diff -uprN -X dontdiff linux-2.6.12-rc4/include/linux/sysdev.h linux-2.6.12-rc4-sysfsdyncallback-core/include/linux/sysdev.h
+--- linux-2.6.12-rc4/include/linux/sysdev.h	2005-05-07 03:37:24.000000000 -0400
++++ linux-2.6.12-rc4-sysfsdyncallback-core/include/linux/sysdev.h	2005-05-07 04:31:56.000000000 -0400
+@@ -77,14 +77,15 @@ extern void sysdev_unregister(struct sys
+ 
+ struct sysdev_attribute { 
+ 	struct attribute	attr;
+-	ssize_t (*show)(struct sys_device *, char *);
+-	ssize_t (*store)(struct sys_device *, const char *, size_t);
++	ssize_t (*show)(struct sys_device *, char *, void * data);
++	ssize_t (*store)(struct sys_device *, const char *, size_t, 
++			void * data);
+ };
+ 
+ 
+ #define SYSDEV_ATTR(_name,_mode,_show,_store) 		\
+ struct sysdev_attribute attr_##_name = { 			\
+-	.attr = {.name = __stringify(_name), .mode = _mode },	\
++	.attr = {.name = __stringify(_name), .mode = _mode, .data = NULL },	\
+ 	.show	= _show,					\
+ 	.store	= _store,					\
+ };
+diff -uprN -X dontdiff linux-2.6.12-rc4/include/linux/sysfs.h linux-2.6.12-rc4-sysfsdyncallback-core/include/linux/sysfs.h
+--- linux-2.6.12-rc4/include/linux/sysfs.h	2005-05-07 03:37:24.000000000 -0400
++++ linux-2.6.12-rc4-sysfsdyncallback-core/include/linux/sysfs.h	2005-05-07 04:31:56.000000000 -0400
+@@ -19,6 +19,7 @@ struct attribute {
+ 	char			* name;
+ 	struct module 		* owner;
+ 	mode_t			mode;
++	void *                  data;
+ };
+ 
+ struct attribute_group {
+@@ -34,13 +35,15 @@ struct attribute_group {
+  */
+ 
+ #define __ATTR(_name,_mode,_show,_store) { \
+-	.attr = {.name = __stringify(_name), .mode = _mode, .owner = THIS_MODULE },	\
++	.attr = {.name = __stringify(_name), .mode = _mode, 	\
++		.owner = THIS_MODULE, .data   = NULL, },	\
+ 	.show	= _show,					\
+ 	.store	= _store,					\
+ }
+ 
+ #define __ATTR_RO(_name) { \
+-	.attr	= { .name = __stringify(_name), .mode = 0444, .owner = THIS_MODULE },	\
++	.attr	= { .name = __stringify(_name), .mode = 0444, 	\
++		.owner = THIS_MODULE, .data   = NULL,  },	\
+ 	.show	= _name##_show,	\
+ }
+ 
+diff -uprN -X dontdiff linux-2.6.12-rc4/kernel/module.c linux-2.6.12-rc4-sysfsdyncallback-core/kernel/module.c
+--- linux-2.6.12-rc4/kernel/module.c	2005-05-07 03:37:24.000000000 -0400
++++ linux-2.6.12-rc4-sysfsdyncallback-core/kernel/module.c	2005-05-07 04:31:56.000000000 -0400
+@@ -652,7 +652,7 @@ void symbol_put_addr(void *addr)
+ EXPORT_SYMBOL_GPL(symbol_put_addr);
+ 
+ static ssize_t show_refcnt(struct module_attribute *mattr,
+-			   struct module *mod, char *buffer)
++			   struct module *mod, char *buffer, void *sdata)
+ {
+ 	/* sysfs holds a reference */
+ 	return sprintf(buffer, "%u\n", module_refcount(mod)-1);
+@@ -931,7 +931,7 @@ static unsigned long resolve_symbol(Elf_
+  */
+ #ifdef CONFIG_KALLSYMS
+ static ssize_t module_sect_show(struct module_attribute *mattr,
+-				struct module *mod, char *buf)
++				struct module *mod, char *buf, void *sdata)
+ {
+ 	struct module_sect_attr *sattr =
+ 		container_of(mattr, struct module_sect_attr, mattr);
+diff -uprN -X dontdiff linux-2.6.12-rc4/kernel/params.c linux-2.6.12-rc4-sysfsdyncallback-core/kernel/params.c
+--- linux-2.6.12-rc4/kernel/params.c	2005-05-07 03:37:24.000000000 -0400
++++ linux-2.6.12-rc4-sysfsdyncallback-core/kernel/params.c	2005-05-07 04:31:56.000000000 -0400
+@@ -380,7 +380,7 @@ struct module_param_attrs
+ #define to_param_attr(n) container_of(n, struct param_attribute, mattr);
+ 
+ static ssize_t param_attr_show(struct module_attribute *mattr,
+-			       struct module *mod, char *buf)
++			       struct module *mod, char *buf, void *data)
+ {
+ 	int count;
+ 	struct param_attribute *attribute = to_param_attr(mattr);
+@@ -399,7 +399,7 @@ static ssize_t param_attr_show(struct mo
+ /* sysfs always hands a nul-terminated string in buf.  We rely on that. */
+ static ssize_t param_attr_store(struct module_attribute *mattr,
+ 				struct module *owner,
+-				const char *buf, size_t len)
++				const char *buf, size_t len, void *data)
+ {
+  	int err;
+ 	struct param_attribute *attribute = to_param_attr(mattr);
+@@ -634,7 +634,7 @@ static ssize_t module_attr_show(struct k
+ 	if (!try_module_get(mk->mod))
+ 		return -ENODEV;
+ 
+-	ret = attribute->show(attribute, mk->mod, buf);
++	ret = attribute->show(attribute, mk->mod, buf, attr->data);
+ 
+ 	module_put(mk->mod);
+ 
+@@ -658,7 +658,7 @@ static ssize_t module_attr_store(struct 
+ 	if (!try_module_get(mk->mod))
+ 		return -ENODEV;
+ 
+-	ret = attribute->store(attribute, mk->mod, buf, len);
++	ret = attribute->store(attribute, mk->mod, buf, len, attr->data);
+ 
+ 	module_put(mk->mod);
diff --git a/a/content_digest b/N1/content_digest
index a2675db..7b43385 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -1,12 +1,12 @@
- "From\0yani.ioannou@gmail.com (Yani Ioannou)\0"
+ "From\0Yani Ioannou <yani.ioannou@gmail.com>\0"
  "Subject\0[PATCH 2.6.12-rc4 1/3] dynamic sysfs callbacks\0"
- "Date\0Thu, 19 May 2005 06:25:57 +0000\0"
+ "Date\0Sat, 7 May 2005 09:21:34 -0400\0"
  "To\0Greg KH <greg@kroah.com>\0"
  "Cc\0Dmitry Torokhov <dtor_core@ameritech.net>"
   Jean Delvare <khali@linux-fr.org>
   LM Sensors <sensors@stimpy.netroedge.com>
  " linux-kernel@vger.kernel.org\0"
- "\00:1\0"
+ "\01:1\0"
  "b\0"
  "Hi,\n"
  "\n"
@@ -39,13 +39,453 @@
  "\n"
  "This first patch changes the core sysfs attribute and derived attributes.\n"
  "\n"
- "Signed-off-by: Yani Ioannou <yani.ioannou@gmail.com>\n"
- "-------------- next part --------------\n"
- "A non-text attachment was scrubbed...\n"
- "Name: patch-linux-2.6.12-rc4-sysfsdyncallback-core.diff\n"
- "Type: text/x-patch\n"
- "Size: 17284 bytes\n"
- "Desc: not available\n"
- Url : http://lists.lm-sensors.org/pipermail/lm-sensors/attachments/20050507/65896876/patch-linux-2.6.12-rc4-sysfsdyncallback-core.bin
+ Signed-off-by: Yani Ioannou <yani.ioannou@gmail.com>
+ "\01:2\0"
+ "fn\0patch-linux-2.6.12-rc4-sysfsdyncallback-core.diff\0"
+ "b\0"
+ "diff -uprN -X dontdiff linux-2.6.12-rc4/drivers/base/bus.c linux-2.6.12-rc4-sysfsdyncallback-core/drivers/base/bus.c\n"
+ "--- linux-2.6.12-rc4/drivers/base/bus.c\t2005-05-07 03:37:15.000000000 -0400\n"
+ "+++ linux-2.6.12-rc4-sysfsdyncallback-core/drivers/base/bus.c\t2005-05-07 04:31:56.000000000 -0400\n"
+ "@@ -39,7 +39,7 @@ drv_attr_show(struct kobject * kobj, str\n"
+ " \tssize_t ret = 0;\n"
+ " \n"
+ " \tif (drv_attr->show)\n"
+ "-\t\tret = drv_attr->show(drv, buf);\n"
+ "+\t\tret = drv_attr->show(drv, buf, attr->data);\n"
+ " \treturn ret;\n"
+ " }\n"
+ " \n"
+ "@@ -52,7 +52,7 @@ drv_attr_store(struct kobject * kobj, st\n"
+ " \tssize_t ret = 0;\n"
+ " \n"
+ " \tif (drv_attr->store)\n"
+ "-\t\tret = drv_attr->store(drv, buf, count);\n"
+ "+\t\tret = drv_attr->store(drv, buf, count, attr->data);\n"
+ " \treturn ret;\n"
+ " }\n"
+ " \n"
+ "@@ -87,7 +87,7 @@ bus_attr_show(struct kobject * kobj, str\n"
+ " \tssize_t ret = 0;\n"
+ " \n"
+ " \tif (bus_attr->show)\n"
+ "-\t\tret = bus_attr->show(bus, buf);\n"
+ "+\t\tret = bus_attr->show(bus, buf, attr->data);\n"
+ " \treturn ret;\n"
+ " }\n"
+ " \n"
+ "@@ -100,7 +100,7 @@ bus_attr_store(struct kobject * kobj, st\n"
+ " \tssize_t ret = 0;\n"
+ " \n"
+ " \tif (bus_attr->store)\n"
+ "-\t\tret = bus_attr->store(bus, buf, count);\n"
+ "+\t\tret = bus_attr->store(bus, buf, count, attr->data);\n"
+ " \treturn ret;\n"
+ " }\n"
+ " \n"
+ "diff -uprN -X dontdiff linux-2.6.12-rc4/drivers/base/class.c linux-2.6.12-rc4-sysfsdyncallback-core/drivers/base/class.c\n"
+ "--- linux-2.6.12-rc4/drivers/base/class.c\t2005-05-07 03:37:15.000000000 -0400\n"
+ "+++ linux-2.6.12-rc4-sysfsdyncallback-core/drivers/base/class.c\t2005-05-07 04:31:56.000000000 -0400\n"
+ "@@ -29,7 +29,7 @@ class_attr_show(struct kobject * kobj, s\n"
+ " \tssize_t ret = 0;\n"
+ " \n"
+ " \tif (class_attr->show)\n"
+ "-\t\tret = class_attr->show(dc, buf);\n"
+ "+\t\tret = class_attr->show(dc, buf, attr->data);\n"
+ " \treturn ret;\n"
+ " }\n"
+ " \n"
+ "@@ -42,7 +42,7 @@ class_attr_store(struct kobject * kobj, \n"
+ " \tssize_t ret = 0;\n"
+ " \n"
+ " \tif (class_attr->store)\n"
+ "-\t\tret = class_attr->store(dc, buf, count);\n"
+ "+\t\tret = class_attr->store(dc, buf, count, attr->data);\n"
+ " \treturn ret;\n"
+ " }\n"
+ " \n"
+ "@@ -206,7 +206,7 @@ class_device_attr_show(struct kobject * \n"
+ " \tssize_t ret = 0;\n"
+ " \n"
+ " \tif (class_dev_attr->show)\n"
+ "-\t\tret = class_dev_attr->show(cd, buf);\n"
+ "+\t\tret = class_dev_attr->show(cd, buf, attr->data);\n"
+ " \treturn ret;\n"
+ " }\n"
+ " \n"
+ "@@ -219,7 +219,7 @@ class_device_attr_store(struct kobject *\n"
+ " \tssize_t ret = 0;\n"
+ " \n"
+ " \tif (class_dev_attr->store)\n"
+ "-\t\tret = class_dev_attr->store(cd, buf, count);\n"
+ "+\t\tret = class_dev_attr->store(cd, buf, count, attr->data);\n"
+ " \treturn ret;\n"
+ " }\n"
+ " \n"
+ "@@ -371,7 +371,7 @@ static void class_device_remove_attrs(st\n"
+ " \t}\n"
+ " }\n"
+ " \n"
+ "-static ssize_t show_dev(struct class_device *class_dev, char *buf)\n"
+ "+static ssize_t show_dev(struct class_device *class_dev, char *buf, void *data)\n"
+ " {\n"
+ " \treturn print_dev_t(buf, class_dev->devt);\n"
+ " }\n"
+ "diff -uprN -X dontdiff linux-2.6.12-rc4/drivers/base/core.c linux-2.6.12-rc4-sysfsdyncallback-core/drivers/base/core.c\n"
+ "--- linux-2.6.12-rc4/drivers/base/core.c\t2005-05-07 03:37:15.000000000 -0400\n"
+ "+++ linux-2.6.12-rc4-sysfsdyncallback-core/drivers/base/core.c\t2005-05-07 04:31:56.000000000 -0400\n"
+ "@@ -41,7 +41,7 @@ dev_attr_show(struct kobject * kobj, str\n"
+ " \tssize_t ret = 0;\n"
+ " \n"
+ " \tif (dev_attr->show)\n"
+ "-\t\tret = dev_attr->show(dev, buf);\n"
+ "+\t\tret = dev_attr->show(dev, buf, attr->data);\n"
+ " \treturn ret;\n"
+ " }\n"
+ " \n"
+ "@@ -54,7 +54,7 @@ dev_attr_store(struct kobject * kobj, st\n"
+ " \tssize_t ret = 0;\n"
+ " \n"
+ " \tif (dev_attr->store)\n"
+ "-\t\tret = dev_attr->store(dev, buf, count);\n"
+ "+\t\tret = dev_attr->store(dev, buf, count, attr->data);\n"
+ " \treturn ret;\n"
+ " }\n"
+ " \n"
+ "diff -uprN -X dontdiff linux-2.6.12-rc4/drivers/base/sys.c linux-2.6.12-rc4-sysfsdyncallback-core/drivers/base/sys.c\n"
+ "--- linux-2.6.12-rc4/drivers/base/sys.c\t2005-05-07 03:37:15.000000000 -0400\n"
+ "+++ linux-2.6.12-rc4-sysfsdyncallback-core/drivers/base/sys.c\t2005-05-07 04:31:56.000000000 -0400\n"
+ "@@ -36,7 +36,7 @@ sysdev_show(struct kobject * kobj, struc\n"
+ " \tstruct sysdev_attribute * sysdev_attr = to_sysdev_attr(attr);\n"
+ " \n"
+ " \tif (sysdev_attr->show)\n"
+ "-\t\treturn sysdev_attr->show(sysdev, buffer);\n"
+ "+\t\treturn sysdev_attr->show(sysdev, buffer, attr->data);\n"
+ " \treturn 0;\n"
+ " }\n"
+ " \n"
+ "@@ -49,7 +49,7 @@ sysdev_store(struct kobject * kobj, stru\n"
+ " \tstruct sysdev_attribute * sysdev_attr = to_sysdev_attr(attr);\n"
+ " \n"
+ " \tif (sysdev_attr->store)\n"
+ "-\t\treturn sysdev_attr->store(sysdev, buffer, count);\n"
+ "+\t\treturn sysdev_attr->store(sysdev, buffer, count, attr->data);\n"
+ " \treturn 0;\n"
+ " }\n"
+ " \n"
+ "diff -uprN -X dontdiff linux-2.6.12-rc4/drivers/block/genhd.c linux-2.6.12-rc4-sysfsdyncallback-core/drivers/block/genhd.c\n"
+ "--- linux-2.6.12-rc4/drivers/block/genhd.c\t2005-05-07 03:37:15.000000000 -0400\n"
+ "+++ linux-2.6.12-rc4-sysfsdyncallback-core/drivers/block/genhd.c\t2005-05-07 04:31:56.000000000 -0400\n"
+ "@@ -325,7 +325,7 @@ static ssize_t disk_attr_show(struct kob\n"
+ " \tssize_t ret = 0;\n"
+ " \n"
+ " \tif (disk_attr->show)\n"
+ "-\t\tret = disk_attr->show(disk,page);\n"
+ "+\t\tret = disk_attr->show(disk,page,attr->data);\n"
+ " \treturn ret;\n"
+ " }\n"
+ " \n"
+ "diff -uprN -X dontdiff linux-2.6.12-rc4/drivers/cpufreq/cpufreq.c linux-2.6.12-rc4-sysfsdyncallback-core/drivers/cpufreq/cpufreq.c\n"
+ "--- linux-2.6.12-rc4/drivers/cpufreq/cpufreq.c\t2005-05-07 03:37:16.000000000 -0400\n"
+ "+++ linux-2.6.12-rc4-sysfsdyncallback-core/drivers/cpufreq/cpufreq.c\t2005-05-07 04:31:56.000000000 -0400\n"
+ "@@ -521,7 +521,7 @@ static ssize_t show(struct kobject * kob\n"
+ " \tpolicy = cpufreq_cpu_get(policy->cpu);\n"
+ " \tif (!policy)\n"
+ " \t\treturn -EINVAL;\n"
+ "-\tret = fattr->show ? fattr->show(policy,buf) : 0;\n"
+ "+\tret = fattr->show ? fattr->show(policy,buf,attr->data) : 0;\n"
+ " \tcpufreq_cpu_put(policy);\n"
+ " \treturn ret;\n"
+ " }\n"
+ "@@ -535,7 +535,7 @@ static ssize_t store(struct kobject * ko\n"
+ " \tpolicy = cpufreq_cpu_get(policy->cpu);\n"
+ " \tif (!policy)\n"
+ " \t\treturn -EINVAL;\n"
+ "-\tret = fattr->store ? fattr->store(policy,buf,count) : 0;\n"
+ "+\tret = fattr->store ? fattr->store(policy,buf,count,attr->data) : 0;\n"
+ " \tcpufreq_cpu_put(policy);\n"
+ " \treturn ret;\n"
+ " }\n"
+ "diff -uprN -X dontdiff linux-2.6.12-rc4/drivers/pci/pci-driver.c linux-2.6.12-rc4-sysfsdyncallback-core/drivers/pci/pci-driver.c\n"
+ "--- linux-2.6.12-rc4/drivers/pci/pci-driver.c\t2005-05-07 03:37:18.000000000 -0400\n"
+ "+++ linux-2.6.12-rc4-sysfsdyncallback-core/drivers/pci/pci-driver.c\t2005-05-07 04:31:56.000000000 -0400\n"
+ "@@ -56,7 +56,8 @@ pci_device_probe_dynamic(struct pci_driv\n"
+ "  * and causes the driver to probe for all devices again.\n"
+ "  */\n"
+ " static inline ssize_t\n"
+ "-store_new_id(struct device_driver *driver, const char *buf, size_t count)\n"
+ "+store_new_id(struct device_driver *driver, const char *buf, size_t count, \n"
+ "+\t\tvoid *data)\n"
+ " {\n"
+ " \tstruct dynid *dynid;\n"
+ " \tstruct bus_type * bus;\n"
+ "@@ -339,7 +340,7 @@ pci_driver_attr_show(struct kobject * ko\n"
+ " \n"
+ " \tif (get_driver(driver)) {\n"
+ " \t\tif (dattr->show)\n"
+ "-\t\t\tret = dattr->show(driver, buf);\n"
+ "+\t\t\tret = dattr->show(driver, buf, attr->data);\n"
+ " \t\tput_driver(driver);\n"
+ " \t}\n"
+ " \treturn ret;\n"
+ "@@ -355,7 +356,7 @@ pci_driver_attr_store(struct kobject * k\n"
+ " \n"
+ " \tif (get_driver(driver)) {\n"
+ " \t\tif (dattr->store)\n"
+ "-\t\t\tret = dattr->store(driver, buf, count);\n"
+ "+\t\t\tret = dattr->store(driver, buf, count, attr->data);\n"
+ " \t\tput_driver(driver);\n"
+ " \t}\n"
+ " \treturn ret;\n"
+ "diff -uprN -X dontdiff linux-2.6.12-rc4/fs/sysfs/file.c linux-2.6.12-rc4-sysfsdyncallback-core/fs/sysfs/file.c\n"
+ "--- linux-2.6.12-rc4/fs/sysfs/file.c\t2005-05-07 03:37:22.000000000 -0400\n"
+ "+++ linux-2.6.12-rc4-sysfsdyncallback-core/fs/sysfs/file.c\t2005-05-07 04:31:56.000000000 -0400\n"
+ "@@ -26,7 +26,7 @@ subsys_attr_show(struct kobject * kobj, \n"
+ " \tssize_t ret = 0;\n"
+ " \n"
+ " \tif (sattr->show)\n"
+ "-\t\tret = sattr->show(s,page);\n"
+ "+\t\tret = sattr->show(s,page,attr->data);\n"
+ " \treturn ret;\n"
+ " }\n"
+ " \n"
+ "@@ -39,7 +39,7 @@ subsys_attr_store(struct kobject * kobj,\n"
+ " \tssize_t ret = 0;\n"
+ " \n"
+ " \tif (sattr->store)\n"
+ "-\t\tret = sattr->store(s,page,count);\n"
+ "+\t\tret = sattr->store(s,page,count,attr->data);\n"
+ " \treturn ret;\n"
+ " }\n"
+ " \n"
+ "diff -uprN -X dontdiff linux-2.6.12-rc4/include/linux/cpufreq.h linux-2.6.12-rc4-sysfsdyncallback-core/include/linux/cpufreq.h\n"
+ "--- linux-2.6.12-rc4/include/linux/cpufreq.h\t2005-05-07 03:37:24.000000000 -0400\n"
+ "+++ linux-2.6.12-rc4-sysfsdyncallback-core/include/linux/cpufreq.h\t2005-05-07 04:31:56.000000000 -0400\n"
+ "@@ -240,8 +240,9 @@ static inline void cpufreq_verify_within\n"
+ " \n"
+ " struct freq_attr {\n"
+ " \tstruct attribute attr;\n"
+ "-\tssize_t (*show)(struct cpufreq_policy *, char *);\n"
+ "-\tssize_t (*store)(struct cpufreq_policy *, const char *, size_t count);\n"
+ "+\tssize_t (*show)(struct cpufreq_policy *, char *, void * data);\n"
+ "+\tssize_t (*store)(struct cpufreq_policy *, const char *, size_t count,\n"
+ "+\t\t\tvoid * data);\n"
+ " };\n"
+ " \n"
+ " \n"
+ "diff -uprN -X dontdiff linux-2.6.12-rc4/include/linux/device.h linux-2.6.12-rc4-sysfsdyncallback-core/include/linux/device.h\n"
+ "--- linux-2.6.12-rc4/include/linux/device.h\t2005-05-07 03:37:24.000000000 -0400\n"
+ "+++ linux-2.6.12-rc4-sysfsdyncallback-core/include/linux/device.h\t2005-05-07 04:31:56.000000000 -0400\n"
+ "@@ -87,8 +87,9 @@ int bus_for_each_drv(struct bus_type * b\n"
+ " \n"
+ " struct bus_attribute {\n"
+ " \tstruct attribute\tattr;\n"
+ "-\tssize_t (*show)(struct bus_type *, char * buf);\n"
+ "-\tssize_t (*store)(struct bus_type *, const char * buf, size_t count);\n"
+ "+\tssize_t (*show)(struct bus_type *, char * buf, void * data);\n"
+ "+\tssize_t (*store)(struct bus_type *, const char * buf, size_t count,\n"
+ "+\t\t\tvoid * data);\n"
+ " };\n"
+ " \n"
+ " #define BUS_ATTR(_name,_mode,_show,_store)\t\\\n"
+ "@@ -127,8 +128,9 @@ extern struct device_driver *driver_find\n"
+ " \n"
+ " struct driver_attribute {\n"
+ " \tstruct attribute\tattr;\n"
+ "-\tssize_t (*show)(struct device_driver *, char * buf);\n"
+ "-\tssize_t (*store)(struct device_driver *, const char * buf, size_t count);\n"
+ "+\tssize_t (*show)(struct device_driver *, char * buf, void * data);\n"
+ "+\tssize_t (*store)(struct device_driver *, const char * buf, size_t count,\n"
+ "+\t\t\tvoid * data);\n"
+ " };\n"
+ " \n"
+ " #define DRIVER_ATTR(_name,_mode,_show,_store)\t\\\n"
+ "@@ -168,8 +170,9 @@ extern void class_put(struct class *);\n"
+ " \n"
+ " struct class_attribute {\n"
+ " \tstruct attribute\tattr;\n"
+ "-\tssize_t (*show)(struct class *, char * buf);\n"
+ "-\tssize_t (*store)(struct class *, const char * buf, size_t count);\n"
+ "+\tssize_t (*show)(struct class *, char * buf, void * data);\n"
+ "+\tssize_t (*store)(struct class *, const char * buf, size_t count, \n"
+ "+\t\t\tvoid * data);\n"
+ " };\n"
+ " \n"
+ " #define CLASS_ATTR(_name,_mode,_show,_store)\t\t\t\\\n"
+ "@@ -217,8 +220,8 @@ extern void class_device_put(struct clas\n"
+ " \n"
+ " struct class_device_attribute {\n"
+ " \tstruct attribute\tattr;\n"
+ "-\tssize_t (*show)(struct class_device *, char * buf);\n"
+ "-\tssize_t (*store)(struct class_device *, const char * buf, size_t count);\n"
+ "+\tssize_t (*show)(struct class_device *, char * buf, void * data);\n"
+ "+\tssize_t (*store)(struct class_device *, const char * buf, size_t count, void * data);\n"
+ " };\n"
+ " \n"
+ " #define CLASS_DEVICE_ATTR(_name,_mode,_show,_store)\t\t\\\n"
+ "@@ -335,8 +338,9 @@ extern void driver_attach(struct device_\n"
+ " \n"
+ " struct device_attribute {\n"
+ " \tstruct attribute\tattr;\n"
+ "-\tssize_t (*show)(struct device * dev, char * buf);\n"
+ "-\tssize_t (*store)(struct device * dev, const char * buf, size_t count);\n"
+ "+\tssize_t (*show)(struct device * dev, char * buf, void * data);\n"
+ "+\tssize_t (*store)(struct device * dev, const char * buf, size_t count,\n"
+ "+\t\t\tvoid * data);\n"
+ " };\n"
+ " \n"
+ " #define DEVICE_ATTR(_name,_mode,_show,_store) \\\n"
+ "diff -uprN -X dontdiff linux-2.6.12-rc4/include/linux/genhd.h linux-2.6.12-rc4-sysfsdyncallback-core/include/linux/genhd.h\n"
+ "--- linux-2.6.12-rc4/include/linux/genhd.h\t2005-03-02 02:37:49.000000000 -0500\n"
+ "+++ linux-2.6.12-rc4-sysfsdyncallback-core/include/linux/genhd.h\t2005-05-07 04:31:56.000000000 -0400\n"
+ "@@ -131,7 +131,7 @@ struct gendisk {\n"
+ " /* Structure for sysfs attributes on block devices */\n"
+ " struct disk_attribute {\n"
+ " \tstruct attribute attr;\n"
+ "-\tssize_t (*show)(struct gendisk *, char *);\n"
+ "+\tssize_t (*show)(struct gendisk *, char *, void * data);\n"
+ " };\n"
+ " \n"
+ " /* \n"
+ "diff -uprN -X dontdiff linux-2.6.12-rc4/include/linux/kobject.h linux-2.6.12-rc4-sysfsdyncallback-core/include/linux/kobject.h\n"
+ "--- linux-2.6.12-rc4/include/linux/kobject.h\t2005-05-07 03:37:24.000000000 -0400\n"
+ "+++ linux-2.6.12-rc4-sysfsdyncallback-core/include/linux/kobject.h\t2005-05-07 04:31:56.000000000 -0400\n"
+ "@@ -234,8 +234,9 @@ static inline void subsys_put(struct sub\n"
+ " \n"
+ " struct subsys_attribute {\n"
+ " \tstruct attribute attr;\n"
+ "-\tssize_t (*show)(struct subsystem *, char *);\n"
+ "-\tssize_t (*store)(struct subsystem *, const char *, size_t); \n"
+ "+\tssize_t (*show)(struct subsystem *, char *, void * data);\n"
+ "+\tssize_t (*store)(struct subsystem *, const char *, size_t, \n"
+ "+\t\t\tvoid * data); \n"
+ " };\n"
+ " \n"
+ " extern int subsys_create_file(struct subsystem * , struct subsys_attribute *);\n"
+ "diff -uprN -X dontdiff linux-2.6.12-rc4/include/linux/module.h linux-2.6.12-rc4-sysfsdyncallback-core/include/linux/module.h\n"
+ "--- linux-2.6.12-rc4/include/linux/module.h\t2005-05-07 03:37:24.000000000 -0400\n"
+ "+++ linux-2.6.12-rc4-sysfsdyncallback-core/include/linux/module.h\t2005-05-07 04:31:56.000000000 -0400\n"
+ "@@ -48,9 +48,10 @@ struct module;\n"
+ " \n"
+ " struct module_attribute {\n"
+ "         struct attribute attr;\n"
+ "-        ssize_t (*show)(struct module_attribute *, struct module *, char *);\n"
+ "+        ssize_t (*show)(struct module_attribute *, struct module *, char *, \n"
+ "+\t\t\tvoid * data);\n"
+ "         ssize_t (*store)(struct module_attribute *, struct module *,\n"
+ "-\t\t\t const char *, size_t count);\n"
+ "+\t\t\t const char *, size_t count, void * data);\n"
+ " };\n"
+ " \n"
+ " struct module_kobject\n"
+ "diff -uprN -X dontdiff linux-2.6.12-rc4/include/linux/sysdev.h linux-2.6.12-rc4-sysfsdyncallback-core/include/linux/sysdev.h\n"
+ "--- linux-2.6.12-rc4/include/linux/sysdev.h\t2005-05-07 03:37:24.000000000 -0400\n"
+ "+++ linux-2.6.12-rc4-sysfsdyncallback-core/include/linux/sysdev.h\t2005-05-07 04:31:56.000000000 -0400\n"
+ "@@ -77,14 +77,15 @@ extern void sysdev_unregister(struct sys\n"
+ " \n"
+ " struct sysdev_attribute { \n"
+ " \tstruct attribute\tattr;\n"
+ "-\tssize_t (*show)(struct sys_device *, char *);\n"
+ "-\tssize_t (*store)(struct sys_device *, const char *, size_t);\n"
+ "+\tssize_t (*show)(struct sys_device *, char *, void * data);\n"
+ "+\tssize_t (*store)(struct sys_device *, const char *, size_t, \n"
+ "+\t\t\tvoid * data);\n"
+ " };\n"
+ " \n"
+ " \n"
+ " #define SYSDEV_ATTR(_name,_mode,_show,_store) \t\t\\\n"
+ " struct sysdev_attribute attr_##_name = { \t\t\t\\\n"
+ "-\t.attr = {.name = __stringify(_name), .mode = _mode },\t\\\n"
+ "+\t.attr = {.name = __stringify(_name), .mode = _mode, .data = NULL },\t\\\n"
+ " \t.show\t= _show,\t\t\t\t\t\\\n"
+ " \t.store\t= _store,\t\t\t\t\t\\\n"
+ " };\n"
+ "diff -uprN -X dontdiff linux-2.6.12-rc4/include/linux/sysfs.h linux-2.6.12-rc4-sysfsdyncallback-core/include/linux/sysfs.h\n"
+ "--- linux-2.6.12-rc4/include/linux/sysfs.h\t2005-05-07 03:37:24.000000000 -0400\n"
+ "+++ linux-2.6.12-rc4-sysfsdyncallback-core/include/linux/sysfs.h\t2005-05-07 04:31:56.000000000 -0400\n"
+ "@@ -19,6 +19,7 @@ struct attribute {\n"
+ " \tchar\t\t\t* name;\n"
+ " \tstruct module \t\t* owner;\n"
+ " \tmode_t\t\t\tmode;\n"
+ "+\tvoid *                  data;\n"
+ " };\n"
+ " \n"
+ " struct attribute_group {\n"
+ "@@ -34,13 +35,15 @@ struct attribute_group {\n"
+ "  */\n"
+ " \n"
+ " #define __ATTR(_name,_mode,_show,_store) { \\\n"
+ "-\t.attr = {.name = __stringify(_name), .mode = _mode, .owner = THIS_MODULE },\t\\\n"
+ "+\t.attr = {.name = __stringify(_name), .mode = _mode, \t\\\n"
+ "+\t\t.owner = THIS_MODULE, .data   = NULL, },\t\\\n"
+ " \t.show\t= _show,\t\t\t\t\t\\\n"
+ " \t.store\t= _store,\t\t\t\t\t\\\n"
+ " }\n"
+ " \n"
+ " #define __ATTR_RO(_name) { \\\n"
+ "-\t.attr\t= { .name = __stringify(_name), .mode = 0444, .owner = THIS_MODULE },\t\\\n"
+ "+\t.attr\t= { .name = __stringify(_name), .mode = 0444, \t\\\n"
+ "+\t\t.owner = THIS_MODULE, .data   = NULL,  },\t\\\n"
+ " \t.show\t= _name##_show,\t\\\n"
+ " }\n"
+ " \n"
+ "diff -uprN -X dontdiff linux-2.6.12-rc4/kernel/module.c linux-2.6.12-rc4-sysfsdyncallback-core/kernel/module.c\n"
+ "--- linux-2.6.12-rc4/kernel/module.c\t2005-05-07 03:37:24.000000000 -0400\n"
+ "+++ linux-2.6.12-rc4-sysfsdyncallback-core/kernel/module.c\t2005-05-07 04:31:56.000000000 -0400\n"
+ "@@ -652,7 +652,7 @@ void symbol_put_addr(void *addr)\n"
+ " EXPORT_SYMBOL_GPL(symbol_put_addr);\n"
+ " \n"
+ " static ssize_t show_refcnt(struct module_attribute *mattr,\n"
+ "-\t\t\t   struct module *mod, char *buffer)\n"
+ "+\t\t\t   struct module *mod, char *buffer, void *sdata)\n"
+ " {\n"
+ " \t/* sysfs holds a reference */\n"
+ " \treturn sprintf(buffer, \"%u\\n\", module_refcount(mod)-1);\n"
+ "@@ -931,7 +931,7 @@ static unsigned long resolve_symbol(Elf_\n"
+ "  */\n"
+ " #ifdef CONFIG_KALLSYMS\n"
+ " static ssize_t module_sect_show(struct module_attribute *mattr,\n"
+ "-\t\t\t\tstruct module *mod, char *buf)\n"
+ "+\t\t\t\tstruct module *mod, char *buf, void *sdata)\n"
+ " {\n"
+ " \tstruct module_sect_attr *sattr =\n"
+ " \t\tcontainer_of(mattr, struct module_sect_attr, mattr);\n"
+ "diff -uprN -X dontdiff linux-2.6.12-rc4/kernel/params.c linux-2.6.12-rc4-sysfsdyncallback-core/kernel/params.c\n"
+ "--- linux-2.6.12-rc4/kernel/params.c\t2005-05-07 03:37:24.000000000 -0400\n"
+ "+++ linux-2.6.12-rc4-sysfsdyncallback-core/kernel/params.c\t2005-05-07 04:31:56.000000000 -0400\n"
+ "@@ -380,7 +380,7 @@ struct module_param_attrs\n"
+ " #define to_param_attr(n) container_of(n, struct param_attribute, mattr);\n"
+ " \n"
+ " static ssize_t param_attr_show(struct module_attribute *mattr,\n"
+ "-\t\t\t       struct module *mod, char *buf)\n"
+ "+\t\t\t       struct module *mod, char *buf, void *data)\n"
+ " {\n"
+ " \tint count;\n"
+ " \tstruct param_attribute *attribute = to_param_attr(mattr);\n"
+ "@@ -399,7 +399,7 @@ static ssize_t param_attr_show(struct mo\n"
+ " /* sysfs always hands a nul-terminated string in buf.  We rely on that. */\n"
+ " static ssize_t param_attr_store(struct module_attribute *mattr,\n"
+ " \t\t\t\tstruct module *owner,\n"
+ "-\t\t\t\tconst char *buf, size_t len)\n"
+ "+\t\t\t\tconst char *buf, size_t len, void *data)\n"
+ " {\n"
+ "  \tint err;\n"
+ " \tstruct param_attribute *attribute = to_param_attr(mattr);\n"
+ "@@ -634,7 +634,7 @@ static ssize_t module_attr_show(struct k\n"
+ " \tif (!try_module_get(mk->mod))\n"
+ " \t\treturn -ENODEV;\n"
+ " \n"
+ "-\tret = attribute->show(attribute, mk->mod, buf);\n"
+ "+\tret = attribute->show(attribute, mk->mod, buf, attr->data);\n"
+ " \n"
+ " \tmodule_put(mk->mod);\n"
+ " \n"
+ "@@ -658,7 +658,7 @@ static ssize_t module_attr_store(struct \n"
+ " \tif (!try_module_get(mk->mod))\n"
+ " \t\treturn -ENODEV;\n"
+ " \n"
+ "-\tret = attribute->store(attribute, mk->mod, buf, len);\n"
+ "+\tret = attribute->store(attribute, mk->mod, buf, len, attr->data);\n"
+ " \n"
+ " \tmodule_put(mk->mod);"
 
-453c73cd6887e1b5edc353c8de138845ca553605c555eccf078a7d1ec5d1326a
+2f1728e1f1da74e06f969ffc90372480a69d59a77567fbc7bcfeb2e9b65687c9

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.