mirror of
https://github.com/NevermindZZT/letter-shell.git
synced 2025-01-21 10:02:54 +08:00
新增 log组件适配shell锁
This commit is contained in:
parent
5d3607af91
commit
e70221db15
@ -27,6 +27,58 @@
|
|||||||
Log *logList[LOG_MAX_NUMBER] = {0};
|
Log *logList[LOG_MAX_NUMBER] = {0};
|
||||||
static char logBuffer[LOG_BUFFER_SIZE];
|
static char logBuffer[LOG_BUFFER_SIZE];
|
||||||
|
|
||||||
|
#if SHELL_USING_LOCK == 1
|
||||||
|
/**
|
||||||
|
* @brief 上锁log对象
|
||||||
|
* @param log log对象
|
||||||
|
*/
|
||||||
|
static void logLock(Log *log)
|
||||||
|
{
|
||||||
|
if (log == LOG_ALL_OBJ)
|
||||||
|
{
|
||||||
|
for (short i = 0; i < LOG_MAX_NUMBER; i++)
|
||||||
|
{
|
||||||
|
if (logList[i] && logList[i]->active)
|
||||||
|
{
|
||||||
|
if (logList[i]->shell)
|
||||||
|
{
|
||||||
|
SHELL_LOCK(logList[i]->shell);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (log->shell)
|
||||||
|
{
|
||||||
|
SHELL_LOCK(log->shell);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 解锁log对象
|
||||||
|
* @param log log对象
|
||||||
|
*/
|
||||||
|
static void logUnlock(Log *log)
|
||||||
|
{
|
||||||
|
if (log == LOG_ALL_OBJ)
|
||||||
|
{
|
||||||
|
for (short i = 0; i < LOG_MAX_NUMBER; i++)
|
||||||
|
{
|
||||||
|
if (logList[i] && logList[i]->active)
|
||||||
|
{
|
||||||
|
if (logList[i]->shell)
|
||||||
|
{
|
||||||
|
SHELL_UNLOCK(logList[i]->shell);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (log->shell)
|
||||||
|
{
|
||||||
|
SHELL_UNLOCK(log->shell);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /* SHELL_USING_LOCK == 1 */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 注册log对象
|
* @brief 注册log对象
|
||||||
*
|
*
|
||||||
@ -102,6 +154,9 @@ logSetLevel, logSetLevel, set log level\r\n logSetLevel [log] [level]);
|
|||||||
*/
|
*/
|
||||||
static void logWriteBuffer(Log *log, LogLevel level, char *buffer, short len)
|
static void logWriteBuffer(Log *log, LogLevel level, char *buffer, short len)
|
||||||
{
|
{
|
||||||
|
#if SHELL_USING_LOCK == 1
|
||||||
|
logLock(log);
|
||||||
|
#endif /* SHELL_USING_LOCK == 1 */
|
||||||
if (log == LOG_ALL_OBJ)
|
if (log == LOG_ALL_OBJ)
|
||||||
{
|
{
|
||||||
for (short i = 0; i < LOG_MAX_NUMBER; i++)
|
for (short i = 0; i < LOG_MAX_NUMBER; i++)
|
||||||
@ -118,6 +173,9 @@ static void logWriteBuffer(Log *log, LogLevel level, char *buffer, short len)
|
|||||||
{
|
{
|
||||||
log->write(logBuffer, len);
|
log->write(logBuffer, len);
|
||||||
}
|
}
|
||||||
|
#if SHELL_USING_LOCK == 1
|
||||||
|
logUnlock(log);
|
||||||
|
#endif /* SHELL_USING_LOCK == 1 */
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -132,15 +190,20 @@ void logWrite(Log *log, LogLevel level, char *fmt, ...)
|
|||||||
{
|
{
|
||||||
va_list vargs;
|
va_list vargs;
|
||||||
short len;
|
short len;
|
||||||
|
|
||||||
|
#if SHELL_USING_LOCK == 1
|
||||||
|
logLock(log);
|
||||||
|
#endif /* SHELL_USING_LOCK == 1 */
|
||||||
va_start(vargs, fmt);
|
va_start(vargs, fmt);
|
||||||
len = vsnprintf(logBuffer, LOG_BUFFER_SIZE - 1, fmt, vargs);
|
len = vsnprintf(logBuffer, LOG_BUFFER_SIZE - 1, fmt, vargs);
|
||||||
va_end(vargs);
|
va_end(vargs);
|
||||||
|
|
||||||
logWriteBuffer(log, level, logBuffer, len);
|
logWriteBuffer(log, level, logBuffer, len);
|
||||||
|
#if SHELL_USING_LOCK == 1
|
||||||
|
logUnlock(log);
|
||||||
|
#endif /* SHELL_USING_LOCK == 1 */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 16进制输出
|
* @brief 16进制输出
|
||||||
*
|
*
|
||||||
@ -159,7 +222,9 @@ void logHexDump(Log *log, LogLevel level, void *base, unsigned int length)
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
#if SHELL_USING_LOCK == 1
|
||||||
|
logLock(log);
|
||||||
|
#endif /* SHELL_USING_LOCK == 1 */
|
||||||
len = snprintf(logBuffer, LOG_BUFFER_SIZE - 1, "memory of 0x%08x, size: %d:\r\n%s",
|
len = snprintf(logBuffer, LOG_BUFFER_SIZE - 1, "memory of 0x%08x, size: %d:\r\n%s",
|
||||||
(unsigned int)base, length, memPrintHead);
|
(unsigned int)base, length, memPrintHead);
|
||||||
logWriteBuffer(log, level, logBuffer, len);
|
logWriteBuffer(log, level, logBuffer, len);
|
||||||
@ -216,6 +281,9 @@ void logHexDump(Log *log, LogLevel level, void *base, unsigned int length)
|
|||||||
length -= 16;
|
length -= 16;
|
||||||
printLen = 0;
|
printLen = 0;
|
||||||
}
|
}
|
||||||
|
#if SHELL_USING_LOCK == 1
|
||||||
|
logUnlock(log);
|
||||||
|
#endif /* SHELL_USING_LOCK == 1 */
|
||||||
}
|
}
|
||||||
#if SHELL_USING_COMPANION == 1
|
#if SHELL_USING_COMPANION == 1
|
||||||
SHELL_EXPORT_CMD_AGENCY(
|
SHELL_EXPORT_CMD_AGENCY(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user