const char *xbt_procname(void)
{
- const char *res = NULL;
smx_process_t process = SIMIX_process_self();
- if ((process != NULL) && (process->simdata))
- res = SIMIX_process_get_name(process);
- if (res)
- return res;
- else
- return "";
+ /*FIXME: maestro used not have a simix process, now it does so
+ SIMIX_process_self will return something different to NULL. This breaks
+ the old xbt_log logic that assumed that NULL was equivalent to maestro,
+ thus when printing it searches for maestro host name (which doesn't exists)
+ and breaks the logging.
+ As a hack we check for maestro by looking to the assigned host, if it is
+ NULL then we are sure is maestro
+ */
+ if (process != NULL && SIMIX_host_self())
+ return SIMIX_process_get_name(process);
+
+ return "";
}
int gras_os_getpid(void)
{
-
+ gras_procdata_t *data;
smx_process_t process = SIMIX_process_self();
-
- if ((process != NULL) && (process->data))
- return ((gras_procdata_t *) process->data)->pid;
- else
- return 0;
+
+ if (process != NULL){
+ data = (gras_procdata_t *)SIMIX_process_get_data(process);
+ if(data != NULL)
+ return data->pid;
+ }
+
+ return 0;
}
-
/** @brief retrieve the value of a given host property (or NULL if not defined) */
const char *gras_os_host_property_value(const char *name)
{
void gras_main()
{
- smx_cond_t cond = NULL;
- smx_action_t action;
- xbt_fifo_t actions_done = xbt_fifo_new();
- xbt_fifo_t actions_failed = xbt_fifo_new();
-
/* Clean IO before the run */
fflush(stdout);
fflush(stderr);
SIMIX_init();
- while (SIMIX_solve(actions_done, actions_failed) != -1.0) {
- while ((action = xbt_fifo_pop(actions_failed))) {
- DEBUG1("** %s failed **", action->name);
- while ((cond = xbt_fifo_pop(action->cond_list))) {
- SIMIX_cond_broadcast(cond);
- }
- /* action finished, destroy it */
- // SIMIX_action_destroy(action);
- }
-
- while ((action = xbt_fifo_pop(actions_done))) {
- DEBUG1("** %s done **", action->name);
- while ((cond = xbt_fifo_pop(action->cond_list))) {
- SIMIX_cond_broadcast(cond);
- }
- /* action finished, destroy it */
- //SIMIX_action_destroy(action);
- }
- }
- xbt_fifo_free(actions_failed);
- xbt_fifo_free(actions_done);
+ while (SIMIX_solve(NULL, NULL) != -1.0);
+
return;
}