* Do --help on any simgrid binary to see the list of currently existing configuration variables, and
* see Section @ref options.
*
- * Example:
- * SD_config("host/model","default");
+ * Example: SD_config("host/model","default");
*/
void SD_config(const char *key, const char *value){
xbt_assert(sd_global,"ERROR: Please call SD_init() before using SD_config()");
/* let's see which tasks are done */
xbt_dynar_foreach(all_existing_models, iter, model) {
while ((action = surf_model_extract_done_action_set(model))) {
- task = (SD_task_t) action->getData();
+ task = static_cast<SD_task_t>(action->getData());
task->start_time = task->surf_action->getStartTime();
task->finish_time = surf_get_clock();
task->surf_action = NULL;
/* the state has changed. Add it only if it's the first change */
- if (!xbt_dynar_member(sd_global->return_set, &task)) {
+ if (xbt_dynar_member(sd_global->return_set, &task) == 0) {
xbt_dynar_push(sd_global->return_set, &task);
}
XBT_DEBUG("Released a dependency on %s: %d remain(s). Became schedulable if %d=0",
SD_task_get_name(dst), dst->unsatisfied_dependencies, dst->is_not_ready);
- if (!(dst->unsatisfied_dependencies)) {
+ if (dst->unsatisfied_dependencies == 0) {
if (SD_task_get_state(dst) == SD_SCHEDULED)
SD_task_set_state(dst, SD_RUNNABLE);
else
SD_task_set_state(dst, SD_SCHEDULABLE);
}
- if (SD_task_get_state(dst) == SD_NOT_SCHEDULED && !(dst->is_not_ready)) {
+ if (SD_task_get_state(dst) == SD_NOT_SCHEDULED && dst->is_not_ready == 0) {
SD_task_set_state(dst, SD_SCHEDULABLE);
}
XBT_DEBUG("%s is a transfer, %s may be ready now if %d=0",
SD_task_get_name(dst), SD_task_get_name(comm_dst), comm_dst->is_not_ready);
- if (!(comm_dst->is_not_ready)) {
+ if (comm_dst->is_not_ready == 0) {
SD_task_set_state(comm_dst, SD_SCHEDULABLE);
}
}
/* let's see which tasks have just failed */
while ((action = surf_model_extract_failed_action_set(model))) {
- task = (SD_task_t) action->getData();
+ task = static_cast<SD_task_t>(action->getData());
task->start_time = task->surf_action->getStartTime();
task->finish_time = surf_get_clock();
XBT_VERB("Task '%s' failed", SD_task_get_name(task));
}
}
- if (!sd_global->watch_point_reached && how_long<0){
- if (!xbt_dynar_is_empty(sd_global->initial_task_set)) {
- XBT_WARN("Simulation is finished but %lu tasks are still not done",
- xbt_dynar_length(sd_global->initial_task_set));
- static const char* state_names[] =
- { "SD_NOT_SCHEDULED", "SD_SCHEDULABLE", "SD_SCHEDULED", "SD_RUNNABLE", "SD_RUNNING", "SD_DONE","SD_FAILED" };
- xbt_dynar_foreach(sd_global->initial_task_set, iter, task){
- XBT_WARN("%s is in %s state", SD_task_get_name(task), state_names[SD_task_get_state(task)]);
- }
+ if (!sd_global->watch_point_reached && how_long<0 &&
+ xbt_dynar_is_empty(sd_global->initial_task_set) == 0) {
+ XBT_WARN("Simulation is finished but %lu tasks are still not done",
+ xbt_dynar_length(sd_global->initial_task_set));
+ static const char* state_names[] =
+ { "SD_NOT_SCHEDULED", "SD_SCHEDULABLE", "SD_SCHEDULED", "SD_RUNNABLE", "SD_RUNNING", "SD_DONE","SD_FAILED" };
+ xbt_dynar_foreach(sd_global->initial_task_set, iter, task){
+ XBT_WARN("%s is in %s state", SD_task_get_name(task), state_names[SD_task_get_state(task)]);
}
}
}
/** @brief Returns the current clock, in seconds */
-double SD_get_clock(void) {
+double SD_get_clock() {
return surf_get_clock();
}
*
* \see SD_init(), SD_task_destroy()
*/
-void SD_exit(void)
+void SD_exit()
{
TRACE_surf_resource_utilization_release();
{
/* we must destroy the dependencies carefuly (with SD_dependency_remove) because each one is stored twice */
SD_dependency_t dependency;
- while (!xbt_dynar_is_empty(task->tasks_before)) {
+ while (xbt_dynar_is_empty(task->tasks_before) == 0) {
xbt_dynar_get_cpy(task->tasks_before, 0, &dependency);
SD_task_dependency_remove(dependency->src, dependency->dst);
}
- while (!xbt_dynar_is_empty(task->tasks_after)) {
+ while (xbt_dynar_is_empty(task->tasks_after) == 0) {
xbt_dynar_get_cpy(task->tasks_after, 0, &dependency);
SD_task_dependency_remove(dependency->src, dependency->dst);
}
xbt_free(task->flops_amount);
xbt_free(task->bytes_amount);
- task->flops_amount = task->bytes_amount = NULL;
+ task->flops_amount = NULL;
+ task->bytes_amount = NULL;
}
-void* SD_task_new_f(void)
+void* SD_task_new_f()
{
SD_task_t task = xbt_new0(s_SD_task_t, 1);
task->tasks_before = xbt_dynar_new(sizeof(SD_dependency_t), NULL);
void SD_task_recycle_f(void *t)
{
- SD_task_t task = (SD_task_t) t;
+ SD_task_t task = static_cast<SD_task_t>(t);
/* Reset the content */
task->kind = SD_TASK_NOT_TYPED;
void SD_task_free_f(void *t)
{
- SD_task_t task = (SD_task_t)t;
+ SD_task_t task = static_cast<SD_task_t>(t);
xbt_dynar_free(&task->tasks_before);
xbt_dynar_free(&task->tasks_after);
*/
SD_task_t SD_task_create(const char *name, void *data, double amount)
{
- SD_task_t task = (SD_task_t)xbt_mallocator_get(sd_global->task_mallocator);
+ SD_task_t task = static_cast<SD_task_t>(xbt_mallocator_get(sd_global->task_mallocator));
/* general information */
task->data = data; /* user data */
return task->alpha;
}
-
/**
* \brief Returns the remaining amount work to do till the completion of a task
*
if (task->kind == SD_TASK_COMP_PAR_AMDAHL)
XBT_INFO(" - alpha: %.2f", task->alpha);
XBT_INFO(" - Dependencies to satisfy: %d", task->unsatisfied_dependencies);
- if (!xbt_dynar_is_empty(task->tasks_before)) {
+ if (xbt_dynar_is_empty(task->tasks_before) == 0) {
XBT_INFO(" - pre-dependencies:");
xbt_dynar_foreach(task->tasks_before, counter, dependency) {
XBT_INFO(" %s", SD_task_get_name(dependency->src));
}
}
- if (!xbt_dynar_is_empty(task->tasks_after)) {
+ if (xbt_dynar_is_empty(task->tasks_after)== 0) {
XBT_INFO(" - post-dependencies:");
xbt_dynar_foreach(task->tasks_after, counter, dependency) {
XBT_INFO(" %s", SD_task_get_name(dependency->dst));
{
unsigned int counter;
SD_dependency_t dependency;
- FILE *fout = (FILE*)out;
+ FILE *fout = static_cast<FILE*>(out);
fprintf(fout, " T%p [label=\"%.20s\"", task, task->name);
switch (task->kind) {
case SD_TASK_COMM_E2E:
*/
void SD_task_dependency_add(const char *name, void *data, SD_task_t src, SD_task_t dst)
{
- int found = 0;
+ bool found = false;
SD_dependency_t dependency;
unsigned long length = xbt_dynar_length(src->tasks_after);
void SD_task_dependency_remove(SD_task_t src, SD_task_t dst)
{
unsigned long length;
- int found = 0;
+ bool found = false;
SD_dependency_t dependency;
/* remove the dependency from src->tasks_after */
xbt_dynar_get_cpy(src->tasks_after, i, &dependency);
if (dependency->dst == dst) {
xbt_dynar_remove_at(src->tasks_after, i, NULL);
- found = 1;
+ found = true;
}
}
if (!found)
/* remove the dependency from dst->tasks_before */
length = xbt_dynar_length(dst->tasks_before);
- found = 0;
+ found = false;
for (unsigned long i = 0; i < length && !found; i++) {
xbt_dynar_get_cpy(dst->tasks_before, i, &dependency);
__SD_task_dependency_destroy(dependency);
dst->unsatisfied_dependencies--;
dst->is_not_ready--;
- found = 1;
+ found = true;
}
}
/* should never happen... */
*/
void *SD_task_dependency_get_data(SD_task_t src, SD_task_t dst)
{
- int found = 0;
+ bool found = false;
SD_dependency_t dependency;
unsigned long length = xbt_dynar_length(src->tasks_after);
task->rate = rate;
if (flops_amount) {
- task->flops_amount = (double*)xbt_realloc(task->flops_amount, sizeof(double) * host_count);
+ task->flops_amount = static_cast<double*>(xbt_realloc(task->flops_amount, sizeof(double) * host_count));
memcpy(task->flops_amount, flops_amount, sizeof(double) * host_count);
} else {
xbt_free(task->flops_amount);
int communication_nb = host_count * host_count;
if (bytes_amount) {
- task->bytes_amount = (double*)xbt_realloc(task->bytes_amount, sizeof(double) * communication_nb);
+ task->bytes_amount = static_cast<double*>(xbt_realloc(task->bytes_amount, sizeof(double) * communication_nb));
memcpy(task->bytes_amount, bytes_amount, sizeof(double) * communication_nb);
} else {
xbt_free(task->bytes_amount);
task->bytes_amount = NULL;
}
- task->host_list = (sg_host_t*) xbt_realloc(task->host_list, sizeof(sg_host_t) * host_count);
+ task->host_list = static_cast<sg_host_t*>(xbt_realloc(task->host_list, sizeof(sg_host_t) * host_count));
memcpy(task->host_list, workstation_list, sizeof(sg_host_t) * host_count);
SD_task_do_schedule(task);
switch (task->kind) {
case SD_TASK_COMP_PAR_AMDAHL:
SD_task_distribute_comp_amdahl(task, count);
+ /* no break */
case SD_TASK_COMM_E2E:
case SD_TASK_COMP_SEQ:
xbt_assert(task->host_count == count, "Got %d locations, but were expecting %d locations", count,task->host_count);