- surf_workstation_resource->common_public->suspend(dummy->simdata->surf_action);
- if(max_duration>=0)
- surf_workstation_resource->common_public->set_max_duration(dummy->simdata->surf_action,
- max_duration);
- __SIMIX_wait_for_action(process,dummy);
- SIMIX_action_destroy(dummy);
- process->simdata->blocked=0;
-
- if(process->simdata->suspended) {
- DEBUG0("I've been suspended in the meantime");
- SIMIX_process_suspend(process);
- DEBUG0("I've been resumed, let's keep going");
- }
-
-/*
- m_task_t dummy = SIMIX_TASK_UNINITIALIZED;
- char blocked_name[512];
- snprintf(blocked_name,512,"blocked [%s] (%s:%s)",
- info, process->name, process->simdata->host->name);
-
- XBT_IN1(": max_duration=%g",max_duration);
-
- dummy = MSG_task_create(blocked_name, 0.0, 0, NULL);
-
- PAJE_PROCESS_PUSH_STATE(process,"B",NULL);
-
- process->simdata->blocked=1;
- __MSG_task_execute(process,dummy);
- surf_workstation_resource->common_public->suspend(dummy->simdata->compute);
- if(max_duration>=0)
- surf_workstation_resource->common_public->set_max_duration(dummy->simdata->compute,
- max_duration);
- __MSG_wait_for_computation(process,dummy);
- MSG_task_destroy(dummy);
- process->simdata->blocked=0;
-
- if(process->simdata->suspended) {
- DEBUG0("I've been suspended in the meantime");
- SIMIX_process_suspend(process);
- DEBUG0("I've been resumed, let's keep going");
- }
-
- PAJE_PROCESS_POP_STATE(process);
-
- XBT_OUT;
- */
- return 1;
+/* Helper functions for jMSG: manipulate the context data without breaking the module separation */
+#include "xbt/context.h" /* to pass java objects from MSG to the context */
+void SIMIX_process_set_jprocess(smx_process_t process, void *jp) {
+ xbt_context_set_jprocess(process->simdata->context,jp);
+}
+void* SIMIX_process_get_jprocess(smx_process_t process) {
+ return xbt_context_get_jprocess(process->simdata->context);