X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/6ba4f911e61163825ac96b24b1e8c894a5de1a6c..65e338fbfd769d49b29242bfe56cde18c03b6074:/src/instr/msg_task_instr.c diff --git a/src/instr/msg_task_instr.c b/src/instr/msg_task_instr.c index febb1b6131..5e868c3300 100644 --- a/src/instr/msg_task_instr.c +++ b/src/instr/msg_task_instr.c @@ -1,89 +1,68 @@ -/* - * msg.c - * - * Created on: Nov 24, 2009 - * Author: Lucas Schnorr - * License: This program is free software; you can redistribute - * it and/or modify it under the terms of the license - * (GNU LGPL) which comes with this package. - * - * Copyright (c) 2009 The SimGrid team. - */ +/* Copyright (c) 2010. The SimGrid Team. + * All rights reserved. */ + +/* This program is free software; you can redistribute it and/or modify it + * under the terms of the license (GNU LGPL) which comes with this package. */ #include "instr/private.h" #ifdef HAVE_TRACING static xbt_dict_t task_containers = NULL; -static xbt_dict_t current_task_category = NULL; void __TRACE_msg_init (void) { - current_task_category = xbt_dict_new(); task_containers = xbt_dict_new(); } -void __TRACE_current_category_set (m_task_t task) -{ - char processid[100]; - snprintf (processid, 100, "%p", SIMIX_process_self()); - xbt_dict_set (current_task_category, processid, xbt_strdup (task->category), xbt_free); -} - -void __TRACE_current_category_unset () -{ - char processid[100]; - snprintf (processid, 100, "%p", SIMIX_process_self()); - xbt_dict_remove (current_task_category, processid); -} - -char *__TRACE_current_category_get (smx_process_t proc) -{ - char processid[100]; - snprintf (processid, 100, "%p", proc); - return xbt_dict_get_or_null (current_task_category, processid); -} - void __TRACE_task_location (m_task_t task) { + char container[200]; + char name[200], alias[200]; + char *val_one = NULL; + m_process_t process = NULL; + m_host_t host = NULL; if (!IS_TRACING_TASKS) return; - char container[200]; - m_process_t process = MSG_process_self(); - m_host_t host = MSG_process_get_host (process); + process = MSG_process_self(); + host = MSG_process_get_host (process); //tasks are grouped by host TRACE_host_container (host, container, 200); - - char name[200], alias[200]; TRACE_task_container (task, name, 200); TRACE_task_alias_container (task, process, host, alias, 200); //check if task container is already created if (!xbt_dict_get_or_null (task_containers, alias)){ pajeCreateContainer (MSG_get_clock(), alias, "TASK", container, name); - xbt_dict_set (task_containers, xbt_strdup(alias), xbt_strdup("1"), xbt_free); + pajeSetState (MSG_get_clock(), "category", alias, task->category); + val_one = xbt_strdup ("1"); + xbt_dict_set (task_containers, alias, val_one, xbt_free); } } void __TRACE_task_location_present (m_task_t task) { + char alias[200]; + m_process_t process = NULL; + m_host_t host = NULL; if (!IS_TRACING_TASKS) return; //updating presence state of this task location - m_process_t process = MSG_process_self(); - m_host_t host = MSG_process_get_host (process); + process = MSG_process_self(); + host = MSG_process_get_host (process); - char alias[200]; TRACE_task_alias_container (task, process, host, alias, 200); pajePushState (MSG_get_clock(), "presence", alias, "presence"); } void __TRACE_task_location_not_present (m_task_t task) { + char alias[200]; + m_process_t process = NULL; + m_host_t host = NULL; if (!IS_TRACING_TASKS) return; //updating presence state of this task location - m_process_t process = MSG_process_self(); - m_host_t host = MSG_process_get_host (process); + process = MSG_process_self(); + host = MSG_process_get_host (process); - char alias[200]; TRACE_task_alias_container (task, process, host, alias, 200); pajePopState (MSG_get_clock(), "presence", alias); } @@ -93,6 +72,7 @@ void __TRACE_task_location_not_present (m_task_t task) */ void TRACE_msg_set_task_category(m_task_t task, const char *category) { + char name[200]; if (!IS_TRACING) return; //set task category @@ -103,7 +83,6 @@ void TRACE_msg_set_task_category(m_task_t task, const char *category) __TRACE_task_location (task); __TRACE_task_location_present (task); - char name[200]; TRACE_task_container (task, name, 200); //create container of type "task" to indicate behavior if (IS_TRACING_TASKS) pajeCreateContainer (MSG_get_clock(), name, "task", category, name); @@ -121,32 +100,32 @@ void TRACE_msg_task_create (m_task_t task) /* MSG_task_execute related functions */ void TRACE_msg_task_execute_start (m_task_t task) { + char name[200]; if (!IS_TRACING || !IS_TRACED(task)) return; - char name[200]; TRACE_task_container (task, name, 200); if (IS_TRACING_TASKS) pajePushState (MSG_get_clock(), "task-state", name, "execute"); - __TRACE_current_category_set (task); + __TRACE_msg_category_set (SIMIX_process_self(), task); } void TRACE_msg_task_execute_end (m_task_t task) { + char name[200]; if (!IS_TRACING || !IS_TRACED(task)) return; - char name[200]; TRACE_task_container (task, name, 200); if (IS_TRACING_TASKS) pajePopState (MSG_get_clock(), "task-state", name); - __TRACE_current_category_unset(); + __TRACE_category_unset(SIMIX_process_self()); } /* MSG_task_destroy related functions */ void TRACE_msg_task_destroy (m_task_t task) { + char name[200]; if (!IS_TRACING || !IS_TRACED(task)) return; - char name[200]; TRACE_task_container (task, name, 200); if (IS_TRACING_TASKS) pajeDestroyContainer (MSG_get_clock(), "task", name); @@ -166,12 +145,14 @@ void TRACE_msg_task_get_start (void) void TRACE_msg_task_get_end (double start_time, m_task_t task) { + char name[200]; if (!IS_TRACING || !IS_TRACED(task)) return; - char name[200]; TRACE_task_container (task, name, 200); if (IS_TRACING_TASKS) pajePopState (MSG_get_clock(), "task-state", name); + __TRACE_msg_volume_finish (task); + __TRACE_task_location (task); __TRACE_task_location_present (task); } @@ -179,18 +160,20 @@ void TRACE_msg_task_get_end (double start_time, m_task_t task) /* MSG_task_put related functions */ int TRACE_msg_task_put_start (m_task_t task) { + char name[200]; if (!IS_TRACING || !IS_TRACED(task)) return 0; - char name[200]; TRACE_task_container (task, name, 200); if (IS_TRACING_TASKS) pajePopState (MSG_get_clock(), "task-state", name); if (IS_TRACING_TASKS) pajePushState (MSG_get_clock(), "task-state", name, "communicate"); + __TRACE_msg_volume_start (task); + //trace task location grouped by host __TRACE_task_location_not_present (task); //set current category - __TRACE_current_category_set (task); + __TRACE_msg_category_set (SIMIX_process_self(), task); return 1; } @@ -198,7 +181,7 @@ void TRACE_msg_task_put_end (void) { if (!IS_TRACING) return; - __TRACE_current_category_unset (); + __TRACE_category_unset (SIMIX_process_self()); } #endif