X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/f7f7d40b071a8c28f2582c39bf599e32802580eb..b84bad24cc0d403e9773384376ecff7d360f8379:/src/surf/workstation_ptask_L07.c diff --git a/src/surf/workstation_ptask_L07.c b/src/surf/workstation_ptask_L07.c index 214f0333d6..a1b38faa6a 100644 --- a/src/surf/workstation_ptask_L07.c +++ b/src/surf/workstation_ptask_L07.c @@ -20,7 +20,6 @@ typedef enum { /**************************************/ typedef struct cpu_L07 { s_surf_resource_t generic_resource; /* Do not move this field: must match surf_resource_t */ - xbt_dict_t properties; /* Do not move this field: must match link_L07_t */ e_surf_workstation_model_type_t type; /* Do not move this field: must match link_L07_t */ lmm_constraint_t constraint; /* Do not move this field: must match link_L07_t */ double power_scale; @@ -37,7 +36,6 @@ typedef struct cpu_L07 { typedef struct link_L07 { s_surf_resource_t generic_resource; /* Do not move this field: must match surf_resource_t */ - xbt_dict_t properties; /* Do not move this field: must match link_L07_t */ e_surf_workstation_model_type_t type; /* Do not move this field: must match cpu_L07_t */ lmm_constraint_t constraint; /* Do not move this field: must match cpu_L07_t */ double lat_current; @@ -113,12 +111,6 @@ static void update_action_bound(surf_action_workstation_L07_t action) /******* Resource Public **********/ /**************************************/ -static xbt_dict_t get_properties(void *r) -{ - /* We can freely cast as a cpu_L07_t since it has the same prefix than link_L07_t */ - return ((cpu_L07_t) r)->properties; -} - static int action_unref(surf_action_t action) { action->refcount--; @@ -383,13 +375,13 @@ static void update_resource_state(void *id, static void finalize(void) { - xbt_dict_free(&link_set); - if (parallel_task_link_set != NULL) { + if (parallel_task_link_set != NULL) xbt_dict_free(¶llel_task_link_set); - } surf_model_exit(surf_workstation_model); surf_workstation_model = NULL; + surf_model_exit(surf_network_model); + surf_network_model = NULL; used_routing->finalize(); host_count = 0; // FIXME: KILLME? @@ -463,16 +455,9 @@ static surf_action_t execute_parallel_task(int workstation_nb, if (computation_amount[i] > 0) nb_host++; - action = xbt_new0(s_surf_action_workstation_L07_t, 1); + action=surf_action_new(sizeof(s_surf_action_workstation_L07_t),amount,surf_workstation_model,0); DEBUG3("Creating a parallel task (%p) with %d cpus and %d links.", action, workstation_nb, nb_link); - action->generic_action.refcount = 1; - action->generic_action.cost = amount; - action->generic_action.remains = amount; - action->generic_action.max_duration = NO_MAX_DURATION; - action->generic_action.start = surf_get_clock(); - action->generic_action.finish = -1.0; - action->generic_action.model_type = surf_workstation_model; action->suspended = 0; /* Should be useless because of the calloc but it seems to help valgrind... */ action->workstation_nb = workstation_nb; @@ -480,10 +465,6 @@ static surf_action_t execute_parallel_task(int workstation_nb, action->computation_amount = computation_amount; action->communication_amount = communication_amount; action->latency = latency; - action->generic_action.state_set = - surf_workstation_model->states.running_action_set; - - xbt_swag_insert(action, action->generic_action.state_set); action->rate = rate; action->variable = @@ -599,12 +580,6 @@ static int link_shared(const void *link) /*** Resource Creation & Destruction **/ /**************************************/ -static void cpu_free(void *cpu) -{ - xbt_dict_free(&(((cpu_L07_t) cpu)->properties)); - surf_resource_free(cpu); -} - static cpu_L07_t cpu_new(const char *name, double power_scale, double power_initial, tmgr_trace_t power_trace, @@ -618,6 +593,7 @@ static cpu_L07_t cpu_new(const char *name, double power_scale, cpu->generic_resource.model = surf_workstation_model; cpu->type = SURF_WORKSTATION_RESOURCE_CPU; cpu->generic_resource.name = xbt_strdup(name); + cpu->generic_resource.properties = current_property_set; cpu->id = host_count++; cpu->power_scale = power_scale; @@ -637,11 +613,8 @@ static cpu_L07_t cpu_new(const char *name, double power_scale, lmm_constraint_new(ptask_maxmin_system, cpu, cpu->power_current * cpu->power_scale); - /*add the property set */ - cpu->properties = current_property_set; - xbt_dict_set(surf_model_resource_set(surf_workstation_model), name, cpu, - cpu_free); + surf_resource_free); return cpu; } @@ -672,12 +645,6 @@ static void parse_cpu_init(void) state_initial, state_trace, current_property_set); } -static void link_free(void *nw_link) -{ - xbt_dict_free(&(((link_L07_t) nw_link)->properties)); - surf_resource_free(nw_link); -} - static link_L07_t link_new(char *name, double bw_initial, tmgr_trace_t bw_trace, @@ -690,12 +657,13 @@ static link_L07_t link_new(char *name, policy, xbt_dict_t properties) { link_L07_t nw_link = xbt_new0(s_link_L07_t, 1); - xbt_assert1(!xbt_dict_get_or_null(link_set, name), + xbt_assert1(!xbt_dict_get_or_null(surf_network_model->resource_set, name), "Link '%s' declared several times in the platform file.", name); nw_link->generic_resource.model = surf_workstation_model; - nw_link->type = SURF_WORKSTATION_RESOURCE_LINK; + nw_link->generic_resource.properties = properties; nw_link->generic_resource.name = name; + nw_link->type = SURF_WORKSTATION_RESOURCE_LINK; nw_link->bw_current = bw_initial; if (bw_trace) nw_link->bw_event = @@ -715,9 +683,8 @@ static link_L07_t link_new(char *name, if (policy == SURF_LINK_FATPIPE) lmm_constraint_shared(nw_link->constraint); - nw_link->properties = properties; - xbt_dict_set(link_set, name, nw_link, link_free); + xbt_dict_set(surf_network_model->resource_set, name, nw_link, surf_resource_free); return nw_link; } @@ -793,7 +760,7 @@ static void add_traces(void) /* Connect traces relative to network */ xbt_dict_foreach(trace_connect_list_link_avail, cursor, trace_name, elm) { tmgr_trace_t trace = xbt_dict_get_or_null(traces_set_list, trace_name); - link_L07_t link = xbt_dict_get_or_null(link_set, elm); + link_L07_t link = xbt_dict_get_or_null(surf_network_model->resource_set, elm); xbt_assert1(link, "Link %s undefined", elm); xbt_assert1(trace, "Trace %s undefined", trace_name); @@ -803,7 +770,7 @@ static void add_traces(void) xbt_dict_foreach(trace_connect_list_bandwidth, cursor, trace_name, elm) { tmgr_trace_t trace = xbt_dict_get_or_null(traces_set_list, trace_name); - link_L07_t link = xbt_dict_get_or_null(link_set, elm); + link_L07_t link = xbt_dict_get_or_null(surf_network_model->resource_set, elm); xbt_assert1(link, "Link %s undefined", elm); xbt_assert1(trace, "Trace %s undefined", trace_name); @@ -813,7 +780,7 @@ static void add_traces(void) xbt_dict_foreach(trace_connect_list_latency, cursor, trace_name, elm) { tmgr_trace_t trace = xbt_dict_get_or_null(traces_set_list, trace_name); - link_L07_t link = xbt_dict_get_or_null(link_set, elm); + link_L07_t link = xbt_dict_get_or_null(surf_network_model->resource_set, elm); xbt_assert1(link, "Link %s undefined", elm); xbt_assert1(trace, "Trace %s undefined", trace_name); @@ -875,15 +842,11 @@ static void model_init_internal(void) get_link_latency; surf_workstation_model->extension.workstation.link_shared = link_shared; - surf_workstation_model->get_properties = get_properties; - - link_set = xbt_dict_new(); - if (!ptask_maxmin_system) ptask_maxmin_system = lmm_system_new(); - routing_model_full_create(sizeof(link_L07_t), - link_new(xbt_strdup("__MSG_loopback__"), + routing_model_create(sizeof(link_L07_t), + link_new(xbt_strdup("__loopback__"), 498000000, NULL, 0.000015, NULL, SURF_LINK_ON, NULL, SURF_LINK_FATPIPE, NULL)); @@ -896,6 +859,7 @@ void surf_workstation_model_init_ptask_L07(const char *filename) { xbt_assert0(!surf_cpu_model, "CPU model type already defined"); xbt_assert0(!surf_network_model, "network model type already defined"); + surf_network_model = surf_model_init(); define_callbacks(filename); model_init_internal();