Introduce LIST_HEAD macro and use it in audiod_command.
authorAndre Noll <maan@systemlinux.org>
Sun, 19 Jul 2009 13:23:42 +0000 (15:23 +0200)
committerAndre Noll <maan@systemlinux.org>
Sun, 19 Jul 2009 13:23:42 +0000 (15:23 +0200)
Using initialized list heads where possible allows to get rid of the checks whether the
list is already initialized.

audiod_command.c
list.h

index 8b21b55..2eaf26b 100644 (file)
@@ -58,8 +58,7 @@ struct stat_client {
        struct list_head node;
 };
 
-static struct list_head client_list;
-static int client_list_initialized;
+static LIST_HEAD(client_list);
 static int num_clients;
 
 /** The list of all status items used by para_{server,audiod,gui}. */
@@ -69,8 +68,6 @@ static void dump_stat_client_list(void)
 {
        struct stat_client *sc;
 
-       if (!client_list_initialized)
-               return;
        list_for_each_entry(sc, &client_list, node)
                PARA_INFO_LOG("stat client on fd %d\n", sc->fd);
 }
@@ -96,10 +93,6 @@ static int stat_client_add(int fd, uint64_t mask, int parser_friendly)
                        MAX_STAT_CLIENTS);
                return -E_TOO_MANY_CLIENTS;
        }
-       if (!client_list_initialized) {
-               INIT_LIST_HEAD(&client_list);
-               client_list_initialized = 1;
-       }
        PARA_INFO_LOG("adding client on fd %d\n", fd);
        new_client = para_calloc(sizeof(struct stat_client));
        new_client->fd = fd;
@@ -126,8 +119,6 @@ void stat_client_write_item(int item_num)
        struct para_buffer pfpb = {.flags = PBF_SIZE_PREFIX};
        const uint64_t one = 1;
 
-       if (!client_list_initialized)
-               return;
        list_for_each_entry_safe(sc, tmp, &client_list, node) {
                int fd = sc->fd, ret;
 
diff --git a/list.h b/list.h
index de04ab9..db2e849 100644 (file)
--- a/list.h
+++ b/list.h
@@ -33,6 +33,10 @@ struct list_head {
        struct list_head *prev;
 };
 
+/** Define an initialized list head. */
+#define LIST_HEAD(name) struct list_head name = { &(name), &(name) }
+
+
 /** must be called before using any other list functions */
 #define INIT_LIST_HEAD(ptr) do { \
        (ptr)->next = (ptr); (ptr)->prev = (ptr); \