diff --git a/common/utils/itti/intertask_interface.c b/common/utils/itti/intertask_interface.c index 22690ceeecb904942402a7eb0f7694e36db6476b..a4478f6f8722069ebb76b4f95f06e78aa15c5436 100644 --- a/common/utils/itti/intertask_interface.c +++ b/common/utils/itti/intertask_interface.c @@ -76,8 +76,7 @@ struct message_list_s { typedef struct task_desc_s { /* Queue of messages belonging to the task */ - STAILQ_HEAD(message_queue_head, message_list_s) - message_queue; + STAILQ_HEAD(message_queue_head, message_list_s) message_queue; /* Number of messages in the queue */ volatile uint32_t message_in_queue; @@ -85,7 +84,7 @@ typedef struct task_desc_s { pthread_mutex_t message_queue_mutex; /* Conditional var for message queue and task synchro */ pthread_cond_t message_queue_cond_var; - pthread_t task_thread; + pthread_t task_thread; volatile task_state_t task_state; } task_desc_t; @@ -125,6 +124,15 @@ char *itti_get_message_name(MessagesIds message_id) { return (itti_desc.messages_info[message_id].name); } +char *itti_get_task_name(task_id_t task_id) +{ + thread_id_t thread_id = TASK_GET_THREAD_ID(task_id); + + DevCheck(thread_id < itti_desc.thread_max, thread_id, itti_desc.thread_max, 0); + + return (itti_desc.threads_name[thread_id]); +} + int itti_send_broadcast_message(MessageDef *message_p) { thread_id_t origin_thread_id; uint32_t i; @@ -371,7 +379,7 @@ void itti_exit_task(void) { } void itti_terminate_tasks(task_id_t task_id) { -// Sends Terminate signals to all tasks. + // Sends Terminate signals to all tasks. itti_send_terminate_message (task_id); if (itti_desc.thread_handling_signals >= 0) { diff --git a/common/utils/itti/intertask_interface.h b/common/utils/itti/intertask_interface.h index 3533136c3b0cbb8ff2f258f7f85085d91bfdc882..64e0f76ef28e365ad0d91e6a85879d0caf28ffd3 100644 --- a/common/utils/itti/intertask_interface.h +++ b/common/utils/itti/intertask_interface.h @@ -115,8 +115,8 @@ void itti_poll_msg(task_id_t task_id, instance_t instance, MessageDef **received * @returns -1 on failure, 0 otherwise **/ int itti_create_task(task_id_t task_id, - void *(*start_routine) (void *), - void *args_p); + void *(*start_routine) (void *), + void *args_p); /** \brief Mark the task as in ready state * \param task_id task to mark as ready @@ -137,13 +137,18 @@ void itti_terminate_tasks(task_id_t task_id); **/ char *itti_get_message_name(MessagesIds message_id); +/** \brief Return the printable string associated with a task id + * \param thread_id Id of the task + **/ +char *itti_get_task_name(task_id_t task_id); + /** \brief Alloc and memset(0) a new itti message. * \param origin_task_id Task ID of the sending task * \param message_id Message ID * @returns NULL in case of failure or newly allocated mesage ref **/ inline MessageDef *itti_alloc_new_message( - task_id_t origin_task_id, + task_id_t origin_task_id, MessagesIds message_id); /** \brief handle signals and wait for all threads to join when the process complete. diff --git a/common/utils/itti/intertask_interface_types.h b/common/utils/itti/intertask_interface_types.h index 7c51a443578d43a353bc3145fe1611df81d45442..f10e3300294ed50c8373efdc805434bf96042fdb 100644 --- a/common/utils/itti/intertask_interface_types.h +++ b/common/utils/itti/intertask_interface_types.h @@ -131,9 +131,9 @@ typedef struct MessageHeader_s { MessagesIds messageId; /**< Unique message id as referenced in enum MessagesIds */ - task_id_t originTaskId; /**< ID of the sender task */ - task_id_t destinationTaskId; /**< ID of the destination task */ - instance_t instance; /* Task instance for virtualization */ + task_id_t originTaskId; /**< ID of the sender task */ + task_id_t destinationTaskId; /**< ID of the destination task */ + instance_t instance; /**< Task instance for virtualization */ MessageHeaderSize size; /**< Message size (not including header size) */ } MessageHeader;