diff --git a/libs/libc/misc/Kconfig b/libs/libc/misc/Kconfig index 777e49b9735..2683c763185 100644 --- a/libs/libc/misc/Kconfig +++ b/libs/libc/misc/Kconfig @@ -164,3 +164,11 @@ config LIBC_MUTEX_BACKTRACE ---help--- Config the depth of backtrace, dumping the backtrace of thread which last acquired the mutex. Disable mutex backtrace by 0. + +config LIBC_MUTEX_BACKTRACE_SKIP + int "Number of initial addresses to skip in mutex backtrace" + depends on LIBC_MUTEX_BACKTRACE > 0 + default 2 + ---help--- + Configure how many initial addresses to skip when dumping mutex backtraces. + When generating a backtrace, the first skip addresses will be skipped. diff --git a/libs/libc/misc/lib_mutex.c b/libs/libc/misc/lib_mutex.c index bdc89a2d434..0152f984e48 100644 --- a/libs/libc/misc/lib_mutex.c +++ b/libs/libc/misc/lib_mutex.c @@ -53,8 +53,9 @@ void nxmutex_add_backtrace(FAR mutex_t *mutex) { int n; - n = sched_backtrace(nxmutex_get_holder(&mutex), mutex->backtrace, - CONFIG_LIBC_MUTEX_BACKTRACE, 0); + n = sched_backtrace(nxmutex_get_holder(mutex), mutex->backtrace, + CONFIG_LIBC_MUTEX_BACKTRACE, + CONFIG_LIBC_MUTEX_BACKTRACE_SKIP); if (n < CONFIG_LIBC_MUTEX_BACKTRACE) { mutex->backtrace[n] = NULL;