Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
communication_ipc
提交
8eab142b
C
communication_ipc
项目概览
OpenHarmony
/
communication_ipc
大约 1 年 前同步成功
通知
20
Star
3
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
communication_ipc
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
8eab142b
编写于
4月 16, 2022
作者:
O
openharmony_ci
提交者:
Gitee
4月 16, 2022
浏览文件
操作
浏览文件
下载
差异文件
!224 IPC:optimize interfaces GetCallingPid/Uid & ipc process skeleton deinitialization logic
Merge pull request !224 from liubb_0516/master
上级
b2e408e3
d89fac2e
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
33 addition
and
15 deletion
+33
-15
ipc/native/c/ipc/include/ipc_invoker.h
ipc/native/c/ipc/include/ipc_invoker.h
+1
-1
ipc/native/c/ipc/src/linux/ipc_invoker.c
ipc/native/c/ipc/src/linux/ipc_invoker.c
+10
-0
ipc/native/c/manager/include/iremote_invoker.h
ipc/native/c/manager/include/iremote_invoker.h
+1
-0
ipc/native/c/manager/src/ipc_process_skeleton.c
ipc/native/c/manager/src/ipc_process_skeleton.c
+10
-6
ipc/native/c/manager/src/ipc_skeleton.c
ipc/native/c/manager/src/ipc_skeleton.c
+0
-8
ipc/native/c/manager/src/ipc_thread_pool.c
ipc/native/c/manager/src/ipc_thread_pool.c
+1
-0
ipc/native/c/manager/src/iremote_invoker.c
ipc/native/c/manager/src/iremote_invoker.c
+10
-0
未找到文件。
ipc/native/c/ipc/include/ipc_invoker.h
浏览文件 @
8eab142b
...
...
@@ -25,7 +25,7 @@ extern "C" {
#endif
/* __cplusplus */
RemoteInvoker
*
GetIpcInvoker
(
void
);
void
DeinitIpcInvoker
(
RemoteInvoker
*
invoker
);
#ifdef __cplusplus
#if __cplusplus
}
...
...
ipc/native/c/ipc/src/linux/ipc_invoker.c
浏览文件 @
8eab142b
...
...
@@ -91,10 +91,12 @@ static void DeleteBinderConnector(void)
if
(
g_connector
==
NULL
)
{
return
;
}
pthread_mutex_lock
(
&
g_connectorMutex
);
munmap
(
g_connector
->
mmapAddr
,
g_connector
->
mmapSize
);
close
(
g_connector
->
fd
);
free
(
g_connector
);
g_connector
=
NULL
;
pthread_mutex_unlock
(
&
g_connectorMutex
);
}
static
int32_t
BinderWrite
(
void
*
data
,
size_t
len
)
...
...
@@ -564,3 +566,11 @@ RemoteInvoker *GetIpcInvoker(void)
}
return
&
g_ipcInvoker
;
}
void
DeinitIpcInvoker
(
RemoteInvoker
*
invoker
)
{
if
(
invoker
!=
&
g_ipcInvoker
)
{
return
;
}
DeleteBinderConnector
();
}
\ No newline at end of file
ipc/native/c/manager/include/iremote_invoker.h
浏览文件 @
8eab142b
...
...
@@ -44,6 +44,7 @@ typedef struct {
}
RemoteInvoker
;
RemoteInvoker
*
InitRemoteInvoker
(
int32_t
proto
);
void
DeinitRemoteInvoker
(
RemoteInvoker
*
invoker
,
int32_t
proto
);
#ifdef __cplusplus
#if __cplusplus
}
...
...
ipc/native/c/manager/src/ipc_process_skeleton.c
浏览文件 @
8eab142b
...
...
@@ -132,18 +132,22 @@ void JoinMainWorkThread(void)
pid_t
ProcessGetCallingPid
(
void
)
{
ThreadContext
*
currentContext
=
GetCurrentThreadContext
();
if
(
currentContext
!=
NULL
)
{
return
currentContext
->
callerPid
;
if
(
g_ipcSkeleton
!=
NULL
)
{
ThreadContext
*
currentContext
=
GetCurrentThreadContext
();
if
(
currentContext
!=
NULL
)
{
return
currentContext
->
callerPid
;
}
}
return
RpcGetPid
();
}
pid_t
ProcessGetCallingUid
(
void
)
{
ThreadContext
*
currentContext
=
GetCurrentThreadContext
();
if
(
currentContext
!=
NULL
)
{
return
currentContext
->
callerUid
;
if
(
g_ipcSkeleton
!=
NULL
)
{
ThreadContext
*
currentContext
=
GetCurrentThreadContext
();
if
(
currentContext
!=
NULL
)
{
return
currentContext
->
callerUid
;
}
}
return
RpcGetUid
();
}
...
...
ipc/native/c/manager/src/ipc_skeleton.c
浏览文件 @
8eab142b
...
...
@@ -48,19 +48,11 @@ void JoinWorkThread(void)
pid_t
GetCallingPid
(
void
)
{
if
(
GetCurrentSkeleton
()
==
NULL
)
{
RPC_LOG_ERROR
(
"init ipc process skeleton failed."
);
return
ERR_IPC_SKELETON_NOT_INIT
;
}
return
ProcessGetCallingPid
();
}
pid_t
GetCallingUid
(
void
)
{
if
(
GetCurrentSkeleton
()
==
NULL
)
{
RPC_LOG_ERROR
(
"init ipc process skeleton failed."
);
return
ERR_IPC_SKELETON_NOT_INIT
;
}
return
ProcessGetCallingUid
();
}
...
...
ipc/native/c/manager/src/ipc_thread_pool.c
浏览文件 @
8eab142b
...
...
@@ -133,6 +133,7 @@ void DeinitThreadPool(ThreadPool *threadPool)
pthread_key_delete
(
g_localKey
);
free
(
threadPool
);
for
(
int32_t
index
=
0
;
index
<
PROTO_NUM
;
++
index
)
{
DeinitRemoteInvoker
(
g_invoker
[
index
],
index
);
g_invoker
[
index
]
=
NULL
;
}
}
...
...
ipc/native/c/manager/src/iremote_invoker.c
浏览文件 @
8eab142b
...
...
@@ -28,4 +28,14 @@ RemoteInvoker *InitRemoteInvoker(int32_t proto)
remoteInvoker
=
GetRpcInvoker
();
}
return
remoteInvoker
;
}
void
DeinitRemoteInvoker
(
RemoteInvoker
*
invoker
,
int32_t
proto
)
{
if
(
invoker
==
NULL
)
{
return
;
}
if
(
proto
==
IF_PROT_BINDER
)
{
DeinitIpcInvoker
(
invoker
);
}
}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录