!733 refactor:los_cir_buf.c接口整合
Merge pull request !733 from Zhaotianyu/1213cirbuf_refactor
This commit is contained in:
commit
1db7aa7ada
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue