summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <greg@kroah.com>2004-02-03 21:48:53 -0800
committerGreg Kroah-Hartman <greg@kroah.com>2004-02-03 21:48:53 -0800
commit9d6cc8f23f0e0d00a29faabf059e12cdd2c1becb (patch)
tree35a99d7de988fb6683cd0fe59615d53edf62ae04
parenta2db42827b775b1110b6cf29f530a8e0246ede19 (diff)
[PATCH] Driver core: remove device_unregister_wait() as it's a very bad idea.
-rw-r--r--drivers/base/core.c23
-rw-r--r--include/linux/device.h2
2 files changed, 0 insertions, 25 deletions
diff --git a/drivers/base/core.c b/drivers/base/core.c
index 84bc01e0ce59..6c84ff06026b 100644
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
@@ -76,7 +76,6 @@ static struct sysfs_ops dev_sysfs_ops = {
static void device_release(struct kobject * kobj)
{
struct device * dev = to_dev(kobj);
- struct completion * c = dev->complete;
if (dev->release)
dev->release(dev);
@@ -86,8 +85,6 @@ static void device_release(struct kobject * kobj)
dev->bus_id);
WARN_ON(1);
}
- if (c)
- complete(c);
}
static struct kobj_type ktype_device = {
@@ -355,25 +352,6 @@ void device_unregister(struct device * dev)
/**
- * device_unregister_wait - Unregister device and wait for it to be freed.
- * @dev: Device to unregister.
- *
- * For the cases where the caller needs to wait for all references to
- * be dropped from the device before continuing (e.g. modules with
- * statically allocated devices), this function uses a completion struct
- * to wait, along with a matching complete() in device_release() above.
- */
-
-void device_unregister_wait(struct device * dev)
-{
- struct completion c;
- init_completion(&c);
- dev->complete = &c;
- device_unregister(dev);
- wait_for_completion(&c);
-}
-
-/**
* device_for_each_child - device child iterator.
* @dev: parent struct device.
* @data: data for the callback.
@@ -421,7 +399,6 @@ EXPORT_SYMBOL(device_register);
EXPORT_SYMBOL(device_del);
EXPORT_SYMBOL(device_unregister);
-EXPORT_SYMBOL(device_unregister_wait);
EXPORT_SYMBOL(get_device);
EXPORT_SYMBOL(put_device);
EXPORT_SYMBOL(device_find);
diff --git a/include/linux/device.h b/include/linux/device.h
index c8f5aa7d9f5a..6da63dac06b0 100644
--- a/include/linux/device.h
+++ b/include/linux/device.h
@@ -265,7 +265,6 @@ struct device {
struct list_head children;
struct device * parent;
- struct completion * complete; /* Notification for freeing device. */
struct kobject kobj;
char bus_id[BUS_ID_SIZE]; /* position on parent bus */
@@ -313,7 +312,6 @@ dev_set_drvdata (struct device *dev, void *data)
*/
extern int device_register(struct device * dev);
extern void device_unregister(struct device * dev);
-extern void device_unregister_wait(struct device * dev);
extern void device_initialize(struct device * dev);
extern int device_add(struct device * dev);
extern void device_del(struct device * dev);