diff options
| author | 2021-07-30 21:19:55 +0000 | |
|---|---|---|
| committer | 2021-07-30 21:19:55 +0000 | |
| commit | a32a015de1f401fe0bb9f911a843b69792a9a3b4 (patch) | |
| tree | eb5c6880f70e7b855ff64ba1a39bffeb7d0ef163 | |
| parent | ce6442634dfce3980befb4666a3b5f459f5a8fae (diff) | |
| parent | 31fa5c5e13a6ec6fe0a89473cd844df6044f5947 (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.cpp | 20 |
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; |