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;
+
/** \brief Workstation model extension public
* \ingroup SURF_models
*
double amount, double rate);
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* path, const char* mode);
+ surf_action_t(*close) (void *workstation, surf_file_t fp);
+ surf_action_t(*read) (void *workstation, void* ptr, size_t size, size_t nmemb, surf_file_t stream);
+ surf_action_t(*write) (void *workstation, const void* ptr, size_t size, size_t nmemb, surf_file_t stream);
+ surf_action_t(*stat) (void *workstation, int fd, void* buf);
int (*link_shared) (const void *link);
xbt_dict_t(*get_properties) (const void *resource);
void* (*link_create_resource) (const char *name,
#endif
action->io.host = host;
- // TODO in surf model disk???
- // action->io.surf_io = surf_workstation_model->extension.storage.read(host->host, name),
- action->io.surf_io = surf_workstation_model->extension.workstation.sleep(host->host, 1.0);
+ action->io.surf_io = surf_workstation_model->extension.workstation.read(host->host, ptr, size, nmemb, (surf_file_t)stream),
surf_workstation_model->action_data_set(action->io.surf_io, action);
XBT_DEBUG("Create io action %p", action);
#endif
action->io.host = host;
- // TODO in surf model disk???
- // action->io.surf_io = surf_workstation_model->extension.storage.write(host->host, name),
- action->io.surf_io = surf_workstation_model->extension.workstation.sleep(host->host, 2.0);
+ action->io.surf_io = surf_workstation_model->extension.workstation.write(host->host, ptr, size, nmemb, (surf_file_t)stream);
surf_workstation_model->action_data_set(action->io.surf_io, action);
XBT_DEBUG("Create io action %p", action);
#endif
action->io.host = host;
- // TODO in surf model disk???
- // action->io.surf_io = surf_workstation_model->extension.storage.open(host->host, name),
- action->io.surf_io = surf_workstation_model->extension.workstation.sleep(host->host, 3.0);
+ action->io.surf_io = surf_workstation_model->extension.workstation.open(host->host, path, mode);
surf_workstation_model->action_data_set(action->io.surf_io, action);
XBT_DEBUG("Create io action %p", action);
#endif
action->io.host = host;
- // TODO in surf model disk???
- // action->io.surf_io = surf_workstation_model->extension.storage.close(host->host, name),
- action->io.surf_io = surf_workstation_model->extension.workstation.sleep(host->host, 4.0);
+ action->io.surf_io = surf_workstation_model->extension.workstation.close(host->host, (surf_file_t)fp);
surf_workstation_model->action_data_set(action->io.surf_io, action);
XBT_DEBUG("Create io action %p", action);
#endif
action->io.host = host;
- // TODO in surf model disk???
- // action->io.surf_io = surf_workstation_model->extension.storage.stat(host->host, name),
- action->io.surf_io = surf_workstation_model->extension.workstation.sleep(host->host, 5.0);
+ action->io.surf_io = surf_workstation_model->extension.workstation.stat(host->host, fd, buf);
surf_workstation_model->action_data_set(action->io.surf_io, action);
XBT_DEBUG("Create io action %p", action);
return surf_resource_properties(((workstation_CLM03_t) ws)->cpu);
}
+static surf_action_t ws_action_open(void *workstation, const char* path, const char* mode)
+{
+ return surf_cpu_model->extension.cpu.
+ sleep(((workstation_CLM03_t) workstation)->cpu, 1);
+}
+
+static surf_action_t ws_action_close(void *workstation, surf_file_t fp)
+{
+ return surf_cpu_model->extension.cpu.
+ sleep(((workstation_CLM03_t) workstation)->cpu, 2);
+}
+
+static surf_action_t ws_action_read(void *workstation, void* ptr, size_t size, size_t nmemb, surf_file_t stream)
+{
+ return surf_cpu_model->extension.cpu.
+ sleep(((workstation_CLM03_t) workstation)->cpu, 3);
+}
+
+static surf_action_t ws_action_write(void *workstation, const void* ptr, size_t size, size_t nmemb, surf_file_t stream)
+{
+ return surf_cpu_model->extension.cpu.
+ sleep(((workstation_CLM03_t) workstation)->cpu, 4);
+}
+
+static surf_action_t ws_action_stat(void *workstation, int fd, void* buf)
+{
+ return surf_cpu_model->extension.cpu.
+ sleep(((workstation_CLM03_t) workstation)->cpu, 5);
+}
+
static void surf_workstation_model_init_internal(void)
{
surf_workstation_model = surf_model_init();
surf_workstation_model->extension.workstation.get_properties =
ws_get_properties;
+ surf_workstation_model->extension.workstation.open = ws_action_open;
+ surf_workstation_model->extension.workstation.close = ws_action_close;
+ surf_workstation_model->extension.workstation.read = ws_action_read;
+ surf_workstation_model->extension.workstation.write = ws_action_write;
+ surf_workstation_model->extension.workstation.stat = ws_action_stat;
}
void surf_workstation_model_init_current_default(void)