Merge tag 'android-15.0.0_r6' of https://android.googlesource.com/platform/system/logging into HEAD
Android 15.0.0 Release 6 (AP4A.241205.013)
Change-Id: I9504ba715e87b7fd54279c8e1035ed147c20e288
diff --git a/liblog/Android.bp b/liblog/Android.bp
index f253eda..49a26f8 100644
--- a/liblog/Android.bp
+++ b/liblog/Android.bp
@@ -86,6 +86,7 @@
// ========================================================
cc_defaults {
name: "liblog.defaults",
+ defaults: ["bug_24465209_workaround"],
host_supported: true,
ramdisk_available: true,
vendor_ramdisk_available: true,
@@ -102,11 +103,6 @@
address: false,
},
},
- android_arm: {
- // TODO: This is to work around b/24465209. Remove after root cause is fixed
- pack_relocations: false,
- ldflags: ["-Wl,--hash-style=both"],
- },
windows: {
enabled: true,
},
@@ -207,9 +203,6 @@
symbol_file: "liblog.map.txt",
first_version: "9",
unversioned_until: "current",
- export_header_libs: [
- "liblog_ndk_headers",
- ],
}
rust_bindgen {
diff --git a/liblog/logprint.cpp b/liblog/logprint.cpp
index aece1fa..d5c8fd0 100644
--- a/liblog/logprint.cpp
+++ b/liblog/logprint.cpp
@@ -877,9 +877,9 @@
}
break;
case TYPE_MONOTONIC: {
- static const uint64_t minute = 60;
- static const uint64_t hour = 60 * minute;
- static const uint64_t day = 24 * hour;
+ static constexpr uint64_t minute = 60;
+ static constexpr uint64_t hour = 60 * minute;
+ static constexpr uint64_t day = 24 * hour;
/* Repaint as unsigned seconds, minutes, hours ... */
outBuf -= outCount;
diff --git a/liblog/properties.cpp b/liblog/properties.cpp
index 12cbd9e..9365029 100644
--- a/liblog/properties.cpp
+++ b/liblog/properties.cpp
@@ -31,8 +31,7 @@
#include "logger_write.h"
#ifdef __ANDROID__
-#define _REALLY_INCLUDE_SYS__SYSTEM_PROPERTIES_H_
-#include <sys/_system_properties.h>
+#include <sys/system_properties.h>
static pthread_mutex_t lock_loggable = PTHREAD_MUTEX_INITIALIZER;
diff --git a/liblog/tests/device_test_config.xml b/liblog/tests/device_test_config.xml
index 9d0912f..302c616 100644
--- a/liblog/tests/device_test_config.xml
+++ b/liblog/tests/device_test_config.xml
@@ -19,6 +19,7 @@
<option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
<option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
<option name="config-descriptor:metadata" key="parameter" value="secondary_user" />
+ <option name="config-descriptor:metadata" key="parameter" value="secondary_user_on_secondary_display" />
<target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
<option name="cleanup" value="true" />
<option name="push" value="CtsLiblogTestCases->/data/local/tests/unrestricted/CtsLiblogTestCases" />
diff --git a/liblog/tests/liblog_benchmark.cpp b/liblog/tests/liblog_benchmark.cpp
index 6dc5da6..008b306 100644
--- a/liblog/tests/liblog_benchmark.cpp
+++ b/liblog/tests/liblog_benchmark.cpp
@@ -845,7 +845,7 @@
static void BM_lookupEventTag_NOT(benchmark::State& state) {
prechargeEventMap();
- while (set.find(notTag) != set.end()) {
+ while (set.contains(notTag)) {
++notTag;
if (notTag >= USHRT_MAX) notTag = 1;
}
diff --git a/liblog/tests/liblog_test.cpp b/liblog/tests/liblog_test.cpp
index cde5a5b..fb05c12 100644
--- a/liblog/tests/liblog_test.cpp
+++ b/liblog/tests/liblog_test.cpp
@@ -86,7 +86,7 @@
pid_t pid = getpid();
auto logger_list = std::unique_ptr<struct logger_list, ListCloser>{
- android_logger_list_open(log_buffer, 0, 1000, pid)};
+ android_logger_list_open(log_buffer, 0, INT_MAX, pid)};
ASSERT_TRUE(logger_list);
write_messages();
@@ -107,7 +107,7 @@
}
auto logger_list_non_block = std::unique_ptr<struct logger_list, ListCloser>{
- android_logger_list_open(log_buffer, ANDROID_LOG_NONBLOCK, 1000, pid)};
+ android_logger_list_open(log_buffer, ANDROID_LOG_NONBLOCK, INT_MAX, pid)};
ASSERT_TRUE(logger_list_non_block);
size_t count = 0;
@@ -567,7 +567,7 @@
v += pid & 0xFFFF;
- ASSERT_TRUE(NULL != (logger_list = android_logger_list_open(LOG_ID_EVENTS, 0, 1000, pid)));
+ ASSERT_TRUE(NULL != (logger_list = android_logger_list_open(LOG_ID_EVENTS, 0, INT_MAX, pid)));
int count = 0;
@@ -720,7 +720,7 @@
v += pid & 0xFFFF;
- ASSERT_TRUE(NULL != (logger_list = android_logger_list_open(LOG_ID_EVENTS, 0, 1000, pid)));
+ ASSERT_TRUE(NULL != (logger_list = android_logger_list_open(LOG_ID_EVENTS, 0, INT_MAX, pid)));
int count = 0;
@@ -1530,7 +1530,7 @@
pid_t pid = getpid();
struct logger_list* logger_list =
- android_logger_list_open(LOG_ID_EVENTS, ANDROID_LOG_NONBLOCK, 1000, pid);
+ android_logger_list_open(LOG_ID_EVENTS, ANDROID_LOG_NONBLOCK, INT_MAX, pid);
int count = 0;
if (logger_list == NULL) return count;
@@ -1769,7 +1769,7 @@
pid_t pid = getpid();
ASSERT_TRUE(NULL != (logger_list = android_logger_list_open(LOG_ID_SECURITY, ANDROID_LOG_NONBLOCK,
- 1000, pid)));
+ INT_MAX, pid)));
log_time ts(CLOCK_MONOTONIC);
diff --git a/liblog/tests/log_wrap_test.cpp b/liblog/tests/log_wrap_test.cpp
index a0f717b..395b1af 100644
--- a/liblog/tests/log_wrap_test.cpp
+++ b/liblog/tests/log_wrap_test.cpp
@@ -35,7 +35,7 @@
// Read the last line in the log to get a starting timestamp. We're assuming
// the log is not empty.
const int mode = ANDROID_LOG_NONBLOCK;
- struct logger_list* logger_list = android_logger_list_open(LOG_ID_SYSTEM, mode, 1000, 0);
+ struct logger_list* logger_list = android_logger_list_open(LOG_ID_SYSTEM, mode, INT_MAX, 0);
ASSERT_NE(logger_list, nullptr);
diff --git a/logcat/process_names.cpp b/logcat/process_names.cpp
index 8971809..71ccc21 100644
--- a/logcat/process_names.cpp
+++ b/logcat/process_names.cpp
@@ -73,6 +73,11 @@
// Cache miss!
std::string name = Resolve(pid);
- cache.put(pid, name);
+ // When an app starts, after it forks from zygote process, the process name remains
+ // zygote/zygote64, then <pre-initialized>, then the package/process name is set.
+ // We don't cache until we know the final value.
+ if (name != "<pre-initialized>" && !name.starts_with("zygote")) {
+ cache.put(pid, name);
+ }
return name;
}
diff --git a/logd/LogSize.cpp b/logd/LogSize.cpp
index 94c5fe6..1a9ffa8 100644
--- a/logd/LogSize.cpp
+++ b/logd/LogSize.cpp
@@ -65,8 +65,8 @@
/* This method should only be used for debuggable devices. */
static bool isAllowedToOverrideBufferSize() {
const auto hwType = android::base::GetProperty("ro.hardware.type", "");
- /* We allow automotive devices to optionally override the default. */
- return (hwType == "automotive");
+ /* Allow automotive and desktop devices to optionally override the default. */
+ return (hwType == "automotive" || hwType == "desktop");
}
size_t GetBufferSizeFromProperties(log_id_t log_id) {
diff --git a/logd/LogTags.cpp b/logd/LogTags.cpp
index 5c8aa6b..6fd57b8 100644
--- a/logd/LogTags.cpp
+++ b/logd/LogTags.cpp
@@ -151,11 +151,11 @@
// unlikely except for dupes, or updates to uid list (more later)
if (itot != tag2total.end()) update = false;
- newOne = tag2name.find(tag) == tag2name.end();
+ newOne = !tag2name.contains(tag);
key2tag[Key] = tag;
if (Format.length()) {
- if (key2tag.find(Name) == key2tag.end()) {
+ if (!key2tag.contains(Name)) {
key2tag[Name] = tag;
}
tag2format[tag] = Format;
@@ -167,7 +167,7 @@
if (uid == AID_ROOT) {
tag2uid.erase(ut);
update = true;
- } else if (ut->second.find(uid) == ut->second.end()) {
+ } else if (!ut->second.contains(uid)) {
const_cast<uid_list&>(ut->second).emplace(uid);
update = true;
}
@@ -693,7 +693,7 @@
if (updateUid && (Tag != emptyTag) && !unique) {
tag2uid_const_iterator ut = tag2uid.find(Tag);
if ((ut != tag2uid.end()) &&
- (ut->second.find(uid) == ut->second.end())) {
+ (!ut->second.contains(uid))) {
unique = write; // write passthrough to update uid counts
if (!write) Tag = emptyTag; // deny read access
}
@@ -713,7 +713,7 @@
android::RWLock::AutoWLock writeLock(rwlock);
// double check after switch from read lock to write lock for Tag
- updateTag = tag2name.find(Tag) == tag2name.end();
+ updateTag = !tag2name.contains(Tag);
// unlikely, either update, race inviting conflict or multiple uids
if (!updateTag) {
Tag = nameToTag_locked(Name, format, unique);
@@ -723,8 +723,7 @@
tag2uid_const_iterator ut = tag2uid.find(Tag);
if (updateUid) {
// Add it to the uid list
- if ((ut == tag2uid.end()) ||
- (ut->second.find(uid) != ut->second.end())) {
+ if (ut == tag2uid.end() || ut->second.contains(uid)) {
return Tag;
}
const_cast<uid_list&>(ut->second).emplace(uid);
@@ -768,7 +767,7 @@
if (*format) {
key2tag[Name + "+" + format] = Tag;
- if (key2tag.find(Name) == key2tag.end()) key2tag[Name] = Tag;
+ if (!key2tag.contains(Name)) key2tag[Name] = Tag;
} else {
key2tag[Name] = Tag;
}
@@ -818,7 +817,7 @@
return formatEntry(tag, AID_ROOT, name, format);
}
if (uid != AID_ROOT) {
- if (authenticate && (ut->second.find(uid) == ut->second.end())) {
+ if (authenticate && !ut->second.contains(uid)) {
return std::string("");
}
return formatEntry(tag, uid, name, format);
diff --git a/logd/SimpleLogBuffer.cpp b/logd/SimpleLogBuffer.cpp
index 6fbe113..f492a40 100644
--- a/logd/SimpleLogBuffer.cpp
+++ b/logd/SimpleLogBuffer.cpp
@@ -43,14 +43,14 @@
}
std::list<LogBufferElement>::iterator SimpleLogBuffer::GetOldest(log_id_t log_id) {
- auto it = logs().begin();
+ auto it = logs_.begin();
if (oldest_[log_id]) {
it = *oldest_[log_id];
}
- while (it != logs().end() && it->log_id() != log_id) {
+ while (it != logs_.end() && it->log_id() != log_id) {
it++;
}
- if (it != logs().end()) {
+ if (it != logs_.end()) {
oldest_[log_id] = it;
}
return it;
@@ -290,7 +290,7 @@
log_id_for_each(i) {
if (oldest_is_it[i]) {
- if (__predict_false(it == logs().end())) {
+ if (__predict_false(it == logs_.end())) {
oldest_[i] = std::nullopt;
} else {
oldest_[i] = it; // Store the next iterator even if it does not correspond to
diff --git a/logd/SimpleLogBuffer.h b/logd/SimpleLogBuffer.h
index 51779ab..369aff3 100644
--- a/logd/SimpleLogBuffer.h
+++ b/logd/SimpleLogBuffer.h
@@ -63,7 +63,6 @@
LogStatistics* stats() { return stats_; }
LogReaderList* reader_list() { return reader_list_; }
size_t max_size(log_id_t id) REQUIRES_SHARED(logd_lock) { return max_size_[id]; }
- std::list<LogBufferElement>& logs() { return logs_; }
private:
bool ShouldLog(log_id_t log_id, const char* msg, uint16_t len);
diff --git a/logd/device_test_config.xml b/logd/device_test_config.xml
index cc7932b..cd842bf 100644
--- a/logd/device_test_config.xml
+++ b/logd/device_test_config.xml
@@ -19,6 +19,7 @@
<option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
<option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
<option name="config-descriptor:metadata" key="parameter" value="secondary_user" />
+ <option name="config-descriptor:metadata" key="parameter" value="secondary_user_on_secondary_display" />
<target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
<option name="cleanup" value="true" />
<option name="push" value="CtsLogdTestCases->/data/local/tests/unrestricted/CtsLogdTestCases" />