Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Kernel Liteos A
提交
1db7aa7a
K
Kernel Liteos A
项目概览
OpenHarmony
/
Kernel Liteos A
1 年多 前同步成功
通知
467
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看板
提交
1db7aa7a
编写于
12月 15, 2021
作者:
O
openharmony_ci
提交者:
Gitee
12月 15, 2021
浏览文件
操作
浏览文件
下载
差异文件
!733 refactor:los_cir_buf.c接口整合
Merge pull request !733 from Zhaotianyu/1213cirbuf_refactor
上级
6a0c1697
0d325c56
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
22 addition
and
27 deletion
+22
-27
kernel/common/console.c
kernel/common/console.c
+5
-5
lib/libscrew/include/los_cir_buf.h
lib/libscrew/include/los_cir_buf.h
+0
-16
lib/libscrew/src/los_cir_buf.c
lib/libscrew/src/los_cir_buf.c
+17
-6
未找到文件。
kernel/common/console.c
浏览文件 @
1db7aa7a
...
...
@@ -60,6 +60,7 @@ STATIC UINT32 ConsoleSendTask(UINTPTR param);
STATIC
UINT8
g_taskConsoleIDArray
[
LOSCFG_BASE_CORE_TSK_LIMIT
];
STATIC
SPIN_LOCK_INIT
(
g_consoleSpin
);
STATIC
SPIN_LOCK_INIT
(
g_consoleWriteSpinLock
);
#define SHELL_ENTRYID_INVALID 0xFFFFFFFF
#define SHELL_TASK_PRIORITY 9
...
...
@@ -749,7 +750,8 @@ STATIC ssize_t DoWrite(CirBufSendCB *cirBufSendCB, CHAR *buffer, size_t bufLen)
return
0
;
}
#endif
LOS_CirBufLock
(
&
cirBufSendCB
->
cirBufCB
,
&
intSave
);
LOS_SpinLockSave
(
&
g_consoleWriteSpinLock
,
&
intSave
);
while
(
written
<
(
INT32
)
bufLen
)
{
/* Transform for CR/LR mode */
if
((
buffer
[
written
]
==
'\n'
)
||
(
buffer
[
written
]
==
'\r'
))
{
...
...
@@ -763,7 +765,8 @@ STATIC ssize_t DoWrite(CirBufSendCB *cirBufSendCB, CHAR *buffer, size_t bufLen)
toWrite
-=
cnt
;
written
+=
cnt
;
}
LOS_CirBufUnlock
(
&
cirBufSendCB
->
cirBufCB
,
intSave
);
LOS_SpinUnlockRestore
(
&
g_consoleWriteSpinLock
,
intSave
);
/* Log is cached but not printed when a system exception occurs */
if
(
OsGetSystemStatus
()
==
OS_SYSTEM_NORMAL
)
{
(
VOID
)
LOS_EventWrite
(
&
cirBufSendCB
->
sendEvent
,
CONSOLE_CIRBUF_EVENT
);
...
...
@@ -1629,7 +1632,6 @@ STATIC UINT32 ConsoleSendTask(UINTPTR param)
CirBufSendCB
*
cirBufSendCB
=
consoleCB
->
cirBufSendCB
;
CirBuf
*
cirBufCB
=
&
cirBufSendCB
->
cirBufCB
;
UINT32
ret
,
size
;
UINT32
intSave
;
CHAR
*
buf
=
NULL
;
(
VOID
)
LOS_EventWrite
(
&
cirBufSendCB
->
sendEvent
,
CONSOLE_SEND_TASK_RUNNING
);
...
...
@@ -1648,9 +1650,7 @@ STATIC UINT32 ConsoleSendTask(UINTPTR param)
}
(
VOID
)
memset_s
(
buf
,
size
+
1
,
0
,
size
+
1
);
LOS_CirBufLock
(
cirBufCB
,
&
intSave
);
(
VOID
)
LOS_CirBufRead
(
cirBufCB
,
buf
,
size
);
LOS_CirBufUnlock
(
cirBufCB
,
intSave
);
(
VOID
)
WriteToTerminal
(
consoleCB
,
buf
,
size
);
(
VOID
)
LOS_MemFree
(
m_aucSysMem1
,
buf
);
...
...
lib/libscrew/include/los_cir_buf.h
浏览文件 @
1db7aa7a
...
...
@@ -56,22 +56,6 @@ typedef struct {
CHAR
*
fifo
;
}
CirBuf
;
STATIC
INLINE
VOID
LOS_CirBufLock
(
CirBuf
*
cirbufCB
,
UINT32
*
intSave
)
{
if
(
cirbufCB
==
NULL
)
{
return
;
}
LOS_SpinLockSave
(
&
cirbufCB
->
lock
,
intSave
);
}
STATIC
INLINE
VOID
LOS_CirBufUnlock
(
CirBuf
*
cirbufCB
,
UINT32
intSave
)
{
if
(
cirbufCB
==
NULL
)
{
return
;
}
LOS_SpinUnlockRestore
(
&
cirbufCB
->
lock
,
intSave
);
}
extern
UINT32
LOS_CirBufInit
(
CirBuf
*
cirbufCB
,
CHAR
*
fifo
,
UINT32
size
);
extern
VOID
LOS_CirBufDeinit
(
CirBuf
*
cirbufCB
);
extern
UINT32
LOS_CirBufWrite
(
CirBuf
*
cirbufCB
,
const
CHAR
*
buf
,
UINT32
size
);
...
...
lib/libscrew/src/los_cir_buf.c
浏览文件 @
1db7aa7a
...
...
@@ -30,6 +30,7 @@
*/
#include "los_cir_buf.h"
#include "los_spinlock.h"
UINT32
LOS_CirBufUsedSize
(
CirBuf
*
cirbufCB
)
...
...
@@ -103,14 +104,17 @@ STATIC UINT32 OsCirBufWriteLoop(CirBuf *cirbufCB, const CHAR *buf, UINT32 size)
UINT32
LOS_CirBufWrite
(
CirBuf
*
cirbufCB
,
const
CHAR
*
buf
,
UINT32
size
)
{
UINT32
cpSize
;
UINT32
cpSize
=
0
;
UINT32
intSave
;
if
((
cirbufCB
==
NULL
)
||
(
buf
==
NULL
)
||
(
size
==
0
))
{
if
((
cirbufCB
==
NULL
)
||
(
buf
==
NULL
)
||
(
size
==
0
)
||
(
cirbufCB
->
status
!=
CBUF_USED
)
)
{
return
0
;
}
LOS_SpinLockSave
(
&
cirbufCB
->
lock
,
&
intSave
);
if
((
cirbufCB
->
fifo
==
NULL
)
||
(
cirbufCB
->
remain
==
0
))
{
return
0
;
goto
EXIT
;
;
}
if
(
cirbufCB
->
startIdx
<=
cirbufCB
->
endIdx
)
{
...
...
@@ -119,6 +123,8 @@ UINT32 LOS_CirBufWrite(CirBuf *cirbufCB, const CHAR *buf, UINT32 size)
cpSize
=
OsCirBufWriteLinear
(
cirbufCB
,
buf
,
size
);
}
EXIT:
LOS_SpinUnlockRestore
(
&
cirbufCB
->
lock
,
intSave
);
return
cpSize
;
}
...
...
@@ -173,14 +179,17 @@ STATIC UINT32 OsCirBufReadLoop(CirBuf *cirbufCB, CHAR *buf, UINT32 size)
UINT32
LOS_CirBufRead
(
CirBuf
*
cirbufCB
,
CHAR
*
buf
,
UINT32
size
)
{
UINT32
cpSize
;
UINT32
cpSize
=
0
;
UINT32
intSave
;
if
((
cirbufCB
==
NULL
)
||
(
buf
==
NULL
)
||
(
size
==
0
))
{
if
((
cirbufCB
==
NULL
)
||
(
buf
==
NULL
)
||
(
size
==
0
)
||
(
cirbufCB
->
status
!=
CBUF_USED
)
)
{
return
0
;
}
LOS_SpinLockSave
(
&
cirbufCB
->
lock
,
&
intSave
);
if
((
cirbufCB
->
fifo
==
NULL
)
||
(
cirbufCB
->
remain
==
cirbufCB
->
size
))
{
return
0
;
goto
EXIT
;
}
if
(
cirbufCB
->
startIdx
>=
cirbufCB
->
endIdx
)
{
...
...
@@ -189,6 +198,8 @@ UINT32 LOS_CirBufRead(CirBuf *cirbufCB, CHAR *buf, UINT32 size)
cpSize
=
OsCirBufReadLinear
(
cirbufCB
,
buf
,
size
);
}
EXIT:
LOS_SpinUnlockRestore
(
&
cirbufCB
->
lock
,
intSave
);
return
cpSize
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录