workstation->current_task = NULL;
name = surf_resource_name(surf_workstation);
- xbt_lib_set(host_lib,name,SD_HOST_LEVEL,workstation);
- return xbt_lib_get_elm_or_null(host_lib,name);
+ sg_host_t sg_host = sg_host_by_name(name);
+ sg_host_sd_set(sg_host,workstation);
+ return sg_host;
}
/* Creates a storage and registers it in SD.
*/
void *SD_workstation_get_data(SD_workstation_t workstation)
{
- return SD_workstation_priv(workstation)->data;
+ return sg_host_sd(workstation)->data;
}
/**
*/
void SD_workstation_set_data(SD_workstation_t workstation, void *data)
{
- SD_workstation_priv(workstation)->data = data;
+ sg_host_sd(workstation)->data = data;
}
/**
XBT_INFO("Displaying workstation %s", SD_workstation_get_name(ws));
XBT_INFO(" - power: %.0f", SD_workstation_get_power(ws));
XBT_INFO(" - available power: %.2f", SD_workstation_get_available_power(ws));
- switch (SD_workstation_priv(ws)->access_mode){
+ switch (sg_host_sd(ws)->access_mode){
case SD_WORKSTATION_SHARED_ACCESS:
XBT_INFO(" - access mode: Space shared");
break;
e_SD_workstation_access_mode_t
SD_workstation_get_access_mode(SD_workstation_t workstation)
{
- return SD_workstation_priv(workstation)->access_mode;
+ return sg_host_sd(workstation)->access_mode;
}
/**
access_mode != SD_WORKSTATION_SHARED_ACCESS,
"Trying to set an invalid access mode");
- if (access_mode == SD_workstation_priv(workstation)->access_mode) {
+ if (access_mode == sg_host_sd(workstation)->access_mode) {
return; // nothing is changed
}
- SD_workstation_priv(workstation)->access_mode = access_mode;
+ sg_host_sd(workstation)->access_mode = access_mode;
if (access_mode == SD_WORKSTATION_SHARED_ACCESS) {
- xbt_fifo_free(SD_workstation_priv(workstation)->task_fifo);
- SD_workstation_priv(workstation)->task_fifo = NULL;
+ xbt_fifo_free(sg_host_sd(workstation)->task_fifo);
+ sg_host_sd(workstation)->task_fifo = NULL;
} else {
- SD_workstation_priv(workstation)->task_fifo = xbt_fifo_new();
+ sg_host_sd(workstation)->task_fifo = xbt_fifo_new();
}
}
XBT_DEBUG
("Workstation '%s' access mode: '%s', current task: %s, fifo size: %d",
SD_workstation_get_name(workstation),
- (SD_workstation_priv(workstation)->access_mode ==
+ (sg_host_sd(workstation)->access_mode ==
SD_WORKSTATION_SHARED_ACCESS) ? "SHARED" : "FIFO",
- (SD_workstation_priv(workstation)->current_task ?
- SD_task_get_name(SD_workstation_priv(workstation)->current_task)
+ (sg_host_sd(workstation)->current_task ?
+ SD_task_get_name(sg_host_sd(workstation)->current_task)
: "none"),
- (SD_workstation_priv(workstation)->task_fifo ? xbt_fifo_size(SD_workstation_priv(workstation)->task_fifo) :
+ (sg_host_sd(workstation)->task_fifo ? xbt_fifo_size(sg_host_sd(workstation)->task_fifo) :
0));
- return SD_workstation_priv(workstation)->access_mode == SD_WORKSTATION_SEQUENTIAL_ACCESS &&
- (SD_workstation_priv(workstation)->current_task != NULL
- || xbt_fifo_size(SD_workstation_priv(workstation)->task_fifo) > 0);
+ return sg_host_sd(workstation)->access_mode == SD_WORKSTATION_SEQUENTIAL_ACCESS &&
+ (sg_host_sd(workstation)->current_task != NULL
+ || xbt_fifo_size(sg_host_sd(workstation)->task_fifo) > 0);
}
/* Destroys a workstation.
void __SD_workstation_destroy(void *workstation)
{
+ if (workstation==NULL)
+ return;
SD_workstation_priv_t w;
/* workstation->surf_workstation is freed by surf_exit and workstation->data is freed by the user */
* \param workstation a workstation */
SD_task_t SD_workstation_get_current_task(SD_workstation_t workstation)
{
- xbt_assert(SD_workstation_priv(workstation)->access_mode == SD_WORKSTATION_SEQUENTIAL_ACCESS,
+ xbt_assert(sg_host_sd(workstation)->access_mode == SD_WORKSTATION_SEQUENTIAL_ACCESS,
"Access mode must be set to SD_WORKSTATION_SEQUENTIAL_ACCESS"
" to use this function");
- return (SD_workstation_priv(workstation)->current_task);
+ return (sg_host_sd(workstation)->current_task);
}
/**