#include <limits.h>
#include <semaphore.h>
+#ifdef CORE_BINDING
+#define _GNU_SOURCE
+#include <sched.h>
+#endif
+
#ifdef HAVE_MUTEX_TIMEDLOCK
/* redefine the function header since we fail to get this from system headers on amd (at least) */
int pthread_mutex_timedlock(pthread_mutex_t * mutex,
}
+#ifdef CORE_BINDING
+int xbt_os_thread_bind(xbt_os_thread_t thread, int cpu){
+ pthread_t pthread = thread->t;
+ int errcode = 0;
+ cpu_set_t cpuset;
+ CPU_ZERO(&cpuset);
+ CPU_SET(cpu, &cpuset);
+ errcode = pthread_setaffinity_np(pthread, sizeof(cpu_set_t), &cpuset);
+ return errcode;
+}
+#endif
+
void xbt_os_thread_setstacksize(int stack_size)
{
size_t alignment[] = {
void xbt_os_thread_setguardsize(int guard_size)
{
+#ifdef WIN32
+ THROW_UNIMPLEMENTED; //pthread_attr_setguardsize is not implemented in pthread.h on windows
+#else
size_t sz = guard_size;
int res = pthread_attr_setguardsize(&thread_attr, sz);
if (res)
XBT_WARN("pthread_attr_setguardsize failed (%d) for size: %zd", res, sz);
+#endif
}
const char *xbt_os_thread_name(xbt_os_thread_t t)