The getcpu cache was removed from the kernel in Linux 2.6.24. glibc
support from the sched_getcpu implementation was removed in commit
dd26c44403582fdf10d663170f947dfe4b3207a0 ("Consolidate sched_getcpu").
res = INTERNAL_SYSCALL_CALL (sched_setaffinity, pd->tid, cpusetsize,
cpuset);
-#ifdef RESET_VGETCPU_CACHE
- if (!INTERNAL_SYSCALL_ERROR_P (res))
- RESET_VGETCPU_CACHE ();
-#endif
-
return (INTERNAL_SYSCALL_ERROR_P (res)
? INTERNAL_SYSCALL_ERRNO (res)
: 0);
{
int result = INLINE_SYSCALL (sched_setaffinity, 3, pid, cpusetsize, cpuset);
-#ifdef RESET_VGETCPU_CACHE
- if (result != -1)
- RESET_VGETCPU_CACHE ();
-#endif
-
return result;
}
libc_hidden_def (__sched_setaffinity_new)
+++ /dev/null
-#include <tls.h>
-
-#define RESET_VGETCPU_CACHE() \
- do { \
- asm volatile ("movl %0, %%fs:%P1\n\t" \
- "movl %0, %%fs:%P2" \
- : \
- : "ir" (0), "i" (offsetof (struct pthread, \
- header.vgetcpu_cache[0])), \
- "i" (offsetof (struct pthread, \
- header.vgetcpu_cache[1]))); \
- } while (0)
-
-#include <sysdeps/unix/sysv/linux/pthread_setaffinity.c>
+++ /dev/null
-#include <tls.h>
-
-#define RESET_VGETCPU_CACHE() \
- do { \
- asm volatile ("movl %0, %%fs:%P1\n\t" \
- "movl %0, %%fs:%P2" \
- : \
- : "ir" (0), "i" (offsetof (struct pthread, \
- header.vgetcpu_cache[0])), \
- "i" (offsetof (struct pthread, \
- header.vgetcpu_cache[1]))); \
- } while (0)
-
-#include "../sched_setaffinity.c"
MUTEX_FUTEX offsetof (pthread_mutex_t, __data.__lock)
MULTIPLE_THREADS_OFFSET offsetof (tcbhead_t, multiple_threads)
POINTER_GUARD offsetof (tcbhead_t, pointer_guard)
-VGETCPU_CACHE_OFFSET offsetof (tcbhead_t, vgetcpu_cache)
FEATURE_1_OFFSET offsetof (tcbhead_t, feature_1)
SSP_BASE_OFFSET offsetof (tcbhead_t, ssp_base)
uintptr_t sysinfo;
uintptr_t stack_guard;
uintptr_t pointer_guard;
- unsigned long int vgetcpu_cache[2];
+ unsigned long int unused_vgetcpu_cache[2];
/* Bit 0: X86_FEATURE_1_IBT.
Bit 1: X86_FEATURE_1_SHSTK.
*/