summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2011-04-05 03:48:59 +0200
committerFelix Fietkau <nbd@openwrt.org>2011-04-05 03:48:59 +0200
commitb18fb36bd3c7615733c351c99691e1139f386c0c (patch)
treebb6d8d5c1015379fcf9864c3bda5d7b0c9d4ac2b
parent6443a383c54dee0cd3b9858801e0b765147a4ef4 (diff)
add a helper function for freeing a device
-rw-r--r--device.c6
-rw-r--r--device.h6
2 files changed, 9 insertions, 3 deletions
diff --git a/device.c b/device.c
index 6b409a0..57b0ac9 100644
--- a/device.c
+++ b/device.c
@@ -20,7 +20,7 @@ static void API_CTOR dev_init(void)
avl_init(&devices, avl_strcmp, false, NULL);
}
-static void free_device(struct device *dev)
+static void free_simple_device(struct device *dev)
{
cleanup_device(dev);
free(dev);
@@ -126,7 +126,7 @@ struct device *get_device(const char *name, bool create)
static const struct device_type simple_type = {
.name = "Device",
.check_state = system_if_check,
- .free = free_device,
+ .free = free_simple_device,
};
struct device *dev;
@@ -192,7 +192,7 @@ void remove_device_user(struct device_user *dep)
if (list_empty(&dev->users)) {
/* all references have gone away, remove this device */
- dev->type->free(dev);
+ free_device(dev);
}
dep->dev = NULL;
diff --git a/device.h b/device.h
index bfd044a..79aec32 100644
--- a/device.h
+++ b/device.h
@@ -82,6 +82,12 @@ struct device_hotplug_ops {
int (*del)(struct device *main, struct device *member);
};
+static inline void
+free_device(struct device *dev)
+{
+ dev->type->free(dev);
+}
+
void init_virtual_device(struct device *dev, const struct device_type *type, const char *name);
int init_device(struct device *iface, const struct device_type *type, const char *ifname);
void cleanup_device(struct device *iface);