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
[simix] Remove the process_create simcall
[simgrid.git]
/
src
/
simix
/
libsmx.cpp
diff --git
a/src/simix/libsmx.cpp
b/src/simix/libsmx.cpp
index
aa0a3c4
..
115a0e8
100644
(file)
--- a/
src/simix/libsmx.cpp
+++ b/
src/simix/libsmx.cpp
@@
-377,9
+377,14
@@
smx_process_t simcall_process_create(const char *name,
{
if (name == nullptr)
name = "";
- return (smx_process_t) simcall_BODY_process_create(name, code, data, hostname,
- kill_time, argc, argv, properties,
- auto_restart);
+ auto wrapped_code = simgrid::simix::wrap_main(code, argc, argv);
+ for (int i = 0; i != argc; ++i)
+ xbt_free(argv[i]);
+ xbt_free(argv);
+ smx_process_t res = simcall_process_create(name,
+ std::move(wrapped_code),
+ data, hostname, kill_time, properties, auto_restart);
+ return res;
}
/**
@@
-520,13
+525,6
@@
void simcall_process_set_data(smx_process_t process, void *data)
simgrid::simix::kernel(std::bind(SIMIX_process_set_data, process, data));
}
-static void kill_process_from_timer(void* arg)
-{
- smx_process_t process = (smx_process_t) arg;
- simix_global->kill_process_function(process);
- process->kill_timer=NULL;
-}
-
/**
* \ingroup simix_process_management
* \brief Set the kill time of a process.
@@
-534,14
+532,14
@@
static void kill_process_from_timer(void* arg)
void simcall_process_set_kill_time(smx_process_t process, double kill_time)
{
- if (kill_time
> SIMIX_get_clock()) {
- if (simix_global->kill_process_function) {
-
XBT_DEBUG("Set kill time %f for process %s(%s)",
- kill_time, process->name.c_str(),
- sg_host_get_name(process->host));
-
process->kill_timer = SIMIX_timer_set(kill_time, kill_process_from_timer,
process);
- }
- }
+ if (kill_time
<= SIMIX_get_clock() || simix_global->kill_process_function == nullptr)
+ return;
+ XBT_DEBUG("Set kill time %f for process %s(%s)",
+ kill_time, process->name.c_str(), sg_host_get_name(process->host));
+ process->kill_timer = SIMIX_timer_set(kill_time, [=] {
+
simix_global->kill_process_function(
process);
+ process->kill_timer=NULL;
+ }
);
}
/**
* \ingroup simix_process_management