Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Startup Init Lite
提交
787f67b2
S
Startup Init Lite
项目概览
OpenHarmony
/
Startup Init Lite
1 年多 前同步成功
通知
3
Star
37
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
Startup Init Lite
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
787f67b2
编写于
5月 28, 2022
作者:
O
openharmony_ci
提交者:
Gitee
5月 28, 2022
浏览文件
操作
浏览文件
下载
差异文件
!723 create required device node at first stage
Merge pull request !723 from handy/0527
上级
5695fe51
a9880107
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
51 addition
and
0 deletion
+51
-0
ueventd/ueventd.c
ueventd/ueventd.c
+51
-0
未找到文件。
ueventd/ueventd.c
100644 → 100755
浏览文件 @
787f67b2
...
...
@@ -20,7 +20,12 @@
#include <errno.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/sysmacros.h>
#include <fcntl.h>
#include <unistd.h>
#include "ueventd_device_handler.h"
#include "ueventd_firmware_handler.h"
#include "ueventd_read_cfg.h"
...
...
@@ -119,6 +124,48 @@ static void HandleUevent(const struct Uevent *uevent)
}
}
#define DEFAULT_RW_MODE (S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH)
typedef
struct
{
const
char
*
dev
;
mode_t
mode
;
}
DYNAMIC_DEVICE_NODE
;
#define DEV_NODE_PATH_PREFIX "/dev/"
#define DEV_NODE_PATH_PREFIX_LEN 5
static
const
DYNAMIC_DEVICE_NODE
dynamicDevices
[]
=
{
{
DEV_NODE_PATH_PREFIX
"tty"
,
S_IFCHR
|
DEFAULT_RW_MODE
},
{
DEV_NODE_PATH_PREFIX
"binder"
,
S_IFCHR
|
DEFAULT_RW_MODE
}
};
static
void
HandleRequiredDynamicDeviceNodes
(
const
struct
Uevent
*
uevent
)
{
mode_t
mask
;
int
idx
=
0
;
if
(
uevent
->
deviceName
==
NULL
)
{
return
;
}
while
(
idx
<
sizeof
(
dynamicDevices
)
/
sizeof
(
dynamicDevices
[
0
]))
{
if
(
strcmp
(
uevent
->
deviceName
,
dynamicDevices
[
idx
].
dev
+
DEV_NODE_PATH_PREFIX_LEN
)
!=
0
)
{
idx
++
;
continue
;
}
// Matched
mask
=
umask
(
0
);
if
(
mknod
(
dynamicDevices
[
idx
].
dev
,
dynamicDevices
[
idx
].
mode
,
makedev
(
uevent
->
major
,
uevent
->
minor
))
!=
0
)
{
INIT_LOGE
(
"Create device node %s failed. %s"
,
dynamicDevices
[
idx
].
dev
,
strerror
(
errno
));
}
// Restore umask
umask
(
mask
);
break
;
}
}
static
void
HandleUeventRequired
(
const
struct
Uevent
*
uevent
,
char
**
devices
,
int
num
)
{
const
char
*
deviceName
;
...
...
@@ -146,6 +193,10 @@ static void HandleUeventRequired(const struct Uevent *uevent, char **devices, in
break
;
}
}
return
;
}
if
((
type
==
SUBSYSTEM_OTHERS
)
&&
(
num
>
0
))
{
HandleRequiredDynamicDeviceNodes
(
uevent
);
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录