diff --git a/common/utils/itti_analyzer/Makefile.am b/common/utils/itti_analyzer/Makefile.am
index 6fa0fe69b0fd84ebcaf4d68a9d0f2ffb52540c21..b1a371cfe8743e8aebbedf2ab1d02d00b68f2bbf 100644
--- a/common/utils/itti_analyzer/Makefile.am
+++ b/common/utils/itti_analyzer/Makefile.am
@@ -1,5 +1,6 @@
 AM_CFLAGS =	\
 	@ADD_CFLAGS@	\
+	-I$(top_srcdir)/common	\
 	-I$(top_srcdir)/libparser	\
 	-I$(top_srcdir)/libresolver	\
 	-I$(top_srcdir)/libbuffers	\
diff --git a/common/utils/itti_analyzer/itti_analyzer.c b/common/utils/itti_analyzer/itti_analyzer.c
index 31a0faaba360032a78327e69ed0419cd60681f57..bd9d80f16c8bb294b158c4f8e02e96d3886485a6 100644
--- a/common/utils/itti_analyzer/itti_analyzer.c
+++ b/common/utils/itti_analyzer/itti_analyzer.c
@@ -16,10 +16,76 @@
 int debug_buffers = 1;
 int debug_parser = 0;
 
+static void
+console_log_handler(const char *log_domain, GLogLevelFlags log_level,
+                    const char *message, gpointer user_data)
+{
+    time_t curr;
+    struct tm *today;
+    const char *level;
+
+    switch(log_level & G_LOG_LEVEL_MASK) {
+        case G_LOG_LEVEL_ERROR:
+            level = "Err ";
+            break;
+        case G_LOG_LEVEL_CRITICAL:
+            level = "Crit";
+            break;
+        case G_LOG_LEVEL_WARNING:
+            level = "Warn";
+            break;
+        case G_LOG_LEVEL_MESSAGE:
+            level = "Msg ";
+            break;
+        case G_LOG_LEVEL_INFO:
+            level = "Info";
+            break;
+        case G_LOG_LEVEL_DEBUG:
+            level = "Dbg ";
+            break;
+        default:
+            fprintf(stderr, "unknown log_level %u\n", log_level);
+            level = NULL;
+            g_assert_not_reached();
+    }
+
+    /* create a "timestamp" */
+    time(&curr);
+    today = localtime(&curr);
+
+    fprintf(stderr, "%02u:%02u:%02u %8s %s %s\n",
+            today->tm_hour, today->tm_min, today->tm_sec,
+            log_domain != NULL ? log_domain : "",
+            level, message);
+}
+
 int main(int argc, char *argv[])
 {
     int ret = 0;
 
+    GLogLevelFlags log_flags;
+
+    log_flags = (GLogLevelFlags)
+        (G_LOG_LEVEL_ERROR      |
+        G_LOG_LEVEL_CRITICAL    |
+        G_LOG_LEVEL_WARNING     |
+        G_LOG_LEVEL_MESSAGE     |
+        G_LOG_LEVEL_INFO        |
+        G_LOG_LEVEL_DEBUG       |
+        G_LOG_FLAG_FATAL        |
+        G_LOG_FLAG_RECURSION);
+
+    if (!g_thread_supported())
+        g_thread_init(NULL);
+
+    /* Secure gtk */
+    gdk_threads_init();
+
+    /* Initialize the widget set */
+    gtk_init(&argc, &argv);
+
+    g_log_set_handler(NULL, log_flags, console_log_handler, NULL);
+
     CHECK_FCT(ui_gtk_initialize(argc, argv));
 
     return ret;
diff --git a/common/utils/itti_analyzer/libbuffers/Makefile.am b/common/utils/itti_analyzer/libbuffers/Makefile.am
index 3a54bd3c38a41ce761bac4bb030dd773eb91ee2b..7af612e5e74221acec7113ea25a5adcd248829ea 100644
--- a/common/utils/itti_analyzer/libbuffers/Makefile.am
+++ b/common/utils/itti_analyzer/libbuffers/Makefile.am
@@ -1,6 +1,6 @@
 AM_CFLAGS =	\
 	@ADD_CFLAGS@	\
-	-I$(top_srcdir)	\
+	-I$(top_srcdir)/common	\
 	-I$(top_srcdir)/libparser	\
 	-I$(top_srcdir)/libui
 
diff --git a/common/utils/itti_analyzer/libbuffers/buffers.c b/common/utils/itti_analyzer/libbuffers/buffers.c
index 1d7ad911b4efe2ee99c1124f9a40c389430bb257..60af2b54450e416f7b825f9f5f15ca2da85ac5f6 100644
--- a/common/utils/itti_analyzer/libbuffers/buffers.c
+++ b/common/utils/itti_analyzer/libbuffers/buffers.c
@@ -3,7 +3,9 @@
 #include <stdio.h>
 #include <string.h>
 
-#include "../rc.h"
+#include <glib.h>
+
+#include "rc.h"
 #include "buffers.h"
 
 extern int debug_buffers;
@@ -57,7 +59,7 @@ int buffer_fetch(buffer_t *buffer, uint32_t offset, int size, void *value)
         return -1;
 
     if (buffer->size_bytes < ((offset >> 3) + size)) {
-        printf("Not enough data to fetch\n");
+        g_debug("Not enough data to fetch");
         return -1;
     }
 
@@ -190,8 +192,8 @@ int buffer_has_enouch_data(buffer_t *buffer, uint32_t offset, uint32_t to_get)
         return -1;
     underflow = (buffer->size_bytes >= ((offset + to_get) / 8)) ? 0 : -1;
     if (underflow && debug_buffers)
-        printf("Detected Underflow offset %u, to_get %u, buffer size %u\n",
-               offset, to_get, buffer->size_bytes);
+        g_debug("Detected Underflow offset %u, to_get %u, buffer size %u\n",
+                offset, to_get, buffer->size_bytes);
     return underflow;
 }
 
diff --git a/common/utils/itti_analyzer/libbuffers/file.c b/common/utils/itti_analyzer/libbuffers/file.c
index 6106e9719f27c702f4d81d6f8f08b71497a664ac..730735890a832cf0a68eddc97fe1f3d9cdc8f3ee 100644
--- a/common/utils/itti_analyzer/libbuffers/file.c
+++ b/common/utils/itti_analyzer/libbuffers/file.c
@@ -5,7 +5,9 @@
 #include <sys/stat.h>
 #include <fcntl.h>
 
-#include "../rc.h"
+#include <glib.h>
+
+#include "rc.h"
 #include "buffers.h"
 #include "file.h"
 
@@ -22,7 +24,7 @@ int file_read_dump(buffer_t **buffer, const char *filename)
         return RC_BAD_PARAM;
 
     if ((fd = open(filename, O_RDONLY)) == -1) {
-        fprintf(stderr, "Cannot open %s for reading, returned %d:%s\n",
+        g_debug("Cannot open %s for reading, returned %d:%s\n",
                 filename, errno, strerror(errno));
         return RC_FAIL;
     }
@@ -33,7 +35,7 @@ int file_read_dump(buffer_t **buffer, const char *filename)
         current_read = read(fd, data, READ_BUFFER_SIZE);
         if (current_read == -1)
         {
-            fprintf(stderr, "Failed to read data from file, returned %d:%s\n",
+            g_debug("Failed to read data from file, returned %d:%s\n",
                     errno, strerror(errno));
             return RC_FAIL;
         }
diff --git a/common/utils/itti_analyzer/libbuffers/socket.c b/common/utils/itti_analyzer/libbuffers/socket.c
index f22f71e2e1dba362a708f9689282b7ee68942767..18f76295e891c55e52f9e04657488a9faebbff19 100644
--- a/common/utils/itti_analyzer/libbuffers/socket.c
+++ b/common/utils/itti_analyzer/libbuffers/socket.c
@@ -8,7 +8,7 @@
 
 #include <gtk/gtk.h>
 
-#include "../rc.h"
+#include "rc.h"
 
 #include "ui_interface.h"
 #include "ui_notifications.h"
diff --git a/common/utils/itti_analyzer/libparser/Makefile.am b/common/utils/itti_analyzer/libparser/Makefile.am
index cb975b6ce2afb127f33ed745c5203fd8e3a3f5b4..bf80db28674040aff8e62e810335a2b661fe3024 100644
--- a/common/utils/itti_analyzer/libparser/Makefile.am
+++ b/common/utils/itti_analyzer/libparser/Makefile.am
@@ -1,6 +1,6 @@
 AM_CFLAGS =	\
 	@ADD_CFLAGS@	\
-	-I$(top_srcdir)	\
+	-I$(top_srcdir)/common	\
 	-I$(top_srcdir)/libbuffers	\
 	-I$(top_srcdir)/libui
 
diff --git a/common/utils/itti_analyzer/libparser/field_type.c b/common/utils/itti_analyzer/libparser/field_type.c
index 8434540cd682987e6462292db59131540506d158..a8cc5a0ebb9ac5b166328366444ca90391b83fc5 100644
--- a/common/utils/itti_analyzer/libparser/field_type.c
+++ b/common/utils/itti_analyzer/libparser/field_type.c
@@ -3,7 +3,7 @@
 #include <assert.h>
 #include <string.h>
 
-#include "../rc.h"
+#include "rc.h"
 
 #include "field_type.h"
 #include "buffers.h"
diff --git a/common/utils/itti_analyzer/libparser/xml_parse.h b/common/utils/itti_analyzer/libparser/xml_parse.h
index 982e357dc26a0a256845be273831672400fa1f41..b1df13ea898ff777d4d791c9f49b20055f1ce3b6 100644
--- a/common/utils/itti_analyzer/libparser/xml_parse.h
+++ b/common/utils/itti_analyzer/libparser/xml_parse.h
@@ -1,4 +1,4 @@
-#include "../rc.h"
+#include "rc.h"
 #include "types.h"
 
 #ifndef XML_PARSE_H_
diff --git a/common/utils/itti_analyzer/libresolver/Makefile.am b/common/utils/itti_analyzer/libresolver/Makefile.am
index eb8c34abc092c45cc85f4ce7fd64dcbde3e99e5b..5911c3c4df57059a4cf8245c5175b718e8fe3200 100644
--- a/common/utils/itti_analyzer/libresolver/Makefile.am
+++ b/common/utils/itti_analyzer/libresolver/Makefile.am
@@ -1,6 +1,6 @@
 AM_CFLAGS =	\
 	@ADD_CFLAGS@	\
-	-I$(top_srcdir)	\
+	-I$(top_srcdir)/common	\
 	-I$(top_srcdir)/libparser	\
 	-I$(top_srcdir)/libbuffers
 
diff --git a/common/utils/itti_analyzer/libresolver/locate_root.c b/common/utils/itti_analyzer/libresolver/locate_root.c
index a42e33fffca56c96a4d4bced97a3c6ea1aedfc6a..e0eaadfdffbe7bd531f5f44dbfbc6d0a148fa613 100644
--- a/common/utils/itti_analyzer/libresolver/locate_root.c
+++ b/common/utils/itti_analyzer/libresolver/locate_root.c
@@ -1,7 +1,9 @@
 #include <stdio.h>
 #include <string.h>
 
-#include "../rc.h"
+#include <glib.h>
+
+#include "rc.h"
 
 #include "types.h"
 #include "locate_root.h"
@@ -13,15 +15,15 @@ int locate_root(const char *root_name, types_t *head, types_t **root) {
      * This element is the entry for other sub-types.
      */
     if (!root_name || (strlen (root_name) == 0)) {
-        printf ("FATAL: no root element name provided\n");
+        g_warning("FATAL: no root element name provided");
         return -1;
     }
     if (!head) {
-        printf ("Empty list detected\n");
+        g_warning("Empty list detected");
         return -1;
     }
     if (!root) {
-        printf ("NULL root reference\n");
+        g_warning("NULL root reference");
         return -1;
     }
 
@@ -44,11 +46,11 @@ int locate_type(const char *type_name, types_t *head, types_t **type) {
      * This element is the entry for other sub-types.
      */
     if (!type_name) {
-        printf ("FATAL: no root element name provided\n");
+        g_warning("FATAL: no root element name provided");
         return RC_BAD_PARAM;
     }
     if (!head) {
-        printf ("Empty list detected\n");
+        g_warning("Empty list detected");
         return RC_BAD_PARAM;
     }
 
diff --git a/common/utils/itti_analyzer/libresolver/resolve_typedef.c b/common/utils/itti_analyzer/libresolver/resolve_typedef.c
deleted file mode 100644
index 24036e7a2f207581a46b0205c7c235208901a941..0000000000000000000000000000000000000000
--- a/common/utils/itti_analyzer/libresolver/resolve_typedef.c
+++ /dev/null
@@ -1,25 +0,0 @@
-#include <stdio.h>
-#include <string.h>
-
-#include "types.h"
-
-int resolve_typedefs(types_t **head)
-{
-    types_t *next_type;
-
-    if (!head) {
-        printf("Empty list detected\n");
-        return -1;
-    }
-
-    for (next_type = head; next_type; next_type = next_type->next)
-    {
-        /* Only resolve typedef */
-        if (next_type->type != TYPE_TYPEDEF)
-            continue;
-
-        printf("Trying to resolve typedef %s\n", next_type->name);
-    }
-
-    return 0;
-}
diff --git a/common/utils/itti_analyzer/libresolver/resolvers.c b/common/utils/itti_analyzer/libresolver/resolvers.c
index ffc143096ae76765174a5fcc5127985605b29f02..e707fa49ea17a041de4ab1927f950f49d72c0dec 100644
--- a/common/utils/itti_analyzer/libresolver/resolvers.c
+++ b/common/utils/itti_analyzer/libresolver/resolvers.c
@@ -2,6 +2,8 @@
 #include <stdlib.h>
 #include <string.h>
 
+#include <glib.h>
+
 #include "types.h"
 #include "resolvers.h"
 
@@ -17,7 +19,7 @@ int search_id(types_t *head, types_t **found, int id)
     types_t *next_type;
 
     if (!head) {
-        printf("Empty list detected\n");
+        g_warning("Empty list detected");
         return RESOLV_LIST_EMPTY;
     }
 
@@ -37,7 +39,7 @@ int search_file(types_t *head, types_t **found, int file_id)
     types_t *next_type;
 
     if (!head) {
-        printf("Empty list detected\n");
+        g_warning("Empty list detected");
         return RESOLV_LIST_EMPTY;
     }
 
@@ -59,7 +61,7 @@ int resolve_typedefs(types_t **head)
     types_t *next_type;
 
     if (!head) {
-        printf("Empty list detected\n");
+        g_warning("Empty list detected");
         return RESOLV_LIST_EMPTY;
     }
 
@@ -86,7 +88,7 @@ int resolve_struct(types_t **head)
     types_t *next_type;
 
     if (!head) {
-        printf("Empty list detected\n");
+        g_warning("Empty list detected");
         return RESOLV_LIST_EMPTY;
     }
 
@@ -144,7 +146,7 @@ int resolve_union(types_t **head)
     types_t *next_type;
 
     if (!head) {
-        printf("Empty list detected\n");
+        g_warning("Empty list detected");
         return RESOLV_LIST_EMPTY;
     }
 
@@ -194,7 +196,7 @@ int resolve_pointer_type(types_t **head)
     types_t *next_type;
 
     if (!head) {
-        printf("Empty list detected\n");
+        g_warning("Empty list detected");
         return RESOLV_LIST_EMPTY;
     }
 
@@ -221,7 +223,7 @@ int resolve_reference(types_t **head)
     types_t *next_type;
 
     if (!head) {
-        printf("Empty list detected\n");
+        g_warning("Empty list detected");
         return RESOLV_LIST_EMPTY;
     }
 
@@ -248,7 +250,7 @@ int resolve_field(types_t **head)
     types_t *next_type;
 
     if (!head) {
-        printf("Empty list detected\n");
+        g_warning("Empty list detected");
         return RESOLV_LIST_EMPTY;
     }
 
@@ -275,7 +277,7 @@ int resolve_array(types_t **head)
     types_t *next_type;
 
     if (!head) {
-        printf("Empty list detected\n");
+        g_warning("Empty list detected");
         return RESOLV_LIST_EMPTY;
     }
 
@@ -302,7 +304,7 @@ int resolve_file(types_t **head)
     types_t *next_type;
 
     if (!head) {
-        printf("Empty list detected\n");
+        g_warning("Empty list detected");
         return RESOLV_LIST_EMPTY;
     }
 
diff --git a/common/utils/itti_analyzer/libui/Makefile.am b/common/utils/itti_analyzer/libui/Makefile.am
index 5ff5826156c1edf858ca1a3bd67fd205fcbbb957..4c42ead836ada39629d7c58d6af322858b5443dc 100644
--- a/common/utils/itti_analyzer/libui/Makefile.am
+++ b/common/utils/itti_analyzer/libui/Makefile.am
@@ -1,5 +1,6 @@
 AM_CFLAGS =	\
 	@ADD_CFLAGS@	\
+	-I$(top_srcdir)/common	\
 	-I$(top_srcdir)/libbuffers	\
 	-I$(top_srcdir)/libparser
 
diff --git a/common/utils/itti_analyzer/libui/ui_callbacks.c b/common/utils/itti_analyzer/libui/ui_callbacks.c
index 7331d696c58f5ad1fdfc9df83fd8da96440a93c3..9975d1352b2a86fc659c20c108fb1f79f64c0c02 100644
--- a/common/utils/itti_analyzer/libui/ui_callbacks.c
+++ b/common/utils/itti_analyzer/libui/ui_callbacks.c
@@ -3,7 +3,7 @@
 
 #include <gtk/gtk.h>
 
-#include "../rc.h"
+#include "rc.h"
 
 #include "ui_main_screen.h"
 #include "ui_callbacks.h"
@@ -16,7 +16,7 @@ gboolean ui_callback_on_open(GtkWidget *widget,
                              GdkEvent  *event,
                              gpointer   data)
 {
-    g_print ("Open event occurred\n");
+    g_debug("Open event occurred");
     CHECK_FCT(ui_file_chooser());
     return TRUE;
 }
@@ -61,7 +61,7 @@ ui_callback_on_select_signal(GtkTreeSelection *selection,
         }
         else
         {
-            g_print ("%s is going to be unselected.\n", name);
+            g_debug("%s is going to be unselected", name);
         }
 
         g_free(name);
@@ -77,7 +77,7 @@ gboolean ui_callback_on_connect(GtkWidget *widget,
     uint16_t port;
     const char *ip;
 
-    g_print ("Connect event occurred\n");
+    g_debug("Connect event occurred");
 
     port = atoi(gtk_entry_get_text(GTK_ENTRY(ui_main_data.portentry)));
     ip = gtk_entry_get_text(GTK_ENTRY(ui_main_data.ipentry));
@@ -94,7 +94,7 @@ gboolean ui_callback_on_disconnect(GtkWidget *widget,
 {
     /* We have to retrieve the ip address and port of remote host */
 
-    g_print ("Disconnect event occurred\n");
+    g_debug("Disconnect event occurred");
     ui_interface.socket_disconnect();
     return TRUE;
 }
@@ -104,8 +104,7 @@ gboolean ui_callback_on_tree_view_select(GtkWidget *widget,
                                          gpointer   data)
 {
     /* We have to retrieve the ip address and port of remote host */
-
-    g_print ("List selection event occurred\n");
+    g_debug("List selection event occurred");
     return TRUE;
 }
 
diff --git a/common/utils/itti_analyzer/libui/ui_main_screen.c b/common/utils/itti_analyzer/libui/ui_main_screen.c
index fd4973a2225b6be599613edbf8004f7ac6ba1073..288c75551d531e0eb5e9968596204dde748521ed 100644
--- a/common/utils/itti_analyzer/libui/ui_main_screen.c
+++ b/common/utils/itti_analyzer/libui/ui_main_screen.c
@@ -9,7 +9,7 @@
 
 #include <gtk/gtk.h>
 
-#include "../rc.h"
+#include "rc.h"
 
 #include "ui_interface.h"
 #include "ui_main_screen.h"
@@ -26,20 +26,8 @@ int ui_gtk_initialize(int argc, char *argv[])
 
     memset(&ui_main_data, 0, sizeof(ui_main_data_t));
 
-    if (!g_thread_supported())
-        g_thread_init(NULL);
-
-    /* Secure gtk */
-    gdk_threads_init();
-
-    /* Obtain gtk's global lock */
-    gdk_threads_enter();
-
-    /* Initialize the widget set */
-    gtk_init(&argc, &argv);
-
     /* Create the main window */
-    ui_main_data.window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+    ui_main_data.window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
 
     gtk_window_set_position(GTK_WINDOW(ui_main_data.window), GTK_WIN_POS_CENTER);
     gtk_window_set_default_size(GTK_WINDOW(ui_main_data.window), 1024, 800);
diff --git a/common/utils/itti_analyzer/libui/ui_menu_bar.c b/common/utils/itti_analyzer/libui/ui_menu_bar.c
index 485a65e872745d0a39305d32e3b9b4f036279616..2ea1506d795e067112f4268a46a3d4bfa5215bda 100644
--- a/common/utils/itti_analyzer/libui/ui_menu_bar.c
+++ b/common/utils/itti_analyzer/libui/ui_menu_bar.c
@@ -1,6 +1,6 @@
 #include <gtk/gtk.h>
 
-#include "../rc.h"
+#include "rc.h"
 #include "ui_main_screen.h"
 #include "ui_menu_bar.h"
 #include "ui_callbacks.h"
diff --git a/common/utils/itti_analyzer/libui/ui_notebook.c b/common/utils/itti_analyzer/libui/ui_notebook.c
index 9aaa480e62c267950df84dfb68248c5bb50f677d..524200f9fd2150c6e9a3e3b8fa6f5f8955f42164 100644
--- a/common/utils/itti_analyzer/libui/ui_notebook.c
+++ b/common/utils/itti_analyzer/libui/ui_notebook.c
@@ -6,7 +6,7 @@
 #include <stdint.h>
 #include <gtk/gtk.h>
 
-#include "../rc.h"
+#include "rc.h"
 
 #include "ui_notebook.h"
 #include "ui_tree_view.h"
diff --git a/common/utils/itti_analyzer/libui/ui_notifications.c b/common/utils/itti_analyzer/libui/ui_notifications.c
index d900ceac05525f42d708559b0ada1bfc2a8dc82e..17f0d9d3b2e8bd3096ff9b891267f92107c8202c 100644
--- a/common/utils/itti_analyzer/libui/ui_notifications.c
+++ b/common/utils/itti_analyzer/libui/ui_notifications.c
@@ -4,7 +4,7 @@
 
 #include <gtk/gtk.h>
 
-#include "../rc.h"
+#include "rc.h"
 
 #include "ui_interface.h"
 #include "ui_main_screen.h"
diff --git a/common/utils/itti_analyzer/libui/ui_signal_dissect_view.c b/common/utils/itti_analyzer/libui/ui_signal_dissect_view.c
index 82f6af0ae1e884226a0c9c7dd52d3de4a0c7ea0c..54bc91a5d59ab0d66699f5691a6dc7b1f8e7a207 100644
--- a/common/utils/itti_analyzer/libui/ui_signal_dissect_view.c
+++ b/common/utils/itti_analyzer/libui/ui_signal_dissect_view.c
@@ -2,7 +2,7 @@
 
 #include <gtk/gtk.h>
 
-#include "../rc.h"
+#include "rc.h"
 
 #include "ui_main_screen.h"
 #include "ui_menu_bar.h"
diff --git a/common/utils/itti_analyzer/libui/ui_tree_view.c b/common/utils/itti_analyzer/libui/ui_tree_view.c
index 0963950eb8ebcc1112b8f72afd04ea2fe50a54f9..8544b68d4f312b0afcf4646ca3806fec63da5d81 100644
--- a/common/utils/itti_analyzer/libui/ui_tree_view.c
+++ b/common/utils/itti_analyzer/libui/ui_tree_view.c
@@ -3,7 +3,7 @@
 
 #include <gtk/gtk.h>
 
-#include "../rc.h"
+#include "rc.h"
 
 #include "ui_main_screen.h"
 #include "ui_tree_view.h"
diff --git a/common/utils/itti_analyzer/queue.h b/common/utils/itti_analyzer/queue.h
deleted file mode 100644
index 294d48511086b20eb321e07641eb0599db4b75da..0000000000000000000000000000000000000000
--- a/common/utils/itti_analyzer/queue.h
+++ /dev/null
@@ -1,592 +0,0 @@
-/*
- * Copyright (c) 1991, 1993
- *	The Regents of the University of California.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *	@(#)queue.h	8.5 (Berkeley) 8/20/94
- */
-
-#ifndef	_SYS_QUEUE_H_
-#define	_SYS_QUEUE_H_
-
-/*
- * This file defines five types of data structures: singly-linked lists,
- * lists, simple queues, tail queues, and circular queues.
- *
- * A singly-linked list is headed by a single forward pointer. The
- * elements are singly linked for minimum space and pointer manipulation
- * overhead at the expense of O(n) removal for arbitrary elements. New
- * elements can be added to the list after an existing element or at the
- * head of the list.  Elements being removed from the head of the list
- * should use the explicit macro for this purpose for optimum
- * efficiency. A singly-linked list may only be traversed in the forward
- * direction.  Singly-linked lists are ideal for applications with large
- * datasets and few or no removals or for implementing a LIFO queue.
- *
- * A list is headed by a single forward pointer (or an array of forward
- * pointers for a hash table header). The elements are doubly linked
- * so that an arbitrary element can be removed without a need to
- * traverse the list. New elements can be added to the list before
- * or after an existing element or at the head of the list. A list
- * may only be traversed in the forward direction.
- *
- * A simple queue is headed by a pair of pointers, one the head of the
- * list and the other to the tail of the list. The elements are singly
- * linked to save space, so elements can only be removed from the
- * head of the list. New elements can be added to the list after
- * an existing element, at the head of the list, or at the end of the
- * list. A simple queue may only be traversed in the forward direction.
- *
- * A tail queue is headed by a pair of pointers, one to the head of the
- * list and the other to the tail of the list. The elements are doubly
- * linked so that an arbitrary element can be removed without a need to
- * traverse the list. New elements can be added to the list before or
- * after an existing element, at the head of the list, or at the end of
- * the list. A tail queue may be traversed in either direction.
- *
- * A circle queue is headed by a pair of pointers, one to the head of the
- * list and the other to the tail of the list. The elements are doubly
- * linked so that an arbitrary element can be removed without a need to
- * traverse the list. New elements can be added to the list before or after
- * an existing element, at the head of the list, or at the end of the list.
- * A circle queue may be traversed in either direction, but has a more
- * complex end of list detection.
- *
- * For details on the use of these macros, see the queue(3) manual page.
- *                      SLIST   LIST    STAILQ  TAILQ   CIRCLEQ
- * _HEAD                +       +       +       +       +
- * _HEAD_INITIALIZER    +       +       +       +       +
- * _ENTRY               +       +       +       +       +
- * _INIT                +       +       +       +       +
- * _EMPTY               +       +       +       +       +
- * _FIRST               +       +       +       +       +
- * _NEXT                +       +       +       +       +
- * _PREV                -       -       -       +       +
- * _LAST                -       -       +       +       +
- * _FOREACH             +       +       +       +       +
- * _FOREACH_REVERSE     -       -       -       +       +
- * _INSERT_HEAD         +       +       +       +       +
- * _INSERT_BEFORE       -       +       -       +       +
- * _INSERT_AFTER        +       +       +       +       +
- * _INSERT_TAIL         -       -       +       +       +
- * _REMOVE_HEAD         +       -       +       -       -
- * _REMOVE              +       +       +       +       +
- */
-
-/*
- * List definitions.
- */
-#define	LIST_HEAD(name, type)						\
-struct name {								\
-	struct type *lh_first;	/* first element */			\
-}
-
-#define	LIST_HEAD_INITIALIZER(head)					\
-	{ NULL }
-
-#define	LIST_ENTRY(type)						\
-struct {								\
-	struct type *le_next;	/* next element */			\
-	struct type **le_prev;	/* address of previous next element */	\
-}
-
-/*
- * List functions.
- */
-#define	LIST_INIT(head) do {						\
-	(head)->lh_first = NULL;					\
-} while (/*CONSTCOND*/0)
-
-#define	LIST_INSERT_AFTER(listelm, elm, field) do {			\
-	if (((elm)->field.le_next = (listelm)->field.le_next) != NULL)	\
-		(listelm)->field.le_next->field.le_prev =		\
-		    &(elm)->field.le_next;				\
-	(listelm)->field.le_next = (elm);				\
-	(elm)->field.le_prev = &(listelm)->field.le_next;		\
-} while (/*CONSTCOND*/0)
-
-#define	LIST_INSERT_BEFORE(listelm, elm, field) do {			\
-	(elm)->field.le_prev = (listelm)->field.le_prev;		\
-	(elm)->field.le_next = (listelm);				\
-	*(listelm)->field.le_prev = (elm);				\
-	(listelm)->field.le_prev = &(elm)->field.le_next;		\
-} while (/*CONSTCOND*/0)
-
-#define	LIST_INSERT_HEAD(head, elm, field) do {				\
-	if (((elm)->field.le_next = (head)->lh_first) != NULL)		\
-		(head)->lh_first->field.le_prev = &(elm)->field.le_next;\
-	(head)->lh_first = (elm);					\
-	(elm)->field.le_prev = &(head)->lh_first;			\
-} while (/*CONSTCOND*/0)
-
-#define	LIST_REMOVE(elm, field) do {					\
-	if ((elm)->field.le_next != NULL)				\
-		(elm)->field.le_next->field.le_prev = 			\
-		    (elm)->field.le_prev;				\
-	*(elm)->field.le_prev = (elm)->field.le_next;			\
-} while (/*CONSTCOND*/0)
-
-#define	LIST_FOREACH(var, head, field)					\
-	for ((var) = ((head)->lh_first);				\
-		(var);							\
-		(var) = ((var)->field.le_next))
-
-/*
- * List access methods.
- */
-#define	LIST_EMPTY(head)		((head)->lh_first == NULL)
-#define	LIST_FIRST(head)		((head)->lh_first)
-#define	LIST_NEXT(elm, field)		((elm)->field.le_next)
-
-
-/*
- * Singly-linked List definitions.
- */
-#define	SLIST_HEAD(name, type)						\
-struct name {								\
-	struct type *slh_first;	/* first element */			\
-}
-
-#define	SLIST_HEAD_INITIALIZER(head)					\
-	{ NULL }
-
-#define	SLIST_ENTRY(type)						\
-struct {								\
-	struct type *sle_next;	/* next element */			\
-}
-
-/*
- * Singly-linked List functions.
- */
-#define	SLIST_INIT(head) do {						\
-	(head)->slh_first = NULL;					\
-} while (/*CONSTCOND*/0)
-
-#define	SLIST_INSERT_AFTER(slistelm, elm, field) do {			\
-	(elm)->field.sle_next = (slistelm)->field.sle_next;		\
-	(slistelm)->field.sle_next = (elm);				\
-} while (/*CONSTCOND*/0)
-
-#define	SLIST_INSERT_HEAD(head, elm, field) do {			\
-	(elm)->field.sle_next = (head)->slh_first;			\
-	(head)->slh_first = (elm);					\
-} while (/*CONSTCOND*/0)
-
-#define	SLIST_REMOVE_HEAD(head, field) do {				\
-	(head)->slh_first = (head)->slh_first->field.sle_next;		\
-} while (/*CONSTCOND*/0)
-
-#define	SLIST_REMOVE(head, elm, type, field) do {			\
-	if ((head)->slh_first == (elm)) {				\
-		SLIST_REMOVE_HEAD((head), field);			\
-	}								\
-	else {								\
-		struct type *curelm = (head)->slh_first;		\
-		while(curelm->field.sle_next != (elm))			\
-			curelm = curelm->field.sle_next;		\
-		curelm->field.sle_next =				\
-		    curelm->field.sle_next->field.sle_next;		\
-	}								\
-} while (/*CONSTCOND*/0)
-
-#define	SLIST_FOREACH(var, head, field)					\
-	for((var) = (head)->slh_first; (var); (var) = (var)->field.sle_next)
-
-/*
- * Singly-linked List access methods.
- */
-#define	SLIST_EMPTY(head)	((head)->slh_first == NULL)
-#define	SLIST_FIRST(head)	((head)->slh_first)
-#define	SLIST_NEXT(elm, field)	((elm)->field.sle_next)
-
-
-/*
- * Singly-linked Tail queue declarations.
- */
-#define	STAILQ_HEAD(name, type)					\
-struct name {								\
-	struct type *stqh_first;	/* first element */			\
-	struct type **stqh_last;	/* addr of last next element */		\
-}
-
-#define	STAILQ_HEAD_INITIALIZER(head)					\
-	{ NULL, &(head).stqh_first }
-
-#define	STAILQ_ENTRY(type)						\
-struct {								\
-	struct type *stqe_next;	/* next element */			\
-}
-
-/*
- * Singly-linked Tail queue functions.
- */
-#define	STAILQ_INIT(head) do {						\
-	(head)->stqh_first = NULL;					\
-	(head)->stqh_last = &(head)->stqh_first;				\
-} while (/*CONSTCOND*/0)
-
-#define	STAILQ_INSERT_HEAD(head, elm, field) do {			\
-	if (((elm)->field.stqe_next = (head)->stqh_first) == NULL)	\
-		(head)->stqh_last = &(elm)->field.stqe_next;		\
-	(head)->stqh_first = (elm);					\
-} while (/*CONSTCOND*/0)
-
-#define	STAILQ_INSERT_TAIL(head, elm, field) do {			\
-	(elm)->field.stqe_next = NULL;					\
-	*(head)->stqh_last = (elm);					\
-	(head)->stqh_last = &(elm)->field.stqe_next;			\
-} while (/*CONSTCOND*/0)
-
-#define	STAILQ_INSERT_AFTER(head, listelm, elm, field) do {		\
-	if (((elm)->field.stqe_next = (listelm)->field.stqe_next) == NULL)\
-		(head)->stqh_last = &(elm)->field.stqe_next;		\
-	(listelm)->field.stqe_next = (elm);				\
-} while (/*CONSTCOND*/0)
-
-#define	STAILQ_REMOVE_HEAD(head, field) do {				\
-	if (((head)->stqh_first = (head)->stqh_first->field.stqe_next) == NULL) \
-		(head)->stqh_last = &(head)->stqh_first;			\
-} while (/*CONSTCOND*/0)
-
-#define	STAILQ_REMOVE(head, elm, type, field) do {			\
-	if ((head)->stqh_first == (elm)) {				\
-		STAILQ_REMOVE_HEAD((head), field);			\
-	} else {							\
-		struct type *curelm = (head)->stqh_first;		\
-		while (curelm->field.stqe_next != (elm))			\
-			curelm = curelm->field.stqe_next;		\
-		if ((curelm->field.stqe_next =				\
-			curelm->field.stqe_next->field.stqe_next) == NULL) \
-			    (head)->stqh_last = &(curelm)->field.stqe_next; \
-	}								\
-} while (/*CONSTCOND*/0)
-
-#define	STAILQ_FOREACH(var, head, field)				\
-	for ((var) = ((head)->stqh_first);				\
-		(var);							\
-		(var) = ((var)->field.stqe_next))
-
-#define	STAILQ_CONCAT(head1, head2) do {				\
-	if (!STAILQ_EMPTY((head2))) {					\
-		*(head1)->stqh_last = (head2)->stqh_first;		\
-		(head1)->stqh_last = (head2)->stqh_last;		\
-		STAILQ_INIT((head2));					\
-	}								\
-} while (/*CONSTCOND*/0)
-
-/*
- * Singly-linked Tail queue access methods.
- */
-#define	STAILQ_EMPTY(head)	((head)->stqh_first == NULL)
-#define	STAILQ_FIRST(head)	((head)->stqh_first)
-#define	STAILQ_NEXT(elm, field)	((elm)->field.stqe_next)
-
-
-/*
- * Simple queue definitions.
- */
-#define	SIMPLEQ_HEAD(name, type)					\
-struct name {								\
-	struct type *sqh_first;	/* first element */			\
-	struct type **sqh_last;	/* addr of last next element */		\
-}
-
-#define	SIMPLEQ_HEAD_INITIALIZER(head)					\
-	{ NULL, &(head).sqh_first }
-
-#define	SIMPLEQ_ENTRY(type)						\
-struct {								\
-	struct type *sqe_next;	/* next element */			\
-}
-
-/*
- * Simple queue functions.
- */
-#define	SIMPLEQ_INIT(head) do {						\
-	(head)->sqh_first = NULL;					\
-	(head)->sqh_last = &(head)->sqh_first;				\
-} while (/*CONSTCOND*/0)
-
-#define	SIMPLEQ_INSERT_HEAD(head, elm, field) do {			\
-	if (((elm)->field.sqe_next = (head)->sqh_first) == NULL)	\
-		(head)->sqh_last = &(elm)->field.sqe_next;		\
-	(head)->sqh_first = (elm);					\
-} while (/*CONSTCOND*/0)
-
-#define	SIMPLEQ_INSERT_TAIL(head, elm, field) do {			\
-	(elm)->field.sqe_next = NULL;					\
-	*(head)->sqh_last = (elm);					\
-	(head)->sqh_last = &(elm)->field.sqe_next;			\
-} while (/*CONSTCOND*/0)
-
-#define	SIMPLEQ_INSERT_AFTER(head, listelm, elm, field) do {		\
-	if (((elm)->field.sqe_next = (listelm)->field.sqe_next) == NULL)\
-		(head)->sqh_last = &(elm)->field.sqe_next;		\
-	(listelm)->field.sqe_next = (elm);				\
-} while (/*CONSTCOND*/0)
-
-#define	SIMPLEQ_REMOVE_HEAD(head, field) do {				\
-	if (((head)->sqh_first = (head)->sqh_first->field.sqe_next) == NULL) \
-		(head)->sqh_last = &(head)->sqh_first;			\
-} while (/*CONSTCOND*/0)
-
-#define	SIMPLEQ_REMOVE(head, elm, type, field) do {			\
-	if ((head)->sqh_first == (elm)) {				\
-		SIMPLEQ_REMOVE_HEAD((head), field);			\
-	} else {							\
-		struct type *curelm = (head)->sqh_first;		\
-		while (curelm->field.sqe_next != (elm))			\
-			curelm = curelm->field.sqe_next;		\
-		if ((curelm->field.sqe_next =				\
-			curelm->field.sqe_next->field.sqe_next) == NULL) \
-			    (head)->sqh_last = &(curelm)->field.sqe_next; \
-	}								\
-} while (/*CONSTCOND*/0)
-
-#define	SIMPLEQ_FOREACH(var, head, field)				\
-	for ((var) = ((head)->sqh_first);				\
-		(var);							\
-		(var) = ((var)->field.sqe_next))
-
-/*
- * Simple queue access methods.
- */
-#define	SIMPLEQ_EMPTY(head)		((head)->sqh_first == NULL)
-#define	SIMPLEQ_FIRST(head)		((head)->sqh_first)
-#define	SIMPLEQ_NEXT(elm, field)	((elm)->field.sqe_next)
-
-
-/*
- * Tail queue definitions.
- */
-#define	_TAILQ_HEAD(name, type, qual)					\
-struct name {								\
-	qual type *tqh_first;		/* first element */		\
-	qual type *qual *tqh_last;	/* addr of last next element */	\
-}
-#define TAILQ_HEAD(name, type)	_TAILQ_HEAD(name, struct type,)
-
-#define	TAILQ_HEAD_INITIALIZER(head)					\
-	{ NULL, &(head).tqh_first }
-
-#define	_TAILQ_ENTRY(type, qual)					\
-struct {								\
-	qual type *tqe_next;		/* next element */		\
-	qual type *qual *tqe_prev;	/* address of previous next element */\
-}
-#define TAILQ_ENTRY(type)	_TAILQ_ENTRY(struct type,)
-
-/*
- * Tail queue functions.
- */
-#define	TAILQ_INIT(head) do {						\
-	(head)->tqh_first = NULL;					\
-	(head)->tqh_last = &(head)->tqh_first;				\
-} while (/*CONSTCOND*/0)
-
-#define	TAILQ_INSERT_HEAD(head, elm, field) do {			\
-	if (((elm)->field.tqe_next = (head)->tqh_first) != NULL)	\
-		(head)->tqh_first->field.tqe_prev =			\
-		    &(elm)->field.tqe_next;				\
-	else								\
-		(head)->tqh_last = &(elm)->field.tqe_next;		\
-	(head)->tqh_first = (elm);					\
-	(elm)->field.tqe_prev = &(head)->tqh_first;			\
-} while (/*CONSTCOND*/0)
-
-#define	TAILQ_INSERT_TAIL(head, elm, field) do {			\
-	(elm)->field.tqe_next = NULL;					\
-	(elm)->field.tqe_prev = (head)->tqh_last;			\
-	*(head)->tqh_last = (elm);					\
-	(head)->tqh_last = &(elm)->field.tqe_next;			\
-} while (/*CONSTCOND*/0)
-
-#define	TAILQ_INSERT_AFTER(head, listelm, elm, field) do {		\
-	if (((elm)->field.tqe_next = (listelm)->field.tqe_next) != NULL)\
-		(elm)->field.tqe_next->field.tqe_prev = 		\
-		    &(elm)->field.tqe_next;				\
-	else								\
-		(head)->tqh_last = &(elm)->field.tqe_next;		\
-	(listelm)->field.tqe_next = (elm);				\
-	(elm)->field.tqe_prev = &(listelm)->field.tqe_next;		\
-} while (/*CONSTCOND*/0)
-
-#define	TAILQ_INSERT_BEFORE(listelm, elm, field) do {			\
-	(elm)->field.tqe_prev = (listelm)->field.tqe_prev;		\
-	(elm)->field.tqe_next = (listelm);				\
-	*(listelm)->field.tqe_prev = (elm);				\
-	(listelm)->field.tqe_prev = &(elm)->field.tqe_next;		\
-} while (/*CONSTCOND*/0)
-
-#define	TAILQ_REMOVE(head, elm, field) do {				\
-	if (((elm)->field.tqe_next) != NULL)				\
-		(elm)->field.tqe_next->field.tqe_prev = 		\
-		    (elm)->field.tqe_prev;				\
-	else								\
-		(head)->tqh_last = (elm)->field.tqe_prev;		\
-	*(elm)->field.tqe_prev = (elm)->field.tqe_next;			\
-} while (/*CONSTCOND*/0)
-
-#define	TAILQ_FOREACH(var, head, field)					\
-	for ((var) = ((head)->tqh_first);				\
-		(var);							\
-		(var) = ((var)->field.tqe_next))
-
-#define	TAILQ_FOREACH_REVERSE(var, head, headname, field)		\
-	for ((var) = (*(((struct headname *)((head)->tqh_last))->tqh_last));	\
-		(var);							\
-		(var) = (*(((struct headname *)((var)->field.tqe_prev))->tqh_last)))
-
-#define	TAILQ_CONCAT(head1, head2, field) do {				\
-	if (!TAILQ_EMPTY(head2)) {					\
-		*(head1)->tqh_last = (head2)->tqh_first;		\
-		(head2)->tqh_first->field.tqe_prev = (head1)->tqh_last;	\
-		(head1)->tqh_last = (head2)->tqh_last;			\
-		TAILQ_INIT((head2));					\
-	}								\
-} while (/*CONSTCOND*/0)
-
-/*
- * Tail queue access methods.
- */
-#define	TAILQ_EMPTY(head)		((head)->tqh_first == NULL)
-#define	TAILQ_FIRST(head)		((head)->tqh_first)
-#define	TAILQ_NEXT(elm, field)		((elm)->field.tqe_next)
-
-#define	TAILQ_LAST(head, headname) \
-	(*(((struct headname *)((head)->tqh_last))->tqh_last))
-#define	TAILQ_PREV(elm, headname, field) \
-	(*(((struct headname *)((elm)->field.tqe_prev))->tqh_last))
-
-
-/*
- * Circular queue definitions.
- */
-#define	CIRCLEQ_HEAD(name, type)					\
-struct name {								\
-	struct type *cqh_first;		/* first element */		\
-	struct type *cqh_last;		/* last element */		\
-}
-
-#define	CIRCLEQ_HEAD_INITIALIZER(head)					\
-	{ (void *)&head, (void *)&head }
-
-#define	CIRCLEQ_ENTRY(type)						\
-struct {								\
-	struct type *cqe_next;		/* next element */		\
-	struct type *cqe_prev;		/* previous element */		\
-}
-
-/*
- * Circular queue functions.
- */
-#define	CIRCLEQ_INIT(head) do {						\
-	(head)->cqh_first = (void *)(head);				\
-	(head)->cqh_last = (void *)(head);				\
-} while (/*CONSTCOND*/0)
-
-#define	CIRCLEQ_INSERT_AFTER(head, listelm, elm, field) do {		\
-	(elm)->field.cqe_next = (listelm)->field.cqe_next;		\
-	(elm)->field.cqe_prev = (listelm);				\
-	if ((listelm)->field.cqe_next == (void *)(head))		\
-		(head)->cqh_last = (elm);				\
-	else								\
-		(listelm)->field.cqe_next->field.cqe_prev = (elm);	\
-	(listelm)->field.cqe_next = (elm);				\
-} while (/*CONSTCOND*/0)
-
-#define	CIRCLEQ_INSERT_BEFORE(head, listelm, elm, field) do {		\
-	(elm)->field.cqe_next = (listelm);				\
-	(elm)->field.cqe_prev = (listelm)->field.cqe_prev;		\
-	if ((listelm)->field.cqe_prev == (void *)(head))		\
-		(head)->cqh_first = (elm);				\
-	else								\
-		(listelm)->field.cqe_prev->field.cqe_next = (elm);	\
-	(listelm)->field.cqe_prev = (elm);				\
-} while (/*CONSTCOND*/0)
-
-#define	CIRCLEQ_INSERT_HEAD(head, elm, field) do {			\
-	(elm)->field.cqe_next = (head)->cqh_first;			\
-	(elm)->field.cqe_prev = (void *)(head);				\
-	if ((head)->cqh_last == (void *)(head))				\
-		(head)->cqh_last = (elm);				\
-	else								\
-		(head)->cqh_first->field.cqe_prev = (elm);		\
-	(head)->cqh_first = (elm);					\
-} while (/*CONSTCOND*/0)
-
-#define	CIRCLEQ_INSERT_TAIL(head, elm, field) do {			\
-	(elm)->field.cqe_next = (void *)(head);				\
-	(elm)->field.cqe_prev = (head)->cqh_last;			\
-	if ((head)->cqh_first == (void *)(head))			\
-		(head)->cqh_first = (elm);				\
-	else								\
-		(head)->cqh_last->field.cqe_next = (elm);		\
-	(head)->cqh_last = (elm);					\
-} while (/*CONSTCOND*/0)
-
-#define	CIRCLEQ_REMOVE(head, elm, field) do {				\
-	if ((elm)->field.cqe_next == (void *)(head))			\
-		(head)->cqh_last = (elm)->field.cqe_prev;		\
-	else								\
-		(elm)->field.cqe_next->field.cqe_prev =			\
-		    (elm)->field.cqe_prev;				\
-	if ((elm)->field.cqe_prev == (void *)(head))			\
-		(head)->cqh_first = (elm)->field.cqe_next;		\
-	else								\
-		(elm)->field.cqe_prev->field.cqe_next =			\
-		    (elm)->field.cqe_next;				\
-} while (/*CONSTCOND*/0)
-
-#define	CIRCLEQ_FOREACH(var, head, field)				\
-	for ((var) = ((head)->cqh_first);				\
-		(var) != (const void *)(head);				\
-		(var) = ((var)->field.cqe_next))
-
-#define	CIRCLEQ_FOREACH_REVERSE(var, head, field)			\
-	for ((var) = ((head)->cqh_last);				\
-		(var) != (const void *)(head);				\
-		(var) = ((var)->field.cqe_prev))
-
-/*
- * Circular queue access methods.
- */
-#define	CIRCLEQ_EMPTY(head)		((head)->cqh_first == (void *)(head))
-#define	CIRCLEQ_FIRST(head)		((head)->cqh_first)
-#define	CIRCLEQ_LAST(head)		((head)->cqh_last)
-#define	CIRCLEQ_NEXT(elm, field)	((elm)->field.cqe_next)
-#define	CIRCLEQ_PREV(elm, field)	((elm)->field.cqe_prev)
-
-#define CIRCLEQ_LOOP_NEXT(head, elm, field)				\
-	(((elm)->field.cqe_next == (void *)(head))			\
-	    ? ((head)->cqh_first)					\
-	    : (elm->field.cqe_next))
-#define CIRCLEQ_LOOP_PREV(head, elm, field)				\
-	(((elm)->field.cqe_prev == (void *)(head))			\
-	    ? ((head)->cqh_last)					\
-	    : (elm->field.cqe_prev))
-
-#endif	/* sys/queue.h */
diff --git a/common/utils/itti_analyzer/rc.h b/common/utils/itti_analyzer/rc.h
deleted file mode 100644
index 174f725c112f3df998088fcc4e0e3cc3a1746f68..0000000000000000000000000000000000000000
--- a/common/utils/itti_analyzer/rc.h
+++ /dev/null
@@ -1,47 +0,0 @@
-#include <errno.h>
-#include <string.h>
-
-#ifndef RC_H_
-#define RC_H_
-
-#define RC_OK 0
-#define RC_FAIL         -1
-#define RC_BAD_PARAM    -2
-#define RC_NULL_POINTER -3
-
-#define CHECK_FCT(fCT)      \
-do {                        \
-    int rET;                \
-    if ((rET = fCT) != RC_OK) {     \
-        fprintf(stderr, #fCT" has failed (%s:%d)\n", __FILE__, __LINE__);   \
-        return rET;         \
-    }                       \
-} while(0)
-
-#define CHECK_FCT_POSIX(fCT)        \
-do {                                \
-    if (fCT == -1) {                \
-        fprintf(stderr, #fCT" has failed (%d:%s) (%s:%d)\n", errno, \
-                strerror(errno), __FILE__, __LINE__);               \
-        return RC_FAIL;         \
-    }                           \
-} while(0)
-
-#define CHECK_FCT_DO(fCT, dO)      \
-do {                        \
-    int rET;                \
-    if ((rET = fCT) != RC_OK) {     \
-        fprintf(stderr, #fCT" has returned %d (%s:%d)\n", rET, __FILE__, __LINE__);   \
-        dO;                 \
-    }                       \
-} while(0)
-
-#define CHECK_BUFFER(bUFFER)        \
-do {                                \
-    if ((bUFFER) == NULL) {         \
-        fprintf(stderr, #bUFFER" is NULL (%s:%d)\n", __FILE__, __LINE__);   \
-        return RC_NULL_POINTER;         \
-    }                       \
-} while(0)
-
-#endif /* RC_H_ */