Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Kill the useless xbt_free (was define'd to free)
[simgrid.git] / src / xbt / context.c
index 67d95f7..89b3315 100644 (file)
@@ -3,7 +3,7 @@
 /* a fast and simple context switching library                              */
 
 /* Copyright (c) 2004 Arnaud Legrand.                                       */
-/* Copyright (c) 2004 Martin Quinson.                                       */
+/* Copyright (c) 2004, 2005 Martin Quinson.                                 */
 /* All rights reserved.                                                     */
 
 /* This program is free software; you can redistribute it and/or modify it
@@ -14,6 +14,7 @@
 #include "xbt/error.h"
 #include "xbt/dynar.h"
 #include "gras_config.h"
+
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(context, xbt, "Context");
 
 /* #define WARNING(format, ...) (fprintf(stderr, "[%s , %s : %d] ", __FILE__, __FUNCTION__, __LINE__),\ */
@@ -38,9 +39,11 @@ static void __xbt_context_yield(xbt_context_t context)
 
   xbt_assert0(current_context,"You have to call context_init() first.");
   
-/*   WARNING("--------- current_context (%p) is yielding to context(%p) ---------",current_context,context); */
-/*   VOIRP(current_context); */
-/*   if(current_context) VOIRP(current_context->save); */
+  DEBUG2("--------- current_context (%p) is yielding to context(%p) ---------",
+        current_context,context);
+
+  if(current_context)
+    DEBUG1("current_context->save = %p",current_context->save);
 /*   VOIRP(context); */
 /*   if(context) VOIRP(context->save); */
 
@@ -74,7 +77,7 @@ static void __xbt_context_yield(xbt_context_t context)
 
 static void xbt_context_destroy(xbt_context_t context)
 {
-  xbt_free(context);
+  free(context);
 
   return;
 }
@@ -125,8 +128,8 @@ static void *__context_wrapper(void *c)
   (context->code) (context->argc,context->argv);
 
   for(i=0;i<context->argc; i++) 
-    if(context->argv[i]) xbt_free(context->argv[i]);
-  if(context->argv) xbt_free(context->argv);
+    if(context->argv[i]) free(context->argv[i]);
+  if(context->argv) free(context->argv);
 
   if(context->cleanup_func)
     context->cleanup_func(context->cleanup_arg);
@@ -175,7 +178,8 @@ xbt_context_t xbt_context_new(xbt_context_function_t code,
 
   res = xbt_new0(s_xbt_context_t,1);
 
-  xbt_assert0(getcontext(&(res->uc))==0,"Error in context saving.");
+  /* FIXME: strerror is not thread safe */
+  xbt_assert2(getcontext(&(res->uc))==0,"Error in context saving: %d (%s)", errno, strerror(errno));
 
   res->code = code;
   res->uc.uc_link = NULL;
@@ -252,8 +256,8 @@ void xbt_context_free(xbt_context_t context)
 
   xbt_swag_remove(context, context_living);  
   for(i=0;i<context->argc; i++) 
-    if(context->argv[i]) xbt_free(context->argv[i]);
-  if(context->argv) xbt_free(context->argv);
+    if(context->argv[i]) free(context->argv[i]);
+  if(context->argv) free(context->argv);
   
   if(context->cleanup_func)
     context->cleanup_func(context->cleanup_arg);