From 497527fa1bd07fb4c8408671ca03406e4c7a1f17 Mon Sep 17 00:00:00 2001 From: winckel <winckel@eurecom.fr> Date: Tue, 22 Oct 2013 16:14:41 +0000 Subject: [PATCH] Created defines to shift task id fields. Fixed an issue with message broadcast, task Id was incorrect. git-svn-id: http://svn.eurecom.fr/openair4G/trunk@4263 818b1a75-f10b-46b9-bf7c-635c3b92a50f --- common/utils/itti/intertask_interface.c | 39 ++++++++----------- common/utils/itti/intertask_interface_types.h | 8 +++- 2 files changed, 22 insertions(+), 25 deletions(-) diff --git a/common/utils/itti/intertask_interface.c b/common/utils/itti/intertask_interface.c index b7d6b4400f9..31c0cd65d3c 100644 --- a/common/utils/itti/intertask_interface.c +++ b/common/utils/itti/intertask_interface.c @@ -137,23 +137,23 @@ int send_broadcast_message(MessageDef *message_p) MessageDef *new_message_p; /* Skip tasks which are not running */ - if (itti_desc.tasks[i].task_state != TASK_STATE_READY) - continue; - - new_message_p = malloc(sizeof(MessageDef)); + if (itti_desc.tasks[i].task_state == TASK_STATE_READY) + { + new_message_p = malloc(sizeof(MessageDef)); - if (new_message_p == NULL) { - ITTI_ERROR("Failed to allocate memory (%s:%d)\n", - __FILE__, __LINE__); - return -1; - } - memcpy(new_message_p, message_p, sizeof(MessageDef)); - temp = send_msg_to_task(i, INSTANCE_DEFAULT, new_message_p); - if (temp < 0) { - ITTI_ERROR("Failed to send broadcast message (%s) to queue (%u:%s)\n", - itti_desc.messages_info[message_p->header.messageId].name, i, itti_desc.threads_name[i]); - ret = temp; - free(new_message_p); + if (new_message_p == NULL) { + ITTI_ERROR("Failed to allocate memory (%s:%d)\n", + __FILE__, __LINE__); + return -1; + } + memcpy(new_message_p, message_p, sizeof(MessageDef)); + temp = send_msg_to_task(TASK_SHIFT_THREAD_ID(i), INSTANCE_DEFAULT, new_message_p); + if (temp < 0) { + ITTI_ERROR("Failed to send broadcast message (%s) to queue (%u:%s)\n", + itti_desc.messages_info[message_p->header.messageId].name, i, itti_desc.threads_name[i]); + ret = temp; + free(new_message_p); + } } } @@ -444,16 +444,9 @@ int intertask_interface_init(thread_id_t thread_max, MessagesIds messages_id_max void intertask_interface_send_quit_signal(void) { - int i; MessageDef *terminate_message_p; terminate_message_p = alloc_new_message(TASK_UNKNOWN, TERMINATE_MESSAGE); send_broadcast_message(terminate_message_p); - - for (i = THREAD_FIRST; i < itti_desc.thread_max; i++) { - /* Skip tasks which are not running */ - if (itti_desc.tasks[i].task_state != TASK_STATE_READY) - continue; - } } diff --git a/common/utils/itti/intertask_interface_types.h b/common/utils/itti/intertask_interface_types.h index c7495d44da8..7c51a443578 100644 --- a/common/utils/itti/intertask_interface_types.h +++ b/common/utils/itti/intertask_interface_types.h @@ -59,6 +59,10 @@ #define TASK_GET_THREAD_ID(tASKiD) UL_FIELD_EXTRACT(tASKiD, TASK_THREAD_ID_OFFSET, TASK_THREAD_ID_LENGTH) #define TASK_GET_SUB_TASK_ID(tASKiD) UL_FIELD_EXTRACT(tASKiD, TASK_SUB_TASK_ID_OFFSET, TASK_SUB_TASK_ID_LENGTH) +/* Defines to shift task ID fields */ +#define TASK_SHIFT_THREAD_ID(tHREADiD) UL_BIT_SHIFT(tHREADiD, TASK_THREAD_ID_OFFSET) +#define TASK_SHIFT_SUB_TASK_ID(sUBtASKiD) UL_BIT_SHIFT(sUBtASKiD, TASK_SUB_TASK_ID_OFFSET) + #include <messages_types.h> /* This enum defines messages ids. Each one is unique. */ @@ -98,8 +102,8 @@ typedef enum //! Tasks id of each task typedef enum { -#define TASK_DEF(tHREADiD, pRIO) tHREADiD = UL_BIT_SHIFT(THREAD_##tHREADiD, TASK_THREAD_ID_OFFSET), -#define SUB_TASK_DEF(tHREADiD, sUBtASKiD) sUBtASKiD = (UL_BIT_SHIFT(THREAD_##tHREADiD, TASK_THREAD_ID_OFFSET) | UL_BIT_SHIFT(SUB_TASK_OFFSET_##sUBtASKiD, TASK_SUB_TASK_ID_OFFSET)), +#define TASK_DEF(tHREADiD, pRIO) tHREADiD = TASK_SHIFT_THREAD_ID(THREAD_##tHREADiD), +#define SUB_TASK_DEF(tHREADiD, sUBtASKiD) sUBtASKiD = (TASK_SHIFT_THREAD_ID(THREAD_##tHREADiD) | TASK_SHIFT_SUB_TASK_ID(SUB_TASK_OFFSET_##sUBtASKiD)), #include <tasks_def.h> #undef SUB_TASK_DEF #undef TASK_DEF -- GitLab