Merge "storaged: use AIDL to generate storaged binder calls."
diff --git a/base/Android.bp b/base/Android.bp
index 0fd00ea..f4a8411 100644
--- a/base/Android.bp
+++ b/base/Android.bp
@@ -64,16 +64,20 @@
target: {
android: {
srcs: [
- "errors_unix.cpp",
"properties.cpp",
- "chrono_utils.cpp",
],
- cppflags: ["-Wexit-time-destructors"],
sanitize: {
misc_undefined: ["integer"],
},
},
+ linux: {
+ srcs: [
+ "chrono_utils.cpp",
+ "errors_unix.cpp",
+ ],
+ cppflags: ["-Wexit-time-destructors"],
+ },
darwin: {
srcs: [
"chrono_utils.cpp",
@@ -82,20 +86,8 @@
cppflags: ["-Wexit-time-destructors"],
},
linux_bionic: {
- srcs: [
- "chrono_utils.cpp",
- "errors_unix.cpp",
- ],
- cppflags: ["-Wexit-time-destructors"],
enabled: true,
},
- linux_glibc: {
- srcs: [
- "chrono_utils.cpp",
- "errors_unix.cpp",
- ],
- cppflags: ["-Wexit-time-destructors"],
- },
windows: {
srcs: [
"errors_windows.cpp",
@@ -127,15 +119,12 @@
],
target: {
android: {
- srcs: [
- "chrono_utils_test.cpp",
- "properties_test.cpp"
- ],
+ srcs: ["properties_test.cpp"],
sanitize: {
misc_undefined: ["integer"],
},
},
- linux_glibc: {
+ linux: {
srcs: ["chrono_utils_test.cpp"],
},
windows: {
diff --git a/bootstat/bootstat.cpp b/bootstat/bootstat.cpp
index f8eaa1c..8916c59 100644
--- a/bootstat/bootstat.cpp
+++ b/bootstat/bootstat.cpp
@@ -508,7 +508,6 @@
android::base::ReadFdToString(fileno(fp), &content);
}
android_logcat_pclose(&ctx, fp);
- android_logcat_destroy(&ctx);
static const char logcat_battery[] = "W/healthd ( 0): battery l=";
const char* match = logcat_battery;
diff --git a/init/builtins.cpp b/init/builtins.cpp
index 9be274b..950a551 100644
--- a/init/builtins.cpp
+++ b/init/builtins.cpp
@@ -1033,7 +1033,7 @@
{"verity_load_state", {0, 0, {false, do_verity_load_state}}},
{"verity_update_state", {0, 0, {false, do_verity_update_state}}},
{"wait", {1, 2, {true, do_wait}}},
- {"wait_for_prop", {2, 2, {true, do_wait_for_prop}}},
+ {"wait_for_prop", {2, 2, {false, do_wait_for_prop}}},
{"write", {2, 2, {true, do_write}}},
};
// clang-format on
diff --git a/init/subcontext.h b/init/subcontext.h
index ac77e08..e920034 100644
--- a/init/subcontext.h
+++ b/init/subcontext.h
@@ -35,7 +35,7 @@
class Subcontext {
public:
Subcontext(std::string path_prefix, std::string context)
- : path_prefix_(path_prefix), context_(std::move(context)) {
+ : path_prefix_(std::move(path_prefix)), context_(std::move(context)) {
Fork();
}
diff --git a/libbacktrace/Android.bp b/libbacktrace/Android.bp
index 2f20684..b2c0c0f 100644
--- a/libbacktrace/Android.bp
+++ b/libbacktrace/Android.bp
@@ -65,7 +65,7 @@
cc_library {
name: "libbacktrace",
- vendor_available: true,
+ vendor_available: false,
vndk: {
enabled: true,
support_system_process: true,
@@ -83,20 +83,7 @@
darwin: {
enabled: true,
},
- linux_glibc: {
- srcs: libbacktrace_sources,
-
- shared_libs: [
- "libbase",
- "liblog",
- "libunwind",
- "libunwindstack",
- ],
-
- static_libs: ["libcutils"],
- },
- linux_bionic: {
- enabled: true,
+ linux: {
srcs: libbacktrace_sources,
shared_libs: [
@@ -109,16 +96,7 @@
static_libs: ["libcutils"],
},
android: {
- srcs: libbacktrace_sources,
-
- shared_libs: [
- "libbase",
- "liblog",
- "libunwind",
- "libunwindstack",
- ],
-
- static_libs: ["libasync_safe", "libcutils"],
+ static_libs: ["libasync_safe"],
},
},
whole_static_libs: ["libdemangle"],
@@ -135,13 +113,7 @@
srcs: ["backtrace_testlib.cpp"],
target: {
- linux_glibc: {
- shared_libs: [
- "libunwind",
- "libunwindstack",
- ],
- },
- android: {
+ linux: {
shared_libs: [
"libunwind",
"libunwindstack",
diff --git a/liblog/include/log/log_event_list.h b/liblog/include/log/log_event_list.h
index bb1ce34..4d24c68 100644
--- a/liblog/include/log/log_event_list.h
+++ b/liblog/include/log/log_event_list.h
@@ -108,6 +108,12 @@
android_log_list_element android_log_read_next(android_log_context ctx);
android_log_list_element android_log_peek_next(android_log_context ctx);
+/**
+ * Convert a writer context to a reader context. Useful for testing.
+ * Returns an error if ctx is already a reader.
+ */
+int android_log_writer_to_reader(android_log_context ctx);
+
/* Finished with reader or writer context */
int android_log_destroy(android_log_context* ctx);
@@ -122,6 +128,7 @@
private:
android_log_context ctx;
int ret;
+ int tag_;
android_log_event_list(const android_log_event_list&) = delete;
void operator=(const android_log_event_list&) = delete;
@@ -129,11 +136,16 @@
public:
explicit android_log_event_list(int tag) : ret(0) {
ctx = create_android_logger(static_cast<uint32_t>(tag));
+ tag_ = tag;
}
+
explicit android_log_event_list(log_msg& log_msg) : ret(0) {
- ctx = create_android_log_parser(log_msg.msg() + sizeof(uint32_t),
+ const char* buf = log_msg.msg();
+ ctx = create_android_log_parser(buf + sizeof(uint32_t),
log_msg.entry.len - sizeof(uint32_t));
+ tag_ = buf[0] | (buf[1] << 8) | (buf[2] << 16) | (buf[3] << 24);
}
+
~android_log_event_list() {
android_log_destroy(&ctx);
}
@@ -149,6 +161,10 @@
return ctx;
}
+ android_log_context context() const {
+ return ctx;
+ }
+
/* return errors or transmit status */
int status() const {
return ret;
@@ -159,12 +175,17 @@
if (retval < 0) ret = retval;
return ret;
}
+
int end() {
int retval = android_log_write_list_end(ctx);
if (retval < 0) ret = retval;
return ret;
}
+ uint32_t tag() {
+ return tag_;
+ }
+
android_log_event_list& operator<<(int32_t value) {
int retval = android_log_write_int32(ctx, value);
if (retval < 0) ret = retval;
@@ -296,6 +317,10 @@
return ret >= 0;
}
+ int convert_to_reader() {
+ return android_log_writer_to_reader(ctx);
+ }
+
android_log_list_element read() {
return android_log_read_next(ctx);
}
diff --git a/liblog/log_event_list.c b/liblog/log_event_list.c
index a59cb87..f6e13db 100644
--- a/liblog/log_event_list.c
+++ b/liblog/log_event_list.c
@@ -565,3 +565,26 @@
android_log_peek_next(android_log_context ctx) {
return android_log_read_next_internal(ctx, 1);
}
+
+LIBLOG_ABI_PUBLIC int android_log_writer_to_reader(android_log_context ctx) {
+ android_log_context_internal* context;
+
+ context = (android_log_context_internal*)ctx;
+
+ if (!context || context->read_write_flag != kAndroidLoggerWrite) {
+ return -EBADF;
+ }
+
+ context->len = context->pos;
+ context->storage[1] =
+ context
+ ->count[0]; // What does this do?!?! It's copied from the write func
+ context->pos = 0;
+ memset(context->count, 0, sizeof(context->count));
+ memset(context->list, 0, sizeof(context->list));
+ context->list_nest_depth = 0;
+ context->read_write_flag = kAndroidLoggerRead;
+ context->list_stop = false;
+
+ return 0;
+}
diff --git a/libutils/Android.bp b/libutils/Android.bp
index 1bf5a64..b70845b 100644
--- a/libutils/Android.bp
+++ b/libutils/Android.bp
@@ -97,8 +97,6 @@
target: {
android: {
srcs: [
- "Looper.cpp",
- "ProcessCallStack.cpp",
"Trace.cpp",
],
@@ -115,6 +113,12 @@
misc_undefined: ["integer"],
},
},
+ linux: {
+ srcs: [
+ "Looper.cpp",
+ "ProcessCallStack.cpp",
+ ],
+ },
host: {
cflags: ["-DLIBUTILS_NATIVE=1"],
@@ -124,18 +128,8 @@
},
},
- linux_glibc: {
- srcs: [
- "Looper.cpp",
- "ProcessCallStack.cpp",
- ],
- },
linux_bionic: {
enabled: true,
- srcs: [
- "Looper.cpp",
- "ProcessCallStack.cpp",
- ],
},
darwin: {
diff --git a/libutils/tests/Android.bp b/libutils/tests/Android.bp
index 6911fc5..a891fca 100644
--- a/libutils/tests/Android.bp
+++ b/libutils/tests/Android.bp
@@ -34,8 +34,6 @@
target: {
android: {
srcs: [
- "Looper_test.cpp",
- "RefBase_test.cpp",
"SystemClock_test.cpp",
],
shared_libs: [
@@ -46,7 +44,7 @@
"libbase",
],
},
- linux_glibc: {
+ linux: {
srcs: [
"Looper_test.cpp",
"RefBase_test.cpp",