Merge "FastDeploy refactor: 2+GB APK support, optimizations, tests."
diff --git a/init/property_service.cpp b/init/property_service.cpp
index f5d1143..d7e4021 100644
--- a/init/property_service.cpp
+++ b/init/property_service.cpp
@@ -963,6 +963,10 @@
// Don't check for failure here, so we always have a sane list of properties.
// E.g. In case of recovery, the vendor partition will not have mounted and we
// still need the system / platform properties to function.
+ if (access("/system_ext/etc/selinux/system_ext_property_contexts", R_OK) != -1) {
+ LoadPropertyInfoFromFile("/system_ext/etc/selinux/system_ext_property_contexts",
+ &property_infos);
+ }
if (!LoadPropertyInfoFromFile("/vendor/etc/selinux/vendor_property_contexts",
&property_infos)) {
// Fallback to nonplat_* if vendor_* doesn't exist.
@@ -980,6 +984,7 @@
if (!LoadPropertyInfoFromFile("/plat_property_contexts", &property_infos)) {
return;
}
+ LoadPropertyInfoFromFile("/system_ext_property_contexts", &property_infos);
if (!LoadPropertyInfoFromFile("/vendor_property_contexts", &property_infos)) {
// Fallback to nonplat_* if vendor_* doesn't exist.
LoadPropertyInfoFromFile("/nonplat_property_contexts", &property_infos);
diff --git a/liblog/logd_reader.cpp b/liblog/logd_reader.cpp
index e372dce..916a428 100644
--- a/liblog/logd_reader.cpp
+++ b/liblog/logd_reader.cpp
@@ -23,6 +23,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <sys/param.h>
#include <sys/socket.h>
#include <sys/stat.h>
#include <sys/types.h>
@@ -38,9 +39,6 @@
#include "logd_reader.h"
#include "logger.h"
-/* branchless on many architectures. */
-#define min(x, y) ((y) ^ (((x) ^ (y)) & -((x) < (y))))
-
static int logdAvailable(log_id_t LogId);
static int logdVersion(struct android_log_logger* logger,
struct android_log_transport_context* transp);
@@ -278,13 +276,13 @@
size_t n;
n = snprintf(cp, remaining, "getStatistics");
- n = min(n, remaining);
+ n = MIN(n, remaining);
remaining -= n;
cp += n;
logger_for_each(logger, logger_list) {
n = snprintf(cp, remaining, " %d", logger->logId);
- n = min(n, remaining);
+ n = MIN(n, remaining);
remaining -= n;
cp += n;
}
@@ -361,7 +359,7 @@
remaining = sizeof(buffer) - (cp - buffer);
logger_for_each(logger, logger_list) {
ret = snprintf(cp, remaining, "%c%u", c, logger->logId);
- ret = min(ret, remaining);
+ ret = MIN(ret, remaining);
remaining -= ret;
cp += ret;
c = ',';
@@ -369,7 +367,7 @@
if (logger_list->tail) {
ret = snprintf(cp, remaining, " tail=%u", logger_list->tail);
- ret = min(ret, remaining);
+ ret = MIN(ret, remaining);
remaining -= ret;
cp += ret;
}
@@ -378,20 +376,20 @@
if (logger_list->mode & ANDROID_LOG_WRAP) {
// ToDo: alternate API to allow timeout to be adjusted.
ret = snprintf(cp, remaining, " timeout=%u", ANDROID_LOG_WRAP_DEFAULT_TIMEOUT);
- ret = min(ret, remaining);
+ ret = MIN(ret, remaining);
remaining -= ret;
cp += ret;
}
ret = snprintf(cp, remaining, " start=%" PRIu32 ".%09" PRIu32, logger_list->start.tv_sec,
logger_list->start.tv_nsec);
- ret = min(ret, remaining);
+ ret = MIN(ret, remaining);
remaining -= ret;
cp += ret;
}
if (logger_list->pid) {
ret = snprintf(cp, remaining, " pid=%u", logger_list->pid);
- ret = min(ret, remaining);
+ ret = MIN(ret, remaining);
cp += ret;
}
diff --git a/liblog/logd_writer.cpp b/liblog/logd_writer.cpp
index 09aaffb..06a2baf 100644
--- a/liblog/logd_writer.cpp
+++ b/liblog/logd_writer.cpp
@@ -38,9 +38,6 @@
#include "logger.h"
#include "uio.h"
-/* branchless on many architectures. */
-#define min(x, y) ((y) ^ (((x) ^ (y)) & -((x) < (y))))
-
static int logdAvailable(log_id_t LogId);
static int logdOpen();
static void logdClose();