X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/0c4998db54add422f8b4fbb7410a75d032ef2ff9..71855c3d4eb59aa687b05fa351bb09df42495a43:/src/simdag/private.h diff --git a/src/simdag/private.h b/src/simdag/private.h index 35bcbc5848..bd3c2ce45e 100644 --- a/src/simdag/private.h +++ b/src/simdag/private.h @@ -23,6 +23,8 @@ typedef struct SD_global { int link_count; /* number of links */ SD_link_t *link_list; /* array of links, created only if necessary in SD_link_get_list */ + SD_link_t *recyclable_route; /* array returned by SD_route_get_list + and mallocated only once */ int watch_point_reached; /* has a task just reached a watch point? */ @@ -35,6 +37,8 @@ typedef struct SD_global { xbt_swag_t done_task_set; xbt_swag_t failed_task_set; + int task_number; + } s_SD_global_t, *SD_global_t; extern SD_global_t sd_global; @@ -59,6 +63,7 @@ typedef struct SD_workstation { typedef struct SD_task { s_xbt_swag_hookup_t state_hookup; xbt_swag_t state_set; + e_SD_task_state_t state; void *data; /* user data */ char *name; double amount; @@ -108,43 +113,42 @@ void __SD_task_really_run(SD_task_t task); int __SD_task_try_to_run(SD_task_t task); void __SD_task_just_done(SD_task_t task); -/* Functions to test if the task is in a given state. - These functions are faster than using SD_task_get_state() */ +/* Functions to test if the task is in a given state. */ /* Returns whether the given task is scheduled or ready. */ -static _XBT_INLINE int __SD_task_is_scheduled_or_ready(SD_task_t task) { +static XBT_INLINE int __SD_task_is_scheduled_or_ready(SD_task_t task) { return task->state_set == sd_global->scheduled_task_set || task->state_set == sd_global->ready_task_set; } /* Returns whether the state of the given task is SD_NOT_SCHEDULED. */ -static _XBT_INLINE int __SD_task_is_not_scheduled(SD_task_t task) { +static XBT_INLINE int __SD_task_is_not_scheduled(SD_task_t task) { return task->state_set == sd_global->not_scheduled_task_set; } /* Returns whether the state of the given task is SD_SCHEDULED. */ -static _XBT_INLINE int __SD_task_is_scheduled(SD_task_t task) { +static XBT_INLINE int __SD_task_is_scheduled(SD_task_t task) { return task->state_set == sd_global->scheduled_task_set; } /* Returns whether the state of the given task is SD_READY. */ -static _XBT_INLINE int __SD_task_is_ready(SD_task_t task) { +static XBT_INLINE int __SD_task_is_ready(SD_task_t task) { return task->state_set == sd_global->ready_task_set; } /* Returns whether the state of the given task is SD_IN_FIFO. */ -static _XBT_INLINE int __SD_task_is_in_fifo(SD_task_t task) { +static XBT_INLINE int __SD_task_is_in_fifo(SD_task_t task) { return task->state_set == sd_global->in_fifo_task_set; } /* Returns whether the state of the given task is SD_READY or SD_IN_FIFO. */ -static _XBT_INLINE int __SD_task_is_ready_or_in_fifo(SD_task_t task) { +static XBT_INLINE int __SD_task_is_ready_or_in_fifo(SD_task_t task) { return task->state_set == sd_global->ready_task_set || task->state_set == sd_global->in_fifo_task_set; } /* Returns whether the state of the given task is SD_RUNNING. */ -static _XBT_INLINE int __SD_task_is_running(SD_task_t task) { +static XBT_INLINE int __SD_task_is_running(SD_task_t task) { return task->state_set == sd_global->running_task_set; }