typedef struct m_host *m_host_t;
/** @} */
-
-/* ******************************** File ************************************ */
-/** @brief File datatype
- @ingroup m_datatypes_management_details */
-typedef struct m_file {
- char *name; /**< @brief file name */
- void *data; /**< @brief user data */
-} s_m_file_t;
-/** @brief File datatype
- @ingroup m_datatypes_management_details */
-typedef struct m_file *m_file_t;
-
-
-
/* ******************************** Task ************************************ */
typedef struct simdata_task *simdata_task_t;
SG_BEGIN_DECL()
-/* ****************************** File *********************************** */
-typedef struct s_smx_file *smx_file_t;
-
-
-
/* ******************************** Host ************************************ */
/** @defgroup m_datatypes_management_details Details on SIMIX datatypes */
/** @brief Host datatype
XBT_PUBLIC(unsigned int) simcall_sem_acquire_any(xbt_dynar_t sems);
XBT_PUBLIC(int) simcall_sem_get_capacity(smx_sem_t sem);
-XBT_PUBLIC(size_t) simcall_file_read(const char* storage, void* ptr, size_t size, size_t nmemb, smx_file_t stream);
-XBT_PUBLIC(size_t) simcall_file_write(const char* storage, const void* ptr, size_t size, size_t nmemb, smx_file_t stream);
-XBT_PUBLIC(smx_file_t) simcall_file_open(const char* storage, const char* path, const char* mode);
-XBT_PUBLIC(int) simcall_file_close(const char* storage, smx_file_t fp);
+XBT_PUBLIC(size_t) simcall_file_read(const char* storage, void* ptr, size_t size, size_t nmemb, m_file_t stream);
+XBT_PUBLIC(size_t) simcall_file_write(const char* storage, const void* ptr, size_t size, size_t nmemb, m_file_t stream);
+XBT_PUBLIC(m_file_t) simcall_file_open(const char* storage, const char* path, const char* mode);
+XBT_PUBLIC(int) simcall_file_close(const char* storage, m_file_t fp);
XBT_PUBLIC(int) simcall_file_stat(const char* storage, int fd, void* buf);
SG_END_DECL()
#define XBT_BACKTRACE_SIZE 10 /* FIXME: better place? Do document */
+/** @brief File datatype
+ @ingroup m_datatypes_management_details */
+typedef struct m_file {
+ char *name; /**< @brief file name */
+ void *content; /**< @brief user data */
+} s_m_file_t;
+/** @brief File datatype
+ @ingroup m_datatypes_management_details */
+typedef struct m_file *m_file_t;
+
+
SG_END_DECL()
#endif /* XBT_MISC_H */
xbt_dict_t properties);
} s_surf_model_extension_network_t;
-typedef struct s_surf_file {
- char *name; /**< @brief host name if any */
- void *data; /**< @brief user data */
-} s_surf_file_t;
-typedef struct s_surf_file *surf_file_t;
-
/* Storage model */
/** \brief Storage model extension public
typedef struct surf_storage_model_extension_public {
surf_action_t(*open) (void *storage, const char* path, const char* mode);
- surf_action_t(*close) (void *storage, surf_file_t fp);
- surf_action_t(*read) (void *storage, void* ptr, size_t size, size_t nmemb, surf_file_t stream);
- surf_action_t(*write) (void *storage, const void* ptr, size_t size, size_t nmemb, surf_file_t stream);
+ surf_action_t(*close) (void *storage, m_file_t fp);
+ surf_action_t(*read) (void *storage, void* ptr, size_t size, size_t nmemb, m_file_t stream);
+ surf_action_t(*write) (void *storage, const void* ptr, size_t size, size_t nmemb, m_file_t stream);
surf_action_t(*stat) (void *storage, int fd, void* buf);
void* (*create_resource) (const char* id, const char* model,const char* type_id);
} s_surf_model_extension_storage_t;
double (*get_link_bandwidth) (const void *link); /**< Return the current bandwidth of a network link */
double (*get_link_latency) (const void *link); /**< Return the current latency of a network link */
surf_action_t(*open) (void *workstation, const char* storage, const char* path, const char* mode);
- surf_action_t(*close) (void *workstation, const char* storage, surf_file_t fp);
- surf_action_t(*read) (void *workstation, const char* storage, void* ptr, size_t size, size_t nmemb, surf_file_t stream);
- surf_action_t(*write) (void *workstation, const char* storage, const void* ptr, size_t size, size_t nmemb, surf_file_t stream);
+ surf_action_t(*close) (void *workstation, const char* storage, m_file_t fp);
+ surf_action_t(*read) (void *workstation, const char* storage, void* ptr, size_t size, size_t nmemb, m_file_t stream);
+ surf_action_t(*write) (void *workstation, const char* storage, const void* ptr, size_t size, size_t nmemb, m_file_t stream);
surf_action_t(*stat) (void *workstation, const char* storage, int fd, void* buf);
int (*link_shared) (const void *link);
xbt_dict_t(*get_properties) (const void *resource);
*/
size_t MSG_file_read(const char* storage, void* ptr, size_t size, size_t nmemb, m_file_t stream)
{
- return simcall_file_read(storage, ptr, size, nmemb, (smx_file_t)stream);
+ return simcall_file_read(storage, ptr, size, nmemb, (m_file_t)stream);
}
/** \ingroup m_file_management
*/
size_t MSG_file_write(const char* storage, const void* ptr, size_t size, size_t nmemb, m_file_t stream)
{
- return simcall_file_write(storage, ptr, size, nmemb, (smx_file_t)stream);
+ return simcall_file_write(storage, ptr, size, nmemb, (m_file_t)stream);
}
/** \ingroup m_file_management
*/
int MSG_file_close(const char* storage, m_file_t fp)
{
- return simcall_file_close(storage, (smx_file_t)fp);
+ return simcall_file_close(storage, (m_file_t)fp);
}
/** \ingroup m_file_management
simcall->issuer->waiting_action = action;
}
-smx_action_t SIMIX_file_read(smx_process_t process, const char* storage, void* ptr, size_t size, size_t nmemb, smx_file_t stream)
+smx_action_t SIMIX_file_read(smx_process_t process, const char* storage, void* ptr, size_t size, size_t nmemb, m_file_t stream)
{
smx_action_t action;
smx_host_t host = process->smx_host;
#endif
action->io.host = host;
- action->io.surf_io = surf_workstation_model->extension.workstation.read(host->host, storage, ptr, size, nmemb, (surf_file_t)stream),
+ action->io.surf_io = surf_workstation_model->extension.workstation.read(host->host, storage, ptr, size, nmemb, stream),
surf_workstation_model->action_data_set(action->io.surf_io, action);
XBT_DEBUG("Create io action %p", action);
simcall->issuer->waiting_action = action;
}
-smx_action_t SIMIX_file_write(smx_process_t process, const char* storage, const void* ptr, size_t size, size_t nmemb, smx_file_t stream)
+smx_action_t SIMIX_file_write(smx_process_t process, const char* storage, const void* ptr, size_t size, size_t nmemb, m_file_t stream)
{
smx_action_t action;
smx_host_t host = process->smx_host;
#endif
action->io.host = host;
- action->io.surf_io = surf_workstation_model->extension.workstation.write(host->host, storage, ptr, size, nmemb, (surf_file_t)stream);
+ action->io.surf_io = surf_workstation_model->extension.workstation.write(host->host, storage, ptr, size, nmemb, stream);
surf_workstation_model->action_data_set(action->io.surf_io, action);
XBT_DEBUG("Create io action %p", action);
simcall->issuer->waiting_action = action;
}
-smx_action_t SIMIX_file_close(smx_process_t process ,const char* storage, smx_file_t fp)
+smx_action_t SIMIX_file_close(smx_process_t process ,const char* storage, m_file_t fp)
{
smx_action_t action;
smx_host_t host = process->smx_host;
#endif
action->io.host = host;
- action->io.surf_io = surf_workstation_model->extension.workstation.close(host->host, storage, (surf_file_t)fp);
+ action->io.surf_io = surf_workstation_model->extension.workstation.close(host->host, storage, fp);
surf_workstation_model->action_data_set(action->io.surf_io, action);
XBT_DEBUG("Create io action %p", action);
#include "simix/datatypes.h"
#include "smx_smurf_private.h"
-/** @brief File datatype
- @ingroup m_datatypes_management_details */
-typedef struct s_smx_file {
- char *name; /**< @brief host name if any */
- void *data; /**< @brief user data */
-} s_smx_file_t;
-/** @} */
-
void SIMIX_pre_file_read(smx_simcall_t simcall);
void SIMIX_pre_file_write(smx_simcall_t simcall);
void SIMIX_pre_file_open(smx_simcall_t simcall);
void SIMIX_pre_file_close(smx_simcall_t simcall);
void SIMIX_pre_file_stat(smx_simcall_t simcall);
-smx_action_t SIMIX_file_read(smx_process_t process, const char* storage, void* ptr, size_t size, size_t nmemb, smx_file_t stream);
-smx_action_t SIMIX_file_write(smx_process_t process, const char* storage, const void* ptr, size_t size, size_t nmemb, smx_file_t stream);
+smx_action_t SIMIX_file_read(smx_process_t process, const char* storage, void* ptr, size_t size, size_t nmemb, m_file_t stream);
+smx_action_t SIMIX_file_write(smx_process_t process, const char* storage, const void* ptr, size_t size, size_t nmemb, m_file_t stream);
smx_action_t SIMIX_file_open(smx_process_t process, const char* storage, const char* path, const char* mode);
-smx_action_t SIMIX_file_close(smx_process_t process, const char* storage, smx_file_t fp);
+smx_action_t SIMIX_file_close(smx_process_t process, const char* storage, m_file_t fp);
smx_action_t SIMIX_file_stat(smx_process_t process, const char* storage, int fd, void* buf);
void SIMIX_post_io(smx_action_t action);
void *ptr;
size_t size;
size_t nmemb;
- smx_file_t stream;
+ m_file_t stream;
size_t result;
} file_read;
const void *ptr;
size_t size;
size_t nmemb;
- smx_file_t stream;
+ m_file_t stream;
size_t result;
} file_write;
const char* storage;
const char* path;
const char* mode;
- smx_file_t result;
+ m_file_t result;
} file_open;
struct {
const char* storage;
- smx_file_t fp;
+ m_file_t fp;
int result;
} file_close;
return simcall->sem_get_capacity.result;
}
-size_t simcall_file_read(const char* storage, void* ptr, size_t size, size_t nmemb, smx_file_t stream)
+size_t simcall_file_read(const char* storage, void* ptr, size_t size, size_t nmemb, m_file_t stream)
{
smx_simcall_t simcall = SIMIX_simcall_mine();
return simcall->file_read.result;
}
-size_t simcall_file_write(const char* storage, const void* ptr, size_t size, size_t nmemb, smx_file_t stream)
+size_t simcall_file_write(const char* storage, const void* ptr, size_t size, size_t nmemb, m_file_t stream)
{
smx_simcall_t simcall = SIMIX_simcall_mine();
return simcall->file_write.result;
}
-smx_file_t simcall_file_open(const char* storage, const char* path, const char* mode)
+m_file_t simcall_file_open(const char* storage, const char* path, const char* mode)
{
smx_simcall_t simcall = SIMIX_simcall_mine();
return simcall->file_open.result;
}
-int simcall_file_close(const char* storage, smx_file_t fp)
+int simcall_file_close(const char* storage, m_file_t fp)
{
smx_simcall_t simcall = SIMIX_simcall_mine();
return action;
}
-static surf_action_t storage_action_close(void *storage, surf_file_t fp)
+static surf_action_t storage_action_close(void *storage, m_file_t fp)
{
return storage_action_sleep(storage,2.0);
}
-static surf_action_t storage_action_read(void *storage, void* ptr, size_t size, size_t nmemb, surf_file_t stream)
+static surf_action_t storage_action_read(void *storage, void* ptr, size_t size, size_t nmemb, m_file_t stream)
{
return storage_action_sleep(storage,3.0);
}
-static surf_action_t storage_action_write(void *storage, const void* ptr, size_t size, size_t nmemb, surf_file_t stream)
+static surf_action_t storage_action_write(void *storage, const void* ptr, size_t size, size_t nmemb, m_file_t stream)
{
return storage_action_sleep(storage,4.0);
}
return model->extension.storage.open(st, path, mode);
}
-static surf_action_t ws_action_close(void *workstation, const char* storage, surf_file_t fp)
+static surf_action_t ws_action_close(void *workstation, const char* storage, m_file_t fp)
{
storage_t st = find_storage_on_mount_list(workstation, storage);
XBT_DEBUG("CLOSE on disk '%s'",st->generic_resource.name);
return model->extension.storage.close(st, fp);
}
-static surf_action_t ws_action_read(void *workstation, const char* storage, void* ptr, size_t size, size_t nmemb, surf_file_t stream)
+static surf_action_t ws_action_read(void *workstation, const char* storage, void* ptr, size_t size, size_t nmemb, m_file_t stream)
{
storage_t st = find_storage_on_mount_list(workstation, storage);
XBT_DEBUG("READ on disk '%s'",st->generic_resource.name);
return model->extension.storage.read(st, ptr, size, nmemb, stream);
}
-static surf_action_t ws_action_write(void *workstation, const char* storage, const void* ptr, size_t size, size_t nmemb, surf_file_t stream)
+static surf_action_t ws_action_write(void *workstation, const char* storage, const void* ptr, size_t size, size_t nmemb, m_file_t stream)
{
storage_t st = find_storage_on_mount_list(workstation, storage);
XBT_DEBUG("WRITE on disk '%s'",st->generic_resource.name);