mirror of
https://github.com/espressif/esp-idf.git
synced 2025-07-30 10:47:19 +02:00
Merge branch 'freertos_sysview_deadlock_fix_v5.5' into 'release/v5.5'
fix(app_trace): prevent deadlock on sysview start (v5.5) See merge request espressif/esp-idf!39136
This commit is contained in:
@ -108,7 +108,7 @@ static void _cbSendTaskList(void) {
|
|||||||
* Called from SystemView when asked by the host, returns the
|
* Called from SystemView when asked by the host, returns the
|
||||||
* current system time in micro seconds.
|
* current system time in micro seconds.
|
||||||
*/
|
*/
|
||||||
static U64 _cbGetTime(void) {
|
__attribute__((unused)) static U64 _cbGetTime(void) {
|
||||||
U64 Time;
|
U64 Time;
|
||||||
|
|
||||||
Time = xTaskGetTickCountFromISR();
|
Time = xTaskGetTickCountFromISR();
|
||||||
@ -260,7 +260,10 @@ void SYSVIEW_SendTaskInfo(U32 TaskID, const char* sName, unsigned Prio, U32 Stac
|
|||||||
*/
|
*/
|
||||||
// Callbacks provided to SYSTEMVIEW by FreeRTOS
|
// Callbacks provided to SYSTEMVIEW by FreeRTOS
|
||||||
const SEGGER_SYSVIEW_OS_API SYSVIEW_X_OS_TraceAPI = {
|
const SEGGER_SYSVIEW_OS_API SYSVIEW_X_OS_TraceAPI = {
|
||||||
_cbGetTime,
|
/* Callback _cbGetTime locks xKernelLock inside xTaskGetTickCountFromISR, this can cause deadlock on multi-core.
|
||||||
|
To prevent deadlock, always lock xKernelLock before s_sys_view_lock. Omitting the callback here results in sending
|
||||||
|
SYSVIEW_EVTID_SYSTIME_CYCLES events instead of SYSVIEW_EVTID_SYSTIME_US */
|
||||||
|
NULL,
|
||||||
_cbSendTaskList,
|
_cbSendTaskList,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user