diff options
author | Jamie Gennis <jgennis@google.com> | 2013-04-16 15:18:29 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2013-04-16 15:18:29 -0700 |
commit | b7b2c71bf8bf685af4c716e78d5c70decab98b54 (patch) | |
tree | 9eea031bfc8e8b21c40dc07b2b43d0408aca485b /libcutils | |
parent | 7e25fa1859c5bccdc6599fbbd4f6344bc5bf7998 (diff) | |
parent | 2553825797c40b14981b1b24e44475e07b02267f (diff) | |
download | system_core-b7b2c71bf8bf685af4c716e78d5c70decab98b54.zip system_core-b7b2c71bf8bf685af4c716e78d5c70decab98b54.tar.gz system_core-b7b2c71bf8bf685af4c716e78d5c70decab98b54.tar.bz2 |
am 25538257: Merge "cutils: add a way to disable tracing for a process" into jb-mr2-dev
* commit '2553825797c40b14981b1b24e44475e07b02267f':
cutils: add a way to disable tracing for a process
Diffstat (limited to 'libcutils')
-rw-r--r-- | libcutils/trace.c | 40 |
1 files changed, 29 insertions, 11 deletions
diff --git a/libcutils/trace.c b/libcutils/trace.c index 047f889..9754a44 100644 --- a/libcutils/trace.c +++ b/libcutils/trace.c @@ -30,12 +30,13 @@ #define LOG_TAG "cutils-trace" #include <cutils/log.h> -int32_t atrace_is_ready = 0; -int atrace_marker_fd = -1; -uint64_t atrace_enabled_tags = ATRACE_TAG_NOT_READY; -static bool atrace_is_debuggable = false; -static pthread_once_t atrace_once_control = PTHREAD_ONCE_INIT; -static pthread_mutex_t atrace_tags_mutex = PTHREAD_MUTEX_INITIALIZER; +volatile int32_t atrace_is_ready = 0; +int atrace_marker_fd = -1; +uint64_t atrace_enabled_tags = ATRACE_TAG_NOT_READY; +static bool atrace_is_debuggable = false; +static volatile int32_t atrace_is_enabled = 1; +static pthread_once_t atrace_once_control = PTHREAD_ONCE_INIT; +static pthread_mutex_t atrace_tags_mutex = PTHREAD_MUTEX_INITIALIZER; // Set whether this process is debuggable, which determines whether // application-level tracing is allowed when the ro.debuggable system property @@ -46,9 +47,18 @@ void atrace_set_debuggable(bool debuggable) atrace_update_tags(); } +// Set whether tracing is enabled in this process. This is used to prevent +// the Zygote process from tracing. +void atrace_set_tracing_enabled(bool enabled) +{ + android_atomic_release_store(enabled ? 1 : 0, &atrace_is_enabled); + atrace_update_tags(); +} + // Check whether the given command line matches one of the comma-separated // values listed in the app_cmdlines property. -static bool atrace_is_cmdline_match(const char* cmdline) { +static bool atrace_is_cmdline_match(const char* cmdline) +{ char value[PROPERTY_VALUE_MAX]; char* start = value; @@ -140,10 +150,18 @@ void atrace_update_tags() { uint64_t tags; if (CC_UNLIKELY(android_atomic_acquire_load(&atrace_is_ready))) { - tags = atrace_get_property(); - pthread_mutex_lock(&atrace_tags_mutex); - atrace_enabled_tags = tags; - pthread_mutex_unlock(&atrace_tags_mutex); + if (android_atomic_acquire_load(&atrace_is_enabled)) { + tags = atrace_get_property(); + pthread_mutex_lock(&atrace_tags_mutex); + atrace_enabled_tags = tags; + pthread_mutex_unlock(&atrace_tags_mutex); + } else { + // Tracing is disabled for this process, so we simply don't + // initialize the tags. + pthread_mutex_lock(&atrace_tags_mutex); + atrace_enabled_tags = ATRACE_TAG_NOT_READY; + pthread_mutex_unlock(&atrace_tags_mutex); + } } } |