diff --git a/include/log/logger.h b/include/log/logger.h index f030dab5a..c795253c9 100644 --- a/include/log/logger.h +++ b/include/log/logger.h @@ -183,6 +183,8 @@ struct logger_list *android_logger_list_open(log_id_t id, pid_t pid); #define android_logger_list_close android_logger_list_free +char android_log_timestamp(); + /* * log_id_t helpers */ diff --git a/liblog/log_is_loggable.c b/liblog/log_is_loggable.c index 7a8e33f0d..38b2bb640 100644 --- a/liblog/log_is_loggable.c +++ b/liblog/log_is_loggable.c @@ -176,3 +176,28 @@ int __android_log_is_loggable(int prio, const char *tag, int def) int logLevel = __android_log_level(tag, def); return logLevel >= 0 && prio >= logLevel; } + +char android_log_timestamp() +{ + static struct cache r_time_cache = { NULL, -1, 0 }; + static struct cache p_time_cache = { NULL, -1, 0 }; + static uint32_t serial; + uint32_t current_serial; + char retval; + + pthread_mutex_lock(&lock); + + current_serial = __system_property_area_serial(); + if (current_serial != serial) { + refresh_cache(&r_time_cache, "ro.logd.timestamp"); + refresh_cache(&p_time_cache, "persist.logd.timestamp"); + serial = current_serial; + } + if (!(retval = p_time_cache.c)) { + retval = r_time_cache.c; + } + + pthread_mutex_unlock(&lock); + + return tolower(retval ?: 'r'); +}