summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Steven Moreland <smoreland@google.com> 2021-07-30 21:19:55 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2021-07-30 21:19:55 +0000
commita32a015de1f401fe0bb9f911a843b69792a9a3b4 (patch)
treeeb5c6880f70e7b855ff64ba1a39bffeb7d0ef163
parentce6442634dfce3980befb4666a3b5f459f5a8fae (diff)
parent31fa5c5e13a6ec6fe0a89473cd844df6044f5947 (diff)
Merge "bindeRpcBenchmark: rpc uses separate process" am: 3d2a8f5029 am: ce4e022854 am: d16f6aca47 am: 31fa5c5e13
Original change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1780721 Change-Id: Ifef8fdfe3a569cadae2fe00a8052dd2e13283182
-rw-r--r--libs/binder/tests/binderRpcBenchmark.cpp20
1 files changed, 12 insertions, 8 deletions
diff --git a/libs/binder/tests/binderRpcBenchmark.cpp b/libs/binder/tests/binderRpcBenchmark.cpp
index 26a0b90977..5f4a7b5592 100644
--- a/libs/binder/tests/binderRpcBenchmark.cpp
+++ b/libs/binder/tests/binderRpcBenchmark.cpp
@@ -26,6 +26,7 @@
#include <thread>
+#include <signal.h>
#include <sys/prctl.h>
#include <sys/types.h>
#include <unistd.h>
@@ -154,6 +155,16 @@ int main(int argc, char** argv) {
std::cerr << "\t\\" << Transport::KERNEL << " is KERNEL" << std::endl;
std::cerr << "\t\\" << Transport::RPC << " is RPC" << std::endl;
+ if (0 == fork()) {
+ prctl(PR_SET_PDEATHSIG, SIGHUP); // racey, okay
+ sp<RpcServer> server = RpcServer::make();
+ server->setRootObject(sp<MyBinderRpcBenchmark>::make());
+ server->iUnderstandThisCodeIsExperimentalAndIWillNotUseItInProduction();
+ CHECK(server->setupUnixDomainServer(addr.c_str()));
+ server->join();
+ exit(1);
+ }
+
#ifdef __BIONIC__
if (0 == fork()) {
prctl(PR_SET_PDEATHSIG, SIGHUP); // racey, okay
@@ -161,6 +172,7 @@ int main(int argc, char** argv) {
defaultServiceManager()->addService(kKernelBinderInstance,
sp<MyBinderRpcBenchmark>::make()));
IPCThreadState::self()->joinThreadPool();
+ exit(1);
}
ProcessState::self()->setThreadPoolMaxThreadCount(1);
@@ -170,14 +182,6 @@ int main(int argc, char** argv) {
CHECK_NE(nullptr, gKernelBinder.get());
#endif
- std::thread([addr]() {
- sp<RpcServer> server = RpcServer::make();
- server->setRootObject(sp<MyBinderRpcBenchmark>::make());
- server->iUnderstandThisCodeIsExperimentalAndIWillNotUseItInProduction();
- CHECK(server->setupUnixDomainServer(addr.c_str()));
- server->join();
- }).detach();
-
for (size_t tries = 0; tries < 5; tries++) {
usleep(10000);
if (gSession->setupUnixDomainClient(addr.c_str())) goto success;