Merge "liblog: don't use a cache for __android_log_is_debuggable()" am: 88066a87bf
Original change: https://android-review.googlesource.com/c/platform/system/core/+/1373469 Change-Id: I87aab47349d9237b4e52c2e67786ee5571bd51b4
This commit is contained in:
commit
9fc97b8549
2 changed files with 6 additions and 26 deletions
|
|
@ -20,6 +20,7 @@
|
|||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Returns `1` if the device is debuggable or `0` if not. */
|
||||
int __android_log_is_debuggable();
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
|
|||
|
|
@ -294,33 +294,12 @@ int __android_log_is_loggable(int prio, const char* tag, int default_prio) {
|
|||
}
|
||||
|
||||
int __android_log_is_debuggable() {
|
||||
static uint32_t serial;
|
||||
static struct cache_char tag_cache;
|
||||
static const char key[] = "ro.debuggable";
|
||||
int ret;
|
||||
static int is_debuggable = [] {
|
||||
char value[PROP_VALUE_MAX] = {};
|
||||
return __system_property_get("ro.debuggable", value) > 0 && !strcmp(value, "1");
|
||||
}();
|
||||
|
||||
if (tag_cache.c) { /* ro property does not change after set */
|
||||
ret = tag_cache.c == '1';
|
||||
} else if (lock()) {
|
||||
struct cache_char temp_cache = {{NULL, 0xFFFFFFFF}, '\0'};
|
||||
refresh_cache(&temp_cache, key);
|
||||
ret = temp_cache.c == '1';
|
||||
} else {
|
||||
int change_detected = check_cache(&tag_cache.cache);
|
||||
uint32_t current_serial = __system_property_area_serial();
|
||||
if (current_serial != serial) {
|
||||
change_detected = 1;
|
||||
}
|
||||
if (change_detected) {
|
||||
refresh_cache(&tag_cache, key);
|
||||
serial = current_serial;
|
||||
}
|
||||
ret = tag_cache.c == '1';
|
||||
|
||||
unlock();
|
||||
}
|
||||
|
||||
return ret;
|
||||
return is_debuggable;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue