X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/4c506a1e81412766b68c4a2ab989790562ec1ff0..8957cf5049e04e8d8b7a8183f863c7ea2977afe7:/src/instr/interface.c diff --git a/src/instr/interface.c b/src/instr/interface.c index 64a2445aa3..323b79a063 100644 --- a/src/instr/interface.c +++ b/src/instr/interface.c @@ -1,14 +1,8 @@ -/* - * interface.c - * - * Created on: Nov 23, 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" @@ -49,10 +43,13 @@ int TRACE_start_with_mask(const char *filename, int mask) { return 0; } - /* checking if the mask is good (only TRACE_PLATFORM for now) */ - if (mask != TRACE_PLATFORM){ + /* checking mask */ + if (!(mask&TRACE_PLATFORM || + mask&TRACE_TASK || + mask&TRACE_PROCESS || + mask&TRACE_VOLUME)){ THROW0 (tracing_error, TRACE_ERROR_MASK, - "Only TRACE_PLATFORM mask is accepted for now"); + "unknown tracing mask"); } FILE *file = fopen(filename, "w"); @@ -67,42 +64,42 @@ int TRACE_start_with_mask(const char *filename, int mask) { /* setting the mask */ trace_mask = mask; - //check if options are correct - if (IS_TRACING_TASKS){ - if (!IS_TRACING_PROCESSES){ - TRACE_end(); - THROW0 (tracing_error, TRACE_ERROR_MASK, - "TRACE_PROCESS must be enabled if TRACE_TASK is used"); - } + /* define paje hierarchy for tracing */ + pajeDefineContainerType("PLATFORM", "0", "platform"); + pajeDefineContainerType("HOST", "PLATFORM", "HOST"); + pajeDefineContainerType("LINK", "PLATFORM", "LINK"); + + if (IS_TRACING_PLATFORM){ + pajeDefineVariableType ("power", "HOST", "power"); + pajeDefineVariableType ("bandwidth", "LINK", "bandwidth"); + pajeDefineVariableType ("latency", "LINK", "latency"); } - if (IS_TRACING_PROCESSES|IS_TRACING_TASKS){ - if (!IS_TRACING_PLATFORM){ - TRACE_end(); - THROW0 (tracing_error, TRACE_ERROR_MASK, - "TRACE_PLATFORM must be enabled if TRACE_PROCESS or TRACE_TASK is used"); - } + if (IS_TRACING_PROCESSES || IS_TRACING_VOLUME){ + //processes grouped by host + pajeDefineContainerType("PROCESS", "HOST", "PROCESS"); } - //defining platform hierarchy - if (IS_TRACING_PLATFORM) pajeDefineContainerType("PLATFORM", "0", "platform"); - if (IS_TRACING_PLATFORM) pajeDefineContainerType("HOST", "PLATFORM", "HOST"); - if (IS_TRACING_PLATFORM) pajeDefineVariableType ("power", "HOST", "power"); - if (IS_TRACING_PLATFORM) pajeDefineContainerType("LINK", "PLATFORM", "LINK"); - if (IS_TRACING_PLATFORM) pajeDefineVariableType ("bandwidth", "LINK", "bandwidth"); - if (IS_TRACING_PLATFORM) pajeDefineVariableType ("latency", "LINK", "latency"); + if (IS_TRACING_PROCESSES){ + pajeDefineStateType("category", "PROCESS", "category"); + pajeDefineStateType("presence", "PROCESS", "presence"); + } - if (IS_TRACING_PROCESSES) pajeDefineContainerType("PROCESS", "HOST", "PROCESS"); - if (IS_TRACING_PROCESSES) pajeDefineStateType("presence", "PROCESS", "presence"); + if (IS_TRACING_VOLUME){ + pajeDefineLinkType ("volume", "0", "PROCESS", "PROCESS", "volume"); + } - if (IS_TRACING_PROCESSES){ - if (IS_TRACING_TASKS) pajeDefineContainerType("TASK", "PROCESS", "TASK"); - }else{ - if (IS_TRACING_TASKS) pajeDefineContainerType("TASK", "HOST", "TASK"); + if (IS_TRACING_TASKS){ + //tasks grouped by host + pajeDefineContainerType("TASK", "HOST", "TASK"); + pajeDefineStateType("category", "TASK", "category"); + pajeDefineStateType("presence", "TASK", "presence"); } - if (IS_TRACING_PLATFORM) pajeCreateContainer(MSG_get_clock(), "platform", "PLATFORM", "0", "simgrid-platform"); + /* creating the platform */ + pajeCreateContainer(MSG_get_clock(), "platform", "PLATFORM", "0", "simgrid-platform"); + /* other trace initialization */ defined_types = xbt_dict_new(); created_categories = xbt_dict_new(); __TRACE_msg_init(); @@ -152,7 +149,8 @@ void TRACE_define_type (const char *type, if (IS_TRACING_TASKS) pajeDefineContainerType ("task", type, "task"); if (IS_TRACING_TASKS) pajeDefineStateType ("task-state", "task", "task-state"); } - xbt_dict_set (defined_types, type, xbt_strdup("1"), xbt_free); + char *val_one = xbt_strdup ("1"); + xbt_dict_set (defined_types, type, &val_one, xbt_free); } int TRACE_create_category (const char *category, @@ -184,7 +182,8 @@ int TRACE_create_category (const char *category, snprintf (state, 100, "p%s", category); if (IS_TRACING_PLATFORM) pajeDefineVariableType (state, "HOST", state); - xbt_dict_set (created_categories, category, xbt_strdup("1"), xbt_free); + char *val_one = xbt_strdup ("1"); + xbt_dict_set (created_categories, category, &val_one, xbt_free); return 0; }