static DBusConnection *connection;
-static GStaticRWLock element_lock = G_STATIC_RW_LOCK_INIT;
static GNode *element_root = NULL;
-
static GSList *driver_list = NULL;
-
static gchar *device_filter = NULL;
static struct {
} else
node = element_root;
- g_static_rw_lock_reader_lock(&element_lock);
g_node_traverse(node, G_PRE_ORDER, G_TRAVERSE_ALL, -1,
append_path, &filter);
- g_static_rw_lock_reader_unlock(&element_lock);
}
struct count_data {
} else
node = element_root;
- g_static_rw_lock_reader_lock(&element_lock);
g_node_traverse(node, G_PRE_ORDER, G_TRAVERSE_ALL, -1,
count_element, &data);
- g_static_rw_lock_reader_unlock(&element_lock);
return data.count;
}
if (!driver->probe)
return;
- g_static_rw_lock_writer_lock(&element_lock);
-
if (element_root != NULL)
g_node_traverse(element_root, G_PRE_ORDER,
G_TRAVERSE_ALL, -1, probe_driver, driver);
-
- g_static_rw_lock_writer_unlock(&element_lock);
}
/**
if (!driver->probe)
return -EINVAL;
- g_static_rw_lock_writer_lock(&element_lock);
-
driver_list = g_slist_insert_sorted(driver_list, driver,
compare_priority);
g_node_traverse(element_root, G_PRE_ORDER,
G_TRAVERSE_ALL, -1, probe_driver, driver);
- g_static_rw_lock_writer_unlock(&element_lock);
-
return 0;
}
{
DBG("driver %p name %s", driver, driver->name);
- g_static_rw_lock_writer_lock(&element_lock);
-
driver_list = g_slist_remove(driver_list, driver);
if (element_root != NULL)
g_node_traverse(element_root, G_POST_ORDER,
G_TRAVERSE_ALL, -1, remove_driver, driver);
-
- g_static_rw_lock_writer_unlock(&element_lock);
}
/**
GSList *list;
GNode *node;
- g_static_rw_lock_writer_lock(&element_lock);
-
__connman_element_lock(element);
if (element->parent) {
DBUS_TYPE_INVALID);
#endif
- g_static_rw_lock_writer_unlock(&element_lock);
-
__connman_element_store(element);
- g_static_rw_lock_writer_lock(&element_lock);
-
for (list = driver_list; list; list = list->next) {
struct connman_driver *driver = list->data;
break;
}
}
-
- g_static_rw_lock_writer_unlock(&element_lock);
}
/**
DBG("element %p name %s", element, element->name);
- g_static_rw_lock_writer_lock(&element_lock);
-
node = g_node_find(element_root, G_PRE_ORDER, G_TRAVERSE_ALL, element);
if (node != NULL)
g_node_traverse(node, G_POST_ORDER,
G_TRAVERSE_ALL, -1, remove_element, NULL);
-
- g_static_rw_lock_writer_unlock(&element_lock);
}
void connman_element_unregister_children(struct connman_element *element)
DBG("element %p name %s", element, element->name);
- g_static_rw_lock_writer_lock(&element_lock);
-
node = g_node_find(element_root, G_PRE_ORDER, G_TRAVERSE_ALL, element);
if (node != NULL)
g_node_traverse(node, G_POST_ORDER,
G_TRAVERSE_ALL, -1, remove_element, element);
-
- g_static_rw_lock_writer_unlock(&element_lock);
}
static gboolean update_element(GNode *node, gpointer user_data)
DBG("element %p name %s", element, element->name);
- g_static_rw_lock_reader_lock(&element_lock);
-
node = g_node_find(element_root, G_PRE_ORDER, G_TRAVERSE_ALL, element);
if (node != NULL)
g_node_traverse(node, G_PRE_ORDER,
G_TRAVERSE_ALL, -1, update_element, NULL);
-
- g_static_rw_lock_reader_unlock(&element_lock);
}
int connman_element_set_enabled(struct connman_element *element,
device_filter = g_strdup(device);
- g_static_rw_lock_writer_lock(&element_lock);
-
element = connman_element_create("root");
element->path = g_strdup("/");
element_root = g_node_new(element);
- g_static_rw_lock_writer_unlock(&element_lock);
-
__connman_device_init();
return 0;
__connman_device_cleanup();
- g_static_rw_lock_writer_lock(&element_lock);
g_node_traverse(element_root, G_POST_ORDER, G_TRAVERSE_ALL, -1,
free_driver, NULL);
- g_static_rw_lock_writer_unlock(&element_lock);
- g_static_rw_lock_writer_lock(&element_lock);
g_node_traverse(element_root, G_POST_ORDER, G_TRAVERSE_ALL, -1,
free_node, NULL);
- g_static_rw_lock_writer_unlock(&element_lock);
- g_static_rw_lock_writer_lock(&element_lock);
g_node_destroy(element_root);
element_root = NULL;
- g_static_rw_lock_writer_unlock(&element_lock);
g_free(device_filter);
#include "connman.h"
-static GStaticRWLock rtnl_lock = G_STATIC_RW_LOCK_INIT;
static GSList *rtnl_list = NULL;
static gint compare_priority(gconstpointer a, gconstpointer b)
{
DBG("rtnl %p name %s", rtnl, rtnl->name);
- g_static_rw_lock_writer_lock(&rtnl_lock);
-
rtnl_list = g_slist_insert_sorted(rtnl_list, rtnl,
compare_priority);
- g_static_rw_lock_writer_unlock(&rtnl_lock);
-
return 0;
}
{
DBG("rtnl %p name %s", rtnl, rtnl->name);
- g_static_rw_lock_writer_lock(&rtnl_lock);
-
rtnl_list = g_slist_remove(rtnl_list, rtnl);
-
- g_static_rw_lock_writer_unlock(&rtnl_lock);
}
static void process_newlink(unsigned short type, int index,
DBG("index %d", index);
- g_static_rw_lock_reader_lock(&rtnl_lock);
-
for (list = rtnl_list; list; list = list->next) {
struct connman_rtnl *rtnl = list->data;
if (rtnl->newlink)
rtnl->newlink(type, index, flags, change);
}
-
- g_static_rw_lock_reader_unlock(&rtnl_lock);
}
static void process_dellink(unsigned short type, int index,
DBG("index %d", index);
- g_static_rw_lock_reader_lock(&rtnl_lock);
-
for (list = rtnl_list; list; list = list->next) {
struct connman_rtnl *rtnl = list->data;
if (rtnl->dellink)
rtnl->dellink(type, index, flags, change);
}
-
- g_static_rw_lock_reader_unlock(&rtnl_lock);
}
static inline void print_inet(struct rtattr *attr, const char *name, int family)
#include "connman.h"
-static GStaticRWLock security_lock = G_STATIC_RW_LOCK_INIT;
static GSList *security_list = NULL;
static gint compare_priority(gconstpointer a, gconstpointer b)
{
DBG("security %p name %s", security, security->name);
- g_static_rw_lock_writer_lock(&security_lock);
-
security_list = g_slist_insert_sorted(security_list, security,
compare_priority);
- g_static_rw_lock_writer_unlock(&security_lock);
-
return 0;
}
{
DBG("security %p name %s", security, security->name);
- g_static_rw_lock_writer_lock(&security_lock);
-
security_list = g_slist_remove(security_list, security);
-
- g_static_rw_lock_writer_unlock(&security_lock);
}
int __connman_security_check_privileges(DBusMessage *message)
sender = dbus_message_get_sender(message);
- g_static_rw_lock_reader_lock(&security_lock);
-
for (list = security_list; list; list = list->next) {
struct connman_security *security = list->data;
}
}
- g_static_rw_lock_reader_unlock(&security_lock);
-
return err;
}