#ifndef SIMIX_PRIVATE_H
#define SIMIX_PRIVATE_H
-#include <stdio.h>
#include "simix/simix.h"
#include "surf/surf.h"
#include "xbt/fifo.h"
int iwannadie : 1;
smx_mutex_t mutex; /* mutex on which the process is blocked */
smx_cond_t cond; /* cond on which the process is blocked */
+ smx_sem_t sem; /* semaphore on which the process is blocked */
smx_action_t waiting_action;
xbt_dict_t properties;
void *data; /* kept for compatibility, it should be replaced with moddata */
} s_smx_cond_t;
+typedef struct s_smx_sem {
+ /* KEEP IT IN SYNC WITH src/xbt_sg_thread.c::struct s_xbt_sem */
+ xbt_swag_t sleeping; /* list of sleeping process */
+ int capacity;
+ xbt_fifo_t actions; /* list of actions */
+ /* KEEP IT IN SYNC WITH src/xbt_sg_thread.c::struct s_xbt_sem */
+
+} s_smx_sem_t;
+
/******************************* Networking ***********************************/
/** @brief Rendez-vous point datatype */
smx_mutex_t read;
smx_mutex_t write;
xbt_fifo_t comm_fifo;
+ void *data;
} s_smx_rvpoint_t;
typedef struct s_smx_comm {
smx_comm_type_t type; /* Type of the communication (comm_send,comm_recv) */
smx_rdv_t rdv; /* Rendez-vous where the comm is queued */
- smx_cond_t cond; /* Condition associated to the surf simulation */
+ smx_sem_t sem; /* Semaphore associated to the surf simulation */
int refcount; /* Number of processes involved in the cond */
/* Surf action data */
typedef struct s_smx_action {
char *name; /**< @brief action name if any */
xbt_fifo_t cond_list; /*< conditional variables that must be signaled when the action finish. */
+ xbt_fifo_t sem_list; /*< semaphores that must be signaled when the action finish. */
void *data; /**< @brief user data */
int refcount; /**< @brief reference counter */
surf_action_t surf_action; /* SURF modeling of computation */
void SIMIX_ctx_thread_factory_init(smx_context_factory_t * factory);
void SIMIX_ctx_sysv_factory_init(smx_context_factory_t * factory);
+void SIMIX_ctx_lua_factory_init(smx_context_factory_t * factory);
+void SIMIX_ctx_lua_factory_loadfile(const char *file);
+
void SIMIX_ctx_java_factory_init(smx_context_factory_t * factory);