Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'master' into S4U
[simgrid.git] / include / xbt / xbt_os_thread.h
index 7d7bd29..72ae279 100644 (file)
@@ -1,6 +1,7 @@
 /* xbt/xbt_os_thread.h -- Thread portability layer                          */
 
-/* Copyright (c) 2007-2012. The SimGrid Team. All rights reserved.          */
+/* Copyright (c) 2007-2015. The SimGrid Team.
+ * All rights reserved.                                                     */
 
 /* This program is free software; you can redistribute it and/or modify it
  * under the terms of the license (GNU LGPL) which comes with this package. */
@@ -24,12 +25,13 @@ SG_BEGIN_DECL()
   /** \brief Thread data type (opaque structure) */
 typedef struct xbt_os_thread_ *xbt_os_thread_t;
 
-#include <pthread.h>
 
 #ifdef _XBT_WIN32 /* defined if this is a windows system, 32bits or 64bits) */
-#include <WinDef.h>
+#include <windef.h>
 typedef DWORD xbt_os_thread_key_t;
 #else /* assume that every non-windows system is POSIX-compatible */
+
+#include <pthread.h>
 typedef pthread_key_t xbt_os_thread_key_t;
 #endif
 
@@ -50,6 +52,11 @@ XBT_PUBLIC(xbt_os_thread_t) xbt_os_thread_create(const char *name,
                                                  void *param,
                                                  void *data);
 
+//#define CORE_BINDING  //Uncomment this to enable binding of threads to physical cores. Only Linux.
+#ifdef CORE_BINDING
+XBT_PUBLIC(int) xbt_os_thread_bind(xbt_os_thread_t thread, int cpu);
+#endif
+
 XBT_PUBLIC(void) xbt_os_thread_exit(int *retcode);
 XBT_PUBLIC(void) xbt_os_thread_detach(xbt_os_thread_t thread);
 XBT_PUBLIC(xbt_os_thread_t) xbt_os_thread_self(void);
@@ -67,6 +74,7 @@ XBT_PUBLIC(void) xbt_os_thread_yield(void);
 XBT_PUBLIC(void) xbt_os_thread_cancel(xbt_os_thread_t thread);
 XBT_PUBLIC(void *) xbt_os_thread_getparam(void);
 XBT_PUBLIC(void) xbt_os_thread_setstacksize(int stack_size);
+XBT_PUBLIC(void) xbt_os_thread_setguardsize(int guard_size);
 
   /** \brief Thread mutex data type (opaque structure) */
 typedef struct xbt_os_mutex_ *xbt_os_mutex_t;