[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <1225328796.5970.62.camel@nga.site>
Date: Thu, 30 Oct 2008 02:06:36 +0100
From: Kay Sievers <kay.sievers@...y.org>
To: Greg KH <greg@...ah.com>
Cc: linux-kernel <linux-kernel@...r.kernel.org>
Subject: driver core: get rid of bus_id ()
Hey Greg,
this will be the final remove of bus_id and BUS_ID_SIZE, when
everything else is converted.
Would be nice, if you can put that into your tree without pushing
it to -next for now, but to catch newly added bus_id stuff in
staging.
Thanks,
Kay
From: Kay Sievers <kay.sievers@...y.org>
Subject: driver core: get rid of bus_id and BUS_ID_SIZE
Signed-Off-By: Kay Sievers <kay.sievers@...y.org>
---
diff --git a/drivers/base/core.c b/drivers/base/core.c
index 8c2cc26..4e22175 100644
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
@@ -777,11 +777,12 @@ static void device_remove_class_symlinks(struct device *dev)
int dev_set_name(struct device *dev, const char *fmt, ...)
{
va_list vargs;
+ int err;
va_start(vargs, fmt);
- vsnprintf(dev->bus_id, sizeof(dev->bus_id), fmt, vargs);
+ err = kobject_set_name_vargs(&dev->kobj, fmt, vargs);
va_end(vargs);
- return 0;
+ return err;
}
EXPORT_SYMBOL_GPL(dev_set_name);
@@ -858,12 +859,17 @@ int device_add(struct device *dev)
if (!dev)
goto done;
- /* Temporarily support init_name if it is set.
- * It will override bus_id for now */
- if (dev->init_name)
- dev_set_name(dev, "%s", dev->init_name);
+ /*
+ * for statically allocated devices, which should all be converted
+ * some day, we need to initialize the name. We prevent reading back
+ * the name, and force the use of dev_name()
+ */
+ if (dev->init_name) {
+ dev_set_name(dev, dev->init_name);
+ dev->init_name = NULL;
+ }
- if (!strlen(dev->bus_id))
+ if (!dev_name(dev))
goto done;
pr_debug("device: '%s': %s\n", dev->bus_id, __func__);
@@ -1248,7 +1254,10 @@ struct device *device_create_vargs(struct class *class, struct device *parent,
dev->release = device_create_release;
dev_set_drvdata(dev, drvdata);
- vsnprintf(dev->bus_id, BUS_ID_SIZE, fmt, args);
+ retval = kobject_set_name_vargs(&dev->kobj, fmt, args);
+ if (retval)
+ goto error;
+
retval = device_register(dev);
if (retval)
goto error;
@@ -1352,19 +1361,15 @@ int device_rename(struct device *dev, char *new_name)
old_class_name = make_class_name(dev->class->name, &dev->kobj);
#endif
- old_device_name = kmalloc(BUS_ID_SIZE, GFP_KERNEL);
+ old_device_name = kstrdup(dev_name(dev), GFP_KERNEL);
if (!old_device_name) {
error = -ENOMEM;
goto out;
}
- strlcpy(old_device_name, dev->bus_id, BUS_ID_SIZE);
- strlcpy(dev->bus_id, new_name, BUS_ID_SIZE);
error = kobject_rename(&dev->kobj, new_name);
- if (error) {
- strlcpy(dev->bus_id, old_device_name, BUS_ID_SIZE);
+ if (error)
goto out;
- }
#ifdef CONFIG_SYSFS_DEPRECATED
if (old_class_name) {
diff --git a/include/linux/device.h b/include/linux/device.h
index 1a3686d..836fa99 100644
--- a/include/linux/device.h
+++ b/include/linux/device.h
@@ -25,8 +25,6 @@
#include <asm/atomic.h>
#include <asm/device.h>
-#define BUS_ID_SIZE 20
-
struct device;
struct device_driver;
struct driver_private;
@@ -372,7 +370,6 @@ struct device {
struct device *parent;
struct kobject kobj;
- char bus_id[BUS_ID_SIZE]; /* position on parent bus */
const char *init_name; /* initial name of the device */
struct device_type *type;
unsigned uevent_suppress:1;
@@ -424,8 +421,7 @@ struct device {
static inline const char *dev_name(const struct device *dev)
{
- /* will be changed into kobject_name(&dev->kobj) in the near future */
- return dev->bus_id;
+ return kobject_name(&dev->kobj);
}
extern int dev_set_name(struct device *dev, const char *name, ...)
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists