diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2019-06-07 16:34:46 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2019-06-07 16:34:46 +0000 |
commit | 37c94a64efc250b3c84a5ac3458c9e6b20e800f8 (patch) | |
tree | 2caae05c541f7d426da27bdb9f674d6467c47dcb | |
parent | 9ef54cc3262f02c2a5f42d62b8043d1a5611cd01 (diff) | |
parent | 7283b8243abae2670e8a8369a4c9b6d59ae4ec39 (diff) | |
download | extras-37c94a64efc250b3c84a5ac3458c9e6b20e800f8.tar.gz |
Snap for 5637977 from 7283b8243abae2670e8a8369a4c9b6d59ae4ec39 to qt-aml-release
Change-Id: I62055137ac73139272ffc19950bd449e5e8b1ba9
-rw-r--r-- | toolchain-extras/profile-extras-test.cpp | 2 | ||||
-rw-r--r-- | toolchain-extras/profile-extras.cpp | 18 |
2 files changed, 18 insertions, 2 deletions
diff --git a/toolchain-extras/profile-extras-test.cpp b/toolchain-extras/profile-extras-test.cpp index 0cc4cef8..5e48a646 100644 --- a/toolchain-extras/profile-extras-test.cpp +++ b/toolchain-extras/profile-extras-test.cpp @@ -28,7 +28,7 @@ void __gcov_flush() { } } -static const char kCoveragePropName[] = "coverage.flush"; +static const char kCoveragePropName[] = "debug.coverage.flush"; TEST(profile_extras, smoke) { flush_count = 0; diff --git a/toolchain-extras/profile-extras.cpp b/toolchain-extras/profile-extras.cpp index 3af46a10..2d685084 100644 --- a/toolchain-extras/profile-extras.cpp +++ b/toolchain-extras/profile-extras.cpp @@ -17,7 +17,9 @@ #include <errno.h> #include <pthread.h> #include <signal.h> +#include <stdlib.h> #include <string.h> +#include <libgen.h> // For POSIX basename(). // Use _system_properties.h to use __system_property_wait_any() #define _REALLY_INCLUDE_SYS__SYSTEM_PROPERTIES_H_ @@ -33,7 +35,7 @@ static void gcov_signal_handler(__unused int signum) { __gcov_flush(); } -static const char kCoveragePropName[] = "coverage.flush"; +static const char kCoveragePropName[] = "debug.coverage.flush"; // In a loop, wait for any change to sysprops and trigger a __gcov_flush when // <kCoveragePropName> sysprop transistions to "1" after a transistion to "0". @@ -84,6 +86,20 @@ __attribute__((constructor)) int init_profile_extras(void) { return -1; } + // Do not create thread running property_watch_loop for zygote (it can get + // invoked as zygote or app_process). This check is only needed for the + // platform, but can be done on any version after Android L, when + // getprogname() was added. +#if defined(__ANDROID_API__) && __ANDROID_API__ >= __ANDROID_API_L__ + const char *prog_basename = basename(getprogname()); + if (strncmp(prog_basename, "zygote", strlen("zygote")) == 0) { + return 0; + } + if (strncmp(prog_basename, "app_process", strlen("app_process")) == 0) { + return 0; + } +#endif + pthread_t thread; int error = pthread_create(&thread, nullptr, property_watch_loop, nullptr); if (error != 0) { |