SIMCALL_ENUM_ELEMENT(SIMCALL_SEM_ACQUIRE),\
SIMCALL_ENUM_ELEMENT(SIMCALL_SEM_ACQUIRE_TIMEOUT),\
SIMCALL_ENUM_ELEMENT(SIMCALL_SEM_GET_CAPACITY),\
-SIMCALL_ENUM_ELEMENT(SIMCALL_FILE_READ)
+SIMCALL_ENUM_ELEMENT(SIMCALL_FILE_READ),\
+SIMCALL_ENUM_ELEMENT(SIMCALL_FILE_WRITE),\
+SIMCALL_ENUM_ELEMENT(SIMCALL_FILE_OPEN),\
+SIMCALL_ENUM_ELEMENT(SIMCALL_FILE_CLOSE),\
+SIMCALL_ENUM_ELEMENT(SIMCALL_FILE_STAT)
+
/* SIMCALL_COMM_IS_LATENCY_BOUNDED and SIMCALL_SET_CATEGORY make things complicated
* because they are not always present */
} sem_get_capacity;
struct {
- char* name;;
+ const char* storage;
+ void *ptr;
+ size_t size;
+ size_t nmemb;
+ m_file_t stream;
+ size_t result;
} file_read;
+
+ struct {
+ const char* storage;
+ const void *ptr;
+ size_t size;
+ size_t nmemb;
+ m_file_t stream;
+ size_t result;
+ } file_write;
+
+ struct {
+ const char* storage;
+ const char* path;
+ const char* mode;
+ m_file_t result;
+ } file_open;
+
+ struct {
+ const char* storage;
+ m_file_t fp;
+ int result;
+ } file_close;
+
+ struct {
+ const char* storage;
+ int fd;
+ //Next should be struct stat* buf
+ void* buf;
+ int result;
+ } file_stat;
+
};
} s_smx_simcall_t, *smx_simcall_t;
void SIMIX_simcall_answer(smx_simcall_t);
void SIMIX_simcall_pre(smx_simcall_t, int);
void SIMIX_simcall_post(smx_action_t);
-XBT_INLINE smx_simcall_t SIMIX_simcall_mine(void);
+smx_simcall_t SIMIX_simcall_mine(void);
const char *SIMIX_simcall_name(e_smx_simcall_t kind);
#endif