From: thiery Date: Tue, 25 Jan 2011 12:46:55 +0000 (+0000) Subject: Stringify e_smx_req_t just by using macros (remove the special header) X-Git-Tag: v3.6_beta2~439 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/34c9e08888fae4fc39aa22502070b37c0ab8a5d6?hp=60209fce216635a9ad238819cbf8ee2a8f532705 Stringify e_smx_req_t just by using macros (remove the special header) git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@9490 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- diff --git a/src/simix/smurf_private.h b/src/simix/smurf_private.h index f4d6a2bf70..0a0bcd8566 100644 --- a/src/simix/smurf_private.h +++ b/src/simix/smurf_private.h @@ -8,10 +8,116 @@ #define _SIMIX_SMURF_PRIVATE_H /********************************* Requests ***********************************/ + +/* we want to build the e_smx_t enumeration and the table of the corresponding + * strings automatically, using macros */ + +#define SIMIX_REQ_LIST1 \ +SIMIX_REQ_ENUM_ELEMENT(REQ_NO_REQ),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_HOST_GET_BY_NAME),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_HOST_GET_NAME),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_HOST_GET_PROPERTIES),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_HOST_GET_SPEED),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_HOST_GET_AVAILABLE_SPEED),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_HOST_GET_STATE),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_HOST_GET_DATA),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_HOST_SET_DATA),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_HOST_EXECUTE),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_HOST_PARALLEL_EXECUTE),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_HOST_EXECUTION_DESTROY),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_HOST_EXECUTION_CANCEL),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_HOST_EXECUTION_GET_REMAINS),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_HOST_EXECUTION_GET_STATE),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_HOST_EXECUTION_SET_PRIORITY),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_HOST_EXECUTION_WAIT),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_PROCESS_CREATE),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_PROCESS_KILL),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_PROCESS_CHANGE_HOST),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_PROCESS_SUSPEND),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_PROCESS_RESUME),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_PROCESS_COUNT),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_PROCESS_GET_DATA),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_PROCESS_SET_DATA),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_PROCESS_GET_HOST),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_PROCESS_GET_NAME),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_PROCESS_IS_SUSPENDED),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_PROCESS_GET_PROPERTIES),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_PROCESS_SLEEP),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_RDV_CREATE),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_RDV_DESTROY),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_RDV_GEY_BY_NAME),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_RDV_COMM_COUNT_BY_HOST),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_RDV_GET_HEAD),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_COMM_ISEND),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_COMM_IRECV),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_COMM_DESTROY),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_COMM_CANCEL),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_COMM_WAITANY),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_COMM_WAIT),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_COMM_TEST),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_COMM_TESTANY),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_COMM_GET_REMAINS),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_COMM_GET_STATE),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_COMM_GET_SRC_DATA),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_COMM_GET_DST_DATA),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_COMM_GET_SRC_BUFF),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_COMM_GET_DST_BUFF),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_COMM_GET_SRC_BUFF_SIZE),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_COMM_GET_DST_BUFF_SIZE),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_COMM_GET_SRC_PROC),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_COMM_GET_DST_PROC),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_MUTEX_INIT),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_MUTEX_DESTROY),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_MUTEX_LOCK),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_MUTEX_TRYLOCK),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_MUTEX_UNLOCK),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_COND_INIT),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_COND_DESTROY),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_COND_SIGNAL),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_COND_WAIT),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_COND_WAIT_TIMEOUT),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_COND_BROADCAST),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_SEM_INIT),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_SEM_DESTROY),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_SEM_RELEASE),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_SEM_WOULD_BLOCK),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_SEM_ACQUIRE),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_SEM_ACQUIRE_TIMEOUT),\ +SIMIX_REQ_ENUM_ELEMENT(REQ_SEM_GET_CAPACITY) + +/* REQ_COMM_IS_LATENCY_BOUNDED and REQ_SET_CATEGORY make things complicated + * because they are not always present */ +#ifdef HAVE_LATENCY_BOUND_TRACKING +#define SIMIX_REQ_LIST2 \ +,SIMIX_REQ_ENUM_ELEMENT(REQ_COMM_IS_LATENCY_BOUNDED) +#else +#define SIMIX_REQ_LIST2 +#endif + +#ifdef HAVE_TRACING +#define SIMIX_REQ_LIST3 \ +,SIMIX_REQ_ENUM_ELEMENT(REQ_SET_CATEGORY) +#else +#define SIMIX_REQ_LIST3 +#endif + +/* SIMIX_REQ_LIST is the final macro to use */ +#define SIMIX_REQ_LIST SIMIX_REQ_LIST1 SIMIX_REQ_LIST2 SIMIX_REQ_LIST3 + +/* you can redefine the following macro differently to generate something else + * with the list of enumeration values (e.g. a table of strings or a table of function pointers) */ +#define SIMIX_REQ_ENUM_ELEMENT(x) x + +/** + * \brief All possible SIMIX requests. + */ typedef enum { -#include "smx_req_enum.h" +SIMIX_REQ_LIST } e_smx_req_t; +/** + * \brief Represents a SIMIX request. + */ typedef struct s_smx_req { s_xbt_swag_hookup_t state_hookup; e_smx_req_t call; diff --git a/src/simix/smx_req_enum.h b/src/simix/smx_req_enum.h deleted file mode 100644 index 84d9ccae23..0000000000 --- a/src/simix/smx_req_enum.h +++ /dev/null @@ -1,94 +0,0 @@ -/* Copyright (c) 2007, 2008, 2009, 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. */ - - -/* This header contains the list of all SIMIX request types. - * It may be included mutiple times, with different definitions of the - * SIMIX_REQ_ENUM_ELEMENT macro to build different things. */ -#ifndef SIMIX_REQ_ENUM_ELEMENT -#define SIMIX_REQ_ENUM_ELEMENT(x) x -#endif - -SIMIX_REQ_ENUM_ELEMENT(REQ_NO_REQ), /* Used when there is no ongoing request here */ -SIMIX_REQ_ENUM_ELEMENT(REQ_HOST_GET_BY_NAME), -SIMIX_REQ_ENUM_ELEMENT(REQ_HOST_GET_NAME), -SIMIX_REQ_ENUM_ELEMENT(REQ_HOST_GET_PROPERTIES), -SIMIX_REQ_ENUM_ELEMENT(REQ_HOST_GET_SPEED), -SIMIX_REQ_ENUM_ELEMENT(REQ_HOST_GET_AVAILABLE_SPEED), -SIMIX_REQ_ENUM_ELEMENT(REQ_HOST_GET_STATE), -SIMIX_REQ_ENUM_ELEMENT(REQ_HOST_GET_DATA), -SIMIX_REQ_ENUM_ELEMENT(REQ_HOST_SET_DATA), -SIMIX_REQ_ENUM_ELEMENT(REQ_HOST_EXECUTE), -SIMIX_REQ_ENUM_ELEMENT(REQ_HOST_PARALLEL_EXECUTE), -SIMIX_REQ_ENUM_ELEMENT(REQ_HOST_EXECUTION_DESTROY), -SIMIX_REQ_ENUM_ELEMENT(REQ_HOST_EXECUTION_CANCEL), -SIMIX_REQ_ENUM_ELEMENT(REQ_HOST_EXECUTION_GET_REMAINS), -SIMIX_REQ_ENUM_ELEMENT(REQ_HOST_EXECUTION_GET_STATE), -SIMIX_REQ_ENUM_ELEMENT(REQ_HOST_EXECUTION_SET_PRIORITY), -SIMIX_REQ_ENUM_ELEMENT(REQ_HOST_EXECUTION_WAIT), -SIMIX_REQ_ENUM_ELEMENT(REQ_PROCESS_CREATE), -SIMIX_REQ_ENUM_ELEMENT(REQ_PROCESS_KILL), -SIMIX_REQ_ENUM_ELEMENT(REQ_PROCESS_CHANGE_HOST), -SIMIX_REQ_ENUM_ELEMENT(REQ_PROCESS_SUSPEND), -SIMIX_REQ_ENUM_ELEMENT(REQ_PROCESS_RESUME), -SIMIX_REQ_ENUM_ELEMENT(REQ_PROCESS_COUNT), -SIMIX_REQ_ENUM_ELEMENT(REQ_PROCESS_GET_DATA), -SIMIX_REQ_ENUM_ELEMENT(REQ_PROCESS_SET_DATA), -SIMIX_REQ_ENUM_ELEMENT(REQ_PROCESS_GET_HOST), -SIMIX_REQ_ENUM_ELEMENT(REQ_PROCESS_GET_NAME), -SIMIX_REQ_ENUM_ELEMENT(REQ_PROCESS_IS_SUSPENDED), -SIMIX_REQ_ENUM_ELEMENT(REQ_PROCESS_GET_PROPERTIES), -SIMIX_REQ_ENUM_ELEMENT(REQ_PROCESS_SLEEP), -SIMIX_REQ_ENUM_ELEMENT(REQ_RDV_CREATE), -SIMIX_REQ_ENUM_ELEMENT(REQ_RDV_DESTROY), -SIMIX_REQ_ENUM_ELEMENT(REQ_RDV_GEY_BY_NAME), -SIMIX_REQ_ENUM_ELEMENT(REQ_RDV_COMM_COUNT_BY_HOST), -SIMIX_REQ_ENUM_ELEMENT(REQ_RDV_GET_HEAD), -SIMIX_REQ_ENUM_ELEMENT(REQ_COMM_ISEND), -SIMIX_REQ_ENUM_ELEMENT(REQ_COMM_IRECV), -SIMIX_REQ_ENUM_ELEMENT(REQ_COMM_DESTROY), -SIMIX_REQ_ENUM_ELEMENT(REQ_COMM_CANCEL), -SIMIX_REQ_ENUM_ELEMENT(REQ_COMM_WAITANY), -SIMIX_REQ_ENUM_ELEMENT(REQ_COMM_WAIT), -SIMIX_REQ_ENUM_ELEMENT(REQ_COMM_TEST), -SIMIX_REQ_ENUM_ELEMENT(REQ_COMM_TESTANY), -SIMIX_REQ_ENUM_ELEMENT(REQ_COMM_GET_REMAINS), -SIMIX_REQ_ENUM_ELEMENT(REQ_COMM_GET_STATE), -SIMIX_REQ_ENUM_ELEMENT(REQ_COMM_GET_SRC_DATA), -SIMIX_REQ_ENUM_ELEMENT(REQ_COMM_GET_DST_DATA), -SIMIX_REQ_ENUM_ELEMENT(REQ_COMM_GET_SRC_BUFF), -SIMIX_REQ_ENUM_ELEMENT(REQ_COMM_GET_DST_BUFF), -SIMIX_REQ_ENUM_ELEMENT(REQ_COMM_GET_SRC_BUFF_SIZE), -SIMIX_REQ_ENUM_ELEMENT(REQ_COMM_GET_DST_BUFF_SIZE), -SIMIX_REQ_ENUM_ELEMENT(REQ_COMM_GET_SRC_PROC), -SIMIX_REQ_ENUM_ELEMENT(REQ_COMM_GET_DST_PROC), -#ifdef HAVE_LATENCY_BOUND_TRACKING -SIMIX_REQ_ENUM_ELEMENT(REQ_COMM_IS_LATENCY_BOUNDED), -#endif -#ifdef HAVE_TRACING -SIMIX_REQ_ENUM_ELEMENT(REQ_SET_CATEGORY), -#endif -SIMIX_REQ_ENUM_ELEMENT(REQ_MUTEX_INIT), -SIMIX_REQ_ENUM_ELEMENT(REQ_MUTEX_DESTROY), -SIMIX_REQ_ENUM_ELEMENT(REQ_MUTEX_LOCK), -SIMIX_REQ_ENUM_ELEMENT(REQ_MUTEX_TRYLOCK), -SIMIX_REQ_ENUM_ELEMENT(REQ_MUTEX_UNLOCK), -SIMIX_REQ_ENUM_ELEMENT(REQ_COND_INIT), -SIMIX_REQ_ENUM_ELEMENT(REQ_COND_DESTROY), -SIMIX_REQ_ENUM_ELEMENT(REQ_COND_SIGNAL), -SIMIX_REQ_ENUM_ELEMENT(REQ_COND_WAIT), -SIMIX_REQ_ENUM_ELEMENT(REQ_COND_WAIT_TIMEOUT), -SIMIX_REQ_ENUM_ELEMENT(REQ_COND_BROADCAST), -SIMIX_REQ_ENUM_ELEMENT(REQ_SEM_INIT), -SIMIX_REQ_ENUM_ELEMENT(REQ_SEM_DESTROY), -SIMIX_REQ_ENUM_ELEMENT(REQ_SEM_RELEASE), -SIMIX_REQ_ENUM_ELEMENT(REQ_SEM_WOULD_BLOCK), -SIMIX_REQ_ENUM_ELEMENT(REQ_SEM_ACQUIRE), -SIMIX_REQ_ENUM_ELEMENT(REQ_SEM_ACQUIRE_TIMEOUT), -SIMIX_REQ_ENUM_ELEMENT(REQ_SEM_GET_CAPACITY) - -#undef SIMIX_REQ_ENUM_ELEMENT - diff --git a/src/simix/smx_user.c b/src/simix/smx_user.c index 55f74976d9..1b75a462a9 100644 --- a/src/simix/smx_user.c +++ b/src/simix/smx_user.c @@ -3,8 +3,9 @@ XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(simix); static const char* request_names[] = { +#undef SIMIX_REQ_ENUM_ELEMENT #define SIMIX_REQ_ENUM_ELEMENT(x) #x /* generate strings from the enumeration values */ -#include "smx_req_enum.h" +SIMIX_REQ_LIST #undef SIMIX_REQ_ENUM_ELEMENT };