Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Kernel Liteos M
提交
56dfd80e
K
Kernel Liteos M
项目概览
OpenHarmony
/
Kernel Liteos M
大约 1 年 前同步成功
通知
20
Star
28
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel Liteos M
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
56dfd80e
编写于
8月 05, 2021
作者:
O
openharmony_ci
提交者:
Gitee
8月 05, 2021
浏览文件
操作
浏览文件
下载
差异文件
!242 cmsis添加ThreadFlags接口支持
Merge pull request !242 from 野生毛霉君/master
上级
b195b40b
cea551e9
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
119 addition
and
0 deletion
+119
-0
kal/cmsis/cmsis_liteos2.c
kal/cmsis/cmsis_liteos2.c
+117
-0
kernel/src/los_task.c
kernel/src/los_task.c
+2
-0
未找到文件。
kal/cmsis/cmsis_liteos2.c
浏览文件 @
56dfd80e
...
...
@@ -1649,3 +1649,120 @@ const char *osMemoryPoolGetName(osMemoryPoolId_t mp_id)
return
p
;
}
// ==== Thread Flags Functions ====
uint32_t
osThreadFlagsSet
(
osThreadId_t
thread_id
,
uint32_t
flags
)
{
UINT32
ret
;
LosTaskCB
*
taskCB
=
(
LosTaskCB
*
)
thread_id
;
EVENT_CB_S
*
eventCB
=
NULL
;
UINT32
curFlags
;
if
(
taskCB
==
NULL
)
{
return
(
uint32_t
)
osFlagsErrorParameter
;
}
eventCB
=
&
(
taskCB
->
event
);
curFlags
=
eventCB
->
uwEventID
|
flags
;
ret
=
LOS_EventWrite
(
eventCB
,
(
UINT32
)
flags
);
if
(
ret
==
LOS_ERRNO_EVENT_SETBIT_INVALID
)
{
return
(
uint32_t
)
osFlagsErrorParameter
;
}
if
(
ret
!=
LOS_OK
)
{
return
(
uint32_t
)
osFlagsErrorResource
;
}
if
(
curFlags
&
taskCB
->
eventMask
)
{
return
curFlags
&
(
~
taskCB
->
eventMask
);
}
return
curFlags
;
}
uint32_t
osThreadFlagsClear
(
uint32_t
flags
)
{
UINT32
ret
;
UINT32
saveFlags
;
LosTaskCB
*
runTask
=
NULL
;
EVENT_CB_S
*
eventCB
=
NULL
;
if
(
OS_INT_ACTIVE
)
{
return
(
uint32_t
)
osFlagsErrorUnknown
;
}
runTask
=
g_losTask
.
runTask
;
eventCB
=
&
(
runTask
->
event
);
saveFlags
=
eventCB
->
uwEventID
;
ret
=
LOS_EventClear
(
eventCB
,
~
(
UINT32
)
flags
);
if
(
ret
==
LOS_OK
)
{
return
(
uint32_t
)
saveFlags
;
}
return
(
uint32_t
)
osFlagsErrorResource
;
}
uint32_t
osThreadFlagsGet
(
void
)
{
LosTaskCB
*
runTask
=
NULL
;
EVENT_CB_S
*
eventCB
=
NULL
;
if
(
OS_INT_ACTIVE
)
{
return
(
uint32_t
)
osFlagsErrorUnknown
;
}
runTask
=
g_losTask
.
runTask
;
eventCB
=
&
(
runTask
->
event
);
return
(
uint32_t
)(
eventCB
->
uwEventID
);
}
uint32_t
osThreadFlagsWait
(
uint32_t
flags
,
uint32_t
options
,
uint32_t
timeout
)
{
UINT32
ret
;
UINT32
mode
=
0
;
LosTaskCB
*
runTask
=
NULL
;
EVENT_CB_S
*
eventCB
=
NULL
;
if
(
OS_INT_ACTIVE
)
{
return
(
uint32_t
)
osFlagsErrorUnknown
;
}
if
(
options
>
(
osFlagsWaitAny
|
osFlagsWaitAll
|
osFlagsNoClear
))
{
return
(
uint32_t
)
osFlagsErrorParameter
;
}
if
((
options
&
osFlagsWaitAll
)
==
osFlagsWaitAll
)
{
mode
|=
LOS_WAITMODE_AND
;
}
else
{
mode
|=
LOS_WAITMODE_OR
;
}
if
((
options
&
osFlagsNoClear
)
==
osFlagsNoClear
)
{
mode
&=
~
LOS_WAITMODE_CLR
;
}
else
{
mode
|=
LOS_WAITMODE_CLR
;
}
runTask
=
g_losTask
.
runTask
;
eventCB
=
&
(
runTask
->
event
);
ret
=
LOS_EventRead
(
eventCB
,
(
UINT32
)
flags
,
mode
,
(
UINT32
)
timeout
);
if
(
!
(
ret
&
LOS_ERRTYPE_ERROR
))
{
return
(
uint32_t
)
eventCB
->
uwEventID
|
ret
;
}
switch
(
ret
)
{
case
LOS_ERRNO_EVENT_PTR_NULL
:
case
LOS_ERRNO_EVENT_SETBIT_INVALID
:
case
LOS_ERRNO_EVENT_EVENTMASK_INVALID
:
case
LOS_ERRNO_EVENT_FLAGS_INVALID
:
return
(
uint32_t
)
osFlagsErrorParameter
;
case
LOS_ERRNO_EVENT_READ_TIMEOUT
:
return
(
uint32_t
)
osFlagsErrorTimeout
;
default:
return
(
uint32_t
)
osFlagsErrorResource
;
}
}
kernel/src/los_task.c
浏览文件 @
56dfd80e
...
...
@@ -668,6 +668,7 @@ LITE_OS_SEC_TEXT_INIT UINT32 OsNewTaskInit(LosTaskCB *taskCB, TSK_INIT_PARAM_S *
taskCB
->
msg
=
NULL
;
taskCB
->
stackPointer
=
HalTskStackInit
(
taskCB
->
taskID
,
taskInitParam
->
uwStackSize
,
topOfStack
);
SET_SORTLIST_VALUE
(
&
taskCB
->
sortList
,
OS_SORT_LINK_INVALID_TIME
);
LOS_EventInit
(
&
(
taskCB
->
event
));
return
LOS_OK
;
}
...
...
@@ -920,6 +921,7 @@ LITE_OS_SEC_TEXT_INIT UINT32 LOS_TaskDelete(UINT32 taskID)
OsHookCall
(
LOS_HOOK_TYPE_TASK_DELETE
,
taskCB
);
OsSchedTaskExit
(
taskCB
);
LOS_EventDestroy
(
&
(
taskCB
->
event
));
taskCB
->
event
.
uwEventID
=
OS_NULL_INT
;
taskCB
->
eventMask
=
0
;
#if (LOSCFG_BASE_CORE_CPUP == 1)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录