#include "context_private.h"
#include "xbt/log.h"
#include "xbt/dynar.h"
-#include "gras_config.h"
-XBT_LOG_NEW_DEFAULT_SUBCATEGORY(context, xbt, "Context");
+XBT_LOG_NEW_DEFAULT_SUBCATEGORY(xbt_ctx, xbt, "Context");
#define VOIRP(expr) DEBUG1(" {" #expr " = %p }", expr)
pthread_cond_destroy(&(context->cond));
#endif
if(context->exception) free(context->exception);
+
+ #ifdef USE_WIN_CONTEXT
+ if(context->uc.uc_stack.ss_sp)
+ free (context->uc.uc_stack.ss_sp);
+ #endif
+
free(context);
return;
}
static void __context_ex_terminate(xbt_ex_t *e) {
xbt_ex_display(e);
- __context_exit(current_context, e->value);
+ abort();
+ /* FIXME: there should be a configuration variable to choose this
+ if(current_context!=init_context)
+ __context_exit(current_context, e->value);
+ else
+ abort();
+ */
}
/** \name Functions
# ifndef USE_WIN_CONTEXT
res->uc.uc_stack.ss_sp = pth_skaddr_makecontext(res->stack,STACK_SIZE);
res->uc.uc_stack.ss_size = pth_sksize_makecontext(res->stack,STACK_SIZE);
+#else
+ res->uc.uc_stack.ss_sp = xbt_malloc(STACK_SIZE);
+ res->uc.uc_stack.ss_size = STACK_SIZE ;
# endif /* USE_WIN_CONTEXT */
#endif /* USE_PTHREADS or not */
res->argc = argc;