!881 feat: 提供死机场景下dump文件能力
Merge pull request !881 from Zhaotianyu/20221105vfs_lock
This commit is contained in:
commit
1bc63d743b
|
@ -40,7 +40,7 @@
|
||||||
#include "securec.h"
|
#include "securec.h"
|
||||||
#include "los_compiler.h"
|
#include "los_compiler.h"
|
||||||
#include "los_debug.h"
|
#include "los_debug.h"
|
||||||
#include "cmsis_os2.h"
|
#include "los_sched.h"
|
||||||
#include "vfs_files.h"
|
#include "vfs_files.h"
|
||||||
#include "vfs_operations.h"
|
#include "vfs_operations.h"
|
||||||
#include "vfs_partition.h"
|
#include "vfs_partition.h"
|
||||||
|
@ -73,7 +73,7 @@ static int FsLock(void)
|
||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
struct timespec absTimeout = {0};
|
struct timespec absTimeout = {0};
|
||||||
if (osKernelGetState() != osKernelRunning) {
|
if (!OsCheckKernelRunning()) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
ret = clock_gettime(CLOCK_REALTIME, &absTimeout);
|
ret = clock_gettime(CLOCK_REALTIME, &absTimeout);
|
||||||
|
@ -88,7 +88,7 @@ static int FsLock(void)
|
||||||
|
|
||||||
static void FsUnlock(void)
|
static void FsUnlock(void)
|
||||||
{
|
{
|
||||||
if (osKernelGetState() != osKernelRunning) {
|
if (!OsCheckKernelRunning()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
(void)pthread_mutex_unlock(&g_fatfsMutex);
|
(void)pthread_mutex_unlock(&g_fatfsMutex);
|
||||||
|
|
|
@ -40,6 +40,7 @@
|
||||||
#include "fcntl.h"
|
#include "fcntl.h"
|
||||||
#include "los_mux.h"
|
#include "los_mux.h"
|
||||||
#include "los_debug.h"
|
#include "los_debug.h"
|
||||||
|
#include "los_sched.h"
|
||||||
#include "limits.h"
|
#include "limits.h"
|
||||||
#include "securec.h"
|
#include "securec.h"
|
||||||
#include "vfs_config.h"
|
#include "vfs_config.h"
|
||||||
|
@ -96,6 +97,9 @@ UINT32 g_fsMutex;
|
||||||
|
|
||||||
int VfsLock(void)
|
int VfsLock(void)
|
||||||
{
|
{
|
||||||
|
if (!OsCheckKernelRunning()) {
|
||||||
|
return LOS_OK;
|
||||||
|
}
|
||||||
if (LOS_MuxPend(g_fsMutex, LOS_WAIT_FOREVER) != LOS_OK) {
|
if (LOS_MuxPend(g_fsMutex, LOS_WAIT_FOREVER) != LOS_OK) {
|
||||||
PRINT_ERR("VfsLock failed!");
|
PRINT_ERR("VfsLock failed!");
|
||||||
return (int)LOS_NOK;
|
return (int)LOS_NOK;
|
||||||
|
@ -106,6 +110,9 @@ int VfsLock(void)
|
||||||
|
|
||||||
void VfsUnlock(void)
|
void VfsUnlock(void)
|
||||||
{
|
{
|
||||||
|
if (!OsCheckKernelRunning()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
(void)LOS_MuxPost(g_fsMutex);
|
(void)LOS_MuxPost(g_fsMutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -96,6 +96,11 @@ STATIC INLINE UINT64 OsGetCurrSchedTimeCycle(VOID)
|
||||||
return LOS_SysCycleGet();
|
return LOS_SysCycleGet();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
STATIC INLINE BOOL OsCheckKernelRunning(VOID)
|
||||||
|
{
|
||||||
|
return (g_taskScheduled && LOS_CHECK_SCHEDULE);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ingroup los_sched
|
* @ingroup los_sched
|
||||||
* @brief Get the time, in nanoseconds, remaining before the next tick interrupt response.
|
* @brief Get the time, in nanoseconds, remaining before the next tick interrupt response.
|
||||||
|
|
|
@ -120,21 +120,6 @@ LITE_OS_SEC_TEXT_INIT VOID LOS_Panic(const CHAR *fmt, ...)
|
||||||
ArchSysExit();
|
ArchSysExit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
|
||||||
Function : OsRegister
|
|
||||||
Description : Configuring the maximum number of tasks
|
|
||||||
Input : None
|
|
||||||
Output : None
|
|
||||||
Return : None
|
|
||||||
*****************************************************************************/
|
|
||||||
LITE_OS_SEC_TEXT_INIT static VOID OsRegister(VOID)
|
|
||||||
{
|
|
||||||
g_taskMaxNum = LOSCFG_BASE_CORE_TSK_LIMIT + 1; /* Reserved 1 for IDLE */
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
LITE_OS_SEC_TEXT_INIT UINT32 LOS_Start(VOID)
|
LITE_OS_SEC_TEXT_INIT UINT32 LOS_Start(VOID)
|
||||||
{
|
{
|
||||||
return ArchStartSchedule();
|
return ArchStartSchedule();
|
||||||
|
@ -156,8 +141,6 @@ LITE_OS_SEC_TEXT_INIT UINT32 LOS_KernelInit(VOID)
|
||||||
OsBackTraceInit();
|
OsBackTraceInit();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
OsRegister();
|
|
||||||
|
|
||||||
#ifdef LOSCFG_KERNEL_LMS
|
#ifdef LOSCFG_KERNEL_LMS
|
||||||
OsLmsInit();
|
OsLmsInit();
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -618,7 +618,7 @@ VOID LOS_SchedTickHandler(VOID)
|
||||||
|
|
||||||
VOID LOS_Schedule(VOID)
|
VOID LOS_Schedule(VOID)
|
||||||
{
|
{
|
||||||
if (g_taskScheduled && LOS_CHECK_SCHEDULE) {
|
if (OsCheckKernelRunning()) {
|
||||||
ArchTaskSchedule();
|
ArchTaskSchedule();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,7 +75,7 @@
|
||||||
* @ingroup los_task
|
* @ingroup los_task
|
||||||
* @brief check task id's validation
|
* @brief check task id's validation
|
||||||
*/
|
*/
|
||||||
#define OS_TASK_ID_CHECK(taskID) LOS_ASSERT_COND(OS_TSK_GET_INDEX(taskID) < g_taskMaxNum)
|
#define OS_TASK_ID_CHECK(taskID) (OS_TSK_GET_INDEX(taskID) < g_taskMaxNum)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ingroup los_task
|
* @ingroup los_task
|
||||||
|
@ -409,6 +409,7 @@ LITE_OS_SEC_TEXT_INIT UINT32 OsTaskInit(VOID)
|
||||||
UINT32 size;
|
UINT32 size;
|
||||||
UINT32 index;
|
UINT32 index;
|
||||||
|
|
||||||
|
g_taskMaxNum = LOSCFG_BASE_CORE_TSK_LIMIT + 1; /* Reserved 1 for IDLE */
|
||||||
size = (g_taskMaxNum + 1) * sizeof(LosTaskCB);
|
size = (g_taskMaxNum + 1) * sizeof(LosTaskCB);
|
||||||
g_taskCBArray = (LosTaskCB *)LOS_MemAlloc(m_aucSysMem0, size);
|
g_taskCBArray = (LosTaskCB *)LOS_MemAlloc(m_aucSysMem0, size);
|
||||||
if (g_taskCBArray == NULL) {
|
if (g_taskCBArray == NULL) {
|
||||||
|
@ -856,7 +857,7 @@ LITE_OS_SEC_TEXT_INIT UINT32 LOS_TaskResume(UINT32 taskID)
|
||||||
UINT32 retErr = OS_ERROR;
|
UINT32 retErr = OS_ERROR;
|
||||||
BOOL needSched = FALSE;
|
BOOL needSched = FALSE;
|
||||||
|
|
||||||
if (taskID > LOSCFG_BASE_CORE_TSK_LIMIT) {
|
if (!OS_TASK_ID_CHECK(taskID)) {
|
||||||
return LOS_ERRNO_TSK_ID_INVALID;
|
return LOS_ERRNO_TSK_ID_INVALID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue