#include <xbt/base.h>
#include <xbt/function_types.h>
-#include <pthread.h>
-
SG_BEGIN_DECL()
/** @addtogroup XBT_thread
* @{
*/
-XBT_PUBLIC int xbt_os_thread_atfork(void (*prepare)(void), void (*parent)(void), void (*child)(void));
-
/** @brief Thread mutex data type (opaque structure) */
typedef struct xbt_os_mutex_ *xbt_os_mutex_t;
XBT_PUBLIC xbt_os_mutex_t xbt_os_mutex_init(void);
/* Fixme? only the default mdp in protected against forks */
// This is mandated to protect the mmalloced areas through forks. Think of tesh.
// Nah, removing the mutex isn't a good idea either for tesh
- int res = xbt_os_thread_atfork(mmalloc_fork_prepare, mmalloc_fork_parent, mmalloc_fork_child);
+ int res = pthread_atfork(mmalloc_fork_prepare, mmalloc_fork_parent, mmalloc_fork_child);
if (res != 0)
- THROWF(system_error,0,"xbt_os_thread_atfork() failed: return value %d",res);
+ THROWF(system_error, 0, "pthread_atfork() failed: return value %d", res);
}
xbt_assert(__mmalloc_default_mdp != NULL);
#include "swag.h"
#include "src/internal_config.h"
-#include "xbt/xbt_os_thread.h"
#include "xbt/mmalloc.h"
#include "xbt/ex.h"
#include "xbt/dynar.h"
pvoid_f_pvoid_t start_routine;
} s_xbt_os_thread_t;
-/** Calls pthread_atfork() if present, and raise an exception otherwise.
- *
- * The only known user of this wrapper is mmalloc_preinit(), but it is absolutely mandatory there:
- * when used with tesh, mmalloc *must* be mutex protected and resistant to forks.
- * This functionality is the only way to get it working (by ensuring that the mutex is consistently released on forks)
- */
-
-/* this function is critical to tesh+mmalloc, don't mess with it */
-int xbt_os_thread_atfork(void (*prepare)(void), void (*parent)(void), void (*child)(void))
-{
- return pthread_atfork(prepare, parent, child);
-}
-
/****** mutex related functions ******/
typedef struct xbt_os_mutex_ {
pthread_mutex_t m;