From 655cc78150b8f1b58c634dab01ff2a7aae715d1d Mon Sep 17 00:00:00 2001 From: schnorr Date: Mon, 13 Dec 2010 16:45:20 +0000 Subject: [PATCH] [trace] other parts of tracing can also declare types (needed by msg process tracing) details: - and also newEventType and getEventType git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@9209 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- src/instr/instr_paje.c | 17 +++++++++++++++-- src/instr/instr_private.h | 8 ++++++++ src/instr/instr_routing.c | 29 +++++++++++++++++++++++++---- 3 files changed, 48 insertions(+), 6 deletions(-) diff --git a/src/instr/instr_paje.c b/src/instr/instr_paje.c index de8945dba9..aed13c0d80 100644 --- a/src/instr/instr_paje.c +++ b/src/instr/instr_paje.c @@ -32,7 +32,7 @@ static int pajeEndLinkId = 13; #define UNUSED009 17 #define UNUSED005 18 static int pajePushStateId = 19; -#define UNUSED001 20 +static int pajeDefineEventTypeWithColorId = 20; static int pajeDefineVariableTypeWithColorId = 21; static int pajeSetVariableId = 22; static int pajeAddVariableId = 23; @@ -85,6 +85,12 @@ void TRACE_paje_create_header(void) %% Alias string \n\ %% EntityType string \n\ %% Name string \n\ +%% Color color \n\ +%%EndEventDef \n\ +%%EventDef PajeDefineEventType %d \n\ +%% Alias string \n\ +%% EntityType string \n\ +%% Name string \n\ %%EndEventDef \n\ %%EventDef PajeDefineLinkType %d \n\ %% Alias string \n\ @@ -181,7 +187,7 @@ void TRACE_paje_create_header(void) %% EntityType string \n\ %% Container string \n\ %% Value string \n\ -%%EndEventDef\n", pajeDefineContainerTypeId, pajeDefineStateTypeId, pajeDefineEntityValueId, pajeDefineEventTypeId, pajeDefineLinkTypeId, pajeCreateContainerId, pajeDestroyContainerId, pajeSetStateId, pajePopStateId, pajeStartLinkId, pajeEndLinkId, pajePushStateId, pajeSetVariableId, pajeAddVariableId, pajeSubVariableId, pajeDefineVariableTypeId, pajeDefineVariableTypeWithColorId, pajeStartLinkWithVolumeId, pajeNewEventId); +%%EndEventDef\n", pajeDefineContainerTypeId, pajeDefineStateTypeId, pajeDefineEntityValueId, pajeDefineEventTypeWithColorId, pajeDefineEventTypeId, pajeDefineLinkTypeId, pajeCreateContainerId, pajeDestroyContainerId, pajeSetStateId, pajePopStateId, pajeStartLinkId, pajeEndLinkId, pajePushStateId, pajeSetVariableId, pajeAddVariableId, pajeSubVariableId, pajeDefineVariableTypeId, pajeDefineVariableTypeWithColorId, pajeStartLinkWithVolumeId, pajeNewEventId); } /* internal to this file */ @@ -254,6 +260,13 @@ void pajeDefineStateType(const char *alias, const char *containerType, containerType, name); } +void pajeDefineEventTypeWithColor(const char *alias, const char *containerType, + const char *name, const char *color) +{ + fprintf(tracing_file, "%d %s %s %s %s\n", pajeDefineEventTypeWithColorId, alias, + containerType, name, color); +} + void pajeDefineEventType(const char *alias, const char *containerType, const char *name) { diff --git a/src/instr/instr_private.h b/src/instr/instr_private.h index 2ab9aeac8a..2cb140920a 100644 --- a/src/instr/instr_private.h +++ b/src/instr/instr_private.h @@ -23,6 +23,7 @@ typedef enum { TYPE_LINK, TYPE_CONTAINER, TYPE_STATE, + TYPE_EVENT, } e_entity_types; typedef struct s_type *type_t; @@ -63,6 +64,8 @@ void pajeDefineContainerType(const char *alias, const char *containerType, const char *name); void pajeDefineStateType(const char *alias, const char *containerType, const char *name); +void pajeDefineEventTypeWithColor(const char *alias, const char *containerType, + const char *name, const char *color); void pajeDefineEventType(const char *alias, const char *containerType, const char *name); void pajeDefineLinkType(const char *alias, const char *containerType, @@ -218,6 +221,11 @@ void TRACE_sd_task_destroy(SD_task_t task); /* instr_routing.c */ container_t newContainer (const char *name, e_container_types kind, container_t father); container_t getContainer (const char *name); +type_t newContainerType (const char *typename, e_entity_types kind, type_t father); +type_t newEventType (const char *typename, e_entity_types kind, const char *color, type_t father); +type_t newVariableType (const char *typename, e_entity_types kind, const char *color, type_t father); +type_t newLinkType (const char *typename, e_entity_types kind, type_t father, type_t source, type_t dest); +type_t newStateType (const char *typename, e_entity_types kind, type_t father); type_t getType (const char *name); void destroyContainer (container_t container); void instr_routing_define_callbacks (void); diff --git a/src/instr/instr_routing.c b/src/instr/instr_routing.c index 496f6de81c..75d33b27ea 100644 --- a/src/instr/instr_routing.c +++ b/src/instr/instr_routing.c @@ -57,7 +57,7 @@ static type_t newType (const char *typename, e_entity_types kind, type_t father) return ret; } -static type_t newContainerType (const char *typename, e_entity_types kind, type_t father) +type_t newContainerType (const char *typename, e_entity_types kind, type_t father) { type_t ret = newType (typename, kind, father); // if (father) INFO4("ContainerType %s(%s), child of %s(%s)", ret->name, ret->id, father->name, father->id); @@ -65,7 +65,19 @@ static type_t newContainerType (const char *typename, e_entity_types kind, type_ return ret; } -static type_t newVariableType (const char *typename, e_entity_types kind, const char *color, type_t father) +type_t newEventType (const char *typename, e_entity_types kind, const char *color, type_t father) +{ + type_t ret = newType (typename, kind, father); +// INFO4("EventType %s(%s), child of %s(%s)", ret->name, ret->id, father->name, father->id); + if (color){ + pajeDefineEventTypeWithColor (ret->id, ret->father->id, ret->name, color); + }else{ + pajeDefineEventType(ret->id, ret->father->id, ret->name); + } + return ret; +} + +type_t newVariableType (const char *typename, e_entity_types kind, const char *color, type_t father) { type_t ret = newType (typename, kind, father); // INFO4("VariableType %s(%s), child of %s(%s)", ret->name, ret->id, father->name, father->id); @@ -77,7 +89,7 @@ static type_t newVariableType (const char *typename, e_entity_types kind, const return ret; } -static type_t newLinkType (const char *typename, e_entity_types kind, type_t father, type_t source, type_t dest) +type_t newLinkType (const char *typename, e_entity_types kind, type_t father, type_t source, type_t dest) { type_t ret = newType (typename, kind, father); // INFO8("LinkType %s(%s), child of %s(%s) %s(%s)->%s(%s)", ret->name, ret->id, father->name, father->id, source->name, source->id, dest->name, dest->id); @@ -85,7 +97,7 @@ static type_t newLinkType (const char *typename, e_entity_types kind, type_t fat return ret; } -static type_t newStateType (const char *typename, e_entity_types kind, type_t father) +type_t newStateType (const char *typename, e_entity_types kind, type_t father) { type_t ret = newType (typename, kind, father); // INFO4("StateType %s(%s), child of %s(%s)", ret->name, ret->id, father->name, father->id); @@ -109,6 +121,15 @@ static type_t getContainerType (const char *typename, type_t father) return ret; } +static type_t getEventType (const char *typename, const char *color, type_t father) +{ + type_t ret = xbt_dict_get_or_null (father->children, typename); + if (ret == NULL){ + ret = newEventType (typename, TYPE_EVENT, color, father); + } + return ret; +} + static type_t getVariableType (const char *typename, const char *color, type_t father) { type_t ret = xbt_dict_get_or_null (father->children, typename); -- 2.20.1