#ifndef SIMIX_PRIVATE_H
#define SIMIX_PRIVATE_H
+#include <stdio.h>
#include "simix/simix.h"
#include "surf/surf.h"
#include "xbt/fifo.h"
#include "xbt/dict.h"
#include "xbt/context.h"
#include "xbt/config.h"
+#include "xbt/function_types.h"
/******************************* Datatypes **********************************/
smx_process_t current_process;
xbt_dict_t registered_functions;
+ smx_creation_func_t *create_process_function;
+ void_f_pvoid_t* kill_process_function;
} s_SIMIX_Global_t, *SIMIX_Global_t;
extern SIMIX_Global_t simix_global;
/******************************* Process *************************************/
typedef struct s_smx_simdata_process {
- smx_host_t host; /* the host on which the process is running */
+ smx_host_t s_host; /* the host on which the process is running */
xbt_context_t context; /* the context that executes the scheduler fonction */
int blocked;
int suspended;
char **argv; /* arguments table if any */
} s_smx_simdata_process_t;
-typedef struct process_arg {
+typedef struct s_smx_process_arg {
const char *name;
- smx_process_code_t code;
+ xbt_main_func_t code;
void *data;
- smx_host_t host;
+ char *hostname;
int argc;
char **argv;
double kill_time;
-} s_process_arg_t, *process_arg_t;
+} s_smx_process_arg_t, *smx_process_arg_t;
/********************************* Mutex and Conditional ****************************/
typedef struct s_smx_mutex {
- xbt_swag_t sleeping; /* list of sleeping process */
- int using;
+
+ /* KEEP IT IN SYNC WITH src/xbt_sg_thread.c::struct s_xbt_mutex */
+ xbt_swag_t sleeping; /* list of sleeping process */
+ int using;
+ /* KEEP IT IN SYNC WITH src/xbt_sg_thread.c::struct s_xbt_mutex */
} s_smx_mutex_t;
typedef struct s_smx_cond {
- xbt_swag_t sleeping; /* list of sleeping process */
- smx_mutex_t mutex;
- xbt_fifo_t actions; /* list of actions */
+
+ /* KEEP IT IN SYNC WITH src/xbt_sg_thread.c::struct s_xbt_cond */
+ xbt_swag_t sleeping; /* list of sleeping process */
+ smx_mutex_t mutex;
+ xbt_fifo_t actions; /* list of actions */
+ /* KEEP IT IN SYNC WITH src/xbt_sg_thread.c::struct s_xbt_cond */
} s_smx_cond_t;
extern xbt_cfg_t _simix_cfg_set;
-#define CHECK_HOST() xbt_assert0(surf_workstation_resource->extension_public-> \
+#define SIMIX_CHECK_HOST() xbt_assert0(surf_workstation_resource->extension_public-> \
get_state(SIMIX_host_self()->simdata->host)==SURF_CPU_ON,\
"Host failed, you cannot call this function.")
void __SIMIX_cond_wait(smx_cond_t cond);
-void __SIMIX_display_process_status(void);
-
-
#endif