Commit 459a3df7 authored by Vineet Gupta's avatar Vineet Gupta Committed by Arnaldo Carvalho de Melo

perf tools: Provide stub for missing pthread_attr_setaffinity_np

uClibc Linuxthreads.old doesn't support the pthread_attr_setaffinity_np()
functioo:

   ----------------->8-----------------------
  CC       bench/futex-hash.o
  CC       bench/futex-wake.o
bench/futex-hash.c: In function 'bench_futex_hash':
bench/futex-hash.c:161:3: error: implicit declaration of function
'pthread_attr_setaffinity_np' [-Werror=implicit-function-declaration]
   ret = pthread_attr_setaffinity_np(&thread_attr, sizeof(cpu_set_t),
&cpu);
   ^
bench/futex-hash.c:161:3: error: nested extern declaration of
'pthread_attr_setaffinity_np' [-Werror=nested-externs]
   ----------------->8-----------------------

So introduce a test to check that and if not available provide a stub.
Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
Acked-by: default avatarJiri Olsa <jolsa@kernel.org>
Cc: Alexey Brodkin <Alexey.Brodkin@synopsys.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/1421156604-30603-6-git-send-email-vgupta@synopsys.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 8d9cbd8f
...@@ -68,4 +68,17 @@ futex_cmp_requeue(u_int32_t *uaddr, u_int32_t val, u_int32_t *uaddr2, int nr_wak ...@@ -68,4 +68,17 @@ futex_cmp_requeue(u_int32_t *uaddr, u_int32_t val, u_int32_t *uaddr2, int nr_wak
val, opflags); val, opflags);
} }
#ifndef HAVE_PTHREAD_ATTR_SETAFFINITY_NP
#include <pthread.h>
static inline int pthread_attr_setaffinity_np(pthread_attr_t *attr,
size_t cpusetsize,
cpu_set_t *cpuset)
{
attr = attr;
cpusetsize = cpusetsize;
cpuset = cpuset;
return 0;
}
#endif
#endif /* _FUTEX_H */ #endif /* _FUTEX_H */
...@@ -198,6 +198,7 @@ CORE_FEATURE_TESTS = \ ...@@ -198,6 +198,7 @@ CORE_FEATURE_TESTS = \
libpython-version \ libpython-version \
libslang \ libslang \
libunwind \ libunwind \
pthread-attr-setaffinity-np \
stackprotector-all \ stackprotector-all \
timerfd \ timerfd \
libdw-dwarf-unwind \ libdw-dwarf-unwind \
...@@ -226,6 +227,7 @@ VF_FEATURE_TESTS = \ ...@@ -226,6 +227,7 @@ VF_FEATURE_TESTS = \
libelf-getphdrnum \ libelf-getphdrnum \
libelf-mmap \ libelf-mmap \
libpython-version \ libpython-version \
pthread-attr-setaffinity-np \
stackprotector-all \ stackprotector-all \
timerfd \ timerfd \
libunwind-debug-frame \ libunwind-debug-frame \
...@@ -301,6 +303,10 @@ ifeq ($(feature-sync-compare-and-swap), 1) ...@@ -301,6 +303,10 @@ ifeq ($(feature-sync-compare-and-swap), 1)
CFLAGS += -DHAVE_SYNC_COMPARE_AND_SWAP_SUPPORT CFLAGS += -DHAVE_SYNC_COMPARE_AND_SWAP_SUPPORT
endif endif
ifeq ($(feature-pthread-attr-setaffinity-np), 1)
CFLAGS += -DHAVE_PTHREAD_ATTR_SETAFFINITY_NP
endif
ifndef NO_BIONIC ifndef NO_BIONIC
$(call feature_check,bionic) $(call feature_check,bionic)
ifeq ($(feature-bionic), 1) ifeq ($(feature-bionic), 1)
......
...@@ -25,6 +25,7 @@ FILES= \ ...@@ -25,6 +25,7 @@ FILES= \
test-libslang.bin \ test-libslang.bin \
test-libunwind.bin \ test-libunwind.bin \
test-libunwind-debug-frame.bin \ test-libunwind-debug-frame.bin \
test-pthread-attr-setaffinity-np.bin \
test-stackprotector-all.bin \ test-stackprotector-all.bin \
test-timerfd.bin \ test-timerfd.bin \
test-libdw-dwarf-unwind.bin \ test-libdw-dwarf-unwind.bin \
...@@ -47,6 +48,9 @@ test-all.bin: ...@@ -47,6 +48,9 @@ test-all.bin:
test-hello.bin: test-hello.bin:
$(BUILD) $(BUILD)
test-pthread-attr-setaffinity-np.bin:
$(BUILD) -Werror -lpthread
test-stackprotector-all.bin: test-stackprotector-all.bin:
$(BUILD) -Werror -fstack-protector-all $(BUILD) -Werror -fstack-protector-all
......
...@@ -97,6 +97,10 @@ ...@@ -97,6 +97,10 @@
# include "test-zlib.c" # include "test-zlib.c"
#undef main #undef main
#define main main_test_pthread_attr_setaffinity_np
# include "test-pthread_attr_setaffinity_np.c"
#undef main
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
main_test_libpython(); main_test_libpython();
...@@ -121,6 +125,7 @@ int main(int argc, char *argv[]) ...@@ -121,6 +125,7 @@ int main(int argc, char *argv[])
main_test_libdw_dwarf_unwind(); main_test_libdw_dwarf_unwind();
main_test_sync_compare_and_swap(argc, argv); main_test_sync_compare_and_swap(argc, argv);
main_test_zlib(); main_test_zlib();
main_test_pthread_attr_setaffinity_np();
return 0; return 0;
} }
#include <stdint.h>
#include <pthread.h>
int main(void)
{
int ret = 0;
pthread_attr_t thread_attr;
pthread_attr_init(&thread_attr);
/* don't care abt exact args, just the API itself in libpthread */
ret = pthread_attr_setaffinity_np(&thread_attr, 0, NULL);
return ret;
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment