diff --git a/common/utils/itti/intertask_interface.c b/common/utils/itti/intertask_interface.c
index 9645ae883b6f552390e1f40808121ea3cc2c9ef2..c27b67e4a250d0344811ea83765bf1b080ab95ec 100644
--- a/common/utils/itti/intertask_interface.c
+++ b/common/utils/itti/intertask_interface.c
@@ -83,7 +83,7 @@ const int itti_debug_poll = 0;
 /* Global message size */
 #define MESSAGE_SIZE(mESSAGEiD) (sizeof(MessageHeader) + itti_desc.messages_info[mESSAGEiD].size)
 
-#if !defined(EFD_SEMAPHORE)
+#ifndef EFD_SEMAPHORE
 # define KERNEL_VERSION_PRE_2_6_30 1
 #endif
 
@@ -116,7 +116,7 @@ typedef struct thread_desc_s {
     uint16_t nb_events;
 
 #if defined(KERNEL_VERSION_PRE_2_6_30)
-    uint64_t sem_counter;
+    eventfd_t sem_counter;
 #endif
 
     /* Array of events monitored by the task.
@@ -392,7 +392,7 @@ int itti_send_msg_to_task(task_id_t destination_task_id, instance_t instance, Me
                 if (TASK_GET_PARENT_TASK_ID(destination_task_id) == TASK_UNKNOWN)
                 {
                     ssize_t write_ret;
-                    uint64_t sem_counter = 1;
+                    eventfd_t sem_counter = 1;
 
                     /* Call to write for an event fd must be of 8 bytes */
                     write_ret = write (itti_desc.threads[destination_thread_id].task_event_fd, &sem_counter, sizeof(sem_counter));
@@ -534,8 +534,8 @@ static inline void itti_receive_msg_internal_event_fd(task_id_t task_id, uint8_t
             (itti_desc.threads[thread_id].events[i].data.fd == itti_desc.threads[thread_id].task_event_fd))
         {
             struct message_list_s *message = NULL;
-            uint64_t sem_counter;
-            ssize_t  read_ret;
+            eventfd_t sem_counter;
+            ssize_t   read_ret;
 
             /* Read will always return 1 */
             read_ret = read (itti_desc.threads[thread_id].task_event_fd, &sem_counter, sizeof(sem_counter));
@@ -543,7 +543,7 @@ static inline void itti_receive_msg_internal_event_fd(task_id_t task_id, uint8_t
 
 #if defined(KERNEL_VERSION_PRE_2_6_30)
             /* Store the value of the semaphore counter */
-            itti_desc.tasks[task_id].sem_counter = sem_counter - 1;
+            itti_desc.threads[task_id].sem_counter = sem_counter - 1;
 #endif
 
             if (lfds611_queue_dequeue (itti_desc.tasks[task_id].message_queue, (void **) &message) == 0) {
@@ -567,16 +567,18 @@ void itti_receive_msg(task_id_t task_id, MessageDef **received_msg)
 
 #if defined(KERNEL_VERSION_PRE_2_6_30)
     /* Store the value of the semaphore counter */
-    if (itti_desc.tasks[task_id].sem_counter > 0) {
+    if (itti_desc.threads[task_id].sem_counter > 0) {
+        struct message_list_s *message = NULL;
+
         if (lfds611_queue_dequeue (itti_desc.tasks[task_id].message_queue, (void **) &message) == 0) {
             /* No element in list -> this should not happen */
-            DevParam(task_id, itti_desc.tasks[task_id].sem_counter, 0);
+            DevParam(task_id, itti_desc.threads[task_id].sem_counter, 0);
         }
         DevAssert(message != NULL);
         *received_msg = message->msg;
         free (message);
 
-        itti_desc.tasks[task_id].sem_counter--;
+        itti_desc.threads[task_id].sem_counter--;
     } else
 #endif
     itti_receive_msg_internal_event_fd(task_id, 0, received_msg);
@@ -720,7 +722,7 @@ static void *itti_rt_relay_thread(void *arg)
                 if (pending_messages > 0)
                 {
                     ssize_t write_ret;
-                    uint64_t sem_counter = pending_messages;
+                    eventfd_t sem_counter = pending_messages;
 
                     /* Call to write for an event fd must be of 8 bytes */
                     write_ret = write (itti_desc.threads[thread_id].task_event_fd, &sem_counter, sizeof(sem_counter));
diff --git a/common/utils/itti/intertask_interface_dump.c b/common/utils/itti/intertask_interface_dump.c
index 9ee159d2a843aa44890c1ef5713655edb5dc6967..3dee58b625905083e87495dcf35cf05b78420d1b 100644
--- a/common/utils/itti/intertask_interface_dump.c
+++ b/common/utils/itti/intertask_interface_dump.c
@@ -78,6 +78,10 @@ static const int itti_dump_debug = 0;
     while(0)
 #endif
 
+#ifndef EFD_SEMAPHORE
+# define KERNEL_VERSION_PRE_2_6_30 1
+#endif
+
 /* Message sent is an intertask dump type */
 #define ITTI_DUMP_MESSAGE_TYPE      0x1
 #define ITTI_STATISTIC_MESSAGE_TYPE 0x2
@@ -146,7 +150,7 @@ typedef struct {
 } itti_statistic_message_t;
 
 static itti_desc_t itti_dump_queue;
-static FILE *dump_file;
+static FILE *dump_file = NULL;
 static int itti_dump_running = 1;
 
 static int itti_dump_send_message(int sd, itti_dump_queue_item_t *message);
@@ -283,8 +287,8 @@ static int itti_dump_enqueue_message(itti_dump_queue_item_t *new, uint32_t messa
     __sync_fetch_and_add (&itti_dump_queue.messages_in_queue, 1);
 #else
     {
-        ssize_t  write_ret;
-        uint64_t sem_counter = 1;
+        ssize_t   write_ret;
+        eventfd_t sem_counter = 1;
 
         /* Call to write for an event fd must be of 8 bytes */
         write_ret = write(itti_dump_queue.event_fd, &sem_counter, sizeof(sem_counter));
@@ -523,19 +527,21 @@ static void *itti_dump_socket(void *arg_p)
 #ifndef RTAI
                 if (i == itti_dump_queue.event_fd) {
                     /* Notification of new element to dump from other tasks */
-                    uint64_t sem_counter;
-                    ssize_t  read_ret;
+                    eventfd_t sem_counter;
+                    ssize_t   read_ret;
 
-                    /* Read will always return 1 */
+                    /* Read will always return 1 for kernel versions > 2.6.30 */
                     read_ret = read (itti_dump_queue.event_fd, &sem_counter, sizeof(sem_counter));
                     if (read_ret < 0) {
                         ITTI_DUMP_ERROR("Failed read for semaphore: %s\n", strerror(errno));
                         pthread_exit(NULL);
                     }
                     DevCheck(read_ret == sizeof(sem_counter), read_ret, sizeof(sem_counter), 0);
-
+#if defined(KERNEL_VERSION_PRE_2_6_30)
+                    itti_dump_flush_ring_buffer(1);
+#else
                     itti_dump_flush_ring_buffer(0);
-
+#endif
                     ITTI_DUMP_DEBUG("Write element to file\n");
                 } else
 #endif
@@ -705,7 +711,11 @@ int itti_dump_init(const char * const messages_definition_xml, const char * cons
 #ifdef RTAI
     itti_dump_queue.messages_in_queue = 0;
 #else
+# if defined(KERNEL_VERSION_PRE_2_6_30)
+    itti_dump_queue.event_fd = eventfd(0, 0);
+# else
     itti_dump_queue.event_fd = eventfd(0, EFD_SEMAPHORE);
+# endif
     if (itti_dump_queue.event_fd == -1)
     {
         ITTI_DUMP_ERROR("eventfd failed: %s\n", strerror(errno));