X-Git-Url: http://git.archive.openwrt.org/?a=blobdiff_plain;ds=sidebyside;f=device.c;h=ef706853e7806771cff66274a35433457f0e7ab7;hb=702c681db04574dfbd0955e60e4b4ba555dc077c;hp=57b0ac96ac2dade9eb7a83f828faadfa9741987b;hpb=b18fb36bd3c7615733c351c99691e1139f386c0c;p=project%2Fnetifd.git diff --git a/device.c b/device.c index 57b0ac9..ef70685 100644 --- a/device.c +++ b/device.c @@ -3,19 +3,12 @@ #include #include -#include - #include "netifd.h" #include "system.h" static struct avl_tree devices; -static int avl_strcmp(const void *k1, const void *k2, void *ptr) -{ - return strcmp(k1, k2); -} - -static void API_CTOR dev_init(void) +static void __init dev_init(void) { avl_init(&devices, avl_strcmp, false, NULL); } @@ -197,3 +190,16 @@ void remove_device_user(struct device_user *dep) dep->dev = NULL; } + +void +cleanup_devices(void) +{ + struct device *dev, *tmp; + + avl_for_each_element_safe(&devices, dev, avl, tmp) { + if (!list_empty(&dev->users)) + continue; + + free_device(dev); + } +}