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
This commit is contained in:
commit
b7b2c71bf8
2 changed files with 36 additions and 12 deletions
|
|
@ -107,12 +107,18 @@ void atrace_update_tags();
|
||||||
*/
|
*/
|
||||||
void atrace_set_debuggable(bool debuggable);
|
void atrace_set_debuggable(bool debuggable);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set whether tracing is enabled for the current process. This is used to
|
||||||
|
* prevent tracing within the Zygote process.
|
||||||
|
*/
|
||||||
|
void atrace_set_tracing_enabled(bool enabled);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Flag indicating whether setup has been completed, initialized to 0.
|
* Flag indicating whether setup has been completed, initialized to 0.
|
||||||
* Nonzero indicates setup has completed.
|
* Nonzero indicates setup has completed.
|
||||||
* Note: This does NOT indicate whether or not setup was successful.
|
* Note: This does NOT indicate whether or not setup was successful.
|
||||||
*/
|
*/
|
||||||
extern int32_t atrace_is_ready;
|
extern volatile int32_t atrace_is_ready;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set of ATRACE_TAG flags to trace for, initialized to ATRACE_TAG_NOT_READY.
|
* Set of ATRACE_TAG flags to trace for, initialized to ATRACE_TAG_NOT_READY.
|
||||||
|
|
|
||||||
|
|
@ -30,12 +30,13 @@
|
||||||
#define LOG_TAG "cutils-trace"
|
#define LOG_TAG "cutils-trace"
|
||||||
#include <cutils/log.h>
|
#include <cutils/log.h>
|
||||||
|
|
||||||
int32_t atrace_is_ready = 0;
|
volatile int32_t atrace_is_ready = 0;
|
||||||
int atrace_marker_fd = -1;
|
int atrace_marker_fd = -1;
|
||||||
uint64_t atrace_enabled_tags = ATRACE_TAG_NOT_READY;
|
uint64_t atrace_enabled_tags = ATRACE_TAG_NOT_READY;
|
||||||
static bool atrace_is_debuggable = false;
|
static bool atrace_is_debuggable = false;
|
||||||
static pthread_once_t atrace_once_control = PTHREAD_ONCE_INIT;
|
static volatile int32_t atrace_is_enabled = 1;
|
||||||
static pthread_mutex_t atrace_tags_mutex = PTHREAD_MUTEX_INITIALIZER;
|
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
|
// Set whether this process is debuggable, which determines whether
|
||||||
// application-level tracing is allowed when the ro.debuggable system property
|
// application-level tracing is allowed when the ro.debuggable system property
|
||||||
|
|
@ -46,9 +47,18 @@ void atrace_set_debuggable(bool debuggable)
|
||||||
atrace_update_tags();
|
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
|
// Check whether the given command line matches one of the comma-separated
|
||||||
// values listed in the app_cmdlines property.
|
// 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 value[PROPERTY_VALUE_MAX];
|
||||||
char* start = value;
|
char* start = value;
|
||||||
|
|
||||||
|
|
@ -140,10 +150,18 @@ void atrace_update_tags()
|
||||||
{
|
{
|
||||||
uint64_t tags;
|
uint64_t tags;
|
||||||
if (CC_UNLIKELY(android_atomic_acquire_load(&atrace_is_ready))) {
|
if (CC_UNLIKELY(android_atomic_acquire_load(&atrace_is_ready))) {
|
||||||
tags = atrace_get_property();
|
if (android_atomic_acquire_load(&atrace_is_enabled)) {
|
||||||
pthread_mutex_lock(&atrace_tags_mutex);
|
tags = atrace_get_property();
|
||||||
atrace_enabled_tags = tags;
|
pthread_mutex_lock(&atrace_tags_mutex);
|
||||||
pthread_mutex_unlock(&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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue