You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by lu...@apache.org on 2019/08/26 07:12:54 UTC

[incubator-weex] 08/10: add pid and genId to ashmem

This is an automated email from the ASF dual-hosted git repository.

luckychen pushed a commit to branch feature/0.26.2.19-jit
in repository https://gitbox.apache.org/repos/asf/incubator-weex.git

commit 3c6ba22914c2107b67e1fa38e4169c4d543e4d82
Author: 东煜 <ya...@alibaba-inc.com>
AuthorDate: Mon Aug 19 18:22:43 2019 +0800

    add pid and genId to ashmem
---
 .../Source/android/multiprocess/weex_js_connection.cpp | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

diff --git a/weex_core/Source/android/multiprocess/weex_js_connection.cpp b/weex_core/Source/android/multiprocess/weex_js_connection.cpp
index 11bd292..13dfb48 100644
--- a/weex_core/Source/android/multiprocess/weex_js_connection.cpp
+++ b/weex_core/Source/android/multiprocess/weex_js_connection.cpp
@@ -196,10 +196,16 @@ static void *newIPCServer(void *_td) {
     }
     return nullptr;
 }
-
+static int s_memId = 0;
 
 IPCSender *WeexJSConnection::start(IPCHandler *handler, IPCHandler *serverHandler, bool reinit) {
-  int fd = ashmem_create_region("WEEX_IPC_CLIENT", IPCFutexPageQueue::ipc_size);
+  pid_t pid = getpid();
+  int id = __sync_fetch_and_add(&s_memId, 1);
+  std::string clientName("WEEX_IPC_CLIENT-");
+  clientName += std::to_string(pid);
+  clientName += "-";
+  clientName += std::to_string(id);
+  int fd = ashmem_create_region(clientName.c_str(), IPCFutexPageQueue::ipc_size);
   if (-1 == fd) {
     throw IPCException("failed to create ashmem region: %s", strerror(errno));
   }
@@ -215,11 +221,15 @@ IPCSender *WeexJSConnection::start(IPCHandler *handler, IPCHandler *serverHandle
   std::unique_ptr<IPCSender> sender(createIPCSender(futexPageQueue.get(), handler));
   m_impl->serverSender = std::move(sender);
   m_impl->futexPageQueue = std::move(futexPageQueue);
-
-  int fd2 = ashmem_create_region("WEEX_IPC_SERVER", IPCFutexPageQueue::ipc_size);
+  std::string serverName("WEEX_IPC_SERVER-");
+  serverName += std::to_string(pid);
+  serverName += "-";
+  serverName += std::to_string(id);
+  int fd2 = ashmem_create_region(serverName.c_str(), IPCFutexPageQueue::ipc_size);
   if (-1 == fd2) {
     throw IPCException("failed to create ashmem region: %s", strerror(errno));
   }
+  LOGE("weex create Client's Name is %s Server's name is %s",clientName.c_str(), serverName.c_str());
   fd_server_closed = false;
   ThreadData td = { static_cast<int>(fd2), static_cast<IPCHandler *>(serverHandler) };