Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Kernel Liteos A
提交
b78b185e
K
Kernel Liteos A
项目概览
OpenHarmony
/
Kernel Liteos A
大约 2 年 前同步成功
通知
475
Star
414
Fork
55
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
4
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel Liteos A
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
4
Issue
4
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
b78b185e
编写于
4月 28, 2021
作者:
O
openharmony_ci
提交者:
Gitee
4月 28, 2021
浏览文件
操作
浏览文件
下载
差异文件
!193 新增/dev/quickstart节点,作为用户态根进程与其他进程的启动同步通信节点
Merge pull request !193 from boxi/master
上级
77fca100
46b63f71
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
89 addition
and
86 deletion
+89
-86
Kconfig
Kconfig
+1
-0
drivers/char/quickstart/Kconfig
drivers/char/quickstart/Kconfig
+6
-0
drivers/char/quickstart/include/los_dev_quickstart.h
drivers/char/quickstart/include/los_dev_quickstart.h
+36
-1
drivers/char/quickstart/include/los_quick_start_pri.h
drivers/char/quickstart/include/los_quick_start_pri.h
+0
-52
drivers/char/quickstart/src/quickstart.c
drivers/char/quickstart/src/quickstart.c
+43
-19
kernel/common/los_config.c
kernel/common/los_config.c
+0
-11
tools/build/mk/los_config.mk
tools/build/mk/los_config.mk
+3
-3
未找到文件。
Kconfig
浏览文件 @
b78b185e
...
@@ -303,6 +303,7 @@ source "../../kernel/liteos_a/bsd/dev/usb/Kconfig"
...
@@ -303,6 +303,7 @@ source "../../kernel/liteos_a/bsd/dev/usb/Kconfig"
source "../../drivers/adapter/khdf/liteos/Kconfig"
source "../../drivers/adapter/khdf/liteos/Kconfig"
source "drivers/char/mem/Kconfig"
source "drivers/char/mem/Kconfig"
source "drivers/char/quickstart/Kconfig"
source "drivers/char/random/Kconfig"
source "drivers/char/random/Kconfig"
source "../../drivers/liteos/tzdriver/Kconfig"
source "../../drivers/liteos/tzdriver/Kconfig"
source "drivers/char/video/Kconfig"
source "drivers/char/video/Kconfig"
...
...
drivers/char/quickstart/Kconfig
0 → 100644
浏览文件 @
b78b185e
config DRIVERS_QUICKSTART
bool "Enable QUICKSTART"
default y
depends on DRIVERS && FS_VFS
help
Answer Y to enable LiteOS support quickstart frame dev.
drivers/char/quickstart/include/los_
quick_
start.h
→
drivers/char/quickstart/include/los_
dev_quick
start.h
浏览文件 @
b78b185e
...
@@ -33,6 +33,7 @@
...
@@ -33,6 +33,7 @@
#define __LOS_QUICK_START_H__
#define __LOS_QUICK_START_H__
#include "los_typedef.h"
#include "los_typedef.h"
#include "sys/ioctl.h"
#ifdef __cplusplus
#ifdef __cplusplus
#if __cplusplus
#if __cplusplus
...
@@ -40,7 +41,41 @@ extern "C" {
...
@@ -40,7 +41,41 @@ extern "C" {
#endif
/* __cplusplus */
#endif
/* __cplusplus */
#endif
/* __cplusplus */
#endif
/* __cplusplus */
extern
int
DevQuickStartRegister
(
void
);
typedef
enum
{
QS_STAGE1
=
1
,
/* 1: start from stage1, 0 is already called in kernel process */
QS_STAGE2
,
/* system init stage No 2 */
QS_STAGE3
,
/* system init stage No 3 */
QS_STAGE_LIMIT
}
QS_STAGE
;
typedef
enum
{
QS_UNREGISTER
=
QS_STAGE_LIMIT
,
/* quickstart dev unregister */
QS_NOTIFY
,
/* quickstart notify */
QS_LISTEN
,
/* quickstart listen */
QS_CTL_LIMIT
}
QS_CTL
;
#define QS_STAGE_CNT (QS_STAGE_LIMIT - QS_STAGE1)
#define QS_STAGE_NO(x) QS_STAGE##x
#define QUICKSTART_IOC_MAGIC 'T'
#define QUICKSTART_UNREGISTER _IO(QUICKSTART_IOC_MAGIC, QS_UNREGISTER)
#define QUICKSTART_NOTIFY _IO(QUICKSTART_IOC_MAGIC, QS_NOTIFY)
#define QUICKSTART_LISTEN _IO(QUICKSTART_IOC_MAGIC, QS_LISTEN)
#define QUICKSTART_STAGE(x) _IO(QUICKSTART_IOC_MAGIC, QS_STAGE_NO(x))
#define QUICKSTART_NODE "/dev/quickstart"
typedef
void
(
*
SysteminitHook
)(
void
);
typedef
struct
{
SysteminitHook
func
[
QS_STAGE_CNT
];
}
LosSysteminitHook
;
extern
void
QuickStartHookRegister
(
LosSysteminitHook
hooks
);
extern
int
QuickStartDevRegister
(
void
);
#ifdef __cplusplus
#ifdef __cplusplus
#if __cplusplus
#if __cplusplus
...
...
drivers/char/quickstart/include/los_quick_start_pri.h
已删除
100644 → 0
浏览文件 @
77fca100
/*
* Copyright (c) 2013-2019 Huawei Technologies Co., Ltd. All rights reserved.
* Copyright (c) 2020-2021 Huawei Device Co., Ltd. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* 3. Neither the name of the copyright holder nor the names of its contributors may be used
* to endorse or promote products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef __LOS_QUICK_START_PRI_H__
#define __LOS_QUICK_START_PRI_H__
#include "los_typedef.h"
#ifdef __cplusplus
#if __cplusplus
extern
"C"
{
#endif
/* __cplusplus */
#endif
/* __cplusplus */
unsigned
int
OsSystemInitStep2
(
void
);
extern
VOID
SystemInit2
(
VOID
);
#ifdef __cplusplus
#if __cplusplus
}
#endif
/* __cplusplus */
#endif
/* __cplusplus */
#endif
/* __LOS_QUICK_START_PRI_H__ */
\ No newline at end of file
drivers/char/quickstart/src/quickstart.c
浏览文件 @
b78b185e
...
@@ -29,16 +29,15 @@
...
@@ -29,16 +29,15 @@
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
*/
#include "los_quick_start_pri.h"
#include "los_dev_quickstart.h"
#include "bits/ioctl.h"
#include "fcntl.h"
#include "fcntl.h"
#include "linux/kernel.h"
#include "linux/kernel.h"
#include "los_process_pri.h"
#define QUICKSTART_IOC_MAGIC 'T'
#define QUICKSTART_INITSTEP2 _IO(QUICKSTART_IOC_MAGIC, 0)
#define QUICKSTART_UNREGISTER _IO(QUICKSTART_IOC_MAGIC, 1)
#define QUICKSTART_NODE "/dev/quickstart"
EVENT_CB_S
g_qsEvent
;
static
SysteminitHook
g_systemInitFunc
[
QS_STAGE_CNT
]
=
{
0
};
static
char
g_callOnce
[
QS_STAGE_CNT
]
=
{
0
};
static
int
QuickstartOpen
(
struct
file
*
filep
)
static
int
QuickstartOpen
(
struct
file
*
filep
)
{
{
...
@@ -50,18 +49,30 @@ static int QuickstartClose(struct file *filep)
...
@@ -50,18 +49,30 @@ static int QuickstartClose(struct file *filep)
return
0
;
return
0
;
}
}
static
void
SystemInitStep2
(
void
)
static
void
QuickstartNotify
(
unsigned
int
events
)
{
{
static
int
once
=
0
;
LOS_EventWrite
((
PEVENT_CB_S
)
&
g_qsEvent
,
events
);
/* Only one call is allowed */
}
if
(
once
!=
0
)
{
return
;
static
void
QuickstartListen
(
unsigned
int
eventMask
)
{
LOS_EventRead
((
PEVENT_CB_S
)
&
g_qsEvent
,
eventMask
,
LOS_WAITMODE_AND
|
LOS_WAITMODE_CLR
,
LOS_WAIT_FOREVER
);
}
void
QuickStartHookRegister
(
LosSysteminitHook
hooks
)
{
for
(
int
i
=
0
;
i
<
QS_STAGE_CNT
;
i
++
)
{
g_systemInitFunc
[
i
]
=
hooks
.
func
[
i
];
}
}
once
=
1
;
}
unsigned
int
ret
=
OsSystemInitStep2
();
static
void
QuickStartStageWorking
(
unsigned
int
level
)
if
(
ret
!=
LOS_OK
)
{
{
PRINT_ERR
(
"systemInitStep2 failed
\n
"
);
if
((
level
<
QS_STAGE_CNT
)
&&
(
g_callOnce
[
level
]
==
0
)
&&
(
g_systemInitFunc
[
level
]
!=
NULL
))
{
g_callOnce
[
level
]
=
1
;
/* 1: Already called */
g_systemInitFunc
[
level
]();
}
else
{
PRINT_WARN
(
"Trigger quickstart,but doing nothing!!
\n
"
);
}
}
}
}
...
@@ -72,15 +83,27 @@ static int QuickstartDevUnregister(void)
...
@@ -72,15 +83,27 @@ static int QuickstartDevUnregister(void)
static
ssize_t
QuickstartIoctl
(
struct
file
*
filep
,
int
cmd
,
unsigned
long
arg
)
static
ssize_t
QuickstartIoctl
(
struct
file
*
filep
,
int
cmd
,
unsigned
long
arg
)
{
{
if
(
cmd
==
QUICKSTART_NOTIFY
)
{
QuickstartNotify
(
arg
);
return
0
;
}
if
(
OsGetUserInitProcessID
()
!=
LOS_GetCurrProcessID
())
{
PRINT_ERR
(
"Permission denios!
\n
"
);
return
-
1
;
}
switch
(
cmd
)
{
switch
(
cmd
)
{
case
QUICKSTART_INITSTEP2
:
SystemInitStep2
();
break
;
case
QUICKSTART_UNREGISTER
:
case
QUICKSTART_UNREGISTER
:
QuickstartDevUnregister
();
QuickstartDevUnregister
();
break
;
break
;
case
QUICKSTART_LISTEN
:
QuickstartListen
(
arg
);
break
;
default:
default:
QuickStartStageWorking
(
cmd
-
QUICKSTART_STAGE
(
1
));
/* ioctl cmd converted to stage level */
break
;
break
;
}
}
return
0
;
return
0
;
...
@@ -100,8 +123,9 @@ static const struct file_operations_vfs g_quickstartDevOps = {
...
@@ -100,8 +123,9 @@ static const struct file_operations_vfs g_quickstartDevOps = {
NULL
,
/* unlink */
NULL
,
/* unlink */
};
};
int
DevQuickStart
Register
(
void
)
int
QuickStartDev
Register
(
void
)
{
{
LOS_EventInit
(
&
g_qsEvent
);
return
register_driver
(
QUICKSTART_NODE
,
&
g_quickstartDevOps
,
0666
,
0
);
/* 0666: file mode */
return
register_driver
(
QUICKSTART_NODE
,
&
g_quickstartDevOps
,
0666
,
0
);
/* 0666: file mode */
}
}
kernel/common/los_config.c
浏览文件 @
b78b185e
...
@@ -117,10 +117,6 @@
...
@@ -117,10 +117,6 @@
#include "los_hilog.h"
#include "los_hilog.h"
#endif
#endif
#ifdef LOSCFG_QUICK_START
#include "los_quick_start_pri.h"
#endif
STATIC
SystemRebootFunc
g_rebootHook
=
NULL
;
STATIC
SystemRebootFunc
g_rebootHook
=
NULL
;
...
@@ -388,13 +384,6 @@ STATIC UINT32 OsSystemInitTaskCreate(VOID)
...
@@ -388,13 +384,6 @@ STATIC UINT32 OsSystemInitTaskCreate(VOID)
return
LOS_TaskCreate
(
&
taskID
,
&
sysTask
);
return
LOS_TaskCreate
(
&
taskID
,
&
sysTask
);
}
}
#ifdef LOSCFG_QUICK_START
UINT32
OsSystemInitStep2
(
VOID
)
{
SystemInit2
();
return
0
;
}
#endif
UINT32
OsSystemInit
(
VOID
)
UINT32
OsSystemInit
(
VOID
)
{
{
...
...
tools/build/mk/los_config.mk
浏览文件 @
b78b185e
...
@@ -398,10 +398,10 @@ ifeq ($(LOSCFG_DRIVERS_MEM), y)
...
@@ -398,10 +398,10 @@ ifeq ($(LOSCFG_DRIVERS_MEM), y)
LITEOS_DEV_MEM_INCLUDE
=
-I
$(LITEOSTOPDIR)
/drivers/char/mem/include
LITEOS_DEV_MEM_INCLUDE
=
-I
$(LITEOSTOPDIR)
/drivers/char/mem/include
endif
endif
ifeq
($(LOSCFG_
QUICK_
START), y)
ifeq
($(LOSCFG_
DRIVERS_QUICK
START), y)
LITEOS_BASELIB
+=
-lquickstart
LITEOS_BASELIB
+=
-lquickstart
LIB_SUBDIRS
+=
$(LITEOSTOPDIR)
/drivers/char/quickstart
LIB_SUBDIRS
+=
$(LITEOSTOPDIR)
/drivers/char/quickstart
LITEOS_
QUICK_
START_INCLUDE
=
-I
$(LITEOSTOPDIR)
/drivers/char/quickstart/include
LITEOS_
DEV_QUICK
START_INCLUDE
=
-I
$(LITEOSTOPDIR)
/drivers/char/quickstart/include
endif
endif
ifeq
($(LOSCFG_DRIVERS_RANDOM), y)
ifeq
($(LOSCFG_DRIVERS_RANDOM), y)
...
@@ -642,7 +642,7 @@ LITEOS_DRIVERS_INCLUDE := $(LITEOS_CELLWISE_INCLUDE) $(LITEOS_GPIO_INCLUDE
...
@@ -642,7 +642,7 @@ LITEOS_DRIVERS_INCLUDE := $(LITEOS_CELLWISE_INCLUDE) $(LITEOS_GPIO_INCLUDE
$(LITEOS_REGULATOR_INCLUDE)
$(LITEOS_VIDEO_INCLUDE)
\
$(LITEOS_REGULATOR_INCLUDE)
$(LITEOS_VIDEO_INCLUDE)
\
$(LITEOS_DRIVERS_HDF_INCLUDE)
$(LITEOS_TZDRIVER_INCLUDE)
\
$(LITEOS_DRIVERS_HDF_INCLUDE)
$(LITEOS_TZDRIVER_INCLUDE)
\
$(LITEOS_HIEVENT_INCLUDE)
$(LITEOS_DEV_MEM_INCLUDE)
\
$(LITEOS_HIEVENT_INCLUDE)
$(LITEOS_DEV_MEM_INCLUDE)
\
$(LITEOS_
QUICK_
START_INCLUDE)
$(LITEOS_
DEV_QUICK
START_INCLUDE)
LITEOS_DFX_INCLUDE
:=
$(LITEOS_HILOG_INCLUDE)
LITEOS_DFX_INCLUDE
:=
$(LITEOS_HILOG_INCLUDE)
LITEOS_SECURITY_INCLUDE
:=
$(LITEOS_SECURITY_CAP_INC)
$(LITEOS_SECURITY_VID_INC)
LITEOS_SECURITY_INCLUDE
:=
$(LITEOS_SECURITY_CAP_INC)
$(LITEOS_SECURITY_VID_INC)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录