am ec544e1b: Merge "Build our benchmarks against glibc too."
* commit 'ec544e1b35cadaefd833b441dbec9c44adff6ade': Build our benchmarks against glibc too.
This commit is contained in:
commit
4f16aa9aec
benchmarks
libc
linker
@ -32,7 +32,6 @@ benchmark_c_flags = \
|
|||||||
benchmark_src_files = \
|
benchmark_src_files = \
|
||||||
benchmark_main.cpp \
|
benchmark_main.cpp \
|
||||||
math_benchmark.cpp \
|
math_benchmark.cpp \
|
||||||
property_benchmark.cpp \
|
|
||||||
pthread_benchmark.cpp \
|
pthread_benchmark.cpp \
|
||||||
semaphore_benchmark.cpp \
|
semaphore_benchmark.cpp \
|
||||||
stdio_benchmark.cpp \
|
stdio_benchmark.cpp \
|
||||||
@ -41,7 +40,8 @@ benchmark_src_files = \
|
|||||||
unistd_benchmark.cpp \
|
unistd_benchmark.cpp \
|
||||||
|
|
||||||
# Build benchmarks for the device (with bionic's .so). Run with:
|
# Build benchmarks for the device (with bionic's .so). Run with:
|
||||||
# adb shell bionic-benchmarks
|
# adb shell bionic-benchmarks32
|
||||||
|
# adb shell bionic-benchmarks64
|
||||||
include $(CLEAR_VARS)
|
include $(CLEAR_VARS)
|
||||||
LOCAL_MODULE := bionic-benchmarks
|
LOCAL_MODULE := bionic-benchmarks
|
||||||
LOCAL_MODULE_STEM_32 := bionic-benchmarks32
|
LOCAL_MODULE_STEM_32 := bionic-benchmarks32
|
||||||
@ -49,10 +49,29 @@ LOCAL_MODULE_STEM_64 := bionic-benchmarks64
|
|||||||
LOCAL_MULTILIB := both
|
LOCAL_MULTILIB := both
|
||||||
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
|
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
|
||||||
LOCAL_CFLAGS += $(benchmark_c_flags)
|
LOCAL_CFLAGS += $(benchmark_c_flags)
|
||||||
LOCAL_SRC_FILES := $(benchmark_src_files)
|
LOCAL_SRC_FILES := $(benchmark_src_files) property_benchmark.cpp
|
||||||
LOCAL_CXX_STL := libc++
|
LOCAL_CXX_STL := libc++
|
||||||
include $(BUILD_EXECUTABLE)
|
include $(BUILD_EXECUTABLE)
|
||||||
|
|
||||||
|
# We don't build a static benchmark executable because it's not usually
|
||||||
|
# useful. If you're trying to run the current benchmarks on an older
|
||||||
|
# release, it's (so far at least) always because you want to measure the
|
||||||
|
# performance of the old release's libc, and a static benchmark isn't
|
||||||
|
# going to let you do that.
|
||||||
|
|
||||||
|
# Build benchmarks for the host (against glibc!). Run with:
|
||||||
|
include $(CLEAR_VARS)
|
||||||
|
LOCAL_MODULE := bionic-benchmarks-glibc
|
||||||
|
LOCAL_MODULE_STEM_32 := bionic-benchmarks-glibc32
|
||||||
|
LOCAL_MODULE_STEM_64 := bionic-benchmarks-glibc64
|
||||||
|
LOCAL_MULTILIB := both
|
||||||
|
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
|
||||||
|
LOCAL_CFLAGS += $(benchmark_c_flags)
|
||||||
|
LOCAL_LDFLAGS += -lrt
|
||||||
|
LOCAL_SRC_FILES := $(benchmark_src_files)
|
||||||
|
LOCAL_CXX_STL := libc++
|
||||||
|
include $(BUILD_HOST_EXECUTABLE)
|
||||||
|
|
||||||
ifeq ($(HOST_OS)-$(HOST_ARCH),$(filter $(HOST_OS)-$(HOST_ARCH),linux-x86 linux-x86_64))
|
ifeq ($(HOST_OS)-$(HOST_ARCH),$(filter $(HOST_OS)-$(HOST_ARCH),linux-x86 linux-x86_64))
|
||||||
ifeq ($(TARGET_ARCH),x86)
|
ifeq ($(TARGET_ARCH),x86)
|
||||||
LINKER = linker
|
LINKER = linker
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
#include <regex.h>
|
#include <regex.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <map>
|
#include <map>
|
||||||
|
@ -80,7 +80,7 @@ BENCHMARK(BM_pthread_mutex_lock);
|
|||||||
|
|
||||||
static void BM_pthread_mutex_lock_ERRORCHECK(int iters) {
|
static void BM_pthread_mutex_lock_ERRORCHECK(int iters) {
|
||||||
StopBenchmarkTiming();
|
StopBenchmarkTiming();
|
||||||
pthread_mutex_t mutex = PTHREAD_ERRORCHECK_MUTEX_INITIALIZER;
|
pthread_mutex_t mutex = PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP;
|
||||||
StartBenchmarkTiming();
|
StartBenchmarkTiming();
|
||||||
|
|
||||||
for (int i = 0; i < iters; ++i) {
|
for (int i = 0; i < iters; ++i) {
|
||||||
@ -94,7 +94,7 @@ BENCHMARK(BM_pthread_mutex_lock_ERRORCHECK);
|
|||||||
|
|
||||||
static void BM_pthread_mutex_lock_RECURSIVE(int iters) {
|
static void BM_pthread_mutex_lock_RECURSIVE(int iters) {
|
||||||
StopBenchmarkTiming();
|
StopBenchmarkTiming();
|
||||||
pthread_mutex_t mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER;
|
pthread_mutex_t mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
|
||||||
StartBenchmarkTiming();
|
StartBenchmarkTiming();
|
||||||
|
|
||||||
for (int i = 0; i < iters; ++i) {
|
for (int i = 0; i < iters; ++i) {
|
||||||
|
@ -16,7 +16,9 @@
|
|||||||
|
|
||||||
#include "benchmark.h"
|
#include "benchmark.h"
|
||||||
|
|
||||||
|
#include <unistd.h>
|
||||||
#include <sys/syscall.h>
|
#include <sys/syscall.h>
|
||||||
|
#include <sys/time.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
|
||||||
static void BM_time_clock_gettime(int iters) {
|
static void BM_time_clock_gettime(int iters) {
|
||||||
|
@ -41,6 +41,8 @@ static void BM_unistd_getpid_syscall(int iters) {
|
|||||||
}
|
}
|
||||||
BENCHMARK(BM_unistd_getpid_syscall);
|
BENCHMARK(BM_unistd_getpid_syscall);
|
||||||
|
|
||||||
|
#if defined(__BIONIC__)
|
||||||
|
|
||||||
// Stop GCC optimizing out our pure function.
|
// Stop GCC optimizing out our pure function.
|
||||||
/* Must not be static! */ pid_t (*gettid_fp)() = gettid;
|
/* Must not be static! */ pid_t (*gettid_fp)() = gettid;
|
||||||
|
|
||||||
@ -55,6 +57,8 @@ static void BM_unistd_gettid(int iters) {
|
|||||||
}
|
}
|
||||||
BENCHMARK(BM_unistd_gettid);
|
BENCHMARK(BM_unistd_gettid);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
static void BM_unistd_gettid_syscall(int iters) {
|
static void BM_unistd_gettid_syscall(int iters) {
|
||||||
StartBenchmarkTiming();
|
StartBenchmarkTiming();
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ struct atfork_list_t {
|
|||||||
atfork_t* last;
|
atfork_t* last;
|
||||||
};
|
};
|
||||||
|
|
||||||
static pthread_mutex_t g_atfork_list_mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER;
|
static pthread_mutex_t g_atfork_list_mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
|
||||||
static atfork_list_t g_atfork_list = { NULL, NULL };
|
static atfork_list_t g_atfork_list = { NULL, NULL };
|
||||||
|
|
||||||
void __bionic_atfork_run_prepare() {
|
void __bionic_atfork_run_prepare() {
|
||||||
@ -73,7 +73,7 @@ void __bionic_atfork_run_child() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
g_atfork_list_mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER;
|
g_atfork_list_mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
|
||||||
}
|
}
|
||||||
|
|
||||||
void __bionic_atfork_run_parent() {
|
void __bionic_atfork_run_parent() {
|
||||||
|
@ -53,9 +53,13 @@ typedef struct {
|
|||||||
#define __PTHREAD_RECURSIVE_MUTEX_INIT_VALUE 0x4000
|
#define __PTHREAD_RECURSIVE_MUTEX_INIT_VALUE 0x4000
|
||||||
#define __PTHREAD_ERRORCHECK_MUTEX_INIT_VALUE 0x8000
|
#define __PTHREAD_ERRORCHECK_MUTEX_INIT_VALUE 0x8000
|
||||||
|
|
||||||
#define PTHREAD_MUTEX_INITIALIZER {__PTHREAD_MUTEX_INIT_VALUE __RESERVED_INITIALIZER}
|
#define PTHREAD_MUTEX_INITIALIZER {__PTHREAD_MUTEX_INIT_VALUE __RESERVED_INITIALIZER}
|
||||||
#define PTHREAD_RECURSIVE_MUTEX_INITIALIZER {__PTHREAD_RECURSIVE_MUTEX_INIT_VALUE __RESERVED_INITIALIZER}
|
#define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP {__PTHREAD_ERRORCHECK_MUTEX_INIT_VALUE __RESERVED_INITIALIZER}
|
||||||
#define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER {__PTHREAD_ERRORCHECK_MUTEX_INIT_VALUE __RESERVED_INITIALIZER}
|
#define PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP {__PTHREAD_RECURSIVE_MUTEX_INIT_VALUE __RESERVED_INITIALIZER}
|
||||||
|
|
||||||
|
/* TODO: remove this namespace pollution. */
|
||||||
|
#define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP
|
||||||
|
#define PTHREAD_RECURSIVE_MUTEX_INITIALIZER PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
PTHREAD_MUTEX_NORMAL = 0,
|
PTHREAD_MUTEX_NORMAL = 0,
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
|
|
||||||
/* This file hijacks the symbols stubbed out in libdl.so. */
|
/* This file hijacks the symbols stubbed out in libdl.so. */
|
||||||
|
|
||||||
static pthread_mutex_t g_dl_mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER;
|
static pthread_mutex_t g_dl_mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
|
||||||
|
|
||||||
static const char* __bionic_set_dlerror(char* new_value) {
|
static const char* __bionic_set_dlerror(char* new_value) {
|
||||||
char** dlerror_slot = &reinterpret_cast<char**>(__get_tls())[TLS_SLOT_DLERROR];
|
char** dlerror_slot = &reinterpret_cast<char**>(__get_tls())[TLS_SLOT_DLERROR];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user