Merge "Support external display rendering in vr flinger" into pi-dev
am: 5f643f8f4f
Change-Id: I293f1615c1d9729b7f4b0c3e24a3273d574b1fe8
diff --git a/cmds/atrace/atrace.cpp b/cmds/atrace/atrace.cpp
index 57745ef..3d63971 100644
--- a/cmds/atrace/atrace.cpp
+++ b/cmds/atrace/atrace.cpp
@@ -774,22 +774,10 @@
return ok;
}
-// Set all the kernel tracing settings to the desired state for this trace
-// capture.
-static bool setUpTrace()
+static bool setUpUserspaceTracing()
{
bool ok = true;
- // Set up the tracing options.
- ok &= setCategoriesEnableFromFile(g_categoriesFile);
- ok &= setTraceOverwriteEnable(g_traceOverwrite);
- ok &= setTraceBufferSizeKB(g_traceBufferSizeKB);
- // TODO: Re-enable after stabilization
- //ok &= setCmdlineSize();
- ok &= setClock();
- ok &= setPrintTgidEnableIfPresent(true);
- ok &= setKernelTraceFuncs(g_kernelTraceFuncs);
-
// Set up the tags property.
uint64_t tags = 0;
for (size_t i = 0; i < arraysize(k_categories); i++) {
@@ -827,6 +815,37 @@
ok &= ServiceUtility::PokeServices();
}
+ return ok;
+}
+
+static void cleanUpUserspaceTracing()
+{
+ setTagsProperty(0);
+ clearAppProperties();
+ pokeBinderServices();
+
+ if (g_tracePdx) {
+ ServiceUtility::PokeServices();
+ }
+}
+
+
+// Set all the kernel tracing settings to the desired state for this trace
+// capture.
+static bool setUpKernelTracing()
+{
+ bool ok = true;
+
+ // Set up the tracing options.
+ ok &= setCategoriesEnableFromFile(g_categoriesFile);
+ ok &= setTraceOverwriteEnable(g_traceOverwrite);
+ ok &= setTraceBufferSizeKB(g_traceBufferSizeKB);
+ // TODO: Re-enable after stabilization
+ //ok &= setCmdlineSize();
+ ok &= setClock();
+ ok &= setPrintTgidEnableIfPresent(true);
+ ok &= setKernelTraceFuncs(g_kernelTraceFuncs);
+
// Disable all the sysfs enables. This is done as a separate loop from
// the enables to allow the same enable to exist in multiple categories.
ok &= disableKernelTraceEvents();
@@ -854,20 +873,11 @@
}
// Reset all the kernel tracing settings to their default state.
-static void cleanUpTrace()
+static void cleanUpKernelTracing()
{
// Disable all tracing that we're able to.
disableKernelTraceEvents();
- // Reset the system properties.
- setTagsProperty(0);
- clearAppProperties();
- pokeBinderServices();
-
- if (g_tracePdx) {
- ServiceUtility::PokeServices();
- }
-
// Set the options back to their defaults.
setTraceOverwriteEnable(true);
setTraceBufferSizeKB(1);
@@ -875,7 +885,6 @@
setKernelTraceFuncs(NULL);
}
-
// Enable tracing in the kernel.
static bool startTrace()
{
@@ -1107,6 +1116,7 @@
bool traceStop = true;
bool traceDump = true;
bool traceStream = false;
+ bool onlyUserspace = false;
if (argc == 2 && 0 == strcmp(argv[1], "--help")) {
showHelp(argv[0]);
@@ -1122,12 +1132,13 @@
int ret;
int option_index = 0;
static struct option long_options[] = {
- {"async_start", no_argument, 0, 0 },
- {"async_stop", no_argument, 0, 0 },
- {"async_dump", no_argument, 0, 0 },
- {"list_categories", no_argument, 0, 0 },
- {"stream", no_argument, 0, 0 },
- { 0, 0, 0, 0 }
+ {"async_start", no_argument, 0, 0 },
+ {"async_stop", no_argument, 0, 0 },
+ {"async_dump", no_argument, 0, 0 },
+ {"only_userspace", no_argument, 0, 0 },
+ {"list_categories", no_argument, 0, 0 },
+ {"stream", no_argument, 0, 0 },
+ { 0, 0, 0, 0 }
};
ret = getopt_long(argc, argv, "a:b:cf:k:ns:t:zo:",
@@ -1197,6 +1208,8 @@
async = true;
traceStart = false;
traceStop = false;
+ } else if (!strcmp(long_options[option_index].name, "only_userspace")) {
+ onlyUserspace = true;
} else if (!strcmp(long_options[option_index].name, "stream")) {
traceStream = true;
traceDump = false;
@@ -1214,6 +1227,14 @@
}
}
+ if (onlyUserspace) {
+ if (!async || !(traceStart || traceStop)) {
+ fprintf(stderr, "--only_userspace can only be used with "
+ "--async_start or --async_stop\n");
+ exit(1);
+ }
+ }
+
registerSigHandler();
if (g_initialSleepSecs > 0) {
@@ -1221,13 +1242,19 @@
}
bool ok = true;
+
if (traceStart) {
- ok &= setUpTrace();
+ ok &= setUpUserspaceTracing();
+ }
+
+ if (ok && traceStart && !onlyUserspace) {
+ ok &= setUpKernelTracing();
ok &= startTrace();
}
if (ok && traceStart) {
- if (!traceStream) {
+
+ if (!traceStream && !onlyUserspace) {
printf("capturing trace...");
fflush(stdout);
}
@@ -1237,7 +1264,8 @@
// contain entries from only one CPU can cause "begin" entries without a
// matching "end" entry to show up if a task gets migrated from one CPU to
// another.
- ok = clearTrace();
+ if (!onlyUserspace)
+ ok = clearTrace();
writeClockSyncMarker();
if (ok && !async && !traceStream) {
@@ -1258,10 +1286,10 @@
}
// Stop the trace and restore the default settings.
- if (traceStop)
+ if (traceStop && !onlyUserspace)
stopTrace();
- if (ok && traceDump) {
+ if (ok && traceDump && !onlyUserspace) {
if (!g_traceAborted) {
printf(" done\n");
fflush(stdout);
@@ -1288,8 +1316,11 @@
}
// Reset the trace buffer size to 1.
- if (traceStop)
- cleanUpTrace();
+ if (traceStop) {
+ cleanUpUserspaceTracing();
+ if (!onlyUserspace)
+ cleanUpKernelTracing();
+ }
return g_traceAborted ? 1 : 0;
}
diff --git a/cmds/installd/tests/Android.bp b/cmds/installd/tests/Android.bp
index 7438d3d..739f33f 100644
--- a/cmds/installd/tests/Android.bp
+++ b/cmds/installd/tests/Android.bp
@@ -1,6 +1,7 @@
// Build the unit tests for installd
cc_test {
name: "installd_utils_test",
+ test_suites: ["device-tests"],
clang: true,
srcs: ["installd_utils_test.cpp"],
cflags: ["-Wall", "-Werror"],
@@ -18,6 +19,7 @@
cc_test {
name: "installd_cache_test",
+ test_suites: ["device-tests"],
clang: true,
srcs: ["installd_cache_test.cpp"],
cflags: ["-Wall", "-Werror"],
@@ -39,6 +41,7 @@
cc_test {
name: "installd_service_test",
+ test_suites: ["device-tests"],
clang: true,
srcs: ["installd_service_test.cpp"],
cflags: ["-Wall", "-Werror"],
@@ -60,6 +63,7 @@
cc_test {
name: "installd_dexopt_test",
+ test_suites: ["device-tests"],
clang: true,
srcs: ["installd_dexopt_test.cpp"],
cflags: ["-Wall", "-Werror"],
@@ -81,6 +85,7 @@
cc_test {
name: "installd_otapreopt_test",
+ test_suites: ["device-tests"],
clang: true,
srcs: ["installd_otapreopt_test.cpp"],
cflags: ["-Wall", "-Werror"],
diff --git a/cmds/lshal/DebugCommand.cpp b/cmds/lshal/DebugCommand.cpp
index dd8812d..0952db6 100644
--- a/cmds/lshal/DebugCommand.cpp
+++ b/cmds/lshal/DebugCommand.cpp
@@ -59,8 +59,8 @@
auto pair = splitFirst(mInterfaceName, '/');
- FQName fqName(pair.first);
- if (!fqName.isValid() || fqName.isIdentifier() || !fqName.isFullyQualified()) {
+ FQName fqName;
+ if (!FQName::parse(pair.first, &fqName) || fqName.isIdentifier() || !fqName.isFullyQualified()) {
mLshal.err() << "Invalid fully-qualified name '" << pair.first << "'\n\n";
return USAGE;
}
diff --git a/cmds/lshal/ListCommand.cpp b/cmds/lshal/ListCommand.cpp
index 39fddc5..3dfb7e0 100644
--- a/cmds/lshal/ListCommand.cpp
+++ b/cmds/lshal/ListCommand.cpp
@@ -252,16 +252,16 @@
// use a double for loop here because lshal doesn't care about efficiency.
for (TableEntry &packageEntry : mImplementationsTable) {
std::string packageName = packageEntry.interfaceName;
- FQName fqPackageName{packageName.substr(0, packageName.find("::"))};
- if (!fqPackageName.isValid()) {
+ FQName fqPackageName;
+ if (!FQName::parse(packageName.substr(0, packageName.find("::")), &fqPackageName)) {
continue;
}
for (TableEntry &interfaceEntry : mPassthroughRefTable) {
if (interfaceEntry.arch != ARCH_UNKNOWN) {
continue;
}
- FQName interfaceName{splitFirst(interfaceEntry.interfaceName, '/').first};
- if (!interfaceName.isValid()) {
+ FQName interfaceName;
+ if (!FQName::parse(splitFirst(interfaceEntry.interfaceName, '/').first, &interfaceName)) {
continue;
}
if (interfaceName.getPackageAndVersion() == fqPackageName) {
@@ -309,10 +309,10 @@
// Quick hack to work around *'s
replaceAll(&fqInstanceName, '*', 'D');
}
- auto splittedFqInstanceName = splitFirst(fqInstanceName, '/');
- FQName fqName(splittedFqInstanceName.first);
- if (!fqName.isValid()) {
- err() << "Warning: '" << splittedFqInstanceName.first
+ auto splitFqInstanceName = splitFirst(fqInstanceName, '/');
+ FQName fqName;
+ if (!FQName::parse(splitFqInstanceName.first, &fqName)) {
+ err() << "Warning: '" << splitFqInstanceName.first
<< "' is not a valid FQName." << std::endl;
continue;
}
@@ -336,7 +336,7 @@
std::string interfaceName =
&table == &mImplementationsTable ? "" : fqName.name();
std::string instanceName =
- &table == &mImplementationsTable ? "" : splittedFqInstanceName.second;
+ &table == &mImplementationsTable ? "" : splitFqInstanceName.second;
vintf::Version version{fqName.getPackageMajorVersion(),
fqName.getPackageMinorVersion()};
diff --git a/libs/gui/Android.bp b/libs/gui/Android.bp
index 2768ad8..5fb778a 100644
--- a/libs/gui/Android.bp
+++ b/libs/gui/Android.bp
@@ -72,9 +72,6 @@
],
product_variables: {
- brillo: {
- cflags: ["-DHAVE_NO_SURFACE_FLINGER"],
- },
eng: {
cppflags: [
"-UDEBUG_ONLY_CODE",