Skip to content

Commit 1c5cc8c

Browse files
committed
os/kernel: Update sysdbg availabe in current TizenRT
- Updated sysdbg structures to support multiple CPUs by adding arrays for scheduling and IRQ history. - Modified sysdbg_print to display task and IRQ scheduling history per CPU. - Updated sysdbg to use spin_lock_irqsave() instead of enter_critical_section(), because enter_critical_section makes recursive call. - enter_critical_section() -> up_cpu_paused_restore() -> up_restoretask() -> save_task_scheduling_status() -> enter_critical_section() - spin_lock_irqsave blocks interrupt and provides SMP-safe protection for sysdbg_struct without the enter_critical_section() - This patch makes sysdbg available in current TizenRT system. [Configuration Example] ``` CONFIG_DEBUG_SYSTEM=y CONFIG_IRQ_SCHED_HISTORY=y CONFIG_SEMAPHORE_HISTORY=y CONFIG_TASK_SCHED_HISTORY=y CONFIG_DEBUG_IRQ_MAX_COUNT=0x20 CONFIG_DEBUG_SEM_MAX_COUNT=0x20 CONFIG_DEBUG_TASK_MAX_COUNT=0x20 CONFIG_DEBUG_SYSTEM_APP=y ``` [Log Example] ``` TASH>>sysdbg help TASH>>show_usage: USAGE: show_usage: sysdbg enable_monitor /* Allocates memory and enables monitoring */ show_usage: sysdbg disable_monitor /* Frees the memory and disables monitoring */ show_usage: sysdbg read /* Reads /dev/sysdbg to view debug information*/ show_usage: sysdbg max_task_count <count> /* Enter max_task_count */ show_usage: sysdbg max_irq_count <count> /* Enter max_irq_count */ show_usage: sysdbg max_sem_count <count> /* Enter max_sem_count */ show_usage: sysdbg data_abort /* Simulate data abort */ show_usage: sysdbg prefetch_abort /* Simulate Prefetch abort */ show_usage: sysdbg undef_abort /* Simulate Undefined abort */ show_usage: sysdbg usr_assert /* Simulate User Assert */ show_usage: sysdbg dump_stack /* Dumps the current task stack */ show_usage: sysdbg dump_allstack /* Dumps the stack of all tasks */ show_usage: sysdbg help /* Display the help */ TASH>>sysdbg read TASH>>sysdbg_print: Displaying the TASK SCHEDULING HISTORY for 16 count sysdbg_print: ***************************************************************************** sysdbg_print: * CPU TASK_SCHEDTIME TASK_NAME PID PRIORITY TCB sysdbg_print: ***************************************************************************** sysdbg_print: ******************************* CPU0 History ******************************* sysdbg_print: 0 8828 sysdbg 29 100 601356C0 sysdbg_print: 0 8828 sysdbg 29 100 601356C0 sysdbg_print: 0 8828 tash 20 125 601347D0 sysdbg_print: 0 8801 CPU0 IDLE 0 0 6010BF94 sysdbg_print: 0 8801 CPU0 IDLE 0 0 6010BF94 sysdbg_print: 0 8801 LWIP_TCP/IP 12 105 601D46F0 sysdbg_print: 0 8701 CPU0 IDLE 0 0 6010BF94 sysdbg_print: 0 8701 CPU0 IDLE 0 0 6010BF94 sysdbg_print: 0 8701 LWIP_TCP/IP 12 105 601D46F0 sysdbg_print: 0 8694 CPU0 IDLE 0 0 6010BF94 sysdbg_print: 0 8694 CPU0 IDLE 0 0 6010BF94 sysdbg_print: 0 8694 tash 20 125 601347D0 sysdbg_print: 0 8603 CPU0 IDLE 0 0 6010BF94 sysdbg_print: 0 8603 CPU0 IDLE 0 0 6010BF94 sysdbg_print: 0 8603 tash 20 125 601347D0 sysdbg_print: 0 8601 CPU0 IDLE 0 0 6010BF94 sysdbg_print: ******************************* CPU1 History ******************************* sysdbg_print: 1 1615 CPU1 IDLE 1 0 6010C098 sysdbg_print: 1 1615 CPU1 IDLE 1 0 6010C098 sysdbg_print: 1 1612 binary_manager 15 203 601DB550 sysdbg_print: 1 1612 LWIP_TCP/IP 12 105 601D46F0 sysdbg_print: 1 1612 LWIP_TCP/IP 12 105 601D46F0 sysdbg_print: 1 1611 log_dump 14 200 601D7E10 sysdbg_print: 1 1611 LWIP_TCP/IP 12 105 601D46F0 sysdbg_print: 1 1611 CPU1 IDLE 1 0 6010C098 sysdbg_print: 1 1589 CPU1 IDLE 1 0 6010C098 sysdbg_print: 1 1587 CPU1 IDLE 1 0 6010C098 sysdbg_print: 1 1587 CPU1 IDLE 1 0 6010C098 sysdbg_print: 1 1587 hpwork 2 201 60130550 sysdbg_print: 1 1587 hpwork 2 201 60130550 sysdbg_print: 1 1587 CPU1 IDLE 1 0 6010C098 sysdbg_print: 1 1587 CPU1 IDLE 1 0 6010C098 sysdbg_print: 1 1587 NDP_health_chec 11 100 601C1E20 sysdbg_print: Displaying the IRQ SCHEDULING HISTORY for 16 count sysdbg_print: ***************************************************************************** sysdbg_print: * CPU IRQ_TIME IRQ_NUMBER ISR_ADDRESS sysdbg_print: ***************************************************************************** sysdbg_print: ******************************* CPU0 History ******************************* sysdbg_print: 0 8828 40 E00B0E9 sysdbg_print: 0 8828 40 E00B0E9 sysdbg_print: 0 8828 40 E00B0E9 sysdbg_print: 0 8827 27 E02F12D sysdbg_print: 0 8826 27 E02F12D sysdbg_print: 0 8825 27 E02F12D sysdbg_print: 0 8824 27 E02F12D sysdbg_print: 0 8823 27 E02F12D sysdbg_print: 0 8822 27 E02F12D sysdbg_print: 0 8821 27 E02F12D sysdbg_print: 0 8820 27 E02F12D sysdbg_print: 0 8819 27 E02F12D sysdbg_print: 0 8818 27 E02F12D sysdbg_print: 0 8817 27 E02F12D sysdbg_print: 0 8816 27 E02F12D sysdbg_print: 0 8815 27 E02F12D sysdbg_print: ***************************************************************************** sysdbg_print: 1 1612 2 60102271 sysdbg_print: 1 1611 2 60102271 sysdbg_print: 1 1611 2 60102271 sysdbg_print: 1 1611 2 60102271 sysdbg_print: 1 1589 2 60102271 sysdbg_print: 1 1587 2 60102271 sysdbg_print: 1 1587 2 60102271 sysdbg_print: 1 1503 2 60102271 sysdbg_print: 1 1503 2 60102271 sysdbg_print: 1 1501 2 60102271 sysdbg_print: 1 1501 2 60102271 sysdbg_print: 1 1499 2 60102271 sysdbg_print: 1 1497 2 60102271 sysdbg_print: 1 1495 2 60102271 sysdbg_print: 1 1493 2 60102271 sysdbg_print: 1 1491 2 60102271 sysdbg_print: Displaying the SEMAPHORE HISTORY for 16 count sysdbg_print: IN:INIT AQ:ACQUIRED RL:RELEASED WT:WAITING DR:DESTROY UN:UNKNOWN sysdbg_print: PID : -1 indicates that, it's a ISR, for ISR, TCB field gives reference of ISR sysdbg_print: ***************************************************************************** sysdbg_print: * SEMAPHORE_TIME STATUS TASK_NAME SEMAPHORE TCB PID sysdbg_print: ***************************************************************************** sysdbg_print: 8828 RL sysdbg 601E3B60 601356C0 29 sysdbg_print: 8828 AQ sysdbg 601E3B60 601356C0 29 sysdbg_print: 8828 RL sysdbg 60121760 601356C0 29 sysdbg_print: 8828 AQ sysdbg 60121760 601356C0 29 sysdbg_print: 8828 WT tash 63A87B6C 601347D0 20 sysdbg_print: 8828 RL tash 60103218 601347D0 20 sysdbg_print: 8828 RL tash 6010323C 601347D0 20 sysdbg_print: 8828 AQ tash 6010323C 601347D0 20 sysdbg_print: 8828 RL tash 60103224 601347D0 20 sysdbg_print: 8828 AQ tash 60103224 601347D0 20 sysdbg_print: 8828 AQ tash 60103218 601347D0 20 sysdbg_print: 8828 IN tash 63A87B6C 601347D0 20 sysdbg_print: 8828 RL tash 601166E8 601347D0 20 sysdbg_print: 8828 AQ tash 601166E8 601347D0 20 sysdbg_print: 8828 RL tash 63A80020 601347D0 20 sysdbg_print: 8828 AQ tash 63A80020 601347D0 20 ``` Signed-off-by: seokhun-eom <seokhun.eom@samsung.com>
1 parent 965237a commit 1c5cc8c

File tree

2 files changed

+302
-85
lines changed

2 files changed

+302
-85
lines changed

os/include/tinyara/debug/sysdbg.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,13 +102,23 @@ typedef enum sem_status_s sem_status_t;
102102

103103
struct sysdbg_s {
104104
#ifdef CONFIG_TASK_SCHED_HISTORY
105+
#ifdef CONFIG_SMP
106+
sched_history_t *sched[CONFIG_SMP_NCPUS];
107+
int task_lastindex[CONFIG_SMP_NCPUS];
108+
#else
105109
sched_history_t *sched;
106110
int task_lastindex;
107111
#endif
112+
#endif
108113
#ifdef CONFIG_IRQ_SCHED_HISTORY
114+
#ifdef CONFIG_SMP
115+
irq_history_t *irq[CONFIG_SMP_NCPUS];
116+
int irq_lastindex[CONFIG_SMP_NCPUS];
117+
#else
109118
irq_history_t *irq;
110119
int irq_lastindex;
111120
#endif
121+
#endif
112122
#ifdef CONFIG_SEMAPHORE_HISTORY
113123
sem_history_t *sem_log;
114124
int sem_lastindex;

0 commit comments

Comments
 (0)