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
Remove comm from src_proc->comms and dst_proc->comms when finish it,
[simgrid.git]
/
src
/
simix
/
smx_context_base.c
diff --git
a/src/simix/smx_context_base.c
b/src/simix/smx_context_base.c
index
cb7437c
..
97cbb0c
100644
(file)
--- a/
src/simix/smx_context_base.c
+++ b/
src/simix/smx_context_base.c
@@
-8,8
+8,9
@@
#include "xbt/function_types.h"
#include "xbt/function_types.h"
-#include "simix/simix.h"
-#include "simix/context.h"
+#include "simgrid/simix.h"
+#include "smx_private.h"
+#include "mc/mc.h"
XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(bindings);
XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(bindings);
@@
-26,7
+27,6
@@
void smx_ctx_base_factory_init(smx_context_factory_t *factory)
(*factory)->runall = NULL;
(*factory)->self = smx_ctx_base_self;
(*factory)->get_data = smx_ctx_base_get_data;
(*factory)->runall = NULL;
(*factory)->self = smx_ctx_base_self;
(*factory)->get_data = smx_ctx_base_get_data;
- (*factory)->get_thread_id = smx_ctx_base_get_thread_id;
(*factory)->name = "base context factory";
}
(*factory)->name = "base context factory";
}
@@
-47,6
+47,10
@@
smx_ctx_base_factory_create_context_sized(size_t size,
{
smx_context_t context = xbt_malloc0(size);
{
smx_context_t context = xbt_malloc0(size);
+ /* Store the address of the stack in heap to compare it apart of heap comparison */
+ if(MC_is_active())
+ MC_ignore_heap(context, size);
+
/* If the user provided a function for the process then use it.
Otherwise, it is the context for maestro and we should set it as the
current context */
/* If the user provided a function for the process then use it.
Otherwise, it is the context for maestro and we should set it as the
current context */
@@
-55,8
+59,8
@@
smx_ctx_base_factory_create_context_sized(size_t size,
context->argc = argc;
context->argv = argv;
context->code = code;
context->argc = argc;
context->argv = argv;
context->code = code;
- }
else
{
-
smx_current_context = context
;
+ }
else
{
+
SIMIX_context_set_current(context)
;
}
context->data = data;
}
context->data = data;
@@
-66,14
+70,12
@@
smx_ctx_base_factory_create_context_sized(size_t size,
void smx_ctx_base_free(smx_context_t context)
{
int i;
void smx_ctx_base_free(smx_context_t context)
{
int i;
-
if (context) {
/* free argv */
if (context->argv) {
for (i = 0; i < context->argc; i++)
if (context) {
/* free argv */
if (context->argv) {
for (i = 0; i < context->argc; i++)
- if (context->argv[i])
- free(context->argv[i]);
+ free(context->argv[i]);
free(context->argv);
}
free(context->argv);
}
@@
-86,21
+88,18
@@
void smx_ctx_base_free(smx_context_t context)
void smx_ctx_base_stop(smx_context_t context)
{
if (context->cleanup_func)
void smx_ctx_base_stop(smx_context_t context)
{
if (context->cleanup_func)
- (*(context->cleanup_func)) (context->data);
- SIMIX_req_process_cleanup(context->data);
+ context->cleanup_func(context->data);
+ context->iwannadie = 0;
+ simcall_process_cleanup(context->data);
+ context->iwannadie = 1;
}
smx_context_t smx_ctx_base_self(void)
{
}
smx_context_t smx_ctx_base_self(void)
{
- return
smx_current_context
;
+ return
SIMIX_context_get_current()
;
}
void *smx_ctx_base_get_data(smx_context_t context)
{
return context->data;
}
}
void *smx_ctx_base_get_data(smx_context_t context)
{
return context->data;
}
-
-int smx_ctx_base_get_thread_id()
-{
- return 0;
-}