A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
| inline |
side by side
ONGOING work on exceptions plus minor cleanups.
[simgrid.git]
/
src
/
msg
/
m_process.c
diff --git
a/src/msg/m_process.c
b/src/msg/m_process.c
index
f43f114
..
aea547c
100644
(file)
--- a/
src/msg/m_process.c
+++ b/
src/msg/m_process.c
@@
-344,7
+344,6
@@
MSG_error_t MSG_process_suspend(m_process_t process)
{
simdata_process_t simdata = NULL;
simdata_task_t simdata_task = NULL;
- int i;
xbt_assert0(((process) && (process->simdata)), "Invalid parameters");
@@
-394,13
+393,15
@@
MSG_error_t MSG_process_resume(m_process_t process)
{
simdata_process_t simdata = NULL;
simdata_task_t simdata_task = NULL;
- int i;
xbt_assert0(((process != NULL) && (process->simdata)), "Invalid parameters");
CHECK_HOST();
- simdata = process->simdata;
+ if(process == MSG_process_self()) {
+ MSG_RETURN(MSG_OK);
+ }
+ simdata = process->simdata;
if(simdata->blocked) {
PAJE_PROCESS_POP_STATE(process);
@@
-441,7
+442,7
@@
int MSG_process_isSuspended(m_process_t process)
return (process->simdata->suspended);
}
-
MSG_error_t __MSG_process_block(void
)
+
int __MSG_process_block(double max_duration
)
{
m_process_t process = MSG_process_self();
@@
-453,6
+454,9
@@
MSG_error_t __MSG_process_block(void)
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);
process->simdata->blocked=0;
@@
-461,14
+465,13
@@
MSG_error_t __MSG_process_block(void)
MSG_task_destroy(dummy);
- return
MSG_OK
;
+ return
1
;
}
MSG_error_t __MSG_process_unblock(m_process_t process)
{
simdata_process_t simdata = NULL;
simdata_task_t simdata_task = NULL;
- int i;
xbt_assert0(((process != NULL) && (process->simdata)), "Invalid parameters");
CHECK_HOST();