+ /* get rank from command line, and remove it from argv */
+ pdata->index = atoi( (*argv)[1] );
+ DEBUG1("I'm rank %d",pdata->index);
+ if (*argc>2) {
+ memmove((*argv)[1],(*argv)[2], sizeof(char*)* (*argc-2));
+ (*argv)[ (*argc)-1] = NULL;
+ }
+ (*argc)--;
+
+ pdata->mutex = SIMIX_mutex_init();
+ pdata->cond = SIMIX_cond_init();
+ pdata->finalize = 0;
+
+ pdata->pending_recv_request_queue = xbt_fifo_new();
+ pdata->pending_send_request_queue = xbt_fifo_new();
+ pdata->received_message_queue = xbt_fifo_new();
+
+ pdata->main = SIMIX_process_self();
+ pdata->sender = SIMIX_process_create("smpi_sender",
+ smpi_sender, pdata,
+ SIMIX_host_get_name(SIMIX_host_self()), 0, NULL,
+ /*props */ NULL);
+ pdata->receiver = SIMIX_process_create("smpi_receiver",
+ smpi_receiver, pdata,
+ SIMIX_host_get_name(SIMIX_host_self()), 0, NULL,
+ /*props */ NULL);
+
+ smpi_global->main_processes[pdata->index] = SIMIX_process_self();