Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Stringify e_smx_req_t just by using macros (remove the special header)
authorthiery <thiery@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Tue, 25 Jan 2011 12:46:55 +0000 (12:46 +0000)
committerthiery <thiery@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Tue, 25 Jan 2011 12:46:55 +0000 (12:46 +0000)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@9490 48e7efb5-ca39-0410-a469-dd3cf9ba447f

src/simix/smurf_private.h
src/simix/smx_req_enum.h [deleted file]
src/simix/smx_user.c

index f4d6a2b..0a0bcd8 100644 (file)
 #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 (file)
index 84d9cca..0000000
+++ /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
-
index 55f7497..1b75a46 100644 (file)
@@ -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
 };