Page MenuHomeFreeBSD

D21564.diff
No OneTemporary

D21564.diff

Index: head/sys/compat/linuxkpi/common/include/linux/device.h
===================================================================
--- head/sys/compat/linuxkpi/common/include/linux/device.h
+++ head/sys/compat/linuxkpi/common/include/linux/device.h
@@ -54,6 +54,7 @@
struct kobject kobj;
devclass_t bsdclass;
const struct dev_pm_ops *pm;
+ const struct attribute_group **dev_groups;
void (*class_release)(struct class *class);
void (*dev_release)(struct device *dev);
char * (*devnode)(struct device *dev, umode_t *mode);
@@ -424,6 +425,8 @@
kobject_init(&dev->kobj, &linux_dev_ktype);
kobject_add(&dev->kobj, &dev->class->kobj, dev_name(dev));
+ sysfs_create_groups(&dev->kobj, dev->class->dev_groups);
+
return (0);
}
@@ -431,6 +434,8 @@
device_unregister(struct device *dev)
{
device_t bsddev;
+
+ sysfs_remove_groups(&dev->kobj, dev->class->dev_groups);
bsddev = dev->bsddev;
dev->bsddev = NULL;
Index: head/sys/compat/linuxkpi/common/include/linux/sysfs.h
===================================================================
--- head/sys/compat/linuxkpi/common/include/linux/sysfs.h
+++ head/sys/compat/linuxkpi/common/include/linux/sysfs.h
@@ -62,12 +62,13 @@
#define ATTRIBUTE_GROUPS(_name) \
static struct attribute_group _name##_group = { \
+ .name = __stringify(_name), \
.attrs = _name##_attrs, \
}; \
- static struct attribute_group *_name##_groups[] = { \
+ static const struct attribute_group *_name##_groups[] = { \
&_name##_group, \
NULL, \
- };
+ }
/*
* Handle our generic '\0' terminated 'C' string.
@@ -210,12 +211,25 @@
int error = 0;
int i;
+ if (grps == NULL)
+ goto done;
for (i = 0; grps[i] && !error; i++)
error = sysfs_create_group(kobj, grps[i]);
while (error && --i >= 0)
sysfs_remove_group(kobj, grps[i]);
-
+done:
return (error);
+}
+
+static inline void
+sysfs_remove_groups(struct kobject *kobj, const struct attribute_group **grps)
+{
+ int i;
+
+ if (grps == NULL)
+ return;
+ for (i = 0; grps[i]; i++)
+ sysfs_remove_group(kobj, grps[i]);
}
static inline int
Index: head/sys/sys/param.h
===================================================================
--- head/sys/sys/param.h
+++ head/sys/sys/param.h
@@ -60,7 +60,7 @@
* in the range 5 to 9.
*/
#undef __FreeBSD_version
-#define __FreeBSD_version 1300054 /* Master, propagated to newvers */
+#define __FreeBSD_version 1300055 /* Master, propagated to newvers */
/*
* __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD,

File Metadata

Mime Type
text/plain
Expires
Sun, Feb 2, 11:49 AM (21 h, 8 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
16400497
Default Alt Text
D21564.diff (2 KB)

Event Timeline