From d4b3754884f62845f51a1c3cbeb1229a7cf167ed Mon Sep 17 00:00:00 2001 From: dulibo1 Date: Wed, 20 Mar 2024 14:31:57 +0800 Subject: [PATCH 01/21] noteram:overflow may discard all the trace message noteram_add may cause head = tail when remain == NOTE_ALIGN(notelen) log: nsh_main-14 [0] 2.132127493: tracing_mark_write: B|14|trace dump -c nsh_main-14 [0] 2.143322780: tracing_mark_write: E|14|trace dump -c nsh_main-14 [0] 2.513023895: tracing_mark_write: B|14|trace dump -c nsh_main-14 [0] 2.524060048: tracing_mark_write: E|14|trace dump -c nsh_main-14 [0] 2.897055341: tracing_mark_write: B|14|trace dump -c ap> trace dump -c nsh_main-14 [0] 3.270037241: tracing_mark_write: B|14|trace dump -c ap> trace dump -c Signed-off-by: dulibo1 --- drivers/note/noteram_driver.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/note/noteram_driver.c b/drivers/note/noteram_driver.c index 22aa6ac6d3709..f6db8ee064716 100644 --- a/drivers/note/noteram_driver.c +++ b/drivers/note/noteram_driver.c @@ -567,7 +567,7 @@ static void noteram_add(FAR struct note_driver_s *driver, DEBUGASSERT(note != NULL && notelen < drv->ni_bufsize); remain = drv->ni_bufsize - noteram_length(drv); - if (remain < notelen) + if (remain <= NOTE_ALIGN(notelen)) { if (drv->ni_overwrite == NOTERAM_MODE_OVERWRITE_DISABLE) { @@ -586,7 +586,7 @@ static void noteram_add(FAR struct note_driver_s *driver, noteram_remove(drv); remain = drv->ni_bufsize - noteram_length(drv); } - while (remain < notelen); + while (remain <= NOTE_ALIGN(notelen)); } head = drv->ni_head; From 6a1aaf4fd9f0a977c5898b4f3a3f0f0202c822ae Mon Sep 17 00:00:00 2001 From: yinshengkai Date: Mon, 13 Nov 2023 12:11:23 +0800 Subject: [PATCH 02/21] note: add ringbuffer aligned access handle Fix ubsan warning that writes need to be aligned to memory boundaries when writing data Signed-off-by: yinshengkai --- drivers/note/note_driver.c | 4 ++-- drivers/note/noteram_driver.c | 6 +++--- include/nuttx/sched_note.h | 3 +++ 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/drivers/note/note_driver.c b/drivers/note/note_driver.c index 70c8c2dd035e7..a710c4ee0fb83 100644 --- a/drivers/note/note_driver.c +++ b/drivers/note/note_driver.c @@ -585,10 +585,10 @@ static void note_record_taskname(pid_t pid, FAR const char *name) ti = (FAR struct note_taskname_info_s *) &g_note_taskname.buffer[g_note_taskname.head]; - ti->size = tilen; + ti->size = NOTE_ALIGN(tilen); ti->pid = pid; strlcpy(ti->name, name, namelen + 1); - g_note_taskname.head += tilen; + g_note_taskname.head += ti->size; } #endif diff --git a/drivers/note/noteram_driver.c b/drivers/note/noteram_driver.c index f6db8ee064716..edd84d84a9241 100644 --- a/drivers/note/noteram_driver.c +++ b/drivers/note/noteram_driver.c @@ -295,7 +295,7 @@ static void noteram_remove(FAR struct noteram_driver_s *drv) /* Get the length of the note at the tail index */ - length = drv->ni_buffer[tail]; + length = NOTE_ALIGN(drv->ni_buffer[tail]); DEBUGASSERT(length <= noteram_length(drv)); /* Increment the tail index to remove the entire note from the circular @@ -387,7 +387,7 @@ static ssize_t noteram_get(FAR struct noteram_driver_s *drv, remaining--; } - drv->ni_read = read; + drv->ni_read = NOTE_ALIGN(read); return notelen; } @@ -594,7 +594,7 @@ static void noteram_add(FAR struct note_driver_s *driver, space = space < notelen ? space : notelen; memcpy(drv->ni_buffer + head, note, space); memcpy(drv->ni_buffer, buf + space, notelen - space); - drv->ni_head = noteram_next(drv, head, notelen); + drv->ni_head = noteram_next(drv, head, NOTE_ALIGN(notelen)); spin_unlock_irqrestore_wo_note(&drv->lock, flags); } diff --git a/include/nuttx/sched_note.h b/include/nuttx/sched_note.h index eb0ce3d8040b4..60063f2eace53 100644 --- a/include/nuttx/sched_note.h +++ b/include/nuttx/sched_note.h @@ -51,6 +51,9 @@ * Pre-processor Definitions ****************************************************************************/ +#define NOTE_ALIGN(a) (((a) + sizeof(uintptr_t) - 1) & \ + ~(sizeof(uintptr_t) - 1)) + /* Provide defaults for some configuration settings (could be undefined with * old configuration files) */ From 1247743029a46b3cdf1da52a2db61e74370a6e5c Mon Sep 17 00:00:00 2001 From: dulibo1 Date: Wed, 20 Mar 2024 14:40:33 +0800 Subject: [PATCH 03/21] noteram:read noteram may cause crash noteram_get may cause _read = ni_bufsize cause assert crash [ 1493.627200] [79] [ EMERG] [ap] _assert: Assertion failed : at file: note/noteram_driver.c:370 task: trace process: trace 0x446f238a [ 1493.627400] [79] [ EMERG] [ap] backtrace: [ 1493.627500] [79] [ EMERG] [ap] [79] [<0xf7933c9d>] _fini+0xae0720b9/0xb673e41b [ 1493.628400] [79] [ EMERG] [ap] [79] [<0x498b1b0c>] host_backtrace+0x42/0x72 [ 1493.629300] [79] [ EMERG] [ap] [79] [<0x48bef3d1>] up_backtrace+0x127/0x2d2 [ 1493.630200] [79] [ EMERG] [ap] [79] [<0x48b86bed>] sched_backtrace+0x71/0x8a [ 1493.631100] [79] [ EMERG] [ap] [79] [<0x44676273>] sched_dumpstack+0xed/0x486 [ 1493.631600] [79] [ EMERG] [ap] [79] [<0x445c61ff>] _assert+0x9f0/0xb38 [ 1493.632200] [79] [ EMERG] [ap] [79] [<0x4420dd07>] __assert+0x3f/0x4c [ 1493.632800] [79] [ EMERG] [ap] [79] [<0x44151648>] noteram_get+0x1b0/0x5fe [ 1493.633600] [79] [ EMERG] [ap] [79] [<0x44152370>] noteram_read+0x331/0x4f7 [ 1493.634200] [79] [ EMERG] [ap] [79] [<0x444c66f9>] file_read+0x38b/0x3c0 [ 1493.634700] [79] [ EMERG] [ap] [79] [<0x444c6840>] nx_read+0x112/0x170 [ 1493.635300] [79] [ EMERG] [ap] [79] [<0x444c68e5>] NXread+0x47/0xfa [ 1493.635800] [79] [ EMERG] [ap] [79] [<0x446f2c70>] trace_dump+0x148/0x2f4 [ 1493.636400] [79] [ EMERG] [ap] [79] [<0x446f110b>] trace_cmd_dump+0x41b/0x4b9 [ 1493.636900] [79] [ EMERG] [ap] [79] [<0x446f2723>] trace_main+0x399/0x6e2 [ 1493.637500] [79] [ EMERG] [ap] [79] [<0x44217fc9>] nxtask_startup+0x69/0x7c [ 1493.638000] [79] [ EMERG] [ap] [79] [<0x440f9b78>] nxtask_start+0x8a5/0x8b8 Signed-off-by: dulibo1 --- drivers/note/noteram_driver.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/note/noteram_driver.c b/drivers/note/noteram_driver.c index edd84d84a9241..13fcad98d725a 100644 --- a/drivers/note/noteram_driver.c +++ b/drivers/note/noteram_driver.c @@ -365,7 +365,7 @@ static ssize_t noteram_get(FAR struct noteram_driver_s *drv, { /* Skip the large note so that we do not get constipated. */ - drv->ni_read = noteram_next(drv, read, notelen); + drv->ni_read = noteram_next(drv, read, NOTE_ALIGN(notelen)); /* and return an error */ @@ -387,7 +387,7 @@ static ssize_t noteram_get(FAR struct noteram_driver_s *drv, remaining--; } - drv->ni_read = NOTE_ALIGN(read); + drv->ni_read = noteram_next(drv, drv->ni_read, NOTE_ALIGN(notelen)); return notelen; } From cfbd57a9e602cfebcfc4e8f96a6976df0a8d297e Mon Sep 17 00:00:00 2001 From: dulibo1 Date: Mon, 25 Mar 2024 17:18:45 +0800 Subject: [PATCH 04/21] ramlog:flush should reset the tail of the reader Signed-off-by: dulibo1 --- drivers/syslog/ramlog.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/drivers/syslog/ramlog.c b/drivers/syslog/ramlog.c index ba9b3ff849983..dfb0b7c1d53f8 100644 --- a/drivers/syslog/ramlog.c +++ b/drivers/syslog/ramlog.c @@ -234,6 +234,21 @@ static void ramlog_pollnotify(FAR struct ramlog_dev_s *priv) } } +/**************************************************************************** + * Name: ramlog_flush + ****************************************************************************/ + +static void ramlog_bufferflush(FAR struct ramlog_dev_s *priv) +{ + FAR struct ramlog_user_s *upriv; + + priv->rl_header->rl_head = 0; + list_for_every_entry(&priv->rl_list, upriv, struct ramlog_user_s, rl_node) + { + upriv->rl_tail = 0; + } +} + /**************************************************************************** * Name: ramlog_copybuf ****************************************************************************/ @@ -535,7 +550,7 @@ static int ramlog_file_ioctl(FAR struct file *filep, int cmd, upriv->rl_threashold = (uint32_t)arg; break; case BIOC_FLUSH: - priv->rl_header->rl_head = 0; + ramlog_bufferflush(priv); break; default: ret = -ENOTTY; From 1e98e7a7cf15bf1d21729d0ffd28e99e3ed14f10 Mon Sep 17 00:00:00 2001 From: xuxingliang Date: Wed, 28 Aug 2024 16:28:46 +0800 Subject: [PATCH 05/21] task: use get_task_name where possible Signed-off-by: xuxingliang --- arch/arm/include/cxd56xx/crashdump.h | 24 ++- arch/risc-v/src/bl602/bl602_start.c | 13 +- arch/risc-v/src/common/riscv_exception.c | 7 +- arch/xtensa/src/common/xtensa_assert.c | 13 +- binfmt/libelf/libelf_coredump.c | 4 +- .../arm/cxd56xx/common/src/cxd56_crashdump.c | 4 +- .../stm32/nucleo-f429zi/src/stm32_bbsram.c | 26 ++-- .../arm/stm32f7/nucleo-144/src/stm32_bbsram.c | 26 ++-- .../rx65n/rx65n-grrose/src/rx65n_sbram.c | 26 ++-- .../rx65n/rx65n-rsk2mb/src/rx65n_sbram.c | 26 ++-- drivers/note/note_driver.c | 1 - drivers/note/notelog_driver.c | 140 +++--------------- drivers/note/noteram_driver.c | 12 +- drivers/segger/note_sysview.c | 6 +- drivers/serial/serial.c | 4 +- drivers/syslog/Kconfig | 1 + drivers/syslog/vsyslog.c | 8 +- fs/procfs/fs_procfsproc.c | 12 +- include/nuttx/sched.h | 8 + libs/libc/gdbstub/lib_gdbstub.c | 10 +- sched/misc/assert.c | 18 +-- sched/sched/sched_dumponexit.c | 4 +- sched/task/task_activate.c | 6 +- sched/task/task_exit.c | 6 +- 24 files changed, 118 insertions(+), 287 deletions(-) diff --git a/arch/arm/include/cxd56xx/crashdump.h b/arch/arm/include/cxd56xx/crashdump.h index 72dd29644b3fc..6bb852aa9d5c6 100644 --- a/arch/arm/include/cxd56xx/crashdump.h +++ b/arch/arm/include/cxd56xx/crashdump.h @@ -100,19 +100,17 @@ typedef enum typedef struct { - struct timespec ts; /* timestamp */ - fault_flags_t flags; /* What is in the dump */ - uintptr_t current_regs; /* Used to validate the dump */ - int lineno; /* __LINE__ to up_assert */ - pid_t pid; /* Process ID */ - uint32_t regs[XCPTCONTEXT_REGS]; /* Interrupt register save area */ - crash_stack_t stacks; /* Stack info */ -#if CONFIG_TASK_NAME_SIZE > 0 - char name[CONFIG_TASK_NAME_SIZE + 1]; /* Task name (with NULL - * terminator) */ -#endif - char filename[MAX_FILE_PATH_LENGTH]; /* the Last of chars in - * __FILE__ to up_assert */ + struct timespec ts; /* timestamp */ + fault_flags_t flags; /* What is in the dump */ + uintptr_t current_regs; /* Used to validate the dump */ + int lineno; /* __LINE__ to up_assert */ + pid_t pid; /* Process ID */ + uint32_t regs[XCPTCONTEXT_REGS]; /* Interrupt register save area */ + crash_stack_t stacks; /* Stack info */ + char name[CONFIG_TASK_NAME_SIZE + 1]; /* Task name (with NULL + * terminator) */ + char filename[MAX_FILE_PATH_LENGTH]; /* the Last of chars in + * __FILE__ to up_assert */ } info_t; typedef struct diff --git a/arch/risc-v/src/bl602/bl602_start.c b/arch/risc-v/src/bl602/bl602_start.c index 104a72bc2f56f..c3ecc556afe89 100644 --- a/arch/risc-v/src/bl602/bl602_start.c +++ b/arch/risc-v/src/bl602/bl602_start.c @@ -99,28 +99,21 @@ __cyg_profile_func_enter(void *this_fn, void *call_site) if (sp < stack_base) { -#if CONFIG_TASK_NAME_SIZE > 0 struct tcb_s *rtcb; -#endif + __asm volatile("csrc mstatus, 8"); __asm__("li s11, 0"); -#if CONFIG_TASK_NAME_SIZE > 0 /* get current task */ rtcb = running_task(); syslog(LOG_EMERG, "task %s stack overflow detected! base:0x%x >= sp:0x%x\n", - rtcb->name, - stack_base, - sp); -#else - syslog(LOG_EMERG, - "stack overflow detected! base:0x%x >= sp:0x%x\n", + get_task_name(rtcb), stack_base, sp); -#endif + /* PANIC(); */ while (1) diff --git a/arch/risc-v/src/common/riscv_exception.c b/arch/risc-v/src/common/riscv_exception.c index 1995f12ada22b..482bc8975f387 100644 --- a/arch/risc-v/src/common/riscv_exception.c +++ b/arch/risc-v/src/common/riscv_exception.c @@ -103,11 +103,8 @@ int riscv_exception(int mcause, void *regs, void *args) #ifdef CONFIG_ARCH_KERNEL_STACK if ((tcb->flags & TCB_FLAG_TTYPE_MASK) != TCB_FLAG_TTYPE_KERNEL) { -# if CONFIG_TASK_NAME_SIZE > 0 - _alert("Segmentation fault in PID %d: %s\n", tcb->pid, tcb->name); -# else - _alert("Segmentation fault in PID %d\n", tcb->pid); -# endif + _alert("Segmentation fault in PID %d: %s\n", + tcb->pid, get_task_name(tcb)); tcb->flags |= TCB_FLAG_FORCED_CANCEL; diff --git a/arch/xtensa/src/common/xtensa_assert.c b/arch/xtensa/src/common/xtensa_assert.c index 54dfebff2dd6a..0b51bd603ac20 100644 --- a/arch/xtensa/src/common/xtensa_assert.c +++ b/arch/xtensa/src/common/xtensa_assert.c @@ -75,11 +75,8 @@ void xtensa_panic(int xptcode, uint32_t *regs) syslog_flush(); -#if CONFIG_TASK_NAME_SIZE > 0 - _alert("Unhandled Exception %d task: %s\n", xptcode, running_task()->name); -#else - _alert("Unhandled Exception %d\n", xptcode); -#endif + _alert("Unhandled Exception %d task: %s\n", xptcode, + get_task_name(running_task())); PANIC_WITH_REGS("panic", regs); /* Should not return */ for (; ; ); @@ -177,12 +174,8 @@ void xtensa_user_panic(int exccause, uint32_t *regs) syslog_flush(); -#if CONFIG_TASK_NAME_SIZE > 0 _alert("User Exception: EXCCAUSE=%04x task: %s\n", - exccause, running_task()->name); -#else - _alert("User Exception: EXCCAUSE=%04x\n", exccause); -#endif + exccause, get_task_name(running_task())); PANIC_WITH_REGS("user panic", regs); /* Should not return */ for (; ; ); diff --git a/binfmt/libelf/libelf_coredump.c b/binfmt/libelf/libelf_coredump.c index 568654b3b5562..a37bbdeada00c 100644 --- a/binfmt/libelf/libelf_coredump.c +++ b/binfmt/libelf/libelf_coredump.c @@ -248,11 +248,11 @@ static void elf_emit_tcb_note(FAR struct elf_dumpinfo_s *cinfo, elf_emit(cinfo, &nhdr, sizeof(nhdr)); - strlcpy(name, tcb->name, sizeof(name)); + strlcpy(name, get_task_name(tcb), sizeof(name)); elf_emit(cinfo, name, sizeof(name)); info.pr_pid = tcb->pid; - strlcpy(info.pr_fname, tcb->name, sizeof(info.pr_fname)); + strlcpy(info.pr_fname, get_task_name(tcb), sizeof(info.pr_fname)); elf_emit(cinfo, &info, sizeof(info)); /* Fill Process status */ diff --git a/boards/arm/cxd56xx/common/src/cxd56_crashdump.c b/boards/arm/cxd56xx/common/src/cxd56_crashdump.c index c3c37a164c93d..38a0a70f313fc 100644 --- a/boards/arm/cxd56xx/common/src/cxd56_crashdump.c +++ b/boards/arm/cxd56xx/common/src/cxd56_crashdump.c @@ -149,9 +149,7 @@ void board_crashdump(uintptr_t sp, struct tcb_s *tcb, /* Save Context */ -#if CONFIG_TASK_NAME_SIZE > 0 - strlcpy(pdump->info.name, tcb->name, sizeof(pdump->info.name)); -#endif + strlcpy(pdump->info.name, get_task_name(tcb), sizeof(pdump->info.name)); pdump->info.pid = tcb->pid; diff --git a/boards/arm/stm32/nucleo-f429zi/src/stm32_bbsram.c b/boards/arm/stm32/nucleo-f429zi/src/stm32_bbsram.c index 9f4c643368f04..982dcca93927d 100644 --- a/boards/arm/stm32/nucleo-f429zi/src/stm32_bbsram.c +++ b/boards/arm/stm32/nucleo-f429zi/src/stm32_bbsram.c @@ -232,18 +232,16 @@ typedef enum typedef struct { - fault_flags_t flags; /* What is in the dump */ - uintptr_t current_regs; /* Used to validate the dump */ - int lineno; /* __LINE__ to up_assert */ - pid_t pid; /* Process ID */ - uint32_t regs[XCPTCONTEXT_REGS]; /* Interrupt register save area */ - stacks_t stacks; /* Stack info */ -#if CONFIG_TASK_NAME_SIZE > 0 - char name[CONFIG_TASK_NAME_SIZE + 1]; /* Task name (with NULL - * terminator) */ -#endif - char filename[MAX_FILE_PATH_LENGTH]; /* the Last of chars in - * __FILE__ to up_assert */ + fault_flags_t flags; /* What is in the dump */ + uintptr_t current_regs; /* Used to validate the dump */ + int lineno; /* __LINE__ to up_assert */ + pid_t pid; /* Process ID */ + uint32_t regs[XCPTCONTEXT_REGS]; /* Interrupt register save area */ + stack_t stacks; /* Stack info */ + char name[CONFIG_TASK_NAME_SIZE + 1]; /* Task name (with NULL + * terminator) */ + char filename[MAX_FILE_PATH_LENGTH]; /* the Last of chars in + * __FILE__ to up_assert */ } info_t; typedef struct @@ -420,9 +418,7 @@ void board_crashdump(uintptr_t sp, struct tcb_s *tcb, /* Save Context */ -#if CONFIG_TASK_NAME_SIZE > 0 - strlcpy(pdump->info.name, tcb->name, sizeof(pdump->info.name)); -#endif + strlcpy(pdump->info.name, get_task_name(tcb), sizeof(pdump->info.name)); pdump->info.pid = tcb->pid; diff --git a/boards/arm/stm32f7/nucleo-144/src/stm32_bbsram.c b/boards/arm/stm32f7/nucleo-144/src/stm32_bbsram.c index 9e11adaaa69be..be29fb27d85b0 100644 --- a/boards/arm/stm32f7/nucleo-144/src/stm32_bbsram.c +++ b/boards/arm/stm32f7/nucleo-144/src/stm32_bbsram.c @@ -232,18 +232,16 @@ typedef enum typedef struct { - fault_flags_t flags; /* What is in the dump */ - uintptr_t current_regs; /* Used to validate the dump */ - int lineno; /* __LINE__ to up_assert */ - int pid; /* Process ID */ - uint32_t regs[XCPTCONTEXT_REGS]; /* Interrupt register save area */ - stacks_t stacks; /* Stack info */ -#if CONFIG_TASK_NAME_SIZE > 0 - char name[CONFIG_TASK_NAME_SIZE + 1]; /* Task name (with NULL - * terminator) */ -#endif - char filename[MAX_FILE_PATH_LENGTH]; /* the Last of chars in - * __FILE__ to up_assert */ + fault_flags_t flags; /* What is in the dump */ + uintptr_t current_regs; /* Used to validate the dump */ + int lineno; /* __LINE__ to up_assert */ + int pid; /* Process ID */ + uint32_t regs[XCPTCONTEXT_REGS]; /* Interrupt register save area */ + stack_t stacks; /* Stack info */ + char name[CONFIG_TASK_NAME_SIZE + 1]; /* Task name (with NULL + * terminator) */ + char filename[MAX_FILE_PATH_LENGTH]; /* the Last of chars in + * __FILE__ to up_assert */ } info_t; typedef struct @@ -420,9 +418,7 @@ void board_crashdump(uintptr_t sp, struct tcb_s *tcb, /* Save Context */ -#if CONFIG_TASK_NAME_SIZE > 0 - strlcpy(pdump->info.name, tcb->name, sizeof(pdump->info.name)); -#endif + strlcpy(pdump->info.name, get_task_name(tcb), sizeof(pdump->info.name)); pdump->info.pid = tcb->pid; diff --git a/boards/renesas/rx65n/rx65n-grrose/src/rx65n_sbram.c b/boards/renesas/rx65n/rx65n-grrose/src/rx65n_sbram.c index 881c785040f5b..601e228567688 100644 --- a/boards/renesas/rx65n/rx65n-grrose/src/rx65n_sbram.c +++ b/boards/renesas/rx65n/rx65n-grrose/src/rx65n_sbram.c @@ -181,18 +181,16 @@ typedef enum typedef struct { - fault_flags_t flags; /* What is in the dump */ - uintptr_t current_regs; /* Used to validate the dump */ - int lineno; /* __LINE__ to up_assert */ - pid_t pid; /* Process ID */ - uint32_t regs[XCPTCONTEXT_REGS]; /* Interrupt register save area */ - stack_t stacks; /* Stack info */ -#if CONFIG_TASK_NAME_SIZE > 0 - char name[CONFIG_TASK_NAME_SIZE + 1]; /* Task name (with NULL - * terminator) */ -#endif - char filename[MAX_FILE_PATH_LENGTH]; /* the Last of chars in - * __FILE__ to up_assert */ + fault_flags_t flags; /* What is in the dump */ + uintptr_t current_regs; /* Used to validate the dump */ + int lineno; /* __LINE__ to up_assert */ + pid_t pid; /* Process ID */ + uint32_t regs[XCPTCONTEXT_REGS]; /* Interrupt register save area */ + stack_t stacks; /* Stack info */ + char name[CONFIG_TASK_NAME_SIZE + 1]; /* Task name (with NULL + * terminator) */ + char filename[MAX_FILE_PATH_LENGTH]; /* the Last of chars in + * __FILE__ to up_assert */ } info_t; struct fullcontext @@ -374,9 +372,7 @@ void board_crashdump(uintptr_t sp, struct tcb_s *tcb, /* Save Context */ -#if CONFIG_TASK_NAME_SIZE > 0 - strlcpy(pdump->info.name, tcb->name, sizeof(pdump->info.name)); -#endif + strlcpy(pdump->info.name, get_task_name(tcb), sizeof(pdump->info.name)); pdump->info.pid = tcb->pid; diff --git a/boards/renesas/rx65n/rx65n-rsk2mb/src/rx65n_sbram.c b/boards/renesas/rx65n/rx65n-rsk2mb/src/rx65n_sbram.c index f5918bb850ceb..1925632a4b220 100644 --- a/boards/renesas/rx65n/rx65n-rsk2mb/src/rx65n_sbram.c +++ b/boards/renesas/rx65n/rx65n-rsk2mb/src/rx65n_sbram.c @@ -181,18 +181,16 @@ typedef enum typedef struct { - fault_flags_t flags; /* What is in the dump */ - uintptr_t current_regs; /* Used to validate the dump */ - int lineno; /* __LINE__ to up_assert */ - pid_t pid; /* Process ID */ - uint32_t regs[XCPTCONTEXT_REGS]; /* Interrupt register save area */ - stack_t stacks; /* Stack info */ -#if CONFIG_TASK_NAME_SIZE > 0 - char name[CONFIG_TASK_NAME_SIZE + 1]; /* Task name (with NULL - * terminator) */ -#endif - char filename[MAX_FILE_PATH_LENGTH]; /* the Last of chars in - * __FILE__ to up_assert */ + fault_flags_t flags; /* What is in the dump */ + uintptr_t current_regs; /* Used to validate the dump */ + int lineno; /* __LINE__ to up_assert */ + pid_t pid; /* Process ID */ + uint32_t regs[XCPTCONTEXT_REGS]; /* Interrupt register save area */ + stack_t stacks; /* Stack info */ + char name[CONFIG_TASK_NAME_SIZE + 1]; /* Task name (with NULL + * terminator) */ + char filename[MAX_FILE_PATH_LENGTH]; /* the Last of chars in + * __FILE__ to up_assert */ } info_t; struct fullcontext @@ -372,9 +370,7 @@ void board_crashdump(uintptr_t sp, struct tcb_s *tcb, /* Save Context */ -#if CONFIG_TASK_NAME_SIZE > 0 - strlcpy(pdump->info.name, tcb->name, sizeof(pdump->info.name)); -#endif + strlcpy(pdump->info.name, get_task_name(tcb), sizeof(pdump->info.name)); pdump->info.pid = tcb->pid; diff --git a/drivers/note/note_driver.c b/drivers/note/note_driver.c index a710c4ee0fb83..cee07d3b9a79b 100644 --- a/drivers/note/note_driver.c +++ b/drivers/note/note_driver.c @@ -2007,4 +2007,3 @@ int note_driver_register(FAR struct note_driver_s *driver) return -ENOMEM; } - diff --git a/drivers/note/notelog_driver.c b/drivers/note/notelog_driver.c index e311e5ec63026..ccce11aee0d7a 100644 --- a/drivers/note/notelog_driver.c +++ b/drivers/note/notelog_driver.c @@ -149,21 +149,11 @@ static void notelog_start(FAR struct note_driver_s *drv, FAR struct tcb_s *tcb) { #ifdef CONFIG_SMP -#if CONFIG_TASK_NAME_SIZE > 0 syslog(LOG_INFO, "CPU%d: Start %s, TCB@%p, state=%d\n", - tcb->cpu, tcb->name, tcb, tcb->task_state); + tcb->cpu, get_task_name(tcb), tcb, tcb->task_state); #else - syslog(LOG_INFO, "CPU%d: Start TCB@%p, state=%d\n" - tcb->cpu, tcb, tcb->task_state); -#endif -#else -#if CONFIG_TASK_NAME_SIZE > 0 syslog(LOG_INFO, "Start %s, TCB@%p, state=%d\n", - tcb->name, tcb, tcb->task_state); -#else - syslog(LOG_INFO, "Start TCB@%p, state=%d\n", - tcb, tcb->task_state); -#endif + get_task_name(tcb), tcb, tcb->task_state); #endif } @@ -171,21 +161,11 @@ static void notelog_stop(FAR struct note_driver_s *drv, FAR struct tcb_s *tcb) { #ifdef CONFIG_SMP -#if CONFIG_TASK_NAME_SIZE > 0 syslog(LOG_INFO, "CPU%d: Stop %s, TCB@%p, state=%d\n", - tcb->cpu, tcb->name, tcb, tcb->task_state); -#else - syslog(LOG_INFO, "CPU%d: Stop TCB@%p, state=%d\n", - tcb->cpu, tcb, tcb->task_state); -#endif + tcb->cpu, get_task_name(tcb), tcb, tcb->task_state); #else -#if CONFIG_TASK_NAME_SIZE > 0 syslog(LOG_INFO, "Stop %s, TCB@%p, state=%d\n", - tcb->name, tcb, tcb->task_state); -#else - syslog(LOG_INFO, "Stop TCB@%p, state=%d\n", - tcb, tcb->task_state); -#endif + get_task_name(tcb), tcb, tcb->task_state); #endif } @@ -194,21 +174,11 @@ static void notelog_suspend(FAR struct note_driver_s *drv, FAR struct tcb_s *tcb) { #ifdef CONFIG_SMP -#if CONFIG_TASK_NAME_SIZE > 0 syslog(LOG_INFO, "CPU%d: Suspend %s, TCB@%p, state=%d\n", - tcb->cpu, tcb->name, tcb, tcb->task_state); -#else - syslog(LOG_INFO, "CPU%d: Suspend TCB@%p, state=%d\n", - tcb->cpu, tcb, tcb->task_state); -#endif + tcb->cpu, get_task_name(tcb), tcb, tcb->task_state); #else -#if CONFIG_TASK_NAME_SIZE > 0 syslog(LOG_INFO, "Suspend %s, TCB@%p, state=%d\n", - tcb->name, tcb, tcb->task_state); -#else - syslog(LOG_INFO, "Suspend TCB@%p, state=%d\n", - tcb, tcb->task_state); -#endif + get_task_name(tcb), tcb, tcb->task_state); #endif } @@ -216,21 +186,11 @@ static void notelog_resume(FAR struct note_driver_s *drv, FAR struct tcb_s *tcb) { #ifdef CONFIG_SMP -#if CONFIG_TASK_NAME_SIZE > 0 syslog(LOG_INFO, "CPU%d: Resume %s, TCB@%p, state=%d\n", - tcb->cpu, tcb->name, tcb, tcb->task_state); + tcb->cpu, get_task_name(tcb), tcb, tcb->task_state); #else - syslog(LOG_INFO, "CPU%d: Resume TCB@%p, state=%d\n", - tcb->cpu, tcb, tcb->task_state); -#endif -#else -#if CONFIG_TASK_NAME_SIZE > 0 syslog(LOG_INFO, "Resume %s, TCB@%p, state=%d\n", - tcb->name, tcb, tcb->task_state); -#else - syslog(LOG_INFO, "Resume TCB@%p, state=%d\n", - tcb, tcb->task_state); -#endif + get_task_name(tcb), tcb, tcb->task_state); #endif } #endif @@ -239,74 +199,44 @@ static void notelog_resume(FAR struct note_driver_s *drv, static void notelog_cpu_start(FAR struct note_driver_s *drv, FAR struct tcb_s *tcb, int cpu) { -#if CONFIG_TASK_NAME_SIZE > 0 syslog(LOG_INFO, "CPU%d: Task %s TCB@%p CPU%d START\n", - tcb->cpu, tcb->name, tcb, cpu); -#else - syslog(LOG_INFO, "CPU%d: TCB@%p CPU%d START\n", - tcb->cpu, tcb, cpu); -#endif + tcb->cpu, get_task_name(tcb), tcb, cpu); } static void notelog_cpu_started(FAR struct note_driver_s *drv, FAR struct tcb_s *tcb) { -#if CONFIG_TASK_NAME_SIZE > 0 syslog(LOG_INFO, "CPU%d: Task %s TCB@%p CPU%d STARTED\n", - tcb->cpu, tcb->name, tcb, tcb->cpu); -#else - syslog(LOG_INFO, "CPU%d: TCB@%p CPU%d STARTED\n", - tcb->cpu, tcb, tcb->cpu); -#endif + tcb->cpu, get_task_name(tcb), tcb, tcb->cpu); } #ifdef CONFIG_SCHED_INSTRUMENTATION_SWITCH static void notelog_cpu_pause(FAR struct note_driver_s *drv, FAR struct tcb_s *tcb, int cpu) { -#if CONFIG_TASK_NAME_SIZE > 0 syslog(LOG_INFO, "CPU%d: Task %s TCB@%p CPU%d PAUSE\n", - tcb->cpu, tcb->name, tcb, cpu); -#else - syslog(LOG_INFO, "CPU%d: TCB@%p CPU%d PAUSE\n", - tcb->cpu, tcb, cpu); -#endif + tcb->cpu, get_task_name(tcb), tcb, cpu); } static void notelog_cpu_paused(FAR struct note_driver_s *drv, FAR struct tcb_s *tcb) { -#if CONFIG_TASK_NAME_SIZE > 0 syslog(LOG_INFO, "CPU%d: Task %s TCB@%p CPU%d PAUSED\n", - tcb->cpu, tcb->name, tcb, tcb->cpu); -#else - syslog(LOG_INFO, "CPU%d: TCB@%p CPU%d PAUSED\n", - tcb->cpu, tcb, tcb->cpu); -#endif + tcb->cpu, get_task_name(tcb), tcb, tcb->cpu); } static void notelog_cpu_resume(FAR struct note_driver_s *drv, FAR struct tcb_s *tcb, int cpu) { -#if CONFIG_TASK_NAME_SIZE > 0 syslog(LOG_INFO, "CPU%d: Task %s TCB@%p CPU%d RESUME\n", - tcb->cpu, tcb->name, tcb, cpu); -#else - syslog(LOG_INFO, "CPU%d: TCB@%p CPU%d RESUME\n", - tcb->cpu, tcb, cpu); -#endif + tcb->cpu, get_task_name(tcb), tcb, cpu); } static void notelog_cpu_resumed(FAR struct note_driver_s *drv, FAR struct tcb_s *tcb) { -#if CONFIG_TASK_NAME_SIZE > 0 syslog(LOG_INFO, "CPU%d: Task %s TCB@%p CPU%d RESUMED\n", - tcb->cpu, tcb->name, tcb, tcb->cpu); -#else - syslog(LOG_INFO, "CPU%d: TCB@%p CPU%d RESUMED\n", - tcb->cpu, tcb, tcb->cpu); -#endif + tcb->cpu, get_task_name(tcb), tcb, tcb->cpu); } #endif #endif @@ -316,21 +246,11 @@ static void notelog_premption(FAR struct note_driver_s *drv, FAR struct tcb_s *tcb, bool locked) { #ifdef CONFIG_SMP -#if CONFIG_TASK_NAME_SIZE > 0 syslog(LOG_INFO, "CPU%d: Task %s TCB@%p preemption %s\n", - tcb->cpu, tcb->name, tcb, locked ? "LOCKED" : "UNLOCKED"); -#else - syslog(LOG_INFO, "CPU%d: TCB@%p preemption %s\n", - tcb->cpu, tcb, locked ? "LOCKED" : "UNLOCKED"); -#endif + tcb->cpu, get_task_name(tcb), tcb, locked ? "LOCKED" : "UNLOCKED"); #else -#if CONFIG_TASK_NAME_SIZE > 0 syslog(LOG_INFO, "Task %s, TCB@%p preemption %s\n", - tcb->name, tcb, locked ? "LOCKED" : "UNLOCKED"); -#else - syslog(LOG_INFO, "TCB@%p preemption %s\n", - tcb, locked ? "LOCKED" : "UNLOCKED"); -#endif + get_task_name(tcb), tcb, locked ? "LOCKED" : "UNLOCKED"); #endif } #endif @@ -340,21 +260,11 @@ static void notelog_csection(FAR struct note_driver_s *drv, FAR struct tcb_s *tcb, bool enter) { #ifdef CONFIG_SMP -#if CONFIG_TASK_NAME_SIZE > 0 syslog(LOG_INFO, "CPU%d: Task %s TCB@%p critical section %s\n", - tcb->cpu, tcb->name, tcb, enter ? "ENTER" : "LEAVE"); + tcb->cpu, get_task_name(tcb), tcb, enter ? "ENTER" : "LEAVE"); #else - syslog(LOG_INFO, "CPU%d: TCB@%p critical section %s\n", - tcb->cpu, tcb, enter ? "ENTER" : "LEAVE"); -#endif -#else -#if CONFIG_TASK_NAME_SIZE > 0 syslog(LOG_INFO, "Task %s, TCB@%p critical section %s\n", - tcb->name, tcb, enter ? "ENTER" : "LEAVE"); -#else - syslog(LOG_INFO, "TCB@%p critical section %s\n", - tcb, enter ? "ENTER" : "LEAVE"); -#endif + get_task_name(tcb), tcb, enter ? "ENTER" : "LEAVE"); #endif } #endif @@ -376,21 +286,11 @@ static void note_spinlock(FAR struct note_driver_s *drv, FAR const char * msg = tmp[type - NOTE_SPINLOCK_LOCK]; #ifdef CONFIG_SMP -#if CONFIG_TASK_NAME_SIZE > 0 syslog(LOG_INFO, "CPU%d: Task %s TCB@%p spinlock@%p %s\n", - tcb->cpu, tcb->name, tcb, spinlock, msg); -#else - syslog(LOG_INFO, "CPU%d: TCB@%p spinlock@%p %s\n", - tcb->cpu, tcb, spinlock, msg); -#endif + tcb->cpu, get_task_name(tcb), tcb, spinlock, msg); #else -#if CONFIG_TASK_NAME_SIZE > 0 syslog(LOG_INFO, "Task %s TCB@%p spinlock@%p %s\n", - tcb->name, tcb, spinlock, msg); -#else - syslog(LOG_INFO, "TCB@%p spinlock@%p %s\n", - tcb, spinlock, msg); -#endif + get_task_name(tcb), tcb, spinlock, msg); #endif } #endif diff --git a/drivers/note/noteram_driver.c b/drivers/note/noteram_driver.c index 13fcad98d725a..f095445010cd9 100644 --- a/drivers/note/noteram_driver.c +++ b/drivers/note/noteram_driver.c @@ -624,7 +624,7 @@ static void noteram_dump_init_context(FAR struct noteram_dump_context_s *ctx) * Name: get_task_name ****************************************************************************/ -static FAR const char *get_task_name(pid_t pid) +static const char *get_taskname(pid_t pid) { FAR const char *taskname; @@ -658,7 +658,7 @@ static int noteram_dump_header(FAR struct lib_outstream_s *s, #endif ret = lib_sprintf(s, "%8s-%-3u [%d] %3" PRIu32 ".%09" PRIu32 ": ", - get_task_name(pid), get_pid(pid), cpu, sec, nsec); + get_taskname(pid), get_pid(pid), cpu, sec, nsec); return ret; } @@ -694,9 +694,9 @@ static int noteram_dump_sched_switch(FAR struct lib_outstream_s *s, ret = lib_sprintf(s, "sched_switch: prev_comm=%s prev_pid=%u " "prev_prio=%u prev_state=%c ==> " "next_comm=%s next_pid=%u next_prio=%u\n", - get_task_name(current_pid), get_pid(current_pid), + get_taskname(current_pid), get_pid(current_pid), current_priority, get_task_state(cctx->current_state), - get_task_name(next_pid), get_pid(next_pid), + get_taskname(next_pid), get_pid(next_pid), next_priority); cctx->current_pid = cctx->next_pid; @@ -740,7 +740,7 @@ static int noteram_dump_one(FAR uint8_t *p, FAR struct lib_outstream_s *s, ret += noteram_dump_header(s, note, ctx); ret += lib_sprintf(s, "sched_wakeup_new: comm=%s pid=%d " "target_cpu=%d\n", - get_task_name(pid), get_pid(pid), cpu); + get_taskname(pid), get_pid(pid), cpu); } break; @@ -794,7 +794,7 @@ static int noteram_dump_one(FAR uint8_t *p, FAR struct lib_outstream_s *s, ret += noteram_dump_header(s, note, ctx); ret += lib_sprintf(s, "sched_waking: comm=%s " "pid=%d target_cpu=%d\n", - get_task_name(cctx->next_pid), + get_taskname(cctx->next_pid), get_pid(cctx->next_pid), cpu); cctx->pendingswitch = true; } diff --git a/drivers/segger/note_sysview.c b/drivers/segger/note_sysview.c index 24fe2f4c7450c..1b221fff5a19e 100644 --- a/drivers/segger/note_sysview.c +++ b/drivers/segger/note_sysview.c @@ -135,11 +135,7 @@ static void note_sysview_send_taskinfo(FAR struct tcb_s *tcb) SEGGER_SYSVIEW_TASKINFO info; info.TaskID = tcb->pid; -#if CONFIG_TASK_NAME_SIZE > 0 - info.sName = tcb->name; -#else - info.sName = ""; -#endif + info.sName = get_task_name(tcb); info.Prio = tcb->sched_priority; info.StackBase = (uintptr_t)tcb->stack_base_ptr; info.StackSize = tcb->adj_stack_size; diff --git a/drivers/serial/serial.c b/drivers/serial/serial.c index ef00bfa1df327..fc6ff09b89d63 100644 --- a/drivers/serial/serial.c +++ b/drivers/serial/serial.c @@ -1783,9 +1783,9 @@ static int uart_unlink(FAR struct inode *inode) static void uart_launch_foreach(FAR struct tcb_s *tcb, FAR void *arg) { #ifdef CONFIG_TTY_LAUNCH_ENTRY - if (!strcmp(tcb->name, CONFIG_TTY_LAUNCH_ENTRYNAME)) + if (!strcmp(get_task_name(tcb), CONFIG_TTY_LAUNCH_ENTRYNAME)) #else - if (!strcmp(tcb->name, CONFIG_TTY_LAUNCH_FILEPATH)) + if (!strcmp(get_task_name(tcb), CONFIG_TTY_LAUNCH_FILEPATH)) #endif { *(FAR int *)arg = 1; diff --git a/drivers/syslog/Kconfig b/drivers/syslog/Kconfig index e0c9948750982..b46f107958dc0 100644 --- a/drivers/syslog/Kconfig +++ b/drivers/syslog/Kconfig @@ -153,6 +153,7 @@ config SYSLOG_PRIORITY config SYSLOG_PROCESS_NAME bool "Prepend process name to syslog message" default n + depends on TASK_NAME_SIZE > 0 ---help--- Prepend Process name to syslog message. diff --git a/drivers/syslog/vsyslog.c b/drivers/syslog/vsyslog.c index a51c31e2a3625..9ce1ab2fc480b 100644 --- a/drivers/syslog/vsyslog.c +++ b/drivers/syslog/vsyslog.c @@ -83,7 +83,7 @@ int nx_vsyslog(int priority, FAR const IPTR char *fmt, FAR va_list *ap) { struct lib_syslograwstream_s stream; int ret = 0; -#if CONFIG_TASK_NAME_SIZE > 0 && defined(CONFIG_SYSLOG_PROCESS_NAME) +#ifdef CONFIG_SYSLOG_PROCESS_NAME FAR struct tcb_s *tcb = nxsched_get_tcb(nxsched_gettid()); #endif #ifdef CONFIG_SYSLOG_TIMESTAMP @@ -196,7 +196,7 @@ int nx_vsyslog(int priority, FAR const IPTR char *fmt, FAR va_list *ap) "[%s] " #endif -#if CONFIG_TASK_NAME_SIZE > 0 && defined(CONFIG_SYSLOG_PROCESS_NAME) +#ifdef CONFIG_SYSLOG_PROCESS_NAME /* Prepend the thread name */ "%s: " @@ -242,10 +242,10 @@ int nx_vsyslog(int priority, FAR const IPTR char *fmt, FAR va_list *ap) , CONFIG_SYSLOG_PREFIX_STRING #endif -#if CONFIG_TASK_NAME_SIZE > 0 && defined(CONFIG_SYSLOG_PROCESS_NAME) +#ifdef CONFIG_SYSLOG_PROCESS_NAME /* Prepend the thread name */ - , tcb != NULL ? tcb->name : "(null)" + , get_task_name(tcb) #endif ); diff --git a/fs/procfs/fs_procfsproc.c b/fs/procfs/fs_procfsproc.c index 695f60c2808c1..e84f7311165dd 100644 --- a/fs/procfs/fs_procfsproc.c +++ b/fs/procfs/fs_procfsproc.c @@ -486,11 +486,7 @@ static ssize_t proc_status(FAR struct proc_file_s *procfile, /* Show the task name */ -#if CONFIG_TASK_NAME_SIZE > 0 - name = tcb->name; -#else - name = ""; -#endif + name = get_task_name(tcb); linesize = procfs_snprintf(procfile->line, STATUS_LINELEN, "%-12s%.18s\n", "Name:", name); copysize = procfs_memcpy(procfile->line, linesize, buffer, remaining, @@ -670,11 +666,7 @@ static ssize_t proc_cmdline(FAR struct proc_file_s *procfile, /* Show the task name */ -#if CONFIG_TASK_NAME_SIZE > 0 - name = tcb->name; -#else - name = ""; -#endif + name = get_task_name(tcb); linesize = strlen(name); memcpy(procfile->line, name, linesize); copysize = procfs_memcpy(procfile->line, linesize, buffer, remaining, diff --git a/include/nuttx/sched.h b/include/nuttx/sched.h index 37b06cb6e4723..62cc4e6390fb8 100644 --- a/include/nuttx/sched.h +++ b/include/nuttx/sched.h @@ -222,6 +222,14 @@ #define get_current_mm() (get_group_mm(nxsched_self()->group)) +/* Get task name from tcb */ + +#if CONFIG_TASK_NAME_SIZE > 0 +# define get_task_name(tcb) ((tcb)->name) +#else +# define get_task_name(tcb) "" +#endif + /* These are macros to access the current CPU and the current task on a CPU. * These macros are intended to support a future SMP implementation. */ diff --git a/libs/libc/gdbstub/lib_gdbstub.c b/libs/libc/gdbstub/lib_gdbstub.c index 1cdde7aa466f0..3b5510947556b 100644 --- a/libs/libc/gdbstub/lib_gdbstub.c +++ b/libs/libc/gdbstub/lib_gdbstub.c @@ -1249,17 +1249,10 @@ static int gdb_query(FAR struct gdb_state_s *state) } nxsched_get_stateinfo(tcb, thread_state, sizeof(thread_state)); -#if CONFIG_TASK_NAME_SIZE > 0 snprintf(thread_info, sizeof(thread_info), "Name: %s, State: %s, Priority: %d, Stack: %zu", - tcb->name, thread_state, tcb->sched_priority, + get_task_name(tcb), thread_state, tcb->sched_priority, tcb->adj_stack_size); -#else - snprintf(thread_info, sizeof(thread_info), - "State: %s, Priority: %d, Stack: %zu", - thread_state, tcb->sched_priority, - tcb->adj_stack_size); -#endif ret = gdb_bin2hex(state->pkt_buf, sizeof(state->pkt_buf), thread_info, strlen(thread_info)); @@ -1966,4 +1959,3 @@ int gdb_process(FAR struct gdb_state_s *state, int stopreason, state->last_stopaddr = stopaddr; return ret; } - diff --git a/sched/misc/assert.c b/sched/misc/assert.c index 53b16d297ef1e..af6cfd0e6abe6 100644 --- a/sched/misc/assert.c +++ b/sched/misc/assert.c @@ -416,11 +416,7 @@ static void dump_task(FAR struct tcb_s *tcb, FAR void *arg) #ifndef CONFIG_SCHED_CPULOAD_NONE , intpart, fracpart #endif -#if CONFIG_TASK_NAME_SIZE > 0 - , tcb->name -#else - , "" -#endif + , get_task_name(tcb) , args ); } @@ -632,18 +628,14 @@ static void dump_assert_info(FAR struct tcb_s *rtcb, FAR const char *filename, int linenum, FAR const char *msg, FAR void *regs) { -#if CONFIG_TASK_NAME_SIZE > 0 FAR struct tcb_s *ptcb = NULL; -#endif struct utsname name; -#if CONFIG_TASK_NAME_SIZE > 0 if (rtcb->group && (rtcb->flags & TCB_FLAG_TTYPE_MASK) != TCB_FLAG_TTYPE_KERNEL) { ptcb = nxsched_get_tcb(rtcb->group->tg_pid); } -#endif uname(&name); _alert("Current Version: %s %s %s %s %s\n", @@ -655,20 +647,16 @@ static void dump_assert_info(FAR struct tcb_s *rtcb, "(CPU%d)" #endif ": " -#if CONFIG_TASK_NAME_SIZE > 0 "%s " "process: %s " -#endif "%p\n", msg ? msg : "", filename ? filename : "", linenum, #ifdef CONFIG_SMP this_cpu(), #endif -#if CONFIG_TASK_NAME_SIZE > 0 - rtcb->name, - ptcb ? ptcb->name : "Kernel", -#endif + get_task_name(rtcb), + ptcb ? get_task_name(ptcb) : "Kernel", rtcb->entry.main); /* Dump current CPU registers, running task stack and backtrace. */ diff --git a/sched/sched/sched_dumponexit.c b/sched/sched/sched_dumponexit.c index 2fde136e338ee..aece6501c06ef 100644 --- a/sched/sched/sched_dumponexit.c +++ b/sched/sched/sched_dumponexit.c @@ -57,8 +57,8 @@ static void dumphandler(FAR struct tcb_s *tcb, FAR void *arg) syslog(LOG_INFO, "tcb=%p name=%s, pid:%d, priority=%d state=%d " "stack_alloc_ptr: %p, adj_stack_size: %zu\n", - tcb, tcb->name, tcb->pid, tcb->sched_priority, tcb->task_state, - tcb->stack_alloc_ptr, tcb->adj_stack_size); + tcb, get_task_name(tcb), tcb->pid, tcb->sched_priority, + tcb->task_state, tcb->stack_alloc_ptr, tcb->adj_stack_size); filelist = &tcb->group->tg_filelist; files_dumplist(filelist); diff --git a/sched/task/task_activate.c b/sched/task/task_activate.c index 00aa1c2e55777..1fcba2695e90d 100644 --- a/sched/task/task_activate.c +++ b/sched/task/task_activate.c @@ -86,11 +86,7 @@ void nxtask_activate(FAR struct tcb_s *tcb) nxsched_remove_blocked(tcb); -#if CONFIG_TASK_NAME_SIZE > 0 - sinfo("%s pid=%d,TCB=%p\n", tcb->name, -#else - sinfo("pid=%d,TCB=%p\n", -#endif + sinfo("%s pid=%d,TCB=%p\n", get_task_name(tcb), tcb->pid, tcb); /* Add the task to ready-to-run task list, and diff --git a/sched/task/task_exit.c b/sched/task/task_exit.c index d840a401d0815..a4efb2bc83917 100644 --- a/sched/task/task_exit.c +++ b/sched/task/task_exit.c @@ -91,11 +91,7 @@ int nxtask_exit(void) dtcb = this_task(); #endif -#if CONFIG_TASK_NAME_SIZE > 0 - sinfo("%s pid=%d,TCB=%p\n", dtcb->name, -#else - sinfo("pid=%d,TCB=%p\n", -#endif + sinfo("%s pid=%d,TCB=%p\n", get_task_name(dtcb), dtcb->pid, dtcb); /* Update scheduler parameters */ From 5f932ca83d7b04c3ffe9a0eb521c66416853f62d Mon Sep 17 00:00:00 2001 From: lijianjun Date: Tue, 11 Jun 2024 16:55:45 +0800 Subject: [PATCH 06/21] add mm_uninitialize empty implementation for sim Signed-off-by: lijianjun Signed-off-by: Neo Xu --- arch/sim/src/sim/sim_heap.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/arch/sim/src/sim/sim_heap.c b/arch/sim/src/sim/sim_heap.c index a3ccb2bb406c3..a1e9b0842fb27 100644 --- a/arch/sim/src/sim/sim_heap.c +++ b/arch/sim/src/sim/sim_heap.c @@ -231,6 +231,31 @@ struct mm_heap_s *mm_initialize(const char *name, return heap; } +/**************************************************************************** + * Name: mm_uninitialize + * + * Description: + * Uninitialize the selected heap data structures + * + * Input Parameters: + * heap - The selected heap + * + * Returned Value: + * None + * + * Assumptions: + * + ****************************************************************************/ + +void mm_uninitialize(struct mm_heap_s *heap) +{ +#if defined(CONFIG_FS_PROCFS) && !defined(CONFIG_FS_PROCFS_EXCLUDE_MEMINFO) + procfs_unregister_meminfo(&heap->mm_procfs); +#endif + mm_free_delaylist(heap); + host_free(heap); +} + /**************************************************************************** * Name: mm_addregion * From b74ee4058eccd9123f9c5335ea8349affe2b7912 Mon Sep 17 00:00:00 2001 From: yinshengkai Date: Tue, 14 Nov 2023 15:50:52 +0800 Subject: [PATCH 07/21] note: add memory tracing event support Record all memory allocation and release, save to ram, used to analyze memory allocation rate and memory usage Its absolute value is not trustworthy because the memory will be allocated in thread A and released in thread B netinit-5 [0] 0.105984392: tracing_mark_write: C|5|Heap Usage|96|free: heap: 0x606000000020 size:24, address: 0x603000000370 netinit-5 [0] 0.105996874: tracing_mark_write: C|5|Heap Usage|24|free: heap: 0x606000000020 size:72, address: 0x6070000008e0 nsh_main-4 [0] 3.825169408: tracing_mark_write: C|4|Heap Usage|2177665|free: heap: 0x606000000020 size:424, address: 0x614000000840 nsh_main-4 [0] 3.825228525: tracing_mark_write: C|4|Heap Usage|14977|free: heap: 0x606000000020 size:2162688, address: 0x7f80a639f800 nsh_main-4 [0] 3.825298789: tracing_mark_write: C|4|Heap Usage|15189|malloc: heap: 0x606000000020 size:20, address: 0x6030000003a0 Signed-off-by: yinshengkai Signed-off-by: Neo Xu --- arch/sim/src/sim/sim_heap.c | 16 +++++- drivers/note/note_driver.c | 46 +++++++++++++++ drivers/note/noteram_driver.c | 97 ++++++++++++++++++++++++++++++++ include/nuttx/note/note_driver.h | 4 ++ include/nuttx/sched_note.h | 76 ++++++++++++++++--------- mm/mm_heap/mm_free.c | 7 ++- mm/mm_heap/mm_malloc.c | 7 ++- mm/mm_heap/mm_memalign.c | 12 ++-- mm/mm_heap/mm_realloc.c | 6 +- mm/tlsf/mm_tlsf.c | 49 ++++++++++------ sched/Kconfig | 8 +++ 11 files changed, 271 insertions(+), 57 deletions(-) diff --git a/arch/sim/src/sim/sim_heap.c b/arch/sim/src/sim/sim_heap.c index a1e9b0842fb27..ba3c266035bcd 100644 --- a/arch/sim/src/sim/sim_heap.c +++ b/arch/sim/src/sim/sim_heap.c @@ -33,6 +33,7 @@ #include #include #include +#include #include "sim_internal.h" @@ -185,6 +186,7 @@ static void mm_delayfree(struct mm_heap_s *heap, void *mem, bool delay) int size = host_mallocsize(mem); atomic_fetch_sub(&heap->aordblks, 1); atomic_fetch_sub(&heap->uordblks, size); + sched_note_heap(false, heap, mem, size); host_free(mem); } } @@ -364,6 +366,7 @@ void *mm_realloc(struct mm_heap_s *heap, void *oldmem, int uordblks; int usmblks; int newsize; + int oldsize; free_delaylist(heap, false); @@ -373,13 +376,23 @@ void *mm_realloc(struct mm_heap_s *heap, void *oldmem, return NULL; } - atomic_fetch_sub(&heap->uordblks, host_mallocsize(oldmem)); + oldsize = host_mallocsize(oldmem); + atomic_fetch_sub(&heap->uordblks, oldsize); mem = host_realloc(oldmem, size); atomic_fetch_add(&heap->aordblks, oldmem == NULL && mem != NULL); newsize = host_mallocsize(mem ? mem : oldmem); atomic_fetch_add(&heap->uordblks, newsize); usmblks = atomic_load(&heap->usmblks); + if (mem != NULL) + { + if (oldmem != NULL) + { + sched_note_heap(false, heap, oldmem, oldsize); + } + + sched_note_heap(true, heap, mem, newsize); + } do { @@ -470,6 +483,7 @@ void *mm_memalign(struct mm_heap_s *heap, size_t alignment, size_t size) } size = host_mallocsize(mem); + sched_note_heap(true, heap, mem, size); atomic_fetch_add(&heap->aordblks, 1); atomic_fetch_add(&heap->uordblks, size); usmblks = atomic_load(&heap->usmblks); diff --git a/drivers/note/note_driver.c b/drivers/note/note_driver.c index cee07d3b9a79b..96cac54ab751e 100644 --- a/drivers/note/note_driver.c +++ b/drivers/note/note_driver.c @@ -92,6 +92,8 @@ #define note_irqhandler(drv, irq, handler, enter) \ ((drv)->ops->irqhandler && \ ((drv)->ops->irqhandler(drv, irq, handler, enter), true)) +#define note_heap(drv, alloc, data, mem, size) \ + ((drv)->ops->heap && ((drv)->ops->heap(drv, alloc, data, mem, size), true)) #define note_string(drv, ip, buf) \ ((drv)->ops->string && ((drv)->ops->string(drv, ip, buf), true)) #define note_event(drv, ip, event, buf, len) \ @@ -1352,6 +1354,50 @@ void sched_note_irqhandler(int irq, FAR void *handler, bool enter) } #endif +#ifdef CONFIG_SCHED_INSTRUMENTATION_HEAP +void sched_note_heap(bool alloc, FAR void *heap, FAR void *mem, size_t size) +{ + FAR struct note_driver_s **driver; + struct note_heap_s note; + bool formatted = false; + FAR struct tcb_s *tcb = this_task(); + +#ifdef CONFIG_SCHED_INSTRUMENTATION_FILTER + if (!note_isenabled()) + { + return; + } +#endif + + for (driver = g_note_drivers; *driver; driver++) + { + if (note_heap(*driver, alloc, heap, mem, size)) + { + continue; + } + + if ((*driver)->ops->add == NULL) + { + continue; + } + + if (!formatted) + { + enum note_type_e type = alloc ? NOTE_ALLOC : NOTE_FREE; + formatted = true; + note_common(tcb, ¬e.nmm_cmn, sizeof(note), type); + note.heap = heap; + note.mem = mem; + note.size = size; + } + + /* Add the note to circular buffer */ + + note_add(*driver, ¬e, sizeof(note)); + } +} +#endif + #ifdef CONFIG_SCHED_INSTRUMENTATION_DUMP void sched_note_string_ip(uint32_t tag, uintptr_t ip, FAR const char *buf) { diff --git a/drivers/note/noteram_driver.c b/drivers/note/noteram_driver.c index f095445010cd9..f6ba276e3f9d9 100644 --- a/drivers/note/noteram_driver.c +++ b/drivers/note/noteram_driver.c @@ -31,6 +31,7 @@ #include #include #include +#include #include #include @@ -97,9 +98,17 @@ struct noteram_dump_cpu_context_s uint8_t next_priority; /* Task Priority of the next line */ }; +struct noteram_dump_task_context_s +{ + FAR struct noteram_dump_task_context_s *next; + pid_t pid; + size_t mm_used; +}; + struct noteram_dump_context_s { struct noteram_dump_cpu_context_s cpu[NCPUS]; + struct noteram_dump_task_context_s *task; }; /**************************************************************************** @@ -419,6 +428,14 @@ static int noteram_open(FAR struct file *filep) int noteram_close(FAR struct file *filep) { FAR struct noteram_dump_context_s *ctx = filep->f_priv; + + while (ctx->task != NULL) + { + FAR struct noteram_dump_task_context_s *task = ctx->task; + ctx->task = task->next; + kmm_free(task); + } + kmm_free(ctx); return OK; } @@ -620,6 +637,59 @@ static void noteram_dump_init_context(FAR struct noteram_dump_context_s *ctx) } } +/**************************************************************************** + * Name: noteram_dump_find_task_context + ****************************************************************************/ + +#ifdef CONFIG_SCHED_INSTRUMENTATION_HEAP +static FAR struct noteram_dump_task_context_s * +noteram_dump_find_task_context(FAR struct noteram_dump_context_s *ctx, + pid_t pid) +{ + FAR struct noteram_dump_task_context_s *task; + FAR struct noteram_dump_task_context_s *prev; + + if (ctx->task == NULL) + { + ctx->task = kmm_zalloc(sizeof(*ctx->task)); + if (ctx->task == NULL) + { + return NULL; + } + + ctx->task->pid = pid; + ctx->task->next = NULL; + return ctx->task; + } + else + { + task = ctx->task; + } + + while (task != NULL) + { + if (task->pid == pid) + { + return task; + } + + prev = task; + task = task->next; + } + + prev->next = kmm_zalloc(sizeof(*prev)); + if (prev->next == NULL) + { + return NULL; + } + + task = prev->next; + task->pid = pid; + task->next = NULL; + return task; +} +#endif + /**************************************************************************** * Name: get_task_name ****************************************************************************/ @@ -1015,7 +1085,34 @@ static int noteram_dump_one(FAR uint8_t *p, FAR struct lib_outstream_s *s, } break; #endif +#ifdef CONFIG_SCHED_INSTRUMENTATION_HEAP + case NOTE_ALLOC: + case NOTE_FREE: + { + FAR struct note_heap_s *nmm = (FAR struct note_heap_s *)p; + FAR struct noteram_dump_task_context_s *tctx; + int used = 0; + FAR const char *name[] = + { + "malloc", "free" + }; + + tctx = noteram_dump_find_task_context(ctx, pid); + if (tctx != NULL) + { + tctx->mm_used += note->nc_type == NOTE_FREE ? + -nmm->size : nmm->size; + used = tctx->mm_used; + } + ret += noteram_dump_header(s, &nmm->nmm_cmn, ctx); + ret += lib_sprintf(s, "tracing_mark_write: C|%d|Heap Usage|%d|%s" + ": heap: %p size:%" PRIiPTR ", address: %p\n", + pid, used, name[note->nc_type - NOTE_ALLOC], + nmm->heap, nmm->size, nmm->mem); + } + break; +#endif default: break; } diff --git a/include/nuttx/note/note_driver.h b/include/nuttx/note/note_driver.h index ddea03374323d..a36da233b4e5b 100644 --- a/include/nuttx/note/note_driver.h +++ b/include/nuttx/note/note_driver.h @@ -89,6 +89,10 @@ struct note_driver_ops_s CODE void (*irqhandler)(FAR struct note_driver_s *drv, int irq, FAR void *handler, bool enter); #endif +#ifdef CONFIG_SCHED_INSTRUMENTATION_HEAP + CODE void (*heap)(FAR struct note_driver_s *drv, bool alloc, + FAR void *heap, FAR void *mem, size_t size); +#endif #ifdef CONFIG_SCHED_INSTRUMENTATION_DUMP CODE void (*string)(FAR struct note_driver_s *drv, uintptr_t ip, FAR const char *buf); diff --git a/include/nuttx/sched_note.h b/include/nuttx/sched_note.h index 60063f2eace53..cdc0145b22bd6 100644 --- a/include/nuttx/sched_note.h +++ b/include/nuttx/sched_note.h @@ -164,34 +164,40 @@ enum note_type_e { - NOTE_START = 0, - NOTE_STOP = 1, - NOTE_SUSPEND = 2, - NOTE_RESUME = 3, - NOTE_CPU_START = 4, - NOTE_CPU_STARTED = 5, - NOTE_CPU_PAUSE = 6, - NOTE_CPU_PAUSED = 7, - NOTE_CPU_RESUME = 8, - NOTE_CPU_RESUMED = 9, - NOTE_PREEMPT_LOCK = 10, - NOTE_PREEMPT_UNLOCK = 11, - NOTE_CSECTION_ENTER = 12, - NOTE_CSECTION_LEAVE = 13, - NOTE_SPINLOCK_LOCK = 14, - NOTE_SPINLOCK_LOCKED = 15, - NOTE_SPINLOCK_UNLOCK = 16, - NOTE_SPINLOCK_ABORT = 17, - NOTE_SYSCALL_ENTER = 18, - NOTE_SYSCALL_LEAVE = 19, - NOTE_IRQ_ENTER = 20, - NOTE_IRQ_LEAVE = 21, - NOTE_DUMP_STRING = 22, - NOTE_DUMP_BINARY = 23, - NOTE_DUMP_BEGIN = 24, - NOTE_DUMP_END = 25, - NOTE_DUMP_MARK = 28, - NOTE_DUMP_COUNTER = 29, + NOTE_START, + NOTE_STOP, + NOTE_SUSPEND, + NOTE_RESUME, + NOTE_CPU_START, + NOTE_CPU_STARTED, + NOTE_CPU_PAUSE, + NOTE_CPU_PAUSED, + NOTE_CPU_RESUME, + NOTE_CPU_RESUMED, + NOTE_PREEMPT_LOCK, + NOTE_PREEMPT_UNLOCK, + NOTE_CSECTION_ENTER, + NOTE_CSECTION_LEAVE, + NOTE_SPINLOCK_LOCK, + NOTE_SPINLOCK_LOCKED, + NOTE_SPINLOCK_UNLOCK, + NOTE_SPINLOCK_ABORT, + NOTE_SYSCALL_ENTER, + NOTE_SYSCALL_LEAVE, + NOTE_IRQ_ENTER, + NOTE_IRQ_LEAVE, + NOTE_ALLOC, + NOTE_FREE, + NOTE_REALLOC, + NOTE_DUMP_STRING, + NOTE_DUMP_BINARY, + NOTE_DUMP_BEGIN, + NOTE_DUMP_END, + NOTE_DUMP_MARK, + NOTE_DUMP_COUNTER, + + /* Always last */ + NOTE_TYPE_LAST }; @@ -397,6 +403,14 @@ struct note_binary_s #define SIZEOF_NOTE_BINARY(n) (sizeof(struct note_binary_s) + \ ((n) - 1) * sizeof(uint8_t)) +struct note_heap_s +{ + struct note_common_s nmm_cmn; /* Common note parameters */ + FAR void *heap; + FAR void *mem; + size_t size; +}; + struct note_counter_s { long int value; @@ -539,6 +553,12 @@ void sched_note_irqhandler(int irq, FAR void *handler, bool enter); # define sched_note_irqhandler(i,h,e) #endif +#ifdef CONFIG_SCHED_INSTRUMENTATION_HEAP +void sched_note_heap(bool alloc, FAR void *heap, FAR void *mem, size_t size); +#else +# define sched_note_heap(a,h,m,s) +#endif + #ifdef CONFIG_SCHED_INSTRUMENTATION_DUMP void sched_note_string_ip(uint32_t tag, uintptr_t ip, FAR const char *buf); void sched_note_event_ip(uint32_t tag, uintptr_t ip, uint8_t event, diff --git a/mm/mm_heap/mm_free.c b/mm/mm_heap/mm_free.c index ab3cda0eae62f..7afac84668c9b 100644 --- a/mm/mm_heap/mm_free.c +++ b/mm/mm_heap/mm_free.c @@ -33,6 +33,7 @@ #include #include #include +#include #include "mm_heap/mm.h" @@ -99,11 +100,12 @@ void mm_delayfree(FAR struct mm_heap_s *heap, FAR void *mem, bool delay) return; } + nodesize = mm_malloc_size(heap, mem); #ifdef CONFIG_MM_FILL_ALLOCATIONS - memset(mem, MM_FREE_MAGIC, mm_malloc_size(heap, mem)); + memset(mem, MM_FREE_MAGIC, nodesize); #endif - kasan_poison(mem, mm_malloc_size(heap, mem)); + kasan_poison(mem, nodesize); if (delay) { @@ -126,6 +128,7 @@ void mm_delayfree(FAR struct mm_heap_s *heap, FAR void *mem, bool delay) /* Update heap statistics */ heap->mm_curused -= nodesize; + sched_note_heap(false, heap, mem, nodesize); /* Check if the following node is free and, if so, merge it */ diff --git a/mm/mm_heap/mm_malloc.c b/mm/mm_heap/mm_malloc.c index 96adef1a48501..fd72eeb00736a 100644 --- a/mm/mm_heap/mm_malloc.c +++ b/mm/mm_heap/mm_malloc.c @@ -34,6 +34,7 @@ #include #include #include +#include #include "mm_heap/mm.h" @@ -306,7 +307,8 @@ FAR void *mm_malloc(FAR struct mm_heap_s *heap, size_t size) /* Update heap statistics */ - heap->mm_curused += MM_SIZEOF_NODE(node); + nodesize = MM_SIZEOF_NODE(node); + heap->mm_curused += nodesize; if (heap->mm_curused > heap->mm_maxused) { heap->mm_maxused = heap->mm_curused; @@ -324,7 +326,8 @@ FAR void *mm_malloc(FAR struct mm_heap_s *heap, size_t size) if (ret) { MM_ADD_BACKTRACE(heap, node); - ret = kasan_unpoison(ret, mm_malloc_size(heap, ret)); + ret = kasan_unpoison(ret, nodesize - MM_ALLOCNODE_OVERHEAD); + sched_note_heap(true, heap, ret, nodesize); #ifdef CONFIG_MM_FILL_ALLOCATIONS memset(ret, MM_ALLOC_MAGIC, alignsize - MM_ALLOCNODE_OVERHEAD); #endif diff --git a/mm/mm_heap/mm_memalign.c b/mm/mm_heap/mm_memalign.c index 0aa449f29605f..1d963055b211d 100644 --- a/mm/mm_heap/mm_memalign.c +++ b/mm/mm_heap/mm_memalign.c @@ -30,6 +30,7 @@ #include #include +#include #include "mm_heap/mm.h" @@ -267,7 +268,8 @@ FAR void *mm_memalign(FAR struct mm_heap_s *heap, size_t alignment, /* Update heap statistics */ - heap->mm_curused += MM_SIZEOF_NODE(node); + size = MM_SIZEOF_NODE(node); + heap->mm_curused += size; if (heap->mm_curused > heap->mm_maxused) { heap->mm_maxused = heap->mm_curused; @@ -277,11 +279,9 @@ FAR void *mm_memalign(FAR struct mm_heap_s *heap, size_t alignment, MM_ADD_BACKTRACE(heap, node); - alignedchunk = (uintptr_t)kasan_unpoison - ((FAR const void *)alignedchunk, - mm_malloc_size(heap, - (FAR void *)alignedchunk)); - + alignedchunk = (uintptr_t)kasan_unpoison((FAR const void *)alignedchunk, + size - MM_ALLOCNODE_OVERHEAD); + sched_note_heap(true, heap, (FAR void *)alignedchunk, size); DEBUGASSERT(alignedchunk % alignment == 0); return (FAR void *)alignedchunk; } diff --git a/mm/mm_heap/mm_realloc.c b/mm/mm_heap/mm_realloc.c index 7125a71f04cea..f1f1284b554cb 100644 --- a/mm/mm_heap/mm_realloc.c +++ b/mm/mm_heap/mm_realloc.c @@ -34,6 +34,7 @@ #include #include +#include #include "mm_heap/mm.h" @@ -382,10 +383,13 @@ FAR void *mm_realloc(FAR struct mm_heap_s *heap, FAR void *oldmem, heap->mm_maxused = heap->mm_curused; } + sched_note_heap(false, heap, oldmem, oldsize); + sched_note_heap(true, heap, newmem, newsize); mm_unlock(heap); MM_ADD_BACKTRACE(heap, (FAR char *)newmem - MM_SIZEOF_ALLOCNODE); - newmem = kasan_unpoison(newmem, mm_malloc_size(heap, newmem)); + newmem = kasan_unpoison(newmem, MM_SIZEOF_NODE(oldnode) - + MM_ALLOCNODE_OVERHEAD); if (kasan_reset_tag(newmem) != kasan_reset_tag(oldmem)) { /* Now we have to move the user contents 'down' in memory. memcpy diff --git a/mm/tlsf/mm_tlsf.c b/mm/tlsf/mm_tlsf.c index 4c60f419bf507..8296777927cf8 100644 --- a/mm/tlsf/mm_tlsf.c +++ b/mm/tlsf/mm_tlsf.c @@ -42,6 +42,7 @@ #include #include #include +#include #include "tlsf/tlsf.h" @@ -492,15 +493,16 @@ static void mm_delayfree(FAR struct mm_heap_s *heap, FAR void *mem, { if (mm_lock(heap) == 0) { + size_t size = mm_malloc_size(heap, mem); #ifdef CONFIG_MM_FILL_ALLOCATIONS - memset(mem, MM_FREE_MAGIC, mm_malloc_size(heap, mem)); + memset(mem, MM_FREE_MAGIC, size); #endif - kasan_poison(mem, mm_malloc_size(heap, mem)); + kasan_poison(mem, size); /* Update heap statistics */ - heap->mm_curused -= mm_malloc_size(heap, mem); + heap->mm_curused -= size; /* Pass, return to the tlsf pool */ @@ -510,6 +512,7 @@ static void mm_delayfree(FAR struct mm_heap_s *heap, FAR void *mem, } else { + sched_note_heap(false, heap, mem, size); tlsf_free(heap->mm_tlsf, mem); } @@ -1134,6 +1137,7 @@ size_t mm_malloc_size(FAR struct mm_heap_s *heap, FAR void *mem) FAR void *mm_malloc(FAR struct mm_heap_s *heap, size_t size) { + size_t nodesize; FAR void *ret; /* In case of zero-length allocations allocate the minimum size object */ @@ -1168,7 +1172,8 @@ FAR void *mm_malloc(FAR struct mm_heap_s *heap, size_t size) ret = tlsf_malloc(heap->mm_tlsf, size); #endif - heap->mm_curused += mm_malloc_size(heap, ret); + nodesize = mm_malloc_size(heap, ret); + heap->mm_curused += nodesize; if (heap->mm_curused > heap->mm_maxused) { heap->mm_maxused = heap->mm_curused; @@ -1179,11 +1184,13 @@ FAR void *mm_malloc(FAR struct mm_heap_s *heap, size_t size) if (ret) { #if CONFIG_MM_BACKTRACE >= 0 - FAR struct memdump_backtrace_s *buf = ret + mm_malloc_size(heap, ret); + FAR struct memdump_backtrace_s *buf = ret + nodesize; memdump_backtrace(heap, buf); #endif - ret = kasan_unpoison(ret, mm_malloc_size(heap, ret)); + + ret = kasan_unpoison(ret, nodesize); + sched_note_heap(true, heap, ret, nodesize); #ifdef CONFIG_MM_FILL_ALLOCATIONS memset(ret, 0xaa, nodesize); @@ -1218,6 +1225,7 @@ FAR void *mm_malloc(FAR struct mm_heap_s *heap, size_t size) FAR void *mm_memalign(FAR struct mm_heap_s *heap, size_t alignment, size_t size) { + size_t nodesize; FAR void *ret; #ifdef CONFIG_MM_HEAP_MEMPOOL @@ -1245,7 +1253,8 @@ FAR void *mm_memalign(FAR struct mm_heap_s *heap, size_t alignment, ret = tlsf_memalign(heap->mm_tlsf, alignment, size); #endif - heap->mm_curused += mm_malloc_size(heap, ret); + nodesize = mm_malloc_size(heap, ret); + heap->mm_curused += nodesize; if (heap->mm_curused > heap->mm_maxused) { heap->mm_maxused = heap->mm_curused; @@ -1256,11 +1265,12 @@ FAR void *mm_memalign(FAR struct mm_heap_s *heap, size_t alignment, if (ret) { #if CONFIG_MM_BACKTRACE >= 0 - FAR struct memdump_backtrace_s *buf = ret + mm_malloc_size(heap, ret); + FAR struct memdump_backtrace_s *buf = ret + nodesize; memdump_backtrace(heap, buf); #endif - ret = kasan_unpoison(ret, mm_malloc_size(heap, ret)); + ret = kasan_unpoison(ret, nodesize); + sched_note_heap(true, heap, ret, nodesize); } #if CONFIG_MM_FREE_DELAYCOUNT_MAX > 0 @@ -1302,6 +1312,8 @@ FAR void *mm_realloc(FAR struct mm_heap_s *heap, FAR void *oldmem, size_t size) { FAR void *newmem; + size_t oldsize; + size_t newsize; /* If oldmem is NULL, then realloc is equivalent to malloc */ @@ -1361,7 +1373,8 @@ FAR void *mm_realloc(FAR struct mm_heap_s *heap, FAR void *oldmem, /* Allocate from the tlsf pool */ DEBUGVERIFY(mm_lock(heap)); - heap->mm_curused -= mm_malloc_size(heap, oldmem); + oldsize = mm_malloc_size(heap, oldmem); + heap->mm_curused -= oldsize; #if CONFIG_MM_BACKTRACE >= 0 newmem = tlsf_realloc(heap->mm_tlsf, oldmem, size + sizeof(struct memdump_backtrace_s)); @@ -1369,7 +1382,8 @@ FAR void *mm_realloc(FAR struct mm_heap_s *heap, FAR void *oldmem, newmem = tlsf_realloc(heap->mm_tlsf, oldmem, size); #endif - heap->mm_curused += mm_malloc_size(heap, newmem ? newmem : oldmem); + newsize = mm_malloc_size(heap, newmem); + heap->mm_curused += newmem ? newsize : oldsize; if (heap->mm_curused > heap->mm_maxused) { heap->mm_maxused = heap->mm_curused; @@ -1377,20 +1391,21 @@ FAR void *mm_realloc(FAR struct mm_heap_s *heap, FAR void *oldmem, mm_unlock(heap); -#if CONFIG_MM_BACKTRACE >= 0 if (newmem) { - FAR struct memdump_backtrace_s *buf = - newmem + mm_malloc_size(heap, newmem); - +#if CONFIG_MM_BACKTRACE >= 0 + FAR struct memdump_backtrace_s *buf = newmem + newsize; memdump_backtrace(heap, buf); - } #endif + sched_note_heap(false, heap, oldmem, oldsize); + sched_note_heap(true, heap, newmem, newsize); + } + #if CONFIG_MM_FREE_DELAYCOUNT_MAX > 0 /* Try again after free delay list */ - if (newmem == NULL && free_delaylist(heap, true)) + else if (free_delaylist(heap, true)) { return mm_realloc(heap, oldmem, size); } diff --git a/sched/Kconfig b/sched/Kconfig index bf210765f332f..06fd953df094a 100644 --- a/sched/Kconfig +++ b/sched/Kconfig @@ -1284,6 +1284,14 @@ config SCHED_INSTRUMENTATION_IRQHANDLER void sched_note_irqhandler(int irq, FAR void *handler, bool enter); +config SCHED_INSTRUMENTATION_HEAP + bool "Heap monitor hooks" + default n + ---help--- + Enables additional hooks for heap allocation. + + void sched_note_heap(bool alloc, FAR void* heap, FAR void *mem, size_t size) + config SCHED_INSTRUMENTATION_DUMP bool "Use note dump for instrumentation" default n From cca2415b040afb900ff93d6e75581c6b0a656c9b Mon Sep 17 00:00:00 2001 From: yinshengkai Date: Tue, 14 Nov 2023 22:19:52 +0800 Subject: [PATCH 08/21] mm: fix memory statistics error Signed-off-by: yinshengkai Signed-off-by: Neo Xu --- mm/tlsf/mm_tlsf.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/mm/tlsf/mm_tlsf.c b/mm/tlsf/mm_tlsf.c index 8296777927cf8..6962eed550707 100644 --- a/mm/tlsf/mm_tlsf.c +++ b/mm/tlsf/mm_tlsf.c @@ -500,10 +500,6 @@ static void mm_delayfree(FAR struct mm_heap_s *heap, FAR void *mem, kasan_poison(mem, size); - /* Update heap statistics */ - - heap->mm_curused -= size; - /* Pass, return to the tlsf pool */ if (delay) @@ -512,6 +508,9 @@ static void mm_delayfree(FAR struct mm_heap_s *heap, FAR void *mem, } else { + /* Update heap statistics */ + + heap->mm_curused -= mm_malloc_size(heap, mem); sched_note_heap(false, heap, mem, size); tlsf_free(heap->mm_tlsf, mem); } From fc68bf3a356ccce7700175a8edb18aff58829d2f Mon Sep 17 00:00:00 2001 From: xuxingliang Date: Tue, 9 Jul 2024 14:35:01 +0800 Subject: [PATCH 09/21] sched/note: specify note event for heap instrumentation 1. Add NOTE_HEAP_ prefix for heap note event. 2. Use note type as heap instrumentation parameter. Signed-off-by: xuxingliang Signed-off-by: Neo Xu --- arch/sim/src/sim/sim_heap.c | 8 ++++---- drivers/note/note_driver.c | 8 ++++---- drivers/note/noteram_driver.c | 8 ++++---- include/nuttx/note/note_driver.h | 2 +- include/nuttx/sched_note.h | 26 +++++++++++++------------- mm/mm_heap/mm_free.c | 2 +- mm/mm_heap/mm_malloc.c | 2 +- mm/mm_heap/mm_memalign.c | 3 ++- mm/mm_heap/mm_realloc.c | 4 ++-- mm/tlsf/mm_tlsf.c | 12 ++++++------ sched/Kconfig | 2 +- 11 files changed, 39 insertions(+), 38 deletions(-) diff --git a/arch/sim/src/sim/sim_heap.c b/arch/sim/src/sim/sim_heap.c index ba3c266035bcd..b435f6c5e83fb 100644 --- a/arch/sim/src/sim/sim_heap.c +++ b/arch/sim/src/sim/sim_heap.c @@ -186,7 +186,7 @@ static void mm_delayfree(struct mm_heap_s *heap, void *mem, bool delay) int size = host_mallocsize(mem); atomic_fetch_sub(&heap->aordblks, 1); atomic_fetch_sub(&heap->uordblks, size); - sched_note_heap(false, heap, mem, size); + sched_note_heap(NOTE_HEAP_FREE, heap, mem, size); host_free(mem); } } @@ -388,10 +388,10 @@ void *mm_realloc(struct mm_heap_s *heap, void *oldmem, { if (oldmem != NULL) { - sched_note_heap(false, heap, oldmem, oldsize); + sched_note_heap(NOTE_HEAP_FREE, heap, oldmem, oldsize); } - sched_note_heap(true, heap, mem, newsize); + sched_note_heap(NOTE_HEAP_ALLOC, heap, mem, newsize); } do @@ -483,7 +483,7 @@ void *mm_memalign(struct mm_heap_s *heap, size_t alignment, size_t size) } size = host_mallocsize(mem); - sched_note_heap(true, heap, mem, size); + sched_note_heap(NOTE_HEAP_ALLOC, heap, mem, size); atomic_fetch_add(&heap->aordblks, 1); atomic_fetch_add(&heap->uordblks, size); usmblks = atomic_load(&heap->usmblks); diff --git a/drivers/note/note_driver.c b/drivers/note/note_driver.c index 96cac54ab751e..232efde066c90 100644 --- a/drivers/note/note_driver.c +++ b/drivers/note/note_driver.c @@ -1355,7 +1355,8 @@ void sched_note_irqhandler(int irq, FAR void *handler, bool enter) #endif #ifdef CONFIG_SCHED_INSTRUMENTATION_HEAP -void sched_note_heap(bool alloc, FAR void *heap, FAR void *mem, size_t size) +void sched_note_heap(uint8_t event, FAR void *heap, FAR void *mem, + size_t size) { FAR struct note_driver_s **driver; struct note_heap_s note; @@ -1371,7 +1372,7 @@ void sched_note_heap(bool alloc, FAR void *heap, FAR void *mem, size_t size) for (driver = g_note_drivers; *driver; driver++) { - if (note_heap(*driver, alloc, heap, mem, size)) + if (note_heap(*driver, event, heap, mem, size)) { continue; } @@ -1383,9 +1384,8 @@ void sched_note_heap(bool alloc, FAR void *heap, FAR void *mem, size_t size) if (!formatted) { - enum note_type_e type = alloc ? NOTE_ALLOC : NOTE_FREE; formatted = true; - note_common(tcb, ¬e.nmm_cmn, sizeof(note), type); + note_common(tcb, ¬e.nmm_cmn, sizeof(note), event); note.heap = heap; note.mem = mem; note.size = size; diff --git a/drivers/note/noteram_driver.c b/drivers/note/noteram_driver.c index f6ba276e3f9d9..754f804486adc 100644 --- a/drivers/note/noteram_driver.c +++ b/drivers/note/noteram_driver.c @@ -1086,8 +1086,8 @@ static int noteram_dump_one(FAR uint8_t *p, FAR struct lib_outstream_s *s, break; #endif #ifdef CONFIG_SCHED_INSTRUMENTATION_HEAP - case NOTE_ALLOC: - case NOTE_FREE: + case NOTE_HEAP_ALLOC: + case NOTE_HEAP_FREE: { FAR struct note_heap_s *nmm = (FAR struct note_heap_s *)p; FAR struct noteram_dump_task_context_s *tctx; @@ -1100,7 +1100,7 @@ static int noteram_dump_one(FAR uint8_t *p, FAR struct lib_outstream_s *s, tctx = noteram_dump_find_task_context(ctx, pid); if (tctx != NULL) { - tctx->mm_used += note->nc_type == NOTE_FREE ? + tctx->mm_used += note->nc_type == NOTE_HEAP_FREE ? -nmm->size : nmm->size; used = tctx->mm_used; } @@ -1108,7 +1108,7 @@ static int noteram_dump_one(FAR uint8_t *p, FAR struct lib_outstream_s *s, ret += noteram_dump_header(s, &nmm->nmm_cmn, ctx); ret += lib_sprintf(s, "tracing_mark_write: C|%d|Heap Usage|%d|%s" ": heap: %p size:%" PRIiPTR ", address: %p\n", - pid, used, name[note->nc_type - NOTE_ALLOC], + pid, used, name[note->nc_type - NOTE_HEAP_ALLOC], nmm->heap, nmm->size, nmm->mem); } break; diff --git a/include/nuttx/note/note_driver.h b/include/nuttx/note/note_driver.h index a36da233b4e5b..5372e14643942 100644 --- a/include/nuttx/note/note_driver.h +++ b/include/nuttx/note/note_driver.h @@ -90,7 +90,7 @@ struct note_driver_ops_s FAR void *handler, bool enter); #endif #ifdef CONFIG_SCHED_INSTRUMENTATION_HEAP - CODE void (*heap)(FAR struct note_driver_s *drv, bool alloc, + CODE void (*heap)(FAR struct note_driver_s *drv, uint8_t event, FAR void *heap, FAR void *mem, size_t size); #endif #ifdef CONFIG_SCHED_INSTRUMENTATION_DUMP diff --git a/include/nuttx/sched_note.h b/include/nuttx/sched_note.h index cdc0145b22bd6..44947751dde29 100644 --- a/include/nuttx/sched_note.h +++ b/include/nuttx/sched_note.h @@ -186,9 +186,8 @@ enum note_type_e NOTE_SYSCALL_LEAVE, NOTE_IRQ_ENTER, NOTE_IRQ_LEAVE, - NOTE_ALLOC, - NOTE_FREE, - NOTE_REALLOC, + NOTE_HEAP_ALLOC, + NOTE_HEAP_FREE, NOTE_DUMP_STRING, NOTE_DUMP_BINARY, NOTE_DUMP_BEGIN, @@ -383,6 +382,14 @@ struct note_irqhandler_s uint8_t nih_irq; /* IRQ number */ }; +struct note_heap_s +{ + struct note_common_s nmm_cmn; /* Common note parameters */ + FAR void *heap; + FAR void *mem; + size_t size; +}; + struct note_string_s { struct note_common_s nst_cmn; /* Common note parameters */ @@ -403,14 +410,6 @@ struct note_binary_s #define SIZEOF_NOTE_BINARY(n) (sizeof(struct note_binary_s) + \ ((n) - 1) * sizeof(uint8_t)) -struct note_heap_s -{ - struct note_common_s nmm_cmn; /* Common note parameters */ - FAR void *heap; - FAR void *mem; - size_t size; -}; - struct note_counter_s { long int value; @@ -554,9 +553,10 @@ void sched_note_irqhandler(int irq, FAR void *handler, bool enter); #endif #ifdef CONFIG_SCHED_INSTRUMENTATION_HEAP -void sched_note_heap(bool alloc, FAR void *heap, FAR void *mem, size_t size); +void sched_note_heap(uint8_t event, FAR void *heap, FAR void *mem, + size_t size); #else -# define sched_note_heap(a,h,m,s) +# define sched_note_heap(e,h,m,s) #endif #ifdef CONFIG_SCHED_INSTRUMENTATION_DUMP diff --git a/mm/mm_heap/mm_free.c b/mm/mm_heap/mm_free.c index 7afac84668c9b..5a1dcb7989066 100644 --- a/mm/mm_heap/mm_free.c +++ b/mm/mm_heap/mm_free.c @@ -128,7 +128,7 @@ void mm_delayfree(FAR struct mm_heap_s *heap, FAR void *mem, bool delay) /* Update heap statistics */ heap->mm_curused -= nodesize; - sched_note_heap(false, heap, mem, nodesize); + sched_note_heap(NOTE_HEAP_FREE, heap, mem, nodesize); /* Check if the following node is free and, if so, merge it */ diff --git a/mm/mm_heap/mm_malloc.c b/mm/mm_heap/mm_malloc.c index fd72eeb00736a..4345fc1f4b7cc 100644 --- a/mm/mm_heap/mm_malloc.c +++ b/mm/mm_heap/mm_malloc.c @@ -327,7 +327,7 @@ FAR void *mm_malloc(FAR struct mm_heap_s *heap, size_t size) { MM_ADD_BACKTRACE(heap, node); ret = kasan_unpoison(ret, nodesize - MM_ALLOCNODE_OVERHEAD); - sched_note_heap(true, heap, ret, nodesize); + sched_note_heap(NOTE_HEAP_ALLOC, heap, ret, nodesize); #ifdef CONFIG_MM_FILL_ALLOCATIONS memset(ret, MM_ALLOC_MAGIC, alignsize - MM_ALLOCNODE_OVERHEAD); #endif diff --git a/mm/mm_heap/mm_memalign.c b/mm/mm_heap/mm_memalign.c index 1d963055b211d..d446c600bcd98 100644 --- a/mm/mm_heap/mm_memalign.c +++ b/mm/mm_heap/mm_memalign.c @@ -281,7 +281,8 @@ FAR void *mm_memalign(FAR struct mm_heap_s *heap, size_t alignment, alignedchunk = (uintptr_t)kasan_unpoison((FAR const void *)alignedchunk, size - MM_ALLOCNODE_OVERHEAD); - sched_note_heap(true, heap, (FAR void *)alignedchunk, size); + sched_note_heap(NOTE_HEAP_ALLOC, heap, (FAR void *)alignedchunk, size); + DEBUGASSERT(alignedchunk % alignment == 0); return (FAR void *)alignedchunk; } diff --git a/mm/mm_heap/mm_realloc.c b/mm/mm_heap/mm_realloc.c index f1f1284b554cb..a6e67d8ce2527 100644 --- a/mm/mm_heap/mm_realloc.c +++ b/mm/mm_heap/mm_realloc.c @@ -383,8 +383,8 @@ FAR void *mm_realloc(FAR struct mm_heap_s *heap, FAR void *oldmem, heap->mm_maxused = heap->mm_curused; } - sched_note_heap(false, heap, oldmem, oldsize); - sched_note_heap(true, heap, newmem, newsize); + sched_note_heap(NOTE_HEAP_FREE, heap, oldmem, oldsize); + sched_note_heap(NOTE_HEAP_ALLOC, heap, newmem, newsize); mm_unlock(heap); MM_ADD_BACKTRACE(heap, (FAR char *)newmem - MM_SIZEOF_ALLOCNODE); diff --git a/mm/tlsf/mm_tlsf.c b/mm/tlsf/mm_tlsf.c index 6962eed550707..51d351651e2ab 100644 --- a/mm/tlsf/mm_tlsf.c +++ b/mm/tlsf/mm_tlsf.c @@ -510,8 +510,8 @@ static void mm_delayfree(FAR struct mm_heap_s *heap, FAR void *mem, { /* Update heap statistics */ - heap->mm_curused -= mm_malloc_size(heap, mem); - sched_note_heap(false, heap, mem, size); + heap->mm_curused -= size; + sched_note_heap(NOTE_HEAP_FREE, heap, mem, size); tlsf_free(heap->mm_tlsf, mem); } @@ -1189,7 +1189,7 @@ FAR void *mm_malloc(FAR struct mm_heap_s *heap, size_t size) #endif ret = kasan_unpoison(ret, nodesize); - sched_note_heap(true, heap, ret, nodesize); + sched_note_heap(NOTE_HEAP_ALLOC, heap, ret, nodesize); #ifdef CONFIG_MM_FILL_ALLOCATIONS memset(ret, 0xaa, nodesize); @@ -1269,7 +1269,7 @@ FAR void *mm_memalign(FAR struct mm_heap_s *heap, size_t alignment, memdump_backtrace(heap, buf); #endif ret = kasan_unpoison(ret, nodesize); - sched_note_heap(true, heap, ret, nodesize); + sched_note_heap(NOTE_HEAP_ALLOC, heap, ret, nodesize); } #if CONFIG_MM_FREE_DELAYCOUNT_MAX > 0 @@ -1397,8 +1397,8 @@ FAR void *mm_realloc(FAR struct mm_heap_s *heap, FAR void *oldmem, memdump_backtrace(heap, buf); #endif - sched_note_heap(false, heap, oldmem, oldsize); - sched_note_heap(true, heap, newmem, newsize); + sched_note_heap(NOTE_HEAP_FREE, heap, oldmem, oldsize); + sched_note_heap(NOTE_HEAP_ALLOC, heap, newmem, newsize); } #if CONFIG_MM_FREE_DELAYCOUNT_MAX > 0 diff --git a/sched/Kconfig b/sched/Kconfig index 06fd953df094a..63b27f375230d 100644 --- a/sched/Kconfig +++ b/sched/Kconfig @@ -1290,7 +1290,7 @@ config SCHED_INSTRUMENTATION_HEAP ---help--- Enables additional hooks for heap allocation. - void sched_note_heap(bool alloc, FAR void* heap, FAR void *mem, size_t size) + void sched_note_heap(uint8_t event, FAR void* heap, FAR void *mem, size_t size); config SCHED_INSTRUMENTATION_DUMP bool "Use note dump for instrumentation" From 83856bacaad078de1083185ad96f0480e6b627bf Mon Sep 17 00:00:00 2001 From: xuxingliang Date: Wed, 3 Jul 2024 13:28:42 +0800 Subject: [PATCH 10/21] sched/note: add note when mm add new region Signed-off-by: xuxingliang Signed-off-by: Neo Xu --- arch/sim/src/sim/sim_heap.c | 5 +++++ drivers/note/noteram_driver.c | 11 +++++++---- include/nuttx/sched_note.h | 2 ++ mm/mm_heap/mm_initialize.c | 6 ++++++ mm/tlsf/mm_tlsf.c | 5 +++++ 5 files changed, 25 insertions(+), 4 deletions(-) diff --git a/arch/sim/src/sim/sim_heap.c b/arch/sim/src/sim/sim_heap.c index b435f6c5e83fb..0dc48e87f4c62 100644 --- a/arch/sim/src/sim/sim_heap.c +++ b/arch/sim/src/sim/sim_heap.c @@ -230,6 +230,7 @@ struct mm_heap_s *mm_initialize(const char *name, procfs_register_meminfo(&heap->mm_procfs); #endif + sched_note_heap(NOTE_HEAP_ADD, heap, heap_start, heap_size); return heap; } @@ -251,6 +252,10 @@ struct mm_heap_s *mm_initialize(const char *name, void mm_uninitialize(struct mm_heap_s *heap) { + sched_note_heap(NOTE_HEAP_REMOVE, heap, heap_start, + (uintptr_t)heap->mm_heapend[0] - + (uintptr_t)heap->mm_heapstart[0]); + #if defined(CONFIG_FS_PROCFS) && !defined(CONFIG_FS_PROCFS_EXCLUDE_MEMINFO) procfs_unregister_meminfo(&heap->mm_procfs); #endif diff --git a/drivers/note/noteram_driver.c b/drivers/note/noteram_driver.c index 754f804486adc..0a1c63a9f5dbd 100644 --- a/drivers/note/noteram_driver.c +++ b/drivers/note/noteram_driver.c @@ -1086,6 +1086,8 @@ static int noteram_dump_one(FAR uint8_t *p, FAR struct lib_outstream_s *s, break; #endif #ifdef CONFIG_SCHED_INSTRUMENTATION_HEAP + case NOTE_HEAP_ADD: + case NOTE_HEAP_REMOVE: case NOTE_HEAP_ALLOC: case NOTE_HEAP_FREE: { @@ -1094,21 +1096,22 @@ static int noteram_dump_one(FAR uint8_t *p, FAR struct lib_outstream_s *s, int used = 0; FAR const char *name[] = { - "malloc", "free" + "add", "remove", "malloc", "free" }; tctx = noteram_dump_find_task_context(ctx, pid); if (tctx != NULL) { - tctx->mm_used += note->nc_type == NOTE_HEAP_FREE ? - -nmm->size : nmm->size; + tctx->mm_used += note->nc_type == NOTE_HEAP_FREE ? -nmm->size + : note->nc_type == NOTE_HEAP_ALLOC ? nmm->size + : 0; used = tctx->mm_used; } ret += noteram_dump_header(s, &nmm->nmm_cmn, ctx); ret += lib_sprintf(s, "tracing_mark_write: C|%d|Heap Usage|%d|%s" ": heap: %p size:%" PRIiPTR ", address: %p\n", - pid, used, name[note->nc_type - NOTE_HEAP_ALLOC], + pid, used, name[note->nc_type - NOTE_HEAP_ADD], nmm->heap, nmm->size, nmm->mem); } break; diff --git a/include/nuttx/sched_note.h b/include/nuttx/sched_note.h index 44947751dde29..2b9725de477a4 100644 --- a/include/nuttx/sched_note.h +++ b/include/nuttx/sched_note.h @@ -186,6 +186,8 @@ enum note_type_e NOTE_SYSCALL_LEAVE, NOTE_IRQ_ENTER, NOTE_IRQ_LEAVE, + NOTE_HEAP_ADD, + NOTE_HEAP_REMOVE, NOTE_HEAP_ALLOC, NOTE_HEAP_FREE, NOTE_DUMP_STRING, diff --git a/mm/mm_heap/mm_initialize.c b/mm/mm_heap/mm_initialize.c index 6852b439ad1db..d35604cd7b442 100644 --- a/mm/mm_heap/mm_initialize.c +++ b/mm/mm_heap/mm_initialize.c @@ -30,6 +30,7 @@ #include #include +#include #include #include @@ -201,6 +202,8 @@ void mm_addregion(FAR struct mm_heap_s *heap, FAR void *heapstart, mm_addfreechunk(heap, node); heap->mm_curused += 2 * MM_SIZEOF_ALLOCNODE; mm_unlock(heap); + + sched_note_heap(NOTE_HEAP_ADD, heap, heapstart, heapsize); } /**************************************************************************** @@ -366,6 +369,9 @@ void mm_uninitialize(FAR struct mm_heap_s *heap) for (i = 0; i < CONFIG_MM_REGIONS; i++) { kasan_unregister(heap->mm_heapstart[i]); + sched_note_heap(NOTE_HEAP_REMOVE, heap, heap->mm_heapstart[i], + (uintptr_t)heap->mm_heapend[i] - + (uintptr_t)heap->mm_heapstart[i]); } #if defined(CONFIG_FS_PROCFS) && !defined(CONFIG_FS_PROCFS_EXCLUDE_MEMINFO) diff --git a/mm/tlsf/mm_tlsf.c b/mm/tlsf/mm_tlsf.c index 51d351651e2ab..811cb47217c19 100644 --- a/mm/tlsf/mm_tlsf.c +++ b/mm/tlsf/mm_tlsf.c @@ -600,6 +600,8 @@ void mm_addregion(FAR struct mm_heap_s *heap, FAR void *heapstart, tlsf_add_pool(heap->mm_tlsf, heapstart, heapsize); mm_unlock(heap); + + sched_note_heap(NOTE_HEAP_ADD, heap, heapstart, heapsize); } /**************************************************************************** @@ -1439,6 +1441,9 @@ void mm_uninitialize(FAR struct mm_heap_s *heap) for (i = 0; i < CONFIG_MM_REGIONS; i++) { kasan_unregister(heap->mm_heapstart[i]); + sched_note_heap(NOTE_HEAP_REMOVE, heap, heap->mm_heapstart[i], + (uintptr_t)heap->mm_heapend[i] - + (uintptr_t)heap->mm_heapstart[i]); } #if defined(CONFIG_FS_PROCFS) && !defined(CONFIG_FS_PROCFS_EXCLUDE_MEMINFO) From e2bbfb99588e07a5d2507a46b39e85e8fda74712 Mon Sep 17 00:00:00 2001 From: xuxingliang Date: Wed, 10 Jul 2024 10:58:28 +0800 Subject: [PATCH 11/21] drivers/noteram: fix compile error Signed-off-by: xuxingliang Signed-off-by: Neo Xu --- drivers/note/noteram_driver.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/note/noteram_driver.c b/drivers/note/noteram_driver.c index 0a1c63a9f5dbd..c3897d6012952 100644 --- a/drivers/note/noteram_driver.c +++ b/drivers/note/noteram_driver.c @@ -696,6 +696,7 @@ noteram_dump_find_task_context(FAR struct noteram_dump_context_s *ctx, static const char *get_taskname(pid_t pid) { +#if CONFIG_DRIVERS_NOTE_TASKNAME_BUFSIZE > 0 FAR const char *taskname; taskname = note_get_taskname(pid); @@ -703,6 +704,7 @@ static const char *get_taskname(pid_t pid) { return taskname; } +#endif return ""; } From 8b007362b364289d5cec00bd63929daf16e32c7a Mon Sep 17 00:00:00 2001 From: xuxingliang Date: Sat, 6 Jul 2024 19:38:29 +0800 Subject: [PATCH 12/21] drivers/segger: add heap note support Signed-off-by: xuxingliang Signed-off-by: Neo Xu --- drivers/segger/note_sysview.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/drivers/segger/note_sysview.c b/drivers/segger/note_sysview.c index 1b221fff5a19e..0af3f562dc1ae 100644 --- a/drivers/segger/note_sysview.c +++ b/drivers/segger/note_sysview.c @@ -73,6 +73,11 @@ static void note_sysview_syscall_enter(FAR struct note_driver_s *drv, static void note_sysview_syscall_leave(FAR struct note_driver_s *drv, int nr, uintptr_t result); #endif +#ifdef CONFIG_SCHED_INSTRUMENTATION_HEAP +static void note_sysview_heap(FAR struct note_driver_s *drv, + uint8_t event, FAR void *heap, FAR void *mem, + size_t size); +#endif /**************************************************************************** * Private Data @@ -113,6 +118,9 @@ static const struct note_driver_ops_s g_note_sysview_ops = #ifdef CONFIG_SCHED_INSTRUMENTATION_IRQHANDLER note_sysview_irqhandler, /* irqhandler */ #endif +#ifdef CONFIG_SCHED_INSTRUMENTATION_HEAP + note_sysview_heap, /* heap */ +#endif }; static struct note_sysview_driver_s g_note_sysview_driver = @@ -319,6 +327,28 @@ static void note_sysview_syscall_leave(FAR struct note_driver_s *drv, } #endif +#ifdef CONFIG_SCHED_INSTRUMENTATION_HEAP +static void note_sysview_heap(FAR struct note_driver_s *drv, + uint8_t event, FAR void *heap, FAR void *mem, + size_t size) +{ + switch (event) + { + case NOTE_HEAP_ALLOC: + SEGGER_SYSVIEW_HeapAlloc(heap, mem, size); + break; + case NOTE_HEAP_FREE: + SEGGER_SYSVIEW_HeapFree(heap, mem); + break; + case NOTE_HEAP_ADD: + SEGGER_SYSVIEW_HeapDefine(heap, mem, size, 0); + break; + default: + break; + } +} +#endif + /**************************************************************************** * Public Functions ****************************************************************************/ From a7a712e7013c05d8b8cbc3f834bf43677ae9e92e Mon Sep 17 00:00:00 2001 From: Neo Xu Date: Sun, 6 Oct 2024 17:07:10 +0800 Subject: [PATCH 13/21] drivers/segger: upgrade segger to v356 From V3.5.6 on, data plot is supported. Signed-off-by: Neo Xu --- drivers/segger/Make.defs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/segger/Make.defs b/drivers/segger/Make.defs index 424c0f7206676..162cd4e3958b6 100644 --- a/drivers/segger/Make.defs +++ b/drivers/segger/Make.defs @@ -69,7 +69,7 @@ endif ifneq ($(CONFIG_SEGGER_RTT)$(CONFIG_SEGGER_SYSVIEW),) CFLAGS += ${INCDIR_PREFIX}segger$(DELIM)SystemView$(DELIM)SEGGER - SYSVIEW_VERSION ?= 354 + SYSVIEW_VERSION ?= 356 SYSVIEW_ZIP = SystemView_Src_V$(SYSVIEW_VERSION).zip # Download and unpack tarball if no git repo found From b71b69a4a667ab8cf76bb14edf4d30116d7aee4e Mon Sep 17 00:00:00 2001 From: xuxingliang Date: Wed, 28 Aug 2024 10:06:52 +0800 Subject: [PATCH 14/21] drivers/segger: add heap data plot Add heap current used to note. Plot it in segger sysview data plot. Signed-off-by: xuxingliang Signed-off-by: Neo Xu --- arch/sim/src/sim/sim_heap.c | 14 ++-- .../configs/systemview/defconfig | 1 + drivers/note/note_driver.c | 9 +- drivers/note/noteram_driver.c | 84 +------------------ drivers/segger/note_sysview.c | 53 ++++++++++-- include/nuttx/note/note_driver.h | 3 +- include/nuttx/sched_note.h | 5 +- mm/mm_heap/mm_free.c | 2 +- mm/mm_heap/mm_initialize.c | 5 +- mm/mm_heap/mm_malloc.c | 3 +- mm/mm_heap/mm_memalign.c | 3 +- mm/mm_heap/mm_realloc.c | 6 +- mm/tlsf/mm_tlsf.c | 19 +++-- sched/Kconfig | 2 +- tools/nxstyle.c | 11 ++- 15 files changed, 99 insertions(+), 121 deletions(-) diff --git a/arch/sim/src/sim/sim_heap.c b/arch/sim/src/sim/sim_heap.c index 0dc48e87f4c62..e95b559ff1213 100644 --- a/arch/sim/src/sim/sim_heap.c +++ b/arch/sim/src/sim/sim_heap.c @@ -186,7 +186,7 @@ static void mm_delayfree(struct mm_heap_s *heap, void *mem, bool delay) int size = host_mallocsize(mem); atomic_fetch_sub(&heap->aordblks, 1); atomic_fetch_sub(&heap->uordblks, size); - sched_note_heap(NOTE_HEAP_FREE, heap, mem, size); + sched_note_heap(NOTE_HEAP_FREE, heap, mem, size, 0); host_free(mem); } } @@ -230,7 +230,7 @@ struct mm_heap_s *mm_initialize(const char *name, procfs_register_meminfo(&heap->mm_procfs); #endif - sched_note_heap(NOTE_HEAP_ADD, heap, heap_start, heap_size); + sched_note_heap(NOTE_HEAP_ADD, heap, heap_start, heap_size, 0); return heap; } @@ -252,9 +252,7 @@ struct mm_heap_s *mm_initialize(const char *name, void mm_uninitialize(struct mm_heap_s *heap) { - sched_note_heap(NOTE_HEAP_REMOVE, heap, heap_start, - (uintptr_t)heap->mm_heapend[0] - - (uintptr_t)heap->mm_heapstart[0]); + sched_note_heap(NOTE_HEAP_REMOVE, heap, NULL, 0, 0); #if defined(CONFIG_FS_PROCFS) && !defined(CONFIG_FS_PROCFS_EXCLUDE_MEMINFO) procfs_unregister_meminfo(&heap->mm_procfs); @@ -393,10 +391,10 @@ void *mm_realloc(struct mm_heap_s *heap, void *oldmem, { if (oldmem != NULL) { - sched_note_heap(NOTE_HEAP_FREE, heap, oldmem, oldsize); + sched_note_heap(NOTE_HEAP_FREE, heap, oldmem, oldsize, 0); } - sched_note_heap(NOTE_HEAP_ALLOC, heap, mem, newsize); + sched_note_heap(NOTE_HEAP_ALLOC, heap, mem, newsize, 0); } do @@ -488,7 +486,7 @@ void *mm_memalign(struct mm_heap_s *heap, size_t alignment, size_t size) } size = host_mallocsize(mem); - sched_note_heap(NOTE_HEAP_ALLOC, heap, mem, size); + sched_note_heap(NOTE_HEAP_ALLOC, heap, mem, size, 0); atomic_fetch_add(&heap->aordblks, 1); atomic_fetch_add(&heap->uordblks, size); usmblks = atomic_load(&heap->usmblks); diff --git a/boards/arm/stm32/stm32f429i-disco/configs/systemview/defconfig b/boards/arm/stm32/stm32f429i-disco/configs/systemview/defconfig index 075534e939ea8..adb3a67086eec 100644 --- a/boards/arm/stm32/stm32f429i-disco/configs/systemview/defconfig +++ b/boards/arm/stm32/stm32f429i-disco/configs/systemview/defconfig @@ -38,6 +38,7 @@ CONFIG_RAM_START=0x20000000 CONFIG_RAW_BINARY=y CONFIG_RR_INTERVAL=200 CONFIG_SCHED_INSTRUMENTATION=y +CONFIG_SCHED_INSTRUMENTATION_HEAP=y CONFIG_SCHED_INSTRUMENTATION_IRQHANDLER=y CONFIG_SCHED_INSTRUMENTATION_SWITCH=y CONFIG_SEGGER_SYSVIEW=y diff --git a/drivers/note/note_driver.c b/drivers/note/note_driver.c index 232efde066c90..74141665420fc 100644 --- a/drivers/note/note_driver.c +++ b/drivers/note/note_driver.c @@ -92,8 +92,8 @@ #define note_irqhandler(drv, irq, handler, enter) \ ((drv)->ops->irqhandler && \ ((drv)->ops->irqhandler(drv, irq, handler, enter), true)) -#define note_heap(drv, alloc, data, mem, size) \ - ((drv)->ops->heap && ((drv)->ops->heap(drv, alloc, data, mem, size), true)) +#define note_heap(drv, event, data, mem, size, used) \ + ((drv)->ops->heap && ((drv)->ops->heap(drv, event, data, mem, size, used), true)) #define note_string(drv, ip, buf) \ ((drv)->ops->string && ((drv)->ops->string(drv, ip, buf), true)) #define note_event(drv, ip, event, buf, len) \ @@ -1356,7 +1356,7 @@ void sched_note_irqhandler(int irq, FAR void *handler, bool enter) #ifdef CONFIG_SCHED_INSTRUMENTATION_HEAP void sched_note_heap(uint8_t event, FAR void *heap, FAR void *mem, - size_t size) + size_t size, size_t used) { FAR struct note_driver_s **driver; struct note_heap_s note; @@ -1372,7 +1372,7 @@ void sched_note_heap(uint8_t event, FAR void *heap, FAR void *mem, for (driver = g_note_drivers; *driver; driver++) { - if (note_heap(*driver, event, heap, mem, size)) + if (note_heap(*driver, event, heap, mem, size, used)) { continue; } @@ -1389,6 +1389,7 @@ void sched_note_heap(uint8_t event, FAR void *heap, FAR void *mem, note.heap = heap; note.mem = mem; note.size = size; + note.used = used; } /* Add the note to circular buffer */ diff --git a/drivers/note/noteram_driver.c b/drivers/note/noteram_driver.c index c3897d6012952..e9b60333ab015 100644 --- a/drivers/note/noteram_driver.c +++ b/drivers/note/noteram_driver.c @@ -98,17 +98,9 @@ struct noteram_dump_cpu_context_s uint8_t next_priority; /* Task Priority of the next line */ }; -struct noteram_dump_task_context_s -{ - FAR struct noteram_dump_task_context_s *next; - pid_t pid; - size_t mm_used; -}; - struct noteram_dump_context_s { struct noteram_dump_cpu_context_s cpu[NCPUS]; - struct noteram_dump_task_context_s *task; }; /**************************************************************************** @@ -429,13 +421,6 @@ int noteram_close(FAR struct file *filep) { FAR struct noteram_dump_context_s *ctx = filep->f_priv; - while (ctx->task != NULL) - { - FAR struct noteram_dump_task_context_s *task = ctx->task; - ctx->task = task->next; - kmm_free(task); - } - kmm_free(ctx); return OK; } @@ -638,60 +623,7 @@ static void noteram_dump_init_context(FAR struct noteram_dump_context_s *ctx) } /**************************************************************************** - * Name: noteram_dump_find_task_context - ****************************************************************************/ - -#ifdef CONFIG_SCHED_INSTRUMENTATION_HEAP -static FAR struct noteram_dump_task_context_s * -noteram_dump_find_task_context(FAR struct noteram_dump_context_s *ctx, - pid_t pid) -{ - FAR struct noteram_dump_task_context_s *task; - FAR struct noteram_dump_task_context_s *prev; - - if (ctx->task == NULL) - { - ctx->task = kmm_zalloc(sizeof(*ctx->task)); - if (ctx->task == NULL) - { - return NULL; - } - - ctx->task->pid = pid; - ctx->task->next = NULL; - return ctx->task; - } - else - { - task = ctx->task; - } - - while (task != NULL) - { - if (task->pid == pid) - { - return task; - } - - prev = task; - task = task->next; - } - - prev->next = kmm_zalloc(sizeof(*prev)); - if (prev->next == NULL) - { - return NULL; - } - - task = prev->next; - task->pid = pid; - task->next = NULL; - return task; -} -#endif - -/**************************************************************************** - * Name: get_task_name + * Name: get_taskname ****************************************************************************/ static const char *get_taskname(pid_t pid) @@ -1094,26 +1026,16 @@ static int noteram_dump_one(FAR uint8_t *p, FAR struct lib_outstream_s *s, case NOTE_HEAP_FREE: { FAR struct note_heap_s *nmm = (FAR struct note_heap_s *)p; - FAR struct noteram_dump_task_context_s *tctx; - int used = 0; FAR const char *name[] = { "add", "remove", "malloc", "free" }; - tctx = noteram_dump_find_task_context(ctx, pid); - if (tctx != NULL) - { - tctx->mm_used += note->nc_type == NOTE_HEAP_FREE ? -nmm->size - : note->nc_type == NOTE_HEAP_ALLOC ? nmm->size - : 0; - used = tctx->mm_used; - } - ret += noteram_dump_header(s, &nmm->nmm_cmn, ctx); ret += lib_sprintf(s, "tracing_mark_write: C|%d|Heap Usage|%d|%s" ": heap: %p size:%" PRIiPTR ", address: %p\n", - pid, used, name[note->nc_type - NOTE_HEAP_ADD], + pid, nmm->used, + name[note->nc_type - NOTE_HEAP_ADD], nmm->heap, nmm->size, nmm->mem); } break; diff --git a/drivers/segger/note_sysview.c b/drivers/segger/note_sysview.c index 0af3f562dc1ae..95ded2b2ebcb6 100644 --- a/drivers/segger/note_sysview.c +++ b/drivers/segger/note_sysview.c @@ -23,6 +23,7 @@ ****************************************************************************/ #include +#include #include #include @@ -76,7 +77,7 @@ static void note_sysview_syscall_leave(FAR struct note_driver_s *drv, #ifdef CONFIG_SCHED_INSTRUMENTATION_HEAP static void note_sysview_heap(FAR struct note_driver_s *drv, uint8_t event, FAR void *heap, FAR void *mem, - size_t size); + size_t size, size_t curused); #endif /**************************************************************************** @@ -330,19 +331,55 @@ static void note_sysview_syscall_leave(FAR struct note_driver_s *drv, #ifdef CONFIG_SCHED_INSTRUMENTATION_HEAP static void note_sysview_heap(FAR struct note_driver_s *drv, uint8_t event, FAR void *heap, FAR void *mem, - size_t size) + size_t size, size_t curused) { switch (event) { case NOTE_HEAP_ALLOC: - SEGGER_SYSVIEW_HeapAlloc(heap, mem, size); - break; case NOTE_HEAP_FREE: - SEGGER_SYSVIEW_HeapFree(heap, mem); - break; + { + U32 value = (U32)curused; + const SEGGER_SYSVIEW_DATA_SAMPLE data = + { + .ID = (U32)(uintptr_t)heap, + .pU32_Value = &value, + }; + + SEGGER_SYSVIEW_SampleData(&data); + if (event == NOTE_HEAP_ALLOC) + { + SEGGER_SYSVIEW_HeapAlloc(heap, mem, size); + } + else + { + SEGGER_SYSVIEW_HeapFree(heap, mem); + } + + break; + } + case NOTE_HEAP_ADD: - SEGGER_SYSVIEW_HeapDefine(heap, mem, size, 0); - break; + { + char name[32]; + SEGGER_SYSVIEW_DATA_REGISTER data = + { + .ID = (U32)(uintptr_t)heap, + .DataType = SEGGER_SYSVIEW_TYPE_U32, + .Offset = 0, + .RangeMin = 0, + .RangeMax = 0, + .ScalingFactor = 1.f, + .sUnit = "B", + .sName = name, + }; + + snprintf(name, sizeof(name), "Heap%p", heap); + + SEGGER_SYSVIEW_RegisterData(&data); + SEGGER_SYSVIEW_HeapDefine(heap, mem, size, 0); + break; + } + default: break; } diff --git a/include/nuttx/note/note_driver.h b/include/nuttx/note/note_driver.h index 5372e14643942..cefe5e95b316a 100644 --- a/include/nuttx/note/note_driver.h +++ b/include/nuttx/note/note_driver.h @@ -91,7 +91,8 @@ struct note_driver_ops_s #endif #ifdef CONFIG_SCHED_INSTRUMENTATION_HEAP CODE void (*heap)(FAR struct note_driver_s *drv, uint8_t event, - FAR void *heap, FAR void *mem, size_t size); + FAR void *heap, FAR void *mem, size_t size, + size_t curused); #endif #ifdef CONFIG_SCHED_INSTRUMENTATION_DUMP CODE void (*string)(FAR struct note_driver_s *drv, uintptr_t ip, diff --git a/include/nuttx/sched_note.h b/include/nuttx/sched_note.h index 2b9725de477a4..b49207ccf0d0d 100644 --- a/include/nuttx/sched_note.h +++ b/include/nuttx/sched_note.h @@ -390,6 +390,7 @@ struct note_heap_s FAR void *heap; FAR void *mem; size_t size; + size_t used; }; struct note_string_s @@ -556,9 +557,9 @@ void sched_note_irqhandler(int irq, FAR void *handler, bool enter); #ifdef CONFIG_SCHED_INSTRUMENTATION_HEAP void sched_note_heap(uint8_t event, FAR void *heap, FAR void *mem, - size_t size); + size_t size, size_t used); #else -# define sched_note_heap(e,h,m,s) +# define sched_note_heap(e,h,m,s,c) #endif #ifdef CONFIG_SCHED_INSTRUMENTATION_DUMP diff --git a/mm/mm_heap/mm_free.c b/mm/mm_heap/mm_free.c index 5a1dcb7989066..6848ad3ab8bea 100644 --- a/mm/mm_heap/mm_free.c +++ b/mm/mm_heap/mm_free.c @@ -128,7 +128,7 @@ void mm_delayfree(FAR struct mm_heap_s *heap, FAR void *mem, bool delay) /* Update heap statistics */ heap->mm_curused -= nodesize; - sched_note_heap(NOTE_HEAP_FREE, heap, mem, nodesize); + sched_note_heap(NOTE_HEAP_FREE, heap, mem, nodesize, heap->mm_curused); /* Check if the following node is free and, if so, merge it */ diff --git a/mm/mm_heap/mm_initialize.c b/mm/mm_heap/mm_initialize.c index d35604cd7b442..ae31af1219de2 100644 --- a/mm/mm_heap/mm_initialize.c +++ b/mm/mm_heap/mm_initialize.c @@ -203,7 +203,8 @@ void mm_addregion(FAR struct mm_heap_s *heap, FAR void *heapstart, heap->mm_curused += 2 * MM_SIZEOF_ALLOCNODE; mm_unlock(heap); - sched_note_heap(NOTE_HEAP_ADD, heap, heapstart, heapsize); + sched_note_heap(NOTE_HEAP_ADD, heap, heapstart, heapsize, + heap->mm_curused); } /**************************************************************************** @@ -371,7 +372,7 @@ void mm_uninitialize(FAR struct mm_heap_s *heap) kasan_unregister(heap->mm_heapstart[i]); sched_note_heap(NOTE_HEAP_REMOVE, heap, heap->mm_heapstart[i], (uintptr_t)heap->mm_heapend[i] - - (uintptr_t)heap->mm_heapstart[i]); + (uintptr_t)heap->mm_heapstart[i], heap->mm_curused); } #if defined(CONFIG_FS_PROCFS) && !defined(CONFIG_FS_PROCFS_EXCLUDE_MEMINFO) diff --git a/mm/mm_heap/mm_malloc.c b/mm/mm_heap/mm_malloc.c index 4345fc1f4b7cc..3d15c326ac354 100644 --- a/mm/mm_heap/mm_malloc.c +++ b/mm/mm_heap/mm_malloc.c @@ -327,7 +327,8 @@ FAR void *mm_malloc(FAR struct mm_heap_s *heap, size_t size) { MM_ADD_BACKTRACE(heap, node); ret = kasan_unpoison(ret, nodesize - MM_ALLOCNODE_OVERHEAD); - sched_note_heap(NOTE_HEAP_ALLOC, heap, ret, nodesize); + sched_note_heap(NOTE_HEAP_ALLOC, heap, ret, nodesize, + heap->mm_curused); #ifdef CONFIG_MM_FILL_ALLOCATIONS memset(ret, MM_ALLOC_MAGIC, alignsize - MM_ALLOCNODE_OVERHEAD); #endif diff --git a/mm/mm_heap/mm_memalign.c b/mm/mm_heap/mm_memalign.c index d446c600bcd98..aa0621889fece 100644 --- a/mm/mm_heap/mm_memalign.c +++ b/mm/mm_heap/mm_memalign.c @@ -281,7 +281,8 @@ FAR void *mm_memalign(FAR struct mm_heap_s *heap, size_t alignment, alignedchunk = (uintptr_t)kasan_unpoison((FAR const void *)alignedchunk, size - MM_ALLOCNODE_OVERHEAD); - sched_note_heap(NOTE_HEAP_ALLOC, heap, (FAR void *)alignedchunk, size); + sched_note_heap(NOTE_HEAP_ALLOC, heap, (FAR void *)alignedchunk, size, + heap->mm_curused); DEBUGASSERT(alignedchunk % alignment == 0); return (FAR void *)alignedchunk; diff --git a/mm/mm_heap/mm_realloc.c b/mm/mm_heap/mm_realloc.c index a6e67d8ce2527..13fc849541866 100644 --- a/mm/mm_heap/mm_realloc.c +++ b/mm/mm_heap/mm_realloc.c @@ -383,8 +383,10 @@ FAR void *mm_realloc(FAR struct mm_heap_s *heap, FAR void *oldmem, heap->mm_maxused = heap->mm_curused; } - sched_note_heap(NOTE_HEAP_FREE, heap, oldmem, oldsize); - sched_note_heap(NOTE_HEAP_ALLOC, heap, newmem, newsize); + sched_note_heap(NOTE_HEAP_FREE, heap, oldmem, oldsize, + heap->mm_curused - newsize); + sched_note_heap(NOTE_HEAP_ALLOC, heap, newmem, newsize, + heap->mm_curused); mm_unlock(heap); MM_ADD_BACKTRACE(heap, (FAR char *)newmem - MM_SIZEOF_ALLOCNODE); diff --git a/mm/tlsf/mm_tlsf.c b/mm/tlsf/mm_tlsf.c index 811cb47217c19..ff32de3726250 100644 --- a/mm/tlsf/mm_tlsf.c +++ b/mm/tlsf/mm_tlsf.c @@ -511,7 +511,7 @@ static void mm_delayfree(FAR struct mm_heap_s *heap, FAR void *mem, /* Update heap statistics */ heap->mm_curused -= size; - sched_note_heap(NOTE_HEAP_FREE, heap, mem, size); + sched_note_heap(NOTE_HEAP_FREE, heap, mem, size, heap->mm_curused); tlsf_free(heap->mm_tlsf, mem); } @@ -601,7 +601,8 @@ void mm_addregion(FAR struct mm_heap_s *heap, FAR void *heapstart, tlsf_add_pool(heap->mm_tlsf, heapstart, heapsize); mm_unlock(heap); - sched_note_heap(NOTE_HEAP_ADD, heap, heapstart, heapsize); + sched_note_heap(NOTE_HEAP_ADD, heap, heapstart, heapsize, + heap->mm_curused); } /**************************************************************************** @@ -1191,7 +1192,8 @@ FAR void *mm_malloc(FAR struct mm_heap_s *heap, size_t size) #endif ret = kasan_unpoison(ret, nodesize); - sched_note_heap(NOTE_HEAP_ALLOC, heap, ret, nodesize); + sched_note_heap(NOTE_HEAP_ALLOC, heap, ret, nodesize, + heap->mm_curused); #ifdef CONFIG_MM_FILL_ALLOCATIONS memset(ret, 0xaa, nodesize); @@ -1271,7 +1273,8 @@ FAR void *mm_memalign(FAR struct mm_heap_s *heap, size_t alignment, memdump_backtrace(heap, buf); #endif ret = kasan_unpoison(ret, nodesize); - sched_note_heap(NOTE_HEAP_ALLOC, heap, ret, nodesize); + sched_note_heap(NOTE_HEAP_ALLOC, heap, ret, nodesize, + heap->mm_curused); } #if CONFIG_MM_FREE_DELAYCOUNT_MAX > 0 @@ -1399,8 +1402,10 @@ FAR void *mm_realloc(FAR struct mm_heap_s *heap, FAR void *oldmem, memdump_backtrace(heap, buf); #endif - sched_note_heap(NOTE_HEAP_FREE, heap, oldmem, oldsize); - sched_note_heap(NOTE_HEAP_ALLOC, heap, newmem, newsize); + sched_note_heap(NOTE_HEAP_FREE, heap, oldmem, oldsize, + heap->mm_curused - newsize); + sched_note_heap(NOTE_HEAP_ALLOC, heap, newmem, newsize, + heap->mm_curused); } #if CONFIG_MM_FREE_DELAYCOUNT_MAX > 0 @@ -1443,7 +1448,7 @@ void mm_uninitialize(FAR struct mm_heap_s *heap) kasan_unregister(heap->mm_heapstart[i]); sched_note_heap(NOTE_HEAP_REMOVE, heap, heap->mm_heapstart[i], (uintptr_t)heap->mm_heapend[i] - - (uintptr_t)heap->mm_heapstart[i]); + (uintptr_t)heap->mm_heapstart[i], heap->mm_curused); } #if defined(CONFIG_FS_PROCFS) && !defined(CONFIG_FS_PROCFS_EXCLUDE_MEMINFO) diff --git a/sched/Kconfig b/sched/Kconfig index 63b27f375230d..1fca42e4608ea 100644 --- a/sched/Kconfig +++ b/sched/Kconfig @@ -1290,7 +1290,7 @@ config SCHED_INSTRUMENTATION_HEAP ---help--- Enables additional hooks for heap allocation. - void sched_note_heap(uint8_t event, FAR void* heap, FAR void *mem, size_t size); + void sched_note_heap(uint8_t event, FAR void* heap, FAR void *mem, size_t size, size_t curused); config SCHED_INSTRUMENTATION_DUMP bool "Use note dump for instrumentation" diff --git a/tools/nxstyle.c b/tools/nxstyle.c index ce9b8fb1c4248..ce1a957f092bb 100644 --- a/tools/nxstyle.c +++ b/tools/nxstyle.c @@ -294,12 +294,19 @@ static const char *g_white_content_list[] = * drivers/segger/note_sysview.c */ + "DataType", + "Offset", + "Prio", + "pU32_Value", + "RangeMax", + "RangeMin", "SEGGER_SYSVIEW", - "TaskID", + "ScalingFactor", "sName", - "Prio", + "sUnit", "StackBase", "StackSize", + "TaskID", /* Ref: * drivers/segger/syslog_rtt.c From 5e73b0051156f1f226f3720b57d95042a5ab122f Mon Sep 17 00:00:00 2001 From: Neo Xu Date: Sun, 6 Oct 2024 18:12:36 +0800 Subject: [PATCH 15/21] Documentation: add segger sysview heap trace example Signed-off-by: Neo Xu --- .../components/drivers/special/segger.rst | 13 ++++++++++++- .../components/drivers/special/sysview.png | Bin 0 -> 620272 bytes 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 Documentation/components/drivers/special/sysview.png diff --git a/Documentation/components/drivers/special/segger.rst b/Documentation/components/drivers/special/segger.rst index 29097de3b82ac..e22a420afd6d8 100644 --- a/Documentation/components/drivers/special/segger.rst +++ b/Documentation/components/drivers/special/segger.rst @@ -17,7 +17,7 @@ Supported Segger drivers: Segger SystemView ================= -Steps to enable SystemView support: +1. Steps to enable SystemView support: #. Make sure your architecture supports a high-performance counter. In most cases it will be: @@ -62,3 +62,14 @@ Steps to enable SystemView support: In case SystemView returns buffer overflow errors, you should increase ``CONFIG_NOTE_RTT_BUFFER_SIZE_UP``. + +2. Use SystemView for heap tracing: + +Refer to example configuration at ``stm32f429i-disco/configs/systemview``. +Make sure that ``CONFIG_SCHED_INSTRUMENTATION_HEAP`` is enabled. + +Example of screenshot from SystemView: + +.. image:: sysview.png + :width: 800px + :align: center diff --git a/Documentation/components/drivers/special/sysview.png b/Documentation/components/drivers/special/sysview.png new file mode 100644 index 0000000000000000000000000000000000000000..d5f87096315047cf5973bccb589a5aef387d99fc GIT binary patch literal 620272 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 z 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ξ01T69%88 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®WZKyfJ9^IGK@k7};!GJ>vKxfc*LjC(vM>+o0kZrjARO z@6nz5>-dNbzxv~4It5z=_AN)2{ysl{0>Gf_&}BE^leqiH29b~-4^-(S?Pzg6ie3Nk z;aSeJrNe@vggTRtC)Y2;FEIkw|9sH`JKqJ`M2-3j^%xzi>kP`IiEedu8Bb~= zM;q*&DCNLR$QQkvn^%HL6S$%s&R5zls_^Uf73D^^QS0^tG73jb#gfH?5-Gm)<00Yr zOg&JSZ3eFZ>UZE*1fHXVkY1Y*Tn!QTd%4K*xx>)eHqN z*Gw`ON5J-l&@qu0EN#-)^@dp#e-yAXAIOOwZ}7sqEem^{g+ro$nS;Kb!?9(jLEhp~ z%Ic)L z9O=2Q+msf~n_oUP|HM@v3y1xGoK+t9{ZjaqKT>OMZ||Q`leaW@I(_dSFujh>0j{X? zOP}?XWwvV7g%8(y^~|O_IcpY?k~(5s?tAd;3rjuvAt;!oJI7y@w$-T#+cg_6V4t!N zB{B*CkFXglz?R%UHET=NPg}hox~kFY&CfQZgxqnO@Xor*eU)0+3!DmAJliQL-MO*3v0Pzzu4E9L zNLrX+YW*jsMaPteRj&pN9LV6x>$lkr^sRWXOeeDX-jG*7-)&w}E|=Z0VJm!iP30t1 ziC71xhtxfM1V{SLfb4Vhg1F=F-M@b}utSHoZEyPbGr#xfks}Ay^C;_m6p?*roWLl) zN%GRz_hP`7N*i4ng`pwfSu|iODkopPoG`bOrnYuWX+rwJvZFRF1FqSe8gIA;Su}8J zfurk?E&-b$#1QpC*}Q)ISD|CXOh?20wGWabb-q`Z5 zVF9Z0A>OZlQWu!|w=Jt&ckLqk8$m!Qi=u(A=DCYS-sm3LPz)iDu$@g6EqPt%XGNYV zyqBVHv3oY+wFyx7uIp9WHL-o66sb;C&-k{dCigG4Esehnm*jxAOE}Xiwr0942Tz^gVLBQ1AR<6a4 zk;(VqUj`8~WfD9l1GfzRI6uGYJjxh3zxV=GxVa9~vF7H2MFNrur2<+I^B_Dj}xS@0H(zZuGf+!>K`!B!RM{wQSP!I< z@6#9;140&mTrXeMxpU{@k2_-(aLPDz0aZH$!W7fBsdw*+7w2D{^EUK#noB!T2OS%| zArK~9E4440I%d<0J~A$)?g;4RAo5%dUjg4T8<^%Ak~Gwqr!d?n{%K41HpCH2#eKg% z(YA@rO_iW7q!>$AJr?~|K`EtcRU!zLYeE$pH%b!F?QjIaw1ZGlnoF z?~te&Vel&MRR>3h3$`u+N})%`#ok!=O$Xt%Q}_1in@=9KL_Y6?RPz1ve)LVZ#7c_lYjj|s1j?L`cb-JUjO839?l~DrO%!y zsLr2Xa}H8WJf_m%1;~-g@r=h!(!elVKVtv87SF@)nC6tI>DkIX==~9^Zv~qQn{O$r zgE33Ajp;Pj%600mh~J~Ba=<*{XIi-+pQ0bkk-r2{9;!qrA0YYgHD3?=U8%>z8}E`k z)Ufl~f_rU|dmGx>9gElPd+_-240))6F|Y%eehDu62KhSIc z069+no6ffp3$BPmaXCr*s%w|$mPUhX*drG_8(H;9ocZq6y#S4S3$Gu=++AD&GrfiD z;t+fM@1A2G0tpeMI#LMzCp_vz@Fn_#QMEsxB?hX3egROt?8i%n0PS!u$nA|k(zIza zQkZ;IizRA{Z2|^Ln$*~=qu2c1bC+zNuGVya{NN{l2mij(*hZIzpt!lfjbbK1FfYeE zW&$34!$Aw~C^lu%y(nI|6`+d~O%(eWg+M!vV(*A%d({Xs0~8b#G@9>8Z@l5){WBJN zF<(892#PqL*$|}Sg{p0UVA#BQb9yP7@;O@9==7Pu>BRiDcoZ~v^7(H2&wd`!QK2Cv znq69ad?;2dQzZ$|5`%L6?=%BUUP5tWZ?H0daBm@i^D?A(~oB@%0BLo$iGV7OV!2 zXl~JRKPLi*vd8s%@qoityq)f zG~*v%`2xi1K1Cl3J17crc}4=~&>fju8TT>zK#9V=BO)G%0CA*1Zi~Hl+1sl@*j3<9 zK(5B2cK~RtuxV71NG1#N_ZfUd9z7p;$FWrr*7RK2qFIgF7?wTjJ8yJdpY(&ak)CfO z6!hBZ8+<>wXKA5dG$$Y|(+XIB=_O^|diin|R}F0$B|PO}tRB6l^9u9E{p!qt%}sI4 zBwY9GA+PqZqulM0)t7v1ybLC8X}jW+g4*`(_ZQVo*xWzjlDfs1;0Y5Z*d)1j=Yxe@ zy&94p9vs}0dm7efkbA+Dq03&5MYgjiavG8BM>7!ecmq%@a;=`#8l4#Q;EQpN7nN_v zgZJ-%q^5I*a$|8_Kx<&VGmkYy9aJ->z`We8*wz`*ni74b3JpAr9jOQyFu;fR}`(BH3x4d%XyMCfe zLhiQ)#$z>MrvZ9xY2vh>G0HUcMmCKQI08Z2O(^SV{OdPUV+oS5xQjQ4!)N!ED>zwPs*Bb<07@jDP}Z5~r1oU6aGrk549;W^iK7h;od=3{dYhUNovY24E)ByE zFp1IynxPQcS8r8SAO4Dzk>FPJOOmYy6`6o=J~RfLsg*a5`U)P22sX6wWO`Yfb&RVx z@d^yhEeap1)im<|J0*T|Ps3}NH4VT`A$&4`bY_z4oQuoz9>FYf`hR3)+g;yiQ}s>L zs}6CIQ~>D@9?-=5S9(c>2xV){ebMKQ1K#sGdJv|**e5!XjhaPA_;EMIzIi!tIZcTx-=9I z3Lz&ekvswNX&b1q!r{#rAH5w_Iv0~XT%)a*-*g;`wW0fgxRF(_)~sB48mTbb_`GxW z0JzBEn9=EqLF%7}_e)g|FVoxLvcdhx3Jk-@9i%84cmBx!(F63lv;wsD{!d^dy$Vt2 z4Y0rdkSLx#DvHC7KPonP&P8$QQYQquNFLz2QBuL5(LJ;F&*W6&OyI(j=KPW&R8i1i zlKzb#2{eD0R4kyqbj?0~3{!ZqsN@OH^(kvutPynPDSTK#>>RwN{E@@dxUJC`(*4Cg zeYUhBF|*7dZLrqU(1(AH&QIEPCOr6#W5V0#b;?`+HiJaf_7ySmqx_4_9CMZpMJOoY zuKw}q^b|r7*f$U%8eL?6nyS*D^x3jS@}{6zlP(oyhf|IS_N%W>sb7dnMye-5qBW9> z#LXiPVJIA4&!Dy6?SzH^N5jO*5ln5|#hYd)R8EklOUAL`QrZIqfnCft+=bN`Fqo6D zxV0D*XftGuYQW`i4_~!VfhcIz$YFupArlXOWr5U+P>eLWF@bg-=BC1NXO^xVY~Xc* zAJ^ra!S_NAr@+oEtEq7niob~&ZKkMr5(@{EVf)UV@6)D24#$gBrmmFYi#n9!P%aBJ zK;m2`>Bg5o2Ky=eM^;UTMVgIlR70K_eZSnyzh`y30?(a^t-Z5+enzcu{8oJ_Il147 zo>W`NwG!stY(yo@X&}KXunG32Gb~N?I7|d^uswv92E9c7tYR-;t^JjYRT00u5z3%- zAbmwe#dlNyl3lbB={4FH#G$e@_=n)B2g>v(Dj7;&R+o-h8wG$p4x&4)u8oOJ1r(bq z@C^_CH!^)oh9hmR!BDJl3XLrKH2ie+|Fi%RN}9o$d_u_*5ZDF`qV0Zq*}=?u$j>rN z8nObXx#wZaLF2b#?bKoXlg-{EE$NK7moG}oZn)q+nvoJ@$9*Ut9pQNxz9Jea zsNh{SLj~K`kGuX$%RU#9i&r3fjM^)mH!g(@!gK-g{YLaovA(`HZqs*h**#>DfCVAR zI*nY@pY<5?;x8MAep=fHI=_!I9akQm&>%>j zx{-ki7hGObpRo4hdsB^ z|7<=d%d+TdkwwN@ac>h0sf~dUlr6cB~c#ej16atEN5^oaW|2yhcWIPcsis3K#pUl(` zTh0y&2-i%oc(g0Cs3^Gp`O^zabtmO-J-*KLpWEA84O#v@%_-~DBm>JjO_Jm+Ed$*1 zh6YXRsAm!#q&*YK3^~M2oibZwCVi{?HQ7&XnGGyvyg?}0fotYKU%G#mMLB{l$&8@t4Q+3~Horw&3(j+tu>4JSi|NK2d>k}A>E1)|N#)vuMFlNV82(kD6GRr|i|G30q`_B z&z+lTv@}p{Cm22S)7Fix52o}ktJEGgY*y(fl9DYn7oLrXu3wq! z#hy9yPkOrXzrA?nxa_H<7nYf!G) zU7p=fIr!|8!@+f?N_gOU(G?lDZxsK3Mn-5zNF(HIyL%!I$3bFYZM_n5m%Q%qXZ^;6 z(PF1%KrA!S%Tj->xe}l{N-rxIhzy4PFMGoJX_NPPA3x%9?|g9Uwrzy+blEf~I5RNK zymq9&jmJO#7@FA~o@_DAd~eUuJJQTs`Q1rh`_|!eSpYf%6MDv_i|0(zJk-!LC75j* z;Fv*1gm%Y(p|fm0lO}C%G=2Kg3lZZdkPXCu2*-p|tdV3pG%^()(eC&62fK9c+}U`A zA4ZE8k<(ta@lly+X=#WA^mtXAilQijz38bc`izyBX}af*37yBak&DTLyZ_6wgVhP# zxCHmWm%Lx@Rh`?!A)7ry{$x&~vzSgv+T+6J+rz%DD16ir_)McHCV3vu4Vc_%buAX-RF? z7c?E;Kd+a2op-oZ?{ix9JzxJ> zJ4^ni#emTv8g6C3+m0XK+gTxEz>xi`t%4lRzxu6RY(47j)b*|O=D zb~l#p*!IeApY?$C7+M0p6#bho=FA4?+~;L3SK8Eg_T(S8 z17)+TliclzV!NjKi4(>3%D16nI>jF?&JD5IPzF?+`}ShR_vcXH+IkAY<2e(hb%u5r zavA+EgZulcO0X*AvZPL;7a>+HY-15D9Sy0!McRTFg*+u4&zg0#X3U(ArY@Kd@tHm} z*?>O)J+}>9B21_xSxwqHJU(U$ni%f(o<1rvSU_k=9HO9k5jxS^>Ja{HC$;09K16Ry zivjyOxu*iUXl{gn+j#Up9uCfQ%bv5gZHEqbK?IQWKZ~QeFd>9Rw&KPxW! z-T#2{L6@4}nGIHLE4TaDPSNMykD}8{Hq9CQJbHA%1H8u*Xs9#65>!DLfvv(=K11Qa ziE}cex0$sn|DqAElo|ap>`;H_hxw)FHdeWlDmI;rHkjr`ptgyVCcVh9MoZRx#2u+h zU^}PK7nbxcegaP5#ZsW~T*=SGZ_itz7dDS4BC5Zmu9tW6_=ZLd`ax0`fvltpX}C-e z(lyliRavzW#x9;GgA$RZ`Ui>zwb7%yd!sVYML0`LqzT;%q3=nwsAzhahr>TdCdF_> z$wU;EC<7fxs}%34+wE5RlpNC50#q0`nSnk)S3J+qqEygeARbja@__vCdFAjd8x zcp>)m+ja_@fynR6tC0F~%CSp57u#D{)D0t%07WlBRUD`i2rt1eQL&espMJs_VP;lb z;JuPYFtCuyj#=id%NSA6px#8^KS4y;)KymgGbN*$s*_E+K56Ur?fI3}axhZHuvukh z1@C+c(w45R96d($kS01d0rD_*`kD6WIAwD}kTltm7O!BAMn7X+4F3Fkq_8H3$D4=Bs17-+xP7AaLS`O>l zUsQcO50NHP6$l;|G7;b8H5Y9{*dPSwCEDWZgi&um>Px3;{pWE4n^D9|cNv055T4}v z(R2_wp0LYk9D<;=o?`WJUrLHnA+gfj)1ntdj0;9-91W z=t+x@foEf5!!BR`bBz}`USxTg@q*dHs zgijCkf@$#xWrfY44?Z4+26q{)=HY~Sc&4O0adG!5n0ATxjd!~1RqL#cnH*3E2fSf- zODfxU?>?Qs0aoI&dHU=bXHF|R{IC*(kx@dzLxb}B)|9->K*KqWwZbkDF`3)2OJtTG z=5;_waNpy!Uy*t?eyqHI!%~Z#SLH-15Grt>(>vy6$hgw2O19wEuM6H@)X% zCBx7Who3C5XweX$8Bwz}!am5-{$1pCuYobT4~i?w;8>Xm&=ITRbk>)sC%FJ|aYS1U zn)=H%C&kNvO%?{3GGzJNW0d#_#tQbjnLH86oV5w@H4~ZJRb@SFhHSW-wKnByw>wxo#dKMy#XdS4*4j>Y%;g=^3NQ%XWnZzR~M}&++lPq232f!cPMLgp6l>4Tg^u@-^JX?JT#i(evg?UFyMJkcA-1!w}7!Emk{>PNHnxOT)fyk zp9V&Mjm&wmHKJQVWn@mE-8gHj$@jzVLo5~v9 z|8n-lQFi6c++uP1%WyJqb|=^(5>a{~P3JN}Qr@9(@J!RH87Kd(_b5=zt*q{{Z4Keq z#NAixDZXJky&O^9VCEN4-1}x8JyxX>)wfW|X87UN(g%3(fY1Am9+~-5uf~lV58w1> zh_bRWsEmx<0is1kn)6+XUSqFVL_FnT6{LV7+>+TgQ`vlgO>~7+h9Go0Ry5r9P!FRW z66+5)EbVug&tqdYbvg84D}yUw7VyMT-eB7x(38W?E!j?ns%*c#!mz`#OVR858%$gT zRxVSCj*h;=TZ;Tbwcxh8epmxclXe^8cRwcd+B&dB^y z4P~n?8-kByS$eOp=B2Z-Zxxl(%H@fqN1A7(7})C_TB#lu-|u*h=br8fcBdwN-$EMV zvZ4B#(+6ljym`k|Eqa|ot5yT18mlh3&}rMX%?8OG*NnEX3Vc_tH)?0#gM$y6uIIb* z*(vW%KhX%jg57Jck>8mSX?8v5##s+f(v9ywr*3z_1>KwrGc7;Vl&BshEW-Bc+>(+b z(~|85paXCpyubqgBisCayW)1ZC@c8BJckO(&YF z=obw;^}b`*dzXKv_aAGtfyBY&M+FytAGx>i%8|?#9uIr((`KqoR#ukps~d&x4Qpao zbxK}z?R8+ZQdCf^7pd1z2_WjT)fJ&b&9~)Vx1ADSe8&F~s%sPDG0lB8E#By7FW>={ z1Ezo@Ik(P)h3V4c6@4odDp-LQC=G3iq5?;&si?dQ*;kp#d>BIAl7GE&Mk%l)QQA2H zn!EK%*NtKo3j+x_kFhwhtiQ5_VPPiDa48_IqGxT+Eb2|lC;U-oItU!>9)!7G;@2!C zmOwYvKBQnZf^aRv+7m0V1; z_~-;ZJgP79I`Irq^G&9rRL$6foq(Yka&(%ly*3W5I0vafM!-DG`a`fFLchqh^_)%R zXdufNXThN+y;!n$Z#X4ltq>nDgtZKup^cg4R4mgyX$I7wf|MqaNZK!5y0kuTF_$+7 z+Ye?4u|+R^JmM@Ob_NWYKJ1p{k{kAw42Z)cR%`0NS=FA(K%Be~sB()-JQWl%_-^{~ zacA;M7C(HfXsu%=)JAPh#5WO**s znqfCH?V_H&uXHZmX-i(p*uWm;=e91f{W+lAKQa0vZD0rF%@fIODZyJ4K2t%5q33&M6-i87%jwvINtD zIHV+`6gUk&k=vfdepPk(C{3@Hc^NvLMSYm`g(K*(5qkiw9vxTbZIy605H_C*(06A+Ddn95$b%)6QKrU{S&kCyXWxF$kF-ZAqe1YQmR^rG3*oNsIR zVWrfd*MY~J)O;6c=dYqNnlR3jR1WO^u8r!})+&eZcO zCmjcMqKhohjP-43(~_k6Lm8zJHF{K+#7+*He@g+&rN24UAN)HdAdn3%jyWeCfJYPI zFj(GPUotF-+4CAPQvTlG}jw$=GXv z0iKtYC?m0AfJ%qEO1S1Qu=X7^UtYGcpxxY7#>9f5S{j)mE4+prk$3(w#dfyn|+;4p;4iUa`)Dm;t3$H+^abHr=m%%o+@aWCpQx-@%;$(3nhGKT@%2Y7w~YC%YV zGMFJEtk#jG{>9?<*$NxqcAln@28S!+#s)gPY&7NDP7Otsol6FceQ!N$R)ocl-;B2t z1N)_-6C31JvBIe}G|MvB;4#*x&fkk z9gx4nogHmO$W*M;C|u?&F4L%P$f}gkw)V=(p)D62 z)pHKh7+Gl1dR!a-=dBS_6JX@uz!M7<>_5Nop<}tjDI8!`QSd>4Ga2j5eP}*sP6qNL zk8g?D(u~`&W5>+M!26M1NUS0sEHIEvyQnj>S?54XqA$`v1Y{Q71~WCEVbkhMdDV~V zTEJ}K@AM3}*ijtQQTWB+TxpZuba>6VVfqwz%3h}Ze_=88T~T!J}eEE#?c zK8`fRgksdz-ou&5=$Z^_H8IG)OkNotQb(NA>s8OD%YqrR=}#MKA#QgGIixO0PwqEx zVA{7eeEaDjQv7bEeg{Anu!#G_w?orUY`KUfMDN8#4i&*EKLcpoeZ(r@h0Hb)F9L6y z<=rEh1ILexn+IA$?n8(J z&80?eYwRw0lsnedRi@ax_v|{nL3noYXTCStb43FEkrq(_qic=bIMBgfh2KqPPr3*} zN#mt2KrtaM4rGLJ_x$??Xwg!cN(<_E-qC4cwvHtv&%(-Oy&6zmnYI1Nl4XNB<-Qym zW0kw)N~>O4SHA4>V8qIZQiaZ#u}ey`YjStZsY&jZ9Q|Fj%qZ{yWWke*&R++KFJ+3P6uyESpq}>w`=5am zq5F+YOk$tCpv=Tz{x8i5M)_5emlxqR7JLX-dFhQSS z;P?;w5>DkqWp%)~YaERPU6?9m-LI`z8PV#ce$4pv(VJa=_ip1^nyy%7`(nuu`BUt8 zw>PV^PvO9FgAeVE3|$xjfAWDl>J(xyFMLj`r5%uo+pSYQgltAhu( zr#!>;3YRRQGC+}Mu$BD$3eGxlU;>jqF88YLibjznUU4`+yS&<2Mz_&2;|$l95lqOl z`eL0FF(i_S1BBa&(FJl_CLbXlD8SW7K%RSfhW=ou=Njnmk?+V+QiB4%foN}Ka(9Og zO>1UbCPJD^uEhV`?ZR-Nqn1F~Su?x#{68%Kh^M!&D)PzqApO|Emny4kiS0Tn^Me3_ z;9wTr&HPdxC$AIZeuw_EZa}XJC(02$is?nLk2E;t*CU`O)nbrG*`nB#xdCln{Rcqg`y zz}c>%`C@BmxuA!YLyw|D`XFLARaYm`QIgJKOsse3I{$Jef`dEz0%?tDdo6to*_9H1 zG>OvOCLUNmU+G+cG zE{6Q3Ytev)2@MWZ8zBNs&zG}!k!-d)VqTv-WK>;%d2QkF9PfsWaT|POBy4XIlhCUn z2rT=0sPQ!xI|&6SmRj~TIYxERjJB|7%r9KHQ2(P;7}tSrHcb*(8Iotf=m)tybr#-b zT=k(5Pv7v;+QSCg+P-q=nU#r`l0(#YX}+cP9I-55Xj}bjG^!?EH}Ji1{$s3FhU+&G z(HWcku}hzTpKO0lY}X{>{I#&2xm7GPjMfZ>3KsK*Ow0oF zC=E}39hjDX3PlxUi9{#7ab13{1c*tfj)dg2>D<|fnXZ>m*av7_XT1b1KJlIjNK&x@ zil1_x>FuvD@KrNjR9`mu`-Ezv9z&W=y}fH-$BFE4v7ob>3&{isrz}mc=>OnQVX@#F z$;qXIZ#aHV)bjevbxp>dL`FbY-O$oGA?Fh1D_K3jy~ZF6aKmT3T%0hpZgH~hgsedU z7zU|FiOwJr6V?lA1h21SVI-V-Y0ZXqi(nQgA|b*eJN*~QfF!;J=P+Xxe4!@~LOklM z_%IRNHHphr{sjwxwO^Q{mN%GNA1T>Pvnbjt;8YPvBa)!=oJv<%0>30&0xyrGTCka) zT;H?-XfP3ilJAT-$eer_^~C-hINTpcVL$q07_d$y-UzHJT}8INWYMw!XZkdg3z`GH z6gW#2%lO>5fF4#hHd3{Mg|7a5I+ZOe@mVa}5RHFjpKKvs=3V+X_oX|*pLNzQsO=F; z7Rt$44l);@Tq_QD(N?@1NIQ)~a1ejG0oyGeLy3E?OA?~ay=nP39TT`7 zOiS!0;!(s7#2fYi8#h1=ti~$HmdR zB{YBXUnzOm+|oX;;sPFU{WMpJW|5nXp$|K63xmqwOn4Evk{-fUM{4YS_cgK(Q4j*| z<9H0=`qPvFw4a1~G?V#R`7){2U6)oY6C7^Cs~>y$qonE3dU zTgwft<~Z%M^^MNkl2;Ng#aP8}nz0SsC^UrZLVbh0=W4}^*)kK*_=}heUcOtMOTsxA zjZ1ZA%}8ds(GRq4+Jqi^2$#b~N^m}!ZDaR$Z zfScMw$x-NzAeWU)K1TH3&q+*u)X}Nc%6xFEGP}f!&pt03a&)}t5-Q!f9T%-!!G`5cU!q6%5?dJuS7Q8#m8^J( zdx@-l)b;VDZjdI4KBL?dFaL?`c(3|J%MV~^P#Zm(gdDqY?Hv0Lm6XWhi2;{V*@&=# z>~&Ok++xf$nu2DBn@k7-?(5XsUkJ1m`jGmQ_1>CRK29W;bC*w`Dn~)e;Vi*?zsK6d zSaCoXcUzeesSCL*Kp#p=m(v`AWYydXe-)?FU5k}%<0o6ayH?bC(VS_69xpgQh$TQ7 zAN$)O12UG%P^$ik|Hgj5Mpz-EA9$PVl|9_nJf?3AcjEg&odlps6k`xd=_=CRfJl2B zHoYrH%59!WYWKCTORvN=4A5$QDzcqXoBE3G!-^;LSr=7bv7zDdtZkDvlq%1~%`Sox zy6IF-@ysBQ&OQ!&;d&cD5EhWSjY@9^*JD55s6X7&@VvT=r$n&TMxkL;R-{HNV)Mje z%^G$1-`tM3YYKeLQ^IXe`}(GDEoIXWTK8ifx7A_z7hpLuFFfk^B>n=OBU+xyYPrxx z4RToCEvSXZwsgmwvg#KTewkO|g zG)2zvLt2Oab;{6qi4R$vkb~fNweh3Hj*dt%pEZqYIMA;wT6OAruEE3J?m&h3gAqb^UbCCZ=q>n%eZe!$#;7!fELgh5MXW6y88&R zdjmLd$GkZEQPp}bMY~L2;QG%mufnI{fXv0$#$yv*1RNdHpvnURG;&&AzP?a`+2zT8 zE*6LZ8h5??Ijm`8N4?UiP()i)nxA~qepSiFpJ%hPjI^Wgrz*r3WX=qK#+fq?qF&es z+eBZ=mg#3Ncg7L`5y@|p6h)4e6#y}V^dOZt zfn3dMi%os+DL%mq<3?>R{?v9z)6sSD?JhKJJlWo}(a-fmLZ&?3edzp<FqLY0o{u`mA5ae|L2^tlZd;9TbsPdfX>EGo`#BE4K->)G}Zv~O|#NMt3H zylB=4{6koC-ejcvtM37`=5vY|_rmhUf+31gM7KaM(g53WIUuF8*V;Oj{Cw2ncpsfc z>ldE)8RbffFDlLFw$Xl-&R_Lva>tIqtVqK|yx?SjJ_JqxyG~OOB>svEdfQr~i4V}% zzcLd|&!9o)_Qp^3Q%mjnfanPv3e3_*M|N=F3WWrpBlWMeH2DNPylwcHpe}flUtcG;56+xS zX)FPlLbkxdZlvi#*n!N9BnXdh7n7uI^Jq3|1w20g* z2ek75Qo@UTt)jR@T<4?Qhq&A>ofgDU26-Tv8}#&h6r^Vhrg@ zkPz@(EIjlAjs5O`esbu8$%tMU9MSDlbfSQ`$*8p|xQOAH2xaCC)$G^2lwc$YEdozQ z*;Orh+@|B#JMT184<6c5P`-K6uF7d`-`3cD=w|hBTMKK4`v(nRfJKMF`Hgv>{+)0Q zD{FqQpzNWbRP;G%mkIF3eF&L&r@l6?zF*d@M=sXaTPt_y;1?V`gU^ptfUdio*wWCV zy|+_EQL@S)VQhQMaT{tVWf1Zs!2G0sgE+UEo6TAbx%M={yzxdU~R%npm zDS<2yl6&$>&{F@ye+T@Vz_|rS597g;m`pAsRVIP_ra666>?drBsOs`)?YmwKwmEO8rY3yc)v{q?TbQAa;4rehhCjJ8u0hF*XYr6N(Tj$R&A6Em5vq>nYStN zt5C~fek62pV(0Q2&K@gKT!8FzhWVw33M1}$*rT0OK&iY`dI!1zl6S^ zRHK0A<&TTUk{^OsiF2-4W8m&dr`;cN*Naq@=j=ye#7t!R6>RZRR&qJwHAwMnyOpgt z2BIt{RUFfw*yiTI&x&1sX@+%pQ-9nx;>nPRha;}UYYmNjtlMQzdSomzSKzh`CZYJH zCKHZ6nYN0u`O_oDdZgT8?2^tML{l$4y~G!be*(Z|b{_XX<9~#D97Qt~A_z+N5!X6F z`6ZD22=!&|EK`3}D*@^(IAuJyJ2gKzF!wd18 z#al#-pdbK*)&N=$Z%|T1p&P~qObb#GAiQYx_-rFT4;rfT%zr;M=^`;Efi0yOnmRPF zfXc{b3q5GgL&cYeS|Joy4PfzU8a9XYmB_A$wu&@KFapE*2ZgGx(3RcHnXNT2RDq}g zZhJ(eiH`CpUN1;<$QBovqyW!XoRhsNNik&rdDah3j8~@kqI*T5424Vp1VnHWh#CcL zpPOlH!G64Ey23kR>+5f=Gwkbsav=P_!65yt}%@4Pdyn%W$R`aNw&ydAk(O7wJuQ z9-lb<;=k%vO9MU#0P{R%g^%Aae*pUX`BK%LxV<0y03%Fwu1mG5F7BB$J)EiH* zJd4%~k6sX=W>IUG8-JR!wR`2p zz$^%kbHNS8{l*PN|BR}5gpLwi1Z;uZF28l#Ffuel;7WC5cmU+ljY%0=u{AIV*I8O$ zr@6!Cp~S#UO-&8#Imq)+UJfQvd{&kYv;6(|N<0|Bi>J}ycyrKg+lEz00)(BQ^|`ZS z0w5k8eO3Qa>Wu+$dHYvgTrCaKB|U2v7$4=baNiFZE3El4ATU4E5&g!xu}|K~ zAjOCRn;W>G3Ve=8?73zr%y0WD>r4H!BPAH)bguaHO~Q%;7X%A_LP#Uxl0j*{A^;3R zSZ=`Q5EdJRAc`{s<5*!_8F9aKF5u(m=j7(5Ea-YE>qx2CL$(Z1GMA6dHbFQ_(9>E= z$Apd_HpSpaFm=U_jM!k!G*61F3Nh_!#0~nuD4! z%OK2=O;XYRfmTq^q;MxrMC9*a5X(zeVhP)XxhL&=o$;+k#Sjgxi|4nD31-GSZMdJj zQ)H;>7^Om52<*bHyUk8CX6bzxHZKud&o_zS%>*i#*Rxs2B7ogrYk7RS!IB zg<2=Xz-l$X&$fE}*X`@FVLVR>7dXTVZoU;}7ws=YJR%&XF@EJu`{f)8ciNo2YTNJz z^2M2phGWvF6@Im_>Atq zs`?R8iz{S%45=slR0yJoMHyiZ;V?YK6ss#t=zT;>f}4S1ngmt>WH7q%J12m~OnLlr z#2=Wz5JMuMKI9k7*M)|Lio(@~Wauzr%2!|`b7k#^Z;(M zZQf)U#7%-aASD681ylhH0cGgx0Zf49`IJP!VCve2e3SOeFB#o2#-IZi1NejWC;@-a z^8J@AU=Iv-I}1xShI^E1_~NbpZy5>Ke!+;|e(vwa1yLEMY)4$yZq-qw%bTn_0J8Pn zh@2z`6}p}ehuk^mJbI}02{Z<}{GOLnHolOqV2?&}IgEsv2sz>Z5R9P7C)wO>K;W<$ zBmTl9wl<-$&H5~k9r&cbLU03dC_Ztp>jPk`5xt#YKj0b=qiR?ZtV6NGBHWPgIC$F? zpk3903xO5&T2OJwIC|DDp9*&p7$v~xLQvgEG(EUsVmNET&TKrVfSC*cZ#5G3j)HZI zV2_ij3uWyb&DbS>#4p?_YEDh`LCyti2-C#~06_vA-hL5w8#Xfgu^Cyt$#2?}d=m^n z0&z5eJqND?BdaWdv@{R7-SNDj2G1txPU&jT!xBpY1P!q1V0(spu$wqrg7SnX63r;Q zQ;Rp!|>>wVsj>1ziU9+2j+E5mdRc2}`O|PksAMujv zUR`kk)+J3gerqZ;CQ1T${rrlKeWnn>q>Jm7 zj99a^I5D%M`an#Z@K!;HVTKN!fP(+GCIlVA|4$P_^btT5#}}8eaR%Yy)Y#jF1+Jv% zgT9w@8nJ`KsfJ66+mD|QBGUWIl8)Hpe*w^ke?trz;Eu?Fq(el&V)+N@DcPgplJRw$ zq5+5QJRHPBJXfH80{(h=NN-1SsbEM6FZ-hp(EStJJmF(~f;1FI?gntbHb}SeNI`po z|2e4T2Zb1bvP;+*0F}`-Co)u4RaO!!?HrPe8-ztQ?iC?6!kbek)yNBzJOR`9`Daqgp!-hlBrCwMEEcBGw#oMAl?l%77!zLl&p zfLIY^3{cB8Y2#=!+SL<3)`Y;q73*l&kNpMl5wtkM5NCgs^nHyUnjPX6j1C^nHne(% zgopwyPR9B-x+@9d=HBo@xef-M0cxMA$224Hj>El%hr*k$#k6|e8O+Hc9y|lK65ZLB zPJbdok57zl(o>X}i2?BhV~h!tpE0WI#DauhO&2Qt44Th&~P2Ig& zi@rWkZOYTS`|pGexgTFE?ew7GuYg845(W$mer}0;{6Aa(19FAX2;p(UMd#YL?P$eo4JX_nqY{E1RO?hhWNCzxO8GO$E zkG_LR#1i_BY5g5~+Vj~+U2%B4HJ`{kh@}T1Jm3xZC-1-q$qf6NUz*a>a}I4cUPw$) zz|_!g|Gf6jEw`#d9<7{biRs3mkkHV+Ytr>;Z-TqU@Tss~a(Q=yBb7OjzD#rgJSb+F%qoa!>5iA8i z{2oipI^`SXJZOX82?8~8JK$}C{{rhuo1DF@C9Ri->Jdcs6vtyIiUG=a!qdE(VrhHl zc(_6n5R+l2C>Zf%#e{QKfKN#xgfL}^VhvfMgrZsUWSs*69|2C2Ck~tj{QCF!1Bi-T zJoRYO48k2;J-PWG+lin9K4Zk;2CID$lFKE9e~ZOIHaVt>ruBh-+{5{Tbq}E%6&6!qS&a$F~uo#kAmOtrZ*LiKR1@l5&m zPE#drqVeXX-1F@D?1?N7tHIf$ZF_EUpS!!*Q9t>^AT-={D7rn|wLWV0MqTNEL&~14 zcwPW}N@xcDGX%W?u7wZZY|||f=7H+@JTVdHa*LHuraVZY1i@vZ9fkCb5HYY+#2({? zK7H%xG|Ch46GA;Cvlbv7__5Q$r5+TB)U=moAig8F_7-6P0C7mu+rp?)id56w4ha0Y zA=rYesX*4ba*LLJpq+-dqwu(HP&&lqC{!Z~*&JJ&unWd^X^us+3RZOn@caQ**t9%} zxZlfSQ}f#yMrfGHM&?tl$isaB!9<_>As?P{^T>FMC?6rIcn<23l{J?oS@CaGv=KVM zq#Kb}NH4*~+#t*Qu#R|6y9Ktx}O>Jvi-8%t9Qu1^<3HM{*W@aBZFmh zsAHX%IGR=HkI8|Mvig$w&-kUkQpCUk+sIHM111T9ftK1~t{PD!F6DN3Xm>RA+QT1R zo+sl|3RNS{XDjr$cjv^0jG~AKpet zOuxHNp1`g%Af6YH9q#^$gHw3ysx4Okc-RJzTq1*Cgrf<<%6l*!!3ir1hdJWa2QCQ$ z80zuD5_u{10VMc=?1KnO1e!lA|HOz4602??UVTW}FbBn;GK=h=(E4ge|0=fdiwC1Z z#>s$CCAz)jk;L+0bb1>m58}nc5U^-pq4 zoS9Ma!8zFsvvznngGWHla$wf`0_GeR1h~onBjKy=s(H zLU39OCvAN*-!8{hRTx(or?Wiq+Ix_;260{@Ok7^a0H+YJrEe9QqA_kHkg{{A6^b`QR@% zhu@I*Tw0RKGa@{V&-lo?668qhPIBq5*P2sXdZX=zd!Ou8?zH0CgNv}iK+n{Wa99PBusRN=MA~&!B;sPBssmZ|Vti7G+)KaIoQ)7c09xTGr2Za*01YnKPcylB#cjEUiD4j7f zBK}@@HFBb^q0fe_-2reK0lv|S0bhV9l-+agJTcNIN%laeYY^Xi8%%uMP-veaLUe`D z6}v|yEvL?cK9zp(QGG17Kp03+O!bD$E?yj_suoXnmRt{x3RwPt{a^Aofgge%)Jt(} zdC3bpQ0$9#9<snINkgQNAp#%~GMqy~-ZV3*YiKctb#1JHJ{)qvG+Rz^+hv-5rOB}_(Bjoi1?gm@FKEG?Cruud1XchN^_qu-b&bYefxd#z2 zLB9z$s3`s!;dFvXFxSz&@)71?3Jwkvrk#@u#6ShU;3PCW9!xyKQX`K6ezx&njxcUw zJb?y|h&f>N@dMO_y&wx<>zEA|6hTqo?REkLkmk4U1NRYR2~M6E*4VhY8lE0<@TK{e z(?Lbm>s&y72C=usOv))N{1DK5ik`Z;0r4>xfa3pGuB!?5RrQU#71M^=VoMMV}JEgDj;xHh7(O@#6c%v-g9oLg^ zDpvn;u>6mIOQu0prHjYn%aVw>=1t_!VN+s7wyOwaFCO= z^iZuCJ|z#;H!z;+3({K{cg*Lg5e0VH3GfE|97?S2iFyNnj=T;n4I)TVLJM+zi1ny@ ze+W*?u~XfXN}(1`zt)cEy3bc9-H>I6|J!k3syN?GEJCz;Gn$5hl@O;ZSC}C5Vq7IE zGcp~J4G9UK#=ajkwJ{`H_#1u#8cC95QE^C;7Y8_Zs1>gPYLI0t4prD9_T>-7a3QW4 zUB!NEkqEsAUe#_}P_C-+pn;?JfF)?+Y>K|+-oQwY5x-NG2z7zHqMr3ip&~is9zC)` zH6x%Qcpl_o#eQ%YLJZ8Bd!Y7!$cjYi0C;Q%2MStYBai786a}*B$B!rl$?_=XSbQ#8 zvW0}f7Ht^RAP}m6(2NEomA}{hZn_pTL~*w|euE(xg=Ghzd<Xv04E= zaSgIcp++QV4Wws#!KwLo(qV)`4Q_VZ*ld$S(g)D`r_FwpU!B(?)r#zyKpVlwxPaH8 zGV4LjfElRwfC$LIg&`)F^V80R~ z6%;(vMvIs20c8-`2ShaLn3+g28s=+^r^FJWGLT39^p<$uRM$Bhv;8}5QoKG}I%bTa z0d!hu_5o#%hi8yUBrQ{(sXXads)j@&9HV{-=xPZ!=RDL;Th`EvDPan0IR%yLe`E@J zM_S$2tHb*ehZ0EvCA8v9Q+X4QX+6?C^_jFjisvQz35=#hD+T2rk>3#hEZo2H--n~u zt$m5E)qmOP#j3 z10hjS$8qTE<~ss|2Vw8zc1IqVevjI97qbCWfcPB^2mloPAH0RI=K?c_h#>IGr~lMj z{g_7o27+lz)sM)llhMR_g-A~@m}@im0ER(Y4GCIfV&r}DLbXos7pp>Z1AVqL07B2>OW=UgQ=9vl@CaJwk=SG!{clC?RG8bLRR$$Z5!z_CZeuF$Fo} zArr!RNEV!kXbLC&Cgeh?2fl!z+=I@Mm{MViZ%WqY0-psB4Pli2SCt|L$>OxM8<^!7 zVju%VNb5rKch8dX@zy<@@fo)|civOP65wTV9u1rUz|IUNCh5DgaE zFT%wql^1-yx;txB*Ca2%cs`uGuq(1-{> z&7^*;04(rk;e{sW3E@LRj1B%7;jRdGD?H_2*cn%+qMzspZOhoDn*CSaa9J@r* zfU&|x>Mt0_5qJPoJ{HFF5;`v-{KM-T@=c;R1G4%9LqOs9M^*w_LF-3$)u>{qmt@mS zCR2PZybG{NNr`Yg7Q_u#ngA^0ac4%vED5^^p9rtb*NB`My)N7xR`P1&T9Vvmaw-## zACMeysc`b38OH8@4i64?TspDOu!<$(l|4s%jhbf`_UZ~`Ynnc;7KA+vZam=yf%1>p zwgD_9^d>5>rNc8%8g6uJU_Yzjt0LiP8`LEO5N#5f4K{qKBhLX`27!Ws5vJuWp;rLT zhO&~3Gg#a}@VDtbo>Y>6goe>vX! z12P#Ho}mjQivhCmfXoOhgI92f$9HMTYp4l9w?+tISemZ2?s%Iaz3G}9o+SL@r#O(D z_7grW-f3cj3E&cp*XLUv0)t6w39VNs2!6E&tS9I#!@&b3OB^hgAvXU_u{9%}mjHRV z;;A3wdHv8Yfc*Xm{mv0=+KC@m$onj`7q@Y1U?z|Y;x6#P>(QgIg&@h9coHr)C)4}I z{{@N&2dwL0t`SEL@|{3Q#eyJFG0E@B`eFA39mT<;^?THR#AgGO%&--HQ8O{X0;$_h zu!%_gAbfwXqLFaKUuh1Xk(Pn7Mm{cHU_zG1W{OyIlg$)%2)NxlF-u&)l$c6yB^gO_ zV-Q_n*7xB)uOA8MQN_4I&Nx&DoXL+#JgJKIbxee$D3S?o4Y{#c!H}PgSDrW+tSok~ zisIW58ZVUUMBYT&M~qFxcNOme@tG&!4{ltzj0>Us5n2*4%)%ou2}re(?0~^_`L8xp zI{J@aaDqt{bxvny%iJzQQ#RMoQNyC+_oQCe*^ZXG#Lh*P;L>5}q}#sz2zX_vtvukr z;6@ShCAa z$w6@D`}|Imf33ziCRi(+3WS^k71d4hiiL*iXYw~c+AUApf9fsx7Z8__JsT)6D4UqH zp^?$q=L^OQIz8l8qQ*ekN={L1nndCW)CB)&UED(za50#8nK871DmMUP86Y8e@kHE~#MXz*L8&d3?&q)K!lhPULIx0C z;k4?3pFe;4Yfg|K1SUB#EBKSdgA0U1Ek*y(llIGlI2i`Ydg4iJO)KG;%LYyw} zq)5;P7S z$u;p4YKQ9p9?@k`RPei`IMFI^xVn16J#0hCLT*{f&ctAqCNWuZ(U?P(Y zHOC^_!pG%TTPfZb8|DX)*^&5GG*6^MG&D4fW@I)u7~H)&w*g}>E>AX21H%?0o0%KP zJ;4D=40bEb6hkerEFmjtRQTsuU6EXL(hCDmg14sr(AD{}XEp-asZWY_&#)&qJ=W{m z__=+}%XjFZpx5)psm2Bx1rBx6zz|0&EU9hsLb%ni{w?ubCfX)IFzEVVo~{N;PORqw zAGxKZ!^P-`T|IHG!!m^6-toK+m@L15G6>679M8lt8wZ2CyDTIMHg@sYaQk3Cq^+Y9 zuRr^bcQ=xnX5IRd4MmI#Cq8}+ZXDX~b;OqoS>V{9ATLe{-x!EPFNkXW1niSvT@phD z!Q6%8x18u6uN}B!LyhqB|0t4OO>$a8ESJEhWYDA$-h0ze$ zDEGlZgpdxKUZ~J~5bhol(mU-2y41csdlWr-sjlPX1Yi9;niw+AIQb^gcq?dY)1$5d z6vE2B6i;)I4F>zw)XN>~`e;P4x z_t7Z;S^#t)ipPWGm*7xNNo9=9>UURpA+og+4N^6Jr4QJScq0(e(`s;aOR8<=q`-jU z@6;Q9@%A8KlY!t57WNn{AH?&bRK7ys0(?DFeG84%>t1N|8r7wnj#Ms;h8W19!5OLb z;q~jI+8&3D-O|9Yg>TZPR89wKEwfqZPcktH$RXX(YrNp@*t=8_5p$2;qtiY+T71wU zIE_l~l6k=;)$U&!XU~^O=|^$&k&SiCxAh6H|0oH@^P0p_Z`!yqg>mAH*rVU`B^T`N z|Lz^yFabhntZA9WKrQJ0kWH>dJ5=n1xyCu#Wo0=3NvuHfx{x5 zucqYP=rqn$jPW)t`%Pn>ze{C`DiPMzc!VYcj{U}eG`{{4s}rOw{T3$bd7C+t)sv%3lmgC$8mZzN1ZK>q62t` zl0hKbhr6WW>mKZ2U`UqAhbAOKzUth55{8NDh$f@06jRD2y@IL9p_5^v8j4B`*NmFX z);}vb8RDe4==~n+oHMY%gl->b1@VSJ)qn^L$=!Yg2t`{7YcwJ;L}AKI{Yrd-h&|9x zD0PcmzXJ0|cT4aJ@IZ3nh*q|tZCYvsKw7g^j7cVd4GHE>d@!`Mu~fKfp$HML&AAN@elETGyUt8BpSh#@+e`XvdY;c7t~6+BOF1v7|zdboVA zIq_^JL1H`neE`V8 zgbNP?xT7#|dTnUCHph~ZRW#n6k;Q%JEQ1O}60E2ZjMB20fPQxJTG4$Q`1w^o3tnt zo(>;VDMr@N-Eu|DLukqJy8akCEKbgDYRL}$?$>JaKU@GZs}ST7?I;Pc#FG!yfo0kv z?qzpj@hE5}-o&;Sxtw5&`Ni{MSesr+O;7&;K$=uiRPF5u_yhLz33h6Luudob^<0rP zw@IV1k$(VS`>ql&k$zy>=5L6$7SLfCu4{h45CG{K;o#EOL3Qek?7Q~V8 zk|oh=;49-Rrku`CYOzr}c8miM7_OZoPL^y47)bgXiswS-X$BQN@0MAkg5aTBqzNGd zA6^H{SDM)V0xuvAQUJAcdTwXh7<}HCJ2@ubz06l5ibIhYUqNS1RD@vBStEE9c=XF$ zcr+7=ANEz5{0Sflq8|k!ms*$X`-N{V_$(|mPVZYYh7W+grlq>UB$EmDA!#EqU3N!t z8bK+Kf`P%7*G~x{rz8UpND??|h9{nn*3^fDg?+-;rO_Rdi-zF?Dh@6#Acw~m25cQ3 z^=}u7Ta`oiPB?gFhzi8sOKx)uF>o#jn{YUNTg73?$n}h%+m!UJ=ay=fe(oFV1gR+3 zKGDA2Dxj@5pg(ktk*cgLE}p{MdntCMUVf;_X5h3>^}_sWjYWTLHMB_r0vdYRq<00U z78@3L0`A3CMOShkHvvYrWvC?&8?BdWQr(Pbice+}eS2r*Y3j|ecRm62 zG>SVH9#t&S2$KOf3#ynO`16BESmz+-b9ihZfk5Y_2{t(yf6%K$M<^f^2-6&>*suac z(+}WOM_^$7B*Q;XU4Z8R#EC%x^5d`pZ1x+F$EfyS&)Ki5V_gMINlj|Ny0QdGY@WG6 zv4W^DH3h-gFm>WbqG^tGpV+v%Jm$rG(5{o}em4>mZTQ|(D#k$>B0E_tMx;-efKUaIMKL|W1dfS^)b2LOEsOF z(H=Thz^z996^M)47e*eoYfntSNvp~WH3OIbldQri&Cx1kFiIn9ZP-RfTbgv4)3LNykd-gmF-Tuqn zz2jnzA$VmKAnde(tpP~!0y-@4;E0RLnw+4E9_T^w;*qdv%+MrGGVkgIEK5N+>cs#z z02qpT%8}@QM>@xsALR z=<|CKJlueTGnXu?B(=nOsMlP`Qj=3 zEP6rCYi!1|zFs?la>w$+-_5hGuctjP-k|jmHc8)ac1OX}GkUFf$-?(TpT_3@^j*q* zDJf#no;j>_`Tws80C!(HJ=_r9R6Yo3N*sLL>B+^EM7r~Ar z0$>u#)RaZ+R4#~UKs;aD_bL&l0?;E@Z0|t4Sx4LyJ7N8ZRFjR_?L-0@e((xAaUH^t z2~AV#P@K!ycUToq0Cgi+B-GKLak8|S4-=#XS}HJdcNv5dMIv!?2If%A@%1psR0Qn< zR0%f;v}c4}mwKc+Y&Sw!12FbE$*5@SUR=g6Xt2p4R71?|&^$+OdbqlDXr7cVH1mW| zb8?T0_8eqQNO+GNd3xKi?iKz_7HR~M?UV2yoKM!@3s+KYTOJBBtA);e&5l%(TJ8L$ zyRMjDg^NodY{u;J>oee%qh}=OBngvtc7E%YK6HAy$tDLF1%t{nysN~`i)d-_6~XKw z>D1T+CtzqzXgpK1hS+{jyJ7f58SF_6GwFlGh7a zFtm|HCzeG>Omf6top?&2Y!YrZnyJrlufeRPzuk2qUl#N>mEU78DkqHh`Ni)CVD#N% z)|i}>;FAD5gaVU;nu0LSP@1t5r`x%+5?liknU2P)$PR4(YKQ<`VR(cu2`c+5{X>DO z2`Nqi{_&L%SC^u25OqD6kVy#>tMJQx^Hu2#6mZMoqqsgL~oC+I8o z!oojq^ZMD4t;f@+m4JE90MQ{BB;kjXZUKG#iKd2z!(-#u&tSH|jJh_Ca5<0~1W=k= ztq?n35Ct6GCO8@pNE9Sp5<6DAa3t8k>clg#`4A44HLK?DSJ%^62Kbigu(G;r zd@ebxbhGMyyiuoQAot@$Q|it6)v9(cLke|d6xZLXSk=A$SMk=BEea)(doq9Kdd-wD zJB-W~Hvhgda(Z#Hb*6vGd1SG$xj!$zd-tSk%JNc1te5VpSCy3={nXgj_W30{VQ2dN zHWJo%MmRTU&M(dR`d`_~B)3=MrorjM>+@wr|FCRr_YGYRUHM7B|7YqA^Vwq(b=u2` zHOlYfWe)1Aiyqpm)@Aj1<@#Q#RuNhGuuV#yp2dBe#3p@`jel(w-fSf!Px<_1VBkVo zQrx#WlD6!~h!A^pEtdvvqY@?*78+&9I;>38Fam)1r~Qq@2!&;v?uH|1Y0wno-s`!Z zgwO~CTFiuc`qAC+?a`j(ntvb-NCXF`Q%rJp_7$93V1Jtg?t=Dbv# zY80k?wiA)jx9`37CkdvpODz02iI<4vO5(v%8;COY+WME4(X0GN0>xCzEwyV45F1QL zOkH8|yrhD?v1_^?G$-~$qupuWjm&jwUxBs8{{0en+B&jfC4Q8!!1d})fpOxK*w_U^ z^#Onp_!{=zh`(?<0V4=}Z`^wXCgH!rc{q||jKJWuvJ+_0K?T=lKr07)dO9~PAE-6c zRQYKq@Qxr~x()wkNQLf}KP!GZw}56=#PHdt`dI%vcj9>6ug+aG{MdEE$hx)rSEUYv z555HeKWaEp!GBLz_qp%Kxv~-@hQb*O*0ZUtZaB683*%Ej(*X57$_+YCjBALQHj4Y< z_)od<_1z;zl|2|Da5tc>aw}P!$%HjIymbEA%ru`o)9s9Jz{Ks1(Wt&+eD47SYuact zt7wBX2(--)>o#ymu-zYdif|ph4UYKAKx0s`T0FtV!l??23EvhQl^|}+L--gr&w?Z7 zVx%NuH)3^x_XHOYU>iy<7ywyxyvKgd(@)0>{CiI6nu=&FXl$J&w6rovae%d zi1-LSdr$EP{iV5iA!W+<5nj9xuAk|-)?3k9vXi2Lm-8k)m&^spOI4p!Ah%pT6D=$} zv+E1Txv!V*-P`>9O{Jz!N8BE zDs0hlg*a_xxNA6nH2)IxS6MAuLi#ie8mt!>bbo>fbrw=b~x#h#++ zbL)z6w)SmR0S*D0Eq5Pigtojr9)GWtgVTnRTdnj@pnXDe&2dZGVkvHw6k&Ek2zo=KBER_t+6V&^pqZ))d)2O5trv7Pc*PG4NA;{JZ^=AMJI<(H|I z-hJqPEA3EPQ&PNiP(I_zt<$3PX1do`*M(~*D2qA@r$Ddex!o|XYHUzJkGkO^^Wk@_ z9dDyKWeTF!t~0b3Ot|yAK(qIy-u&5Whi$XmuPs{>*vCFbUhym+rnq#whGI(keVuXcObZrt3EZE@zfOAFzjrV z%-FA?Cjm#t)wj)V9j*M?7`>6YfvbkbFym%0NPxl85?al2iJn7rJ7d+XNz;G&;&`I9qWJ6)|ba$;lM zgG#^bUF3B%x^5(=toR{~_t-Jo9pb6?DUMljNe5?tR8HKk`iQ=&IGHO=*rI(b!+kNM z!z6Vfk1eq($JPiMPA&3fzhQaYrh3cVBJ|`LyZ*^~F*u}$?wXUk>kz3Nr+xPm zSAXCSn@_LRG!hfO@p<%_^ZD=i(_1HV_Vkbsm4c!I2lt2L2H{T%3z4O;b#Zp6ky9vW zNr|Pvqoi@ee)<*@$Qw#T>VhGV7N zsavJIedCosrww;)Ir!;O*u?i68+e6N%Pu!g_S}v>6m493|5OFSb%OG%Pn6fw)aFea?6Pa! z%eRCMSo>-B;{j}d$rCg`I?t8HywYe*mzQ#dru=U1h0?SFDUTOX%wle0X3ADbW?>q5 z81YPwX002WFC&tBYr`MMPIC;y)v2g7^IzfDwocST7V*G-Z? z`$MmAe8KLQ=0QeA&99mA-sQu4-^U+GqtD+T_Q0F>p0dh@zrAdgso$7n()B zUvxI4>9Z*$F&@|{jxC#sX7pRYVX|VDQ+>xZscsY>E`R5AcYY!5xH9d%`1gN%qjBxl z-z|47T~S7q+2(Wu$9s=fm$wTiZ7|TO6iL^7B`jb+_#nh3bj)gL&hDv@n=*YMqq25# zWBs;m5tL%K>RRd=Z0RN*bOk@2$sP6gzLRd`w&l#)wey97Dz{Y6%;_JgP9O1Ce{`=Z z8Hq1CXKYTD$H>}I6`3eEP+#v9m3*Z2I4SPv2eU66bGq05*f2(~rxqWvzwu+lR>i*g zWZHddN)`$098Nz9&7?a=QcYgijRqZfszMo8tsi}wx8b=;Gxee0+a9u1OR`byc(Nlv z_5El_$~FDjBa~)b-mltsS+(3Mp8V-@dHHehX%IUo=1XpKrLj^+m4r)H+Kfw8C6j=g%E%70K#@}Q53GfmBJ>zZiynf8r%B95E9WK7cNOA|5( z4wb5`$uOT=_xq}J;nGv>xS6AJ9kFF)>Sg68tlyme?)1mSa(+Jc!=E67zr$&}KFi$E zbR0J_VXvzBRhrrOLM_6paKfbDO=E7(hC)|{ix(f)hGz#9ZE!ra;z;k( z`8_Bt)2=$@6l14@hNJT@+44}Kp>HhnKlSh=-1OVE&(y9;DTz_-B0E%6UHQ!l?=vcw zmd6&azT=L{3QIV;X}D|O{jV7b)UST>zO?`QF|y!wdr=mHads;_9}^H>#+kdSxsu}$*qe0>#6#V_JI zeYKk%RvVm2dEc{#r&uPirZCJUFx*(v;fZ~yAlv(|8T&4_@CV(a7TfI=RocB;ygRbv zg!&Wvm~b}<+YV(eSH`!$4^=G9%kc7NKkgLw-s`{N)o@dPXQznI%{6SBn0|A~6nGy< zCd?rB0hh-_#T^o4r0)|6+4t7KL9~n5pHLq8k^oveefMcuzVe zzHph4$zEEj@3lWY-dS>ud++yS3wqIk1OCB0>&02xmejbB^~t?=)XP!F78;df?uo;u z?&B&X=L;AaEMrqbN*exETcdoV#%e)Yajk%!uGuYSnG-!!#jA3$ssR+Q&e#lbw{QeT zY*Y2T6;Rg4uTVPt_is}pC$_%_!rwf9q53M-^6ZAm`U7&AC<)Q#a#|)F0}7w#baIoMaYyj>ed_aLUSjh$ zmv|}$G$~FP_VsyNw+csui{kA;gi6e6#;o?IR;9>mC>wd)rZq`dwEv=#w5gp`)u-LN_i!c9 zMV9-|2HifiY{WmHw|~J!*K#BE&o`XjCx5@9-6DA*M|xbHW*f~>Er!YZty{#rOicA( z%D#8$w(Qq0Y`!L`*RAC@wuy!&(LysmVO_(>`+*(z0%+sjG~W`e3J#S?4ZHZhBHzL! z^MO8BeAE4V#VdDoXOD)m=%1|4Qo48_4r*&Wr8(mosg;jzIF}<$U*RZ4rKor$$1g3f z^5N;!E&kUuwwW*}Q#v>bsGSH%*1zdTf#iXq=-pK}28`QR4m!)Po~rb#ZQjZg)L>34 z6k$V6L%oli_s#c`o;W(C+e*W9-vVxI7@hwiKW0DDJY2G{e`zjdyNdQJ!whg<*#IwM zq6LE$!aG8u#M;^CQ~!L^;@+Ap!-4-i+Dp#v)#-g@g{HqMC-|}v0A$L^O|Nq6=91OfuTsB{_2D^?fi+ud%GW(O9_uVr;2b^JGwZ6$l#!`#yVJ*J zpuPBtV`Y6>+)E=(cD3GeC;9Q(V3DWN1Dm$6@t^x%$a-vy{n45JX^r&U`j*uzUv+1j zE`J@b^5vq{XFWytmtQoCGg{Becu7m2yYN_ZuxB%BPm62S`rIE+XlEz;HnnQ&kNkN3 zNe+fPE9LSlR|B_8SzOmvpbV?2`LvsDz*=?VzU=CGJ1_PWp)&NkO=E-RZ{3}O*gCW( zE~xJD-{EnjJ}r`t@%&n!oe6|7k53DSz0Hm&SeEb;pL1`u>7-?YpFOjypK)ytSU~ z_LVDDF;^VgW`8qJOk|{+u5#T!am2d$5CiiqE`y4~#qXXUAI{&os&)C}z|6$L=<=D_ z-mXr2V^Qf+rjMw#oZM@62JBXO!x#C zo#bHUW6n-Lrc3!nZU&XEHRc=DC@$suKYhyKeS&9UN>jEY)_3BRUYdA`{8KGAH`(6v zsub&JDXEzM<{fU)w9L3ym0pqFvW@++c|+U|_w0kLNk`*dvyVx;JlNNkyiZ&~E7L@6 z*TSy*^NS=gfnt;U|?V%dUr_PRFo$8SrHT6N6F9$Yml@fdMORESSY$ z5izKMD|t>blD?v*d-sqt4)e>$g6@=_dvEr-x#J4nfcDFIMlJa<0DhWvT9_{VS4nwY z_UH7%`dI)lpx%$v49$-U_<48P!77-dS-KnUnD&Q&aPj&%GOY^J9RzR-%*1g`@7rfKjbXu!-I$r1Kz5&Kqbm04j1mX2{&wE!3z zFx@6;CZOWEG)@}}Gr?FuEr?EqzQ`o=d+R^53{a3gL&7l-taLl<1zRd@%yoY_SRL*)v5Vzbp*JCzg^^?#T$ zSn{4^lWYkT)nK5C5Z}1xncDttkFZaTTq;qr27XY^cZ~Dtq(wg#rh? zB-Nb(hDu5g7q;xf;9*)rZ|}|bsE_gH6`H8mn9IhPJ!GTpO??<(-Nh4>m&ftO`)0>j&4Tf~ zhoj}jwoViM4C%_-Tb&isw)2TNPM|pDS%`do!s%*T8h}&Scexwg@Amgo!$ouzwwG5X zC{OfzGfNI_7X17_T!3`8(@r+ZkS#_X(yj}tSmbq)PI==x_cvBv)J@lgQoCny-TV(G zUCtwHH51JilDT1eXm~}Nl+Zp3J$V^=FjO1a~2L;zSsA%-qmpnai0qi%rf7;GD zgv=PcHuL%R6`Lb8VrzTgPC-%(2!{$L1!6a5E@J^S(pgVzwxQJ_`hLVDVRtGD2?B`( zC-J;QIsn=? z6vr)0tyqVedJG?S9NY}1Uq6%+JdnM@l7?7dgG&Kr_R?hRsyXrsKtgK(6__YjVZK{5 zWW;6jw_23F-T!n-_kq0}fvK0&0_k)P&uMte7dF&e+>hra>IN|HNo*^au3Dh|fX$#5 z6lg(Mi?~Buz?G_il^n^K9dWV-{TgerYDjZ{C7fdWESL0^NKL_t-r+wGv@kU7R#jjB z>38vUMGH8B9Sl5`LbJ=?HpHmnDWQ)&E^U>0%Dt=;fc{BKsz7>q^*`=wPjgL-i zTO5`6JAHm6yX&4`)_#u#)rV2M$}hj%U$1OexCiEI^A*)yfSadLv5R!!`>ayE^jP9{0*&rI)7Mx)h)~L@M!sHh*R--Um6ZRotE3J ze`~kdSBj1mE^fN?b=UK=xys0+k!HV9$i;e){le#wBfF#`vw^=U?#oUb+aS1OH;?8*L|+ii`l&0W zpO=Fa_qlne{}7Y%lBJ0Dj-aVs^eR1-lm1J`c_pGEDfZX1vfiodZ}KVq{C@HBitlH( z{>~Y+c3nh6_6>?~1B-M+k9+sGmmqg%bAkIn*I&~=OD$5_<~?mGoF-nj8{&C;?2iSv zMORYqI;{WU=K<4``h6b;owF=|D|#+S-7Ztwkj3dJntdm?dx813wsH`ok#P7I_4*S` zH1f+1K}YU7&{OgXIi7dX7+N~M{$aFW-?UH5sNl$kpB5Y1v^wG%BTBzbQDd<@+@-)&n z`wC_k$&zN?e{PL82bi|-;auMX7Y1|qzZ1~~mKz6966EH3))B$XnKNzOM$n~V-3?vp zKcxj+aIn25)*wXUgcWU$Ed2m?+*MkTY=|U<9=>9F9GN z=|xgLumdK>lpS^jw5Fz}CSJ=72r#=eLI&_H0F4IL{{HlcEuW_-rlcKWTBQdvf`2*w+6i8q`I);GCt7|Du!-9+LY z{t+s%&FbmzCnmG-WryWR$8W?yG*84&y1l^0YiW6zUWMKu6lA-RV)z$|hU9>>-2O)DP*<9%*Tof-YF063q$j6RZLVD}p5Q?A_~wb$YWw%%eyDa&ABp zga;WIC;2cnCg$@f?_@=W^;UUrvcwAc^@n7&f{QMkrlY(De$7kxo=Ha1%FD}d)+-#aJE@U)(Z%?TC*NhVv%I-Y8{O#I4xhX~vehEqY6_N!Z7^jco0O2cn-O`9YJ!PDEH#)X(?@Evyz2M%R@KEt~k{qzS>$xB)%>IJE^gkQ&VxuRz& z8)?~K9kok+Os=YM+1bl;StxQSW^sqXV>;z$hGv%(*C;Xsc8an}KA&vJbH3c=7S%uO z^T0KZt-!_VN!S%G?#fL4%EW!HZ}%~Xi8qJ!Gbfr`h1^<$m-3t_Gadir^NnWHV6ZAM zq=tchDV$r&WV);G{-;yOPVN8IADN-)ll|WCs6oiap<5JbE{QGQe&@9< z7}=pxh5oYxfM@ly?@KqX9Fx4!7L`Ap3$)U*L2LVvZvi ze)<9e5)zDxbj0ZpvxU|29u1i9A2^`RCS78$sG26k_QN8a)_VBeZs4vk{M6lIjI7I5^%+g0Gtm z)f!O@y>l7`(MJk=B`(N_wG&iHvLavyC+7niq4qU)oes8&S_;qeds!$h-W05{VLAHj zBR_-Hkx&b`bHP}&AN0(=lGSAq5Oh=b^{(40s{nN#x){hENT43b*T`=}^7$l4fmzUi zLl$)LYdSN@g@Nt}zNr7AeIZ4J>kl?1Nl=y$*G;e;NYWQnT!dH`#7$&pVo-`hX-Bkc z#OD_mo8+Mr-6b62i0#`1R6AK<7`_902Oe)HQ1W3Q0P!Kw6@m9;-S%n^$#uimQ=+3J z%o=Chc@1! zD4mQou`{*RpLtTxFLgV3^(mkK{O$IKee1{j{12X&9G;&KJO15dYE#8q8bLYfKRX-! znxyo%?5a)t@W;GbtowjPHLZKjA7Pq_8rSo6`dip*%LB?Ha_$~Gw%P1Yr^!?P8pAhp zR(`gOKk4%qUw%cqbR#}~X)TJ|^-$rinoFBpP8#*nuG8JmqD+4F+#Lmzh*ns+Jega% zyZfQo{4nht3+>eJC&!MLuaR51zCVsbgC?_Nd=n-ZR{gLiaSHN=Ny>lQj*jxZZDBK` z?zuph|9fV~n<8PFBE=uq9tNCdTKVuI;FCT7Hp}RTOhYrhFJd;LdRl*%4c@?>7n2n8 z?Y#?Y6Z3(>#H1LJY1N6ZXk?GaObE><4m1zYzTl-11!!d&_f*e#DfNcL5iOaTD9vgI zHuJ%6ZP^DSXTNtKo1VkD;LfAQ?V=;0{53l7hlA~<_fl$G;wp+?-dP!CaQO9^2fJi- z-`9rA2b$_?9(%Rhxj-Z1uHX@$@_--u_W66|=FV-^()x2ea@6iwUM2Y0%$}B9eiT8Q zXB?Ou5^wk&yr!3Gxb-e;?pakj21#34b^E~k``EP-&zG;Mt}*`gExP<=mqD-ro1ozm z>!+qoyn=5|yG>r7O#ELoU3VbW|N3uGq+up16xpRnLm{G)h&W`ItfZ1ssE{a;L{Z8p z6dg*DB0`~LCJsfRBw1O>$oRdUzV~s$*K~$YremE@=O#zn zki*VLPCXku`|OzOk=-f5t!Ekxo4tMR=iN}h!LoV)6h2RnHe1iT0WH8?xSzom(Y#Rve*uge*aPseO&1jvC2l!r zQ0Oz!#gTB7Z^;tNhp8~opLXW#*>i(~t3PxNb$`jZK^_rU=Ab!yPz=+hOK@5tohDi2 zz=R0Y{KvBX9>vlMaEC`gE}Zu!Cnw!S%AD4wLuyBcL*OQnkq-q_H#f&2HqQC*I^lo8 zlYnqCDV3G(IC*DP=OTQVbFGU|-6QitQi{%$EKvVc5MASO7u4 zJ;<=`L1xNj!&$9m&RJiHbBS0^(5y%p4`V8rRZyHIcwj_(#z!R+Y}BeS`8HO4o;NlDVQ!{Nk5OtkBurt_mNGDYa5O@W%U6we<2%wos|7 z@%u8eWn|rbTN0-V?0>p1_p8s?ZYV8%!r<3{Ki`k<7D5|bg*IjjL?2$7&YN@1@qX&C z$AU{OCwB1j8yl?hY%pH-uKZT!rP0Bm*j&8`>m5nQyN$D~9Mc?C*FT;W!;@sO<>*z7 zjelhiI;!Ym((%44#QA};YKC*Hh3vKcf(^3LPd{z+X7URK%*iQODn6;F5jIoE_0D6L zPa?m)&Mi;b&TpPOA~-o1_wwh79b;_m%mdKILVn{D3O-z=NBL3{5SHW#5Uu)tusokcrzS*Ld#YhIR4_Q zAsntJTpG@>iHa^wk2g4S+{n&7ewxKIk;39AmR#o0hgGUKUMuOg#=Wv%;SjQPlZl>W z9yEcFC6~Vr;OeM-z_rB|wB|wfUAt_0l907t4n$B1~0%uiON68nW)TA0jBUm4@ zNMV^*9MUo52YL)QjbhLS@y99hM_=11v`6Qqu#UNVv^kG;qAvVQ$L`@vbw_!jf2lNZeSj6nc#U z2c{Y;a4w+{LQeG77+9L=0)S&wJ%bn+E*A)MRHg(;u&Hs-kP!Vn$oy!3w?Pa5!*YwG zFC(B9gmXN2&8WI4w+re`;v?El!p9*Uo{%It;NaL|$WOH*3EyG01$>Mi?bAc`^P%tn zi8&>52)?uLAt8X`R}<$etOe*M_=ctq{9?FHc!1SPt{1QkBNY`)e}KzVR^TE8VmV}t z`i&X1enUMAhUEwR7{;!JFkv_)wFUYFG`z5id+^n_Jy^aByLT3x`U<~_!2$?bB&3SK zH%*tP;ES@h<$&w}rF}*3t8q@s^A~2jZXSve(P%3P?F z5<7$Ys;ue_e&z0tU8=gW%(x82q-*KX4eiwrN}@}je-pUEycp=IRhD|@=nh6(-a2;f zF#daQ@>pHVW{%oBmd-fm_DRn(Q|*!4m9T2I)Txy>DzWpN+tYb7u-byrV)JW*V?Khb zpPXf|5y+1V>jwmBc-1f;gA+br2G);^ zhqaOh9Z@Udcrw_uTZGRp_N!cG7o$739192n3sUXEh!M>j*u|-t1GnO(L8E52*4REt z?kTUVybrMgQ_2F316*c6Lk30x^aMBtbE3VsH|@tZSs9uAQ2!#9WdVj-%4t`h``~h; zft4nvp{|O~AEA2~<1oFa+%A9Lu@5zJA!Rup5UJG#&uCE}{{H{VjUVMD&sn zas4yF^K4%Vd?xgroh@8SAe7`ag1ruiszO&%C^ zku?Zf8TRBKGLaD8LkA9otj{A(89M^fN=9lhBo%4OK0ZFXB(KQ^9@_szSXkI}`HecI z6q7gox;q#e_wGM78uW2&oYYiHIeL5SS;~u^Y_+r(6{EjxDh4W_H?6*w**ZD>OL6Ua;lK5a1r^q^7A^s^MSW8(4@d0? z;c86}i?KIDJjMgt$a;&n$b~FZgjpZC(#hN8MdL(ptx&EfL(ZZ5Q{=CH3H71!k^x90 zP}K3iT(1Rw>r=QEf&>ZUf;QPmj{-A|kZmy3)eA|LIZTD{N`;ljYqXP9B$b1PLwWbBTNAx2)uFC|&1v_^ zDx>)S80vU1?iYS}Hbd8f%-t$<(oyg)CHxcTZ6c5lR;9hw(4$~T!pLls)c%weh{LiF zl_{BnBZv#;Xyj;yolIs>sDAIGK?eiZ6v{Gv0l~GaRzkQE9`2W)ua1`Wfs)oI+yZ3s z1=JPQpXaOg9sJr<=t6%B|EhJk*;)~e_R483x^7yb5R=;i8zi+KB>+QJI#VR912_ha zw_r;&hg4{5;N1oXVG$91oH6JE$QTV;O#|#B{dO~VZEiL#LkZkCcmS-$)jcP#A$bs) zPsX8@@Ie?F#Fv0ilhgY<=Opb8qF8+5p_(ypJVRk`$$*zb_LoO0%3-q{W-goD*5l5~ zJ+nIM_pZ1nQ5{t-EhV??2I`)#XusW6Ii~V5Z=RWrO`)99v%&91HmxUi`j7m*QzPU# zpd+d_UQ(c}cRAJi@EvglB%T>3dywM$Wbadbx`_|P} z*2zjiTS8)IP$}sU!guN$926H9KacbFIysQm?Uz6{4aKFCR}OTCuzV(aD&hGF(sS_W z6L4Id=>8Z6MH$)eL#L__;1`}k8z6A}jJJ>00c*h`C6x^AM%{AdI+5!MCy??zBPGPc+5f%+UMul(yu!x+~FInCyAaKLZh z7a`$Z!@u;lZJX76c6ce7{vg&6g}GvklcW3fSs<j$qFP*-cu8&V2uEbktQ6tH~Vp;eCzG4!s|l~ zcptyxp9~O~oOcU4Qf%gQxDi2ES^L=*cL**KpAg5$ySKzcm&*nEmH14Zp3TXrXRvC} zc&V`91&PzSJz5&yHNWY$l}gVt%K*rNVFf#q<@k|gHkWcpP!rqZw1(rsG0L37vnW$@+zkiLjSyEKeL1v{{BIa3 zxh&BQ|IY<5q4;3tqCqO3kzaxWI~Wdc@Q5LB5Oa47p2_v_=ZAZ`G4@u+E0k#j25b)7 z4Y{@ZN$#oY#jkBhZdU)3dp?S=p!7xZa>3>FKe;E|y0F4v#}NfJG(JkC@E^)c!&DhP zL>nIe5A2|E^e~P_e-|9Y?*xbe@HQjXOKO08)A;Bz@69&{6dOE;`)Y;?vf9lj& zFSWNJi<2Iee}sUYMCgEONQH>vm;g{1CVBm}+@`VTb4k#yLsk}=*H_!g9(_?YFeDwc zywvm2G}uj}dg+|wiV}J~suN??H_ng7lIpwAm1r39V z-5NYEzVUl(wninFE}xRJUkw*E9zQx5FoUx?tsE7jn4C8lgCUHSx`zCKz^gDxEQk5Z zO&EMZVFiTdK|G68nW*rfBTvGu)lll{BaY2S;W_lQ>E?i3M+pE6OU@|Lp7K>7A|>mJ zY;4?)&)I{XaZ0@#(4k4idideiyovOXpuj*5L=>^!vjD;OAr{=w+&l;oL=gBRZcMvk z9=<$arG3y*;wjGd@tHDTR)X!(R(69J54ex;5on+VNhdU{SqT68gy|XyfoWEWX(l-+ z(cZ!9;9at$9EN*q6$hDbGeD=xxsiZ&Sfl2{g0zEyNmeMW0x)=F=V{r)kh;!o*(=pSvL zav15mE9fo`0VB(+?fdtAPxc!3M&YgpS4?;eAwG{{x5K>^s_t3mK`|i96}&U&`FBwK z0v{7rjJ$n2xU5Z+UmNwWaC~x22eT(ddgntg57QVf^wdc(yWdcIb$i;PAF5U6d3VdW zE*8GZpBz#kFLN9xK>L7>!6uHZl(9W=4pTrgO7a~$c5FyfoVvQY zX0r3+=@_4rhokhwmB)=eKsw+6$755 zBi^)aKc{@-p02xPWA4r5S+7FFr-XN$|kMT8F8YFWequPVK#SfyTPNg@(tfW6jt- zH)<(g78jr3o_|r&0W}(`w6jh}1cgnPE}Q)N+2_XVq^Ys+irb+HH8H1emZcXx-haTU zE|tf8ZOogtAk0f(dy#;?i#h@3slg*cam{s2rq$vpFqP*_+@#2jccrx^G zB-gIdZDkhmiUID~7p-6K>6r|Fh#fl~qeQg)6BzGdE$21KhiNq7vIs=k;u|@oy>)AA z=hr>o2}7U_d+U9Xd`JrK_JG%dHmN@VY_&(QSwsr_TH-Bw>D?NRZyVRwzt7t2`cWhN zRXy7`^`kAY|AH}9v(-HOCnSGKg_15_JAP=llWinEVc~wqjy>Ws5C4A1ImI4+;>z1_ zzrbYU$8HxEOuSwAK5?s<-yJJq;Ts#%{h!+M>@=D6;%}^Gpv&)5^*jFk6a~$}|9!Fz zn;MqpykP{yOP~2&{WdZ21l+|vw5m@$3(?>2%Gpb2C4F_)~KtD}!U(#ca0hfZP1|vLQ$dprwXd8n!pRy*4ZF z4t^@deT{}2{W!vOaL#&#B4>l;J*%(3|AC1K%ga})AK`b8OstVm3ZfP)jw>zF>Qjc&RIIfPi_oI9wDzANH3=$tc9G+RcG>4zTAvM7VHl5$#R%O<4M3bCq|bQVN>&0wWBBQ z)^UEFaA_GCL!amD8vi9mO#Kc@rx&;Le`_SGGduMcFWwrwfhgIEY$ai`+2=Dg?BnbB zny$n(l=$l2^#({G+yon%EnAO^>+r(-+qg>=Qwn%~?dknP{95d5vWT8ObJk-V14D0q zS=ygPg+&<)Fhv`HQL-CMFunfq>rmao-%j->#sM(EYQa!JI;fqe2^L_Ku7Q)}KKwJt zgdAX<`xK69!u?U}|3tj+?#=ydW@cs>4Z+tB;m03Pl97!Hpw@R~WivPP6~nk_007Rv zG{~Hubu>4?SA@$a#-=sk=U_0t9j-k%En3mo074muDxBj7*RA zae4iaV}qS|;EbUPb$hcPFt4zMpBF*{QDT|BI3a_HOcF*W2n>wF2Zx_7-W$~+Cwm&I z;V%uxt#?T0D53c3Wo2#;(*?A@;@8E)Rm9l>4NDa|-Sgo5z<(3m7; ze_(z?)JX(!!t)~ z?d2a~>d!Gf6J%{i4c~sT@N3K6iz4y(>Ev|`dx6j39<~~zk2PuHsB03z;jCCXd zW$oJ?@xNpV$`Hha#}PzRZ0w=qxHe&OO+al2a?6l1{NU82ZKk;=PwcaJ!Si(iyx2>UnW9<8!xr z9-o-#PeGRCjDmXFd$di^8iFYBM>;+}5l792ObV();1?GzfzNcdlAA5fiP3In$*tjL z_~gWrU*~VD_VRGsw?&JrqM+Z1h-DlzFnwsn?`ZpPf+>)~Dg}d~_60oc6p;W=GeR~E z=sY~-Ewirvmo8?J;&Rl&27XW9zI}sdH+pAebRf+J&FPWswuLxpM`1IEzxywdu&b^o z)x9pu%RplNTfxm2d-e+ZX@usavQ_VsI6HZqBYwU{n2z_!>G!h|2W1uDMg%6EdMzzI=$_UEtodef( zlMee;&YGWCnr)s#!-IwU)-KmMazf>$gK~;lh4r65={y-o@1Q+KO)KU6fT)a~2fk;T{m zXv>u76efdYtV%jzFt3ZrOvU(XIVJU(!HV8yD4iJ$7dsGSSdX8fIYDwM^GE9c6Q^)8 z{f{_>m;!7G+!%ya;#a}=nhP%ah-^~X+Jpfh=EijR!aaE=m_TUG3ULPFp)K$k@1H#l zPV-4{{6aBLTy%gOZ(!tyKqhEKV9ybV>`AA!CR~Q83s8HQDzouONVVyTzCPPGoBKr5 zwE+E=Xg;NX5!e`KW6}?os04tl_-QktojtD1wuhg#Epep~YMfD;nyFF1F!uG; zblbB$@6F(pxu7 zIn4Fo!2_JALWcZ=Bv8n2y1df9f@yEAEY$_>1az<+(SJo)nxKNwL4k>%_P%{BHg&^* zhQ$5E5d2D>a56HS=U;8XIF=Z6u)8O21Ki7KW{ZlB7{j7x`liE&5gi)Vx*Gg!i*Op? zx%|K_f%AF|rZ=$Dexs}KvM5&d^faI_T!8BsqI+cjIlbX{_y#5ml_8Ylg`3)~rC>U) zym`bJ1NKaIpfrm{LKqke!RTLTUI`i%8TaC(Hfl_)?-Igo2Ae&c($4vz_?uWMu-V;- z8U`un4zP#HMeqL^D<-o@9;_G&p+?Dpy8-*f2>AwBW~@m>*^wobkkBRTv?*Q9xnHYJ zI|Q)8lytc_cW5f@7AdwfaMg9xDK?mSbj<&+sK<3rg>o^qros1mt)*||c7}Sk7%p7p zap_9TQHen<6`txR(UmI4!v09`REMm39V;WHs1h0N)uXdKVR6ijp-7*+MjPSNkN(uM zLXSmPmL?ZYMhy;_Hs~7VXABvgtmBMle!8Zmy`E{GGVEj3X3s6O)HJQ4vQ(^-_v7)U z&ySq`bIhpG`lGkcpYgcen^rM=yn5`#9quJ1q57i)3>K4tQb^IYWeXCl^e|V#M1w%V zPQ~te%j5HapWHaRs1)d!Q*+)+^WN*%`DwYQ4r2mAJUbN?^9qYGrfDJ5BJ987P z;5-vEa37~J1KrfFNx!tNBC9OGyC7I5;3@=e&BMosG+Me6ujghVRb12jwCWWD@Aqffw!^}8B=_uivJWjJcb2pwqLk`pF{|42- zoYW^r&QA?bO^O1gqN?`vuk55q?!A0N4-)pAU6{0Em5Zple^<-Gs?_<@`9oXoaomY+ zKd?>Pkj$%TqK_anI8UpA*gy%?(m|cad*!1vCUFd4pa)3*}x7?76VQVs?ZIskk00jiN>TVUwN2P=G71n1VBL00(q_;@Yfq+)CH=d$+~E> zq0;;(aj_J!A5vqQ`BpwCwmsWcun~Jb!cBrS|;%H*Gri90xySAK$Ub z?fUz`3nJ5%<%6Qj;Q)5pGylD#gwx zQXIiqi*9S|^-oftd^#`9In>5&v6oIy@#Q40Y_-lsQashH%IzL8e_&ZuZO3TnE^m!! zoa&{`iwX~^#oF-BLz>2tX*Bczmly{uH$(tPoVs=dd^Cy*z7|o&dAs5Q{;2p?2CEV6 z?4g8sX$((cDw@d zhh0GS45T8+!rPCb9-*e-7T+S^6_GNqLDR?7KV@m*?Im9}of~@g4jGfK8=PwH&jYm( zzk*jlpcq=IQXC(!&o5|mgFCk_jT9l%+PHCJF2Vp2qd;s}Ms3QaQv+rdN-2s@AG>sj zZ&=`M(-GF@9+tMtE3|y{WE{Q#>`$4)U$!n#^^cdP!(_IIhc7A%RJEi}LCb=;Cg8vk zrq&Psuw~1_i}5=pTH$G7qPcLDW#E@1?G(xjQn4X_Hp+Jp8N@L2dUfRaq4nKUTH`ZU zC;Qbol*Z_T(7ajGMDuv3-q=anU>JK&--k^_>>~&&Fq6hEOO$y$0Te6>}T=*>%vJKXTyD);2QBX(%W{V$R^X#w%ek_b0;XsRD3hVgJ@i)QsDes)t z@?waGC58_U?`=Q80aveI*TVfk3576X#e@R}^jQdhI7rb2wl8js{n%=f!mzrG0WLsN zU*Xr52zo2<=j0>K57`!~zL^eY63zL5GD9UoS(uQIodEeUMJ@2fUabY8zsK${>bzdR`Svx}y9ymZ!%+i|zg-p}QF-1PY*@ z2|Yq*fk_OapHu(~BPVp`iSHX4q8MgeM3lEcR62}ah;@p4D)rBI7CNXH zebberOdxqqYXR)TD%cLK3U#fNI*w|s8eZt&+>mAGk|e$5358J+{*#uTd(1A z_7^g_un@K=HZpdeZgwo=M|Q6^wQtJTi2`a%Z48KCMGhHHK<=ls0}K(f+G9^cc?k~1 zF_d9Od-l8rWe9@GG^NlRVjL7Mi1p7ryi!)y76e{glgWoekY0tq{}eYNPKgZY0+h$M zwu<`8I&qeK5?a*j*&QDsuYmClt}mL%qPfYR__LVKLgI~$^nIO1jOfo8W(r3-)S7C8Mf+k@F8 zk8v30f(kDtgoUS!(NMz=lqejS_Tht@l%39f)b+V*x&SQ0@`i_pP1_|gzH$WcfJ%El z#sw7MivbDKYS>pLso#1Ky$~jfDfJo9V`1h1vK`_VQSpEL_%YbJq8>9g&d)F9*iVNV z2_l>R>eVf1yKsrN!FxXed`R+V1~h`C2j5rwu=**y6}>i+^L)(9d9`Dtv|4$;m(SQ@ z=(-UWSyzOu?Pe^WadJERw)4|9_<8!uQ~a3$tepHe5q_rSylkN!LL#h^WNY164`6gHM&aJY{;CT}5iUenhVezWVs5(z^A*S6xHr%?tg*vHiw_mo7!A zX#a3DY)delSEIOSZf6Co8WizFa2BAFDnOA*_K5?FEsszxDXuuA^qBXe_yAfx&BKHR zOH0gL&_H51b^p$tX?-43NZcc)7zzP&N(O()ra+df(nHH*>d^vV0vCoohf#+VI%gsS zd;`SHC|NdR6gaH~Y@cuNc3uWM07!*E_DWWZVRfAF;CogV-8Tz#1&sO7pdhCQ4Wkd(_%xbs45BwcHGU_j@d1 zUJVd7-z)HBPq|97OjJz=U`jM{9B7+VRBllwAX;e*zHTX@loG+BApikFV~UhOxx$FC z_i6-}63@oj0)(k>iJ>!y!~qro4{?x?oNVjVxj%J>p8lRtvP$rU@0Q;_0}ih@#TFJ8 zVqu}4Bl#wp?V!T1*=8slm#eA8B5mzBf)}Vo2F~Dw!RSLmqp_o~?U*K4HXL1Kd)C8e zW^S_{E+VvMia4jCX1RAk>MzEROO~YO)njJj3S0u@O;Aqhyg|B98CV2pQ0IV!)%k5s zP`tt3y?YNU?@yCD!5VJiQA2_{$u=p5j+8s38wV#GC<4nuuy-i$^ze}-5&LUFvIk=v z9{h=3_v5ODtn1H|bQOCdiVM&<%Xk(p52nYDiB+{-L!G^8!_Q6A>Zvt@HXdkA=Xixh z99E1n8=pb3=lNH6E?CF)oMo)K=U5lT*0lA}|8oKK2RMWswPbhezemLAn=7{qas?fE zMFoQ`!aKe9?m6TWA~z>Ah@C?^XxEWHIt{0~we;(BH01(Pg9RQ}$~akd&+~5c&SZP` zI5|bLWX{9q6N2LVCiFB-^fbD1+3$1lJe~A^%wQRH`>e3D;(1*cfq$|tV+w}J5dTnz zj83Q(XgSeyag1Q3ybD~0PtT8v65$3!0XpxoE1WL{D6D7GXrUGvWfepNjEASN_WlbB zdwil}4=~bmpyHyaz|R@Lm>dA{baJmZHy1{0PZS_zX`-_t(gM~CQEP|}v|kMa9#GxL z8xbBw-Ck+Gq$iaF5 zJPRJ*6YmKxaKGQ-H@*Y21if|UfCjvh=@Vd>N}N@Qs~o?)a3|Ul9tOYme&n|hnyJH! z=4lm%)YyOY2LH2#$)X1`QQBd=BzmJpH-m z7lo+flD@-g?}ncFAgYg=P}Fy191n&B>Y5@u#br9-Di5%~iCGDt66k=jT)D9!KXiZQ zDGzb=h=b`0%n6UK3RftxsEAw_sy=xKy+dZK+ab#d^huP~w68--e(&%3`Qzz)j%^{$ z0g>Q`#7hsL)_Vd%AJ7P5L4%|x1uhp3JT$M&5Jxn@6m1TwQ8Pqt%2m2Yvt1?g^)Y$I z`3J{>2ViOOC#L+!;)1h07$s17V1uKyBT6^wahk1T>Mpn?xs!Fb?Fgs>t8?o^h8v)q z`FyhRF!FrpqC^Mt5sL_gG-=JyKu%SGin`q}^YHlkjFq3hbl>m3KjWMP@6Ksqu-P%( zQtUTp;g;*R34!ytZ43(F@2*jx$!EYOUmzzc9mLN5zyM5iK<&T}Uoa`gy4ryFv<3I38aN0Qm1KSv@7 z4sGASihQqP{wQ@>*wAjCy^bGxt28^L>#Ll%I&F+^omh6!-8YL_Qz~!B4u7MG;G_uZQD2n*k=WH58;J#af3rKdtypxy4d8jV`QGg)#UTOZc1uU+* zbf2@BRuD)A^piMEaJ%>T8X%Yj#rNvl6~qh#GmYIBxL!0pFR%+KWe%Jl54;x;_qH$? z^mNhdQH~gsnGUp&QelA!TD%ie#4l(H16UcTpL77DLvk|ro*28! zl%-k>{dH}M>28F7f*?hn=7=B(>>KzzuXx%VsjAnSSz~?<`l(8Sb^&TF|=nf%mjj zKI8GhuFmJ6d$Tkbqu`)~Rg6H9&`lXAzSC!B;bz6%c=hVlIs3WMm{JZICEb8i)w5*g z;Yo0`;M|^l@)6CQP*8%ujT&+kv(Jw>nS$cMc_ckW)M8CdPKM=?okK4F?7Ii z-_iz=5WfISK>;ALR29VtXmMxyi*ejCb!_>&6d{^qhX7USYb4FlaRFF=xvXpu#tb1I zoF3cRV{`cOPpc!^5;I+N=x{k8y&jtPN3~%1We&pwhJ+YNv0g#M@}+l+!(4LL%`KQh zrpuf5&3`xtK^K5%N%(<%J%Z=y0V1m>Rv`&fAgrMqu%@9d@9b&H8-pYexus{oqJrZ; zAr8h2d%*tWwdRYDML!x?!}JX&esa_B2sbBY1pvig{TI-KEJ3L3G(oVndT{~-#sS0( zgvG?@0Y6{8Xl_F<=3*x1H}~*ICA6DIG43jCferd_h)3Yz##8&AM8~9F)`(t^oLW9+ z!TGR3)>QwARmIkn$SFv{F4RV(Cv)ci+b< zW-<^q?-F3sSgck1T|HU8SCPQrjN~PBG?Qu$?vG&UnKKw|5EzL+^xRZ#qkr%F z^Lb)H_Fn^}7U*3UP+A^^Us4L1wsWXYM7Ct#X8iq7*H!Xc(}3r#Ed_# zdvA?ph-ZvhUc|T>@IV=9>Er>+6*?3a1x1xHqxc`bAoQDK>;_W8P}@}C(uD&T4#G9I z{@cRq*_cdVTmjfT;fm28 z$;_QtKPYz1f95lpxQ6IfDExW{4+)>RBB!Q(kVim(eI)-9vZKZ~QS4d4qZIk%9eD-cm2yD^5gNy`LCE9k@m5s)X6*xh0Q_q=`j%|ZR z;OSg{DDeSRRXEgyr?ORIJW2PHeH4lqy|d1+WeE!U5N?id0LmD1i7q?8ZMeiiAFd@C z%x1>RoLrIh9Z6rK1f*L#SGeu#wei?|#DKAIrFZE1rdw6%_qei{?e5*5h8ByQda$l? z(U~d^@9}=eY4RpqqPh7ui)Ialm0mv`+~j#bZFtdo}C$B;eaA$5eJT`ssZ2)ifU)kkb*Cp)9d~nE_z9)&95V z3xSH9Z3#7TUU6c6BT09dvQXRGp_U_aD~!4@F5>^K&$T>I%r9%p9cjgj^SdQW4L8k5 z$yJoAb=hBKv#HNxx4r|Xy>~o{+|TRBm!0fsI$v!2<9wU0pIu$R+>mnf*W&@fWyrD*e)NjvA9(hphj@X*0T1}??c>(=A14w@D&BF08&3(3tHzo+^1FG=m;CLs z{)xLrR8D9*muV*_pzwgv(hjT&la$4IrMGe1^w=ip|Ec;(y!KaSPQJ()bB+4Yp;nu_LL)=rJzxogS z<@>=gIq&X=b)7oH3%+eWcd~azY3g~O9K{sgyY7;FJ;&Gft1q?fvN`z6`lM)vQt0XU zm_44Ra++OEEdRQV3=S60Yo*x4C|H#a$~eyDiLH7tX}kV9Mb zQ&2q9cah)M%Iwelaj(+_j=pbya|jBE>gM{NVt&ah&;;S?U$WVQTZ4NqT0;^~FL#3&FQk9ve4xD~l9yEqj zwGTQ*t1>htw;0x@SB&cNy#<(o3%v2c`1 zTzy4F!;ZD*Qd{zafnS$7A7(r(QmHShQ`fpY@dayx+rshIL&c2wvKgC27J&Ys6AmJ! z|HX@durYW+Glf5fd(`vBs@so+)9Q7B7^cgEN&ED7J!9Eb-o~Dj;z6+0-Y-zQ@LZP> z!wNx@I8h~ZKJ58ydMdi$nOfX}JA16oU9SPzV;a(V-`O!AkC}iGg6omVbbbpeuj$$c z%$?|+m`q$cPY=U57Og_V$yw(${tgfH@Uxu*=wI$IsAD>v>$uWtH*NtX5wklD_BxE| zF(MO7Gs5<)DvURkSt;}T?^fgUn4+yz%@*Sj7)y~3YH;Uf)5r;BcG|q!%u*ik*le!O zX{nI&<Ncn-0#MzQ!Tq14BYuyHK zl>Uson+9;dUU*lJA)7J2>^ugqx#QoAk-$6NZaPzu>rU3k05JsBu2FcoA)>qcR*$IG z7p;~@7~$PbmNk1jzdHGV;FbHLMMBpMwk=wsfMvd0Vrg~1on!382haJXxAappGOqA0 z<=buIFm!Lw{{s)-ZvE`$h~Yt-e51%}PCNUU!u0z+8!FP7lkpKk_Khf~9@?ALcpcgk zTjv><8&^9vId!{KDZ7{P`@Bl=EYHm%l<`EMHQ=?tkPv%-PcR9*MeQ5h5C))@0shY= zxC-hGlc^Kec4L%C!PrD-!`TiY^cAu}MC~g3TpjZ`@(w^67b(Wz>*?AWvflQ|UNm<^ z?nf(#Buh-LRnbFcnbc!aRSKRRc@o5^xKrJHACMPA#1X9*CGSwI5^i%KES}v@-U1er zfdUJ|WYC5xF~G#chFF3qRWKak+ybHshLQVmOQBq-L7+TB?DzKc7sL&CLb8F=5Co?} zZ9yvD$d zSW>DJC|@1;V9KSaw#-0)^V2D}2f6Xmn+Hn7frQ4;zdYeZw){@*oW~exFVMTCr8?ofhrK0F#9M>jt59cfjA`0 zg%DXQxciFVLtuo@&5DAZX%QV4e0gCMobhq?^xYqO!$A)>9 zTJ-kHE$EfYdE_&Atja7q|3aJkm&$>jhuS`yyV|lh<*RIUc)+BEPCV4-UrsIt;@yIw z6xeptCf`{=M+kc&VszqQnJirSNC+#k2r?UTIH7$3OS%1c=tLIE%F3G4Sei~L#C@Y@ zpq?RN^P0mAYoWL4fcoY3y2G#z%AUJuwJ)H%f!{T|2gkb7l#ud^3KxjArO(9B&59p$ zm?=zdXrSOx0Ovc8m)2nXyuxoJS_j4;B>e%p28tJc$>pV+7G5mW08JQlI>e&_4=TnK zamTJ*65`@BVIk4ekM{{;1!_a_AlravOM&-+lX@K}=M3zHop^WC&@LvBM-_Gn{@P%z z(eC}3=ENkWB3yL0VHkg=vtr8Sk~vFPbKULtF|gw_7Pvbr1$B5fzkmQW@lbrB1*His ze73M8%Aw0l)cc%~p8gYDGe9z0(8B7+ltTB1z&y8zL|P-jVX<=nP6W!A!9WaGq#+|B z<7khdv%0wTJWtm^nuQC^0m@ zBStV$H$XQ5c4pR9g^T2OSA8g8AMr9p8hK$WID(}C&9iZ`DT4u+;vo2Z(9@!bur@ji ziN-V}&*P)X%g;qCC|}0Ea3T1*z(($Y*aCbQ6(N)@!04d%*p|>A?LWwdJ4pZxvY40( z!b)Hgi1gAnoCfwF+YvJwlSons$;d!4_For-1_uemIG!=k!h=T1k^q?z{FG&~&#H-n zU)*rq!oa|{+6h_fVr7cp_n`y;^$~@PwxO(aJim6e@jC-EZIKNZ0R@71i4kFa!?y(i za;#btmQ0SS$O7O#)Hvbs@(K#RCGJ>RS$hc!^q4LTFJ;kl7?EAmnLwjj_da~U} zMwj=+KC_fPM^}sK^2Y0j%8yR=|A|f=Px@;bBRkb`!*LpzX0Qn(E$?w8d)}?-K(|o+ zI+;c7tAWjP?7V*49b+i=5y;qHi;=Lz^rfzqR=r`loX1(^|H>=e2VG-}S> z?T~Zx@PKg*EhB_mPdR@B>%L%}CIuZa5-dUPC-4_TN{}**r<<9C>F3Up<%rMY4P*EA zYcZbKnN+ik!#kfCRbWZ|qdmf#_zoTd>MEypuqd_h;c@v`9xE0AyTTviKG}DvTNc@) z?}jo2%w3lK>P18u6baqVm4xCDsLWh#L%(Z(eU_b=u~$9zA`(Jh5a1l|q?#tIzEDk2u#X?$xi<}-8G|VIm2eyvzLz)Q^ z{}qzxAh}2Tz@Cg~5)GH=#}}@F^&;xJt-v;MOyImn<~x(=Hqy7>`gD&n-O?cPg8E19 z1zOPNoy;MvEH(nHg8IRYu1+ycQ+hT%IkB7>5_Qr&*356J{rT;DT>96;HpsFX){Jw( zNhc`YR&n(0-IQ`Ugvg05r>Q@Xb)mR@eT$Uwg%Qm*vyx! zol?0qrOFh6xPs$-x3u;8#Z=}9zd-i*oy5x}>2uF4wd(XS5Eva%T=91HYUONiKyRqZ z2q1>~f>a*R_e1-kWmwyZ1X~d6E&^)IoA_gak$B4C9PsU+h<8NEi~54Rx@XN3PMnwP zuCi1iw~xT^HdK4qH#L}7h=mO)1Td4kM|;-qJUO|uHE&h9<6axgDv4+e8OK*<%A9XA1{)@n`y~B;IYm%F#%$n}7{TFw!uAz{Vheik$?;Jd z%aW`Ym+ERn;u1VbQf4r$MBt#*-njhEpaQ2M4W0u; z3gx)5-+?YqYGH_Fzd?;m!wWjIDGe9W6R<8RNE%g5#^^|+{=YcmMet(A;;(DK&wB^2 z-4c-7X=aXhOMp7GECiT?EnsrdIxPuf5wg`lJShqun4!FK$XFJ%9M=u%hiIt(QD$kt z6lMFBCDnnGsLK^?i#X`t!$7rww5__j2s|IX{OeMD$r4q!lM!agvVPL5kH68CkX$FW zZrP>F3A6jWb}B5o$Ef&fdSIo+a1v6%->Da#eFg)7V%F3Piv5Qn(ytz~DGdt%hU5A?u z+5@~|DgvjWnwpjKrSj^stxsQ-jXtvlH4dX^){ZRS->UnZEm_Z|^UCbI9*c%WLPwdI zvaY^8K6uqPs!ed|rCQ}g*47$hvx2b=xp_aheZ*;ki39oo;psQPiH8P)xQy{aO6geXaTcmhz51QRnVRu zdX&A*sCk~K+7fL;n#?`@(=p^lHh|c3!0=HkVm`ME45|qC`}gi4c3`*d^Tz-8s|G^? z_d1%;OVUBqTB5o<2XjGOJmJ?aoSb#++}3G2hJCV9@+)IzA-5Sv#CC2r(&nI@!rTj9 zWDKJnP&lBTCy`USJRhb)a%s7H?y2i-i5dcPa1hF(gF16jp?F{_gBkjFJWG36VNgMg zM_Ud3UH8dN04EwYRbmzZTLIw^?3d_)>;<^noEI<{bpL_QxE|6Ph{h0KZ~^$XW(Syn zSFm#7iiAQx5}Y3@9WY6R3k=#->{hURZZ+_Y_xkz93yl|5&s+a_3knWw6nk7tkV&Hm z-3p2cesyh{O&lheAHd&50|zeG^F}==htQCxB+jVsI04<}oWt09wjj~KAh7V3^Td@+ zzepB_8aizTLO`Q#ZaB7_4p+F1ZJrt*1go+C{niD?;E6*-3Y@-`pRCQmik?kpAi>!0I@}k|gnU_lj7`k?>AH~AFyqfs6qg6hWTLBQ}j}HVt z(>#m2BVKwA!4zoB5^TSpdE$>5jn6I5z+P4Bw7 z`W&Y9$6?$#0|NBbSS8m^k}N=rq{z6?}Dl55$PP>_tFS zan`#npsm4R$;RCV%=@jJXRmQ*eVQn^67<7y-J)DVYfAk$>iubx0r$}4poopM4|)G! z9_Vpst!n>d?3KSY$AX(J)g)zIo)B!WfuwvzXgkuFNtcSxXe!gM)1u0gT+`ZrH7<^f z;sIWwc|&=P&Qc&8ijY(n<6lW!RG^c?z->z@d#-xxw{K6` z!2&Zlq4LG7-~C}?xm#>>0n=`Vjs3c<>QLcE+Vg|0w!$u3Qe>~aj$7%`lfuLKnjwB1 z(Pm2>UBMk&H5_6XW}N+|UXwqi`NxUa;9IY|2A7HLTm5sR$RQ&O4s+4fi+(qp-5_AR z#TbG;@!E~avL!+Bs)Ct-S%&w?Sx(=QPL zT;Te_Ne;wEgR%e(-SGS>VZCksHNXBcp0DXsJ>S~ZPGtzJy`7byla27>gM5lmR=EM%v<7^txEdpmn8Up1o+#23n zpajcX9^5;)9X(OVWRH9c26ZxJU}XB9-I$pQ$zz2Y^4po!{knniG>n9?)u2y4Z&#Pk z#*}~J)1YPf_vG@Q^L7*m1kMsaZ4=7@Elzy6;(p<~mogU|m1&MkNJv19^7Y~KCR^Or zfb4*OfOZ9@a<|!JT#b7{F0AFty-14IcEkei(RXF$+(EVIQ%QN$BgbBL4IPb9s zA4cTYt~FM2Tae7uH(nn-B5ykElEU1HW=IHB9CGPJWljhf_--H2>CS14T+ll^zd;r_ zGmf{O5psTm4kbKYm%-@Se!?=U?eZn5O-f6*pQtEJ{<*;|Bb0~FCtk7ZH^?(0X|v4+;&Q}-7R{S= z;ziAK6>0aJH9v8akZ6MRe`0%Sktr>qY#;&<`E0^10}m6SDZ| zPe^9#8VrJi4D13zY|d7!zrAj-CGam8-<#W)F&NjxA~=Hw1-v!2UUdz|mrNF~kI}FF zk?H7HFw*U^w`W9xQ`=TbhOws1dsItZL$&zHAVGL|a$0z+po+n_VfzL+O6s8ws zGlyFSkDDY9=0Se|`(V0_&K*>?YZ##;4MfiDKqWiak1$Ew4~UD5>c~+OxLde=qIO@9Fb7C>(3O-U_U;n0c?V~?8>Vv&pRH))lN3qsag0zf|k5s3N*_QRY! zQH%kAc>}b|+_jTyq5K`N%mK1z_)K||vzf56vp>tZjlMNTDEr_(5Mh#hKFf8P*wvqx zZHIeT1*uwV#mr}$ZsWab241RG;DaA&Lj^4s{Mv*@!Icy(3e0r8Cr2H@%7gTNCRlj_ zV;Lv`>7&4T3j-WK>{jEx$~m=*Jr=Mpl$-|W0%9Y2W7v6$xKcqqDcKpHn!&OPU-+~=}5WE+vypzbL_HA7C-WGw)OX9D_40N(%Oa-)=? zl?ILp^boioA+W*Yegnk;h}{$*0UxEqilz~^_m}~Xr^)Tn~h=xii<5M}c&M>H0(X1L*^%j&`fLVGpQ2M7nRRm`i@0w~UtOk&= zFQNd(F$LZhT5ppzTuq$qz;}r*iEDyIA)NQu*%pl}_I6`Z4dHC|@6MqEAD)+UJLU9Hft_N!v~%`4PWv|>WbLI~HCZ!c z?Gv3oJz<+so29OXO;#&>6{cP3J3(sgq9nEFLLpOIhQ6lpAc7*%`ZAj zY)(7yH{m%u4~qxQB#p61KnrwlBI&lx%2oN}Zhv613zut87 zl)hgTxp z{|ivP>rl)=7*T}%0kek!D4mn8q(N3gdc{)2eT@!y4iKfG2?&)d#BYR)31>ej4nR-i zd)@;q$aN6gDFDHXf^=ak8Dkd1;6v*8(0Pqk@0AZj zEZ}H(Uy~ibL|NL>@=bEy7nABLlTI8^#1H~d0$dd`bcf25Op*}$>eb@d{x7i8p>jpG z66m^UOZF3~RJQ>E%GBH(4k|=t`qsmjkQo82>&%2S`JpX^jGKXRkBGG( z^lU^B;PGQLwkNO^!I5CJ)r$wwJAei)(ma84Dkp38hBV>1Gv*HsVA&k|hlhu|fO1SV zBH6B({s}4oB)b7nAylr8V8sH_<{{i>Ko>4f`<#~kg0cIrh6($5=#u>Nya5&pcL9`EPfP+*c8xK8ugA?gpWS-ykrCgP(9dayw20>)T00E~Hnk`BiQ ztRxsYT?N%N`0uhz>yY)3S{Tr~4j}e_1=~X)sX|AA`S$Iio*B)%3WvT1-wDX0% zZ&cs87?*>q>C|%i&h{PDs}F-|+NOU#dD+b^oV8IFPN(@Chdz(Kb!(EuROa*Q-o2yQ z>PhF_S71QOb0z;`ROd^;d_W>LvV4yc5A($(hhp-qHxJ^O6qAaQLpS8&Ls*Umwbe*k z4bETjq$&KC29%`bx7TkC3-fowo7tSTQ%%QAr%ZX1^*KQqZ~L&-EF=la!7cXBnC&%6 zB%Llwrk6>~u94l%%dL9h6F&87iY%-I@Q7sjG?X2`iaw(m>$kUmIaB7TXJ?j0wz5vV zh?KUtf#EsamQ*4l0gdpP@x42~7OW$GRzCb}+5BXSzc47_v2!|{V>w=Mm0y>FCT4^- z`%a*w!`Dv~fQ{bs1gD1hJHa?%H9iYTjLy3|P%M#0z*>k3W>O z-oZ3}W6z5w<{y%rTmu8YP#CGHY3QwO5?slD=zsMR2`S0$Trbb>ukWZk!lpx6UaUzt zUdaFOg0cJT)WwCBV`t(g1>Qr&I20QWHUo3MgmK0lc9?I*CuBSV6w;Mo8t|_wC9~2Y zi7a_OvMND9`Za<9o&+EyYh0Xx#{XV(?V~BTYP-J}bnEX?;*M)nv?eM4Jba|N<=Oh> zVrZs8c=e>$6(?g!LHD&(w#0JgM1on7u>cjJ%=J%S8%m_6l$h>5(M*Em6$Y=+SpyJk z|F6l_J!fDm-PO0I`^A>~ySNwl`Sj48${7qFvSwmqlfT&n`U}shpMsgLPLmt){7V5BUzXya$(HZUqQih-#!Oz=Q(7HHb6#;rW;D z!9WkTbh>sel;+%}V-b#T^J_N#klW@-v*F*?Qz{4gj22_-gC zuaehW->X(%h}0zw=NDZcFDpG?&7DWqdI`c2&kWw2 zA@-B&?>x+_mNGaUy+rjA*gRU5B^&)%z~?e0SN$p>JGpw1+qJ!n}P@+ zwo=h2WVW-V#I!a-`<`> zM#jHm4Wi#4@3#H&@5`<_qsB091XgBT93ptiZvd$iC{kxC74a7jc6S5t5t3+RZY|0W zvk#cC0`7sWD@L=PsVaaj51ep33u9@acw=LGT~(#B`vC_|q^&FtLx3B@%><4WI3z=U zYHhv!zNK&05s=Hk8wLljyAi$J{y9xtg)H1Y?i+L*dGx4Q6~+1j#nDoh%O7%*Rtw3C zcE0!WjMgmpNa1mJR+#)B{I?})DK0Zpx}yL^HF`i!bI@IL1BXh`^F`jl%b%S~IjFtP zyVs>J7T=L3`kAy``y%4iY;s0Lmr4EHwkO5;j2z5c&FUN`!Y)T8SM7!8K%enb=VxyJ z$y>fhV@s{u`%@VPSSf~%%Vm6-! z{9uRSSg)j#Q!aX3g#YK=zV)=>*~NC-8A&y@2Q>bUf>*blikP`E+bxElhdxegG`gqT z;2UGGrKWZZ!?WEYnI*DGjAny^E2L#(MY)pZ3B#dp>%p1)yT3a(L5aVq$?RI#q!^5k zE%#{!za%7N7wTs`9&PiW{q{|XLtf6LD|+T$x`OS*K6~CGAx)D7%kuK0L&v>yFxCFk zo=@B6trwwmn|tY%SIETrq~mG5?a{snzyBVdd2Q&kE^eqxahv9~KFxD@D|h!eD8$i%ZT;?5lXj>*szwc+iJ`^KOZ0)juDqEGLb?_9&FU%F3%DeSTGKJcv3xG}WaV$+{l z(JMN7eWJ!@&;VYr?0;DJXW0cD7*F0`;~WI0@tnys%b5zi2OIAao_~~D ziKjPq>U=cqdn>Yp`*3;5YPyW|^k_Qdj+}zm{^j%ne$=z@22nmQHY@^a=4wellV_Qt zd%uW7ChW{`)PwX}4jgB;zV&5pbN8ngGWpB$Hd>s;6V888ABzD@fBDJi9+JIOQrfV$N&d)OansONTi_-P4%G>YXo zq%%>%SsbGW!Ps+Dl7u1hgTU7({d{3aZ0Q2THn?}1e!B4l8>>X-O>|7Q$ znb1%(g8~btp4c~EWKHHxJUzyMHB@6YUUyYBE-qC{;Z3A`RI-)tpKWVzJvUHROgcR# zsB$>>kEg^pK{sXydGiKGD8FPHU;g=Z_SUE!zkSo0&Tz%?OA-6k$6fgARiWCzK$$yC zLAjV6*yFaJ)9kNHyw4PJNFbyglws|LtYho+K!STN$mfEmb&tl`i4D2O)L72NQ-_72 zk;N+i(<}Dt9xh{__VkLmH17IxaS3T@l6K$T-l!oxsj#pxPkM%>gszWWTZBq9OUF!fhu|{Mtq0Pj^k}At^Y{`EX+dfT4q?f;EG4#J95Fq ztN=7q|>R2gSbOt2YQq|#4WxlVU}>6|sPq}b(>`Fv+5(;eM+@kk9F|6NU|(Yiaf z1#9l5yYtq2`e|Pudf-_+{1Kt|{m3K?{~d8rhh%X}qH2Cu>~QOi@EEGRs@&LLzZkE~ zh!H;0U@Y;DCJ}m?Q*k_guXKjtmV->>SwfmFV-@tm=)7{m{RIq!!B z5Kpiy3bx4cCjuo6o7zR9o5cMKDW~DO_V40SP;EUjoLs}11F*4;#U!oe>izRcXc}HZTWUh_3r9811U}j>CAiJCHa_TlxbqE4pzdvBThV$e(=|yjX*c@u#`OJf=bj0`L>(1UUJp(8?Yn%hzwu~P?KD%y= z1|43TMwYA~m8$RF9N?Z1pTVK=p&B(<@45=fj2bJpVQ@&1^|jK64NoF+fK#!&8olStvh@`qI|}f~-d! zc)dqKERn#%cIoachb~x$<=Ph;o+Y)XDgYy%c(f3N^`wN?olz#V$f zn{36Wl9S~p8!uhmyYS>*2~Gvjz-X1@O{aYVm_+=Kv%(*W-S?Chgu=>rxrP+?tqt94 z7RU7=F|VKR@?Z<|tnR%nGpJ3TaA@hI#f!`8Hx%*UUi|hAQdIMS^j<953X}KLjV2A5 zVXFR$swimz3OtBh=lM?_rvJ6e((o0J;A}rjo;@G{DQpywVu!>kO{R)&{`Rxu#Qa9P zF;%*h1b6$sX9%^$jqQmlV}`uEvtJ|wmbdfh>DT_Qd;Al`2q^DMNl`)nVSjzR%4}5` ztZ0LV$r}rv43>KC)sOumC)xV(sY~uf%mY=8GP7R^=w&(v2C5uohOZHtq#xJ$v(ve< zHEqOa*DpuGaxe6%MNNvV*;4{Iq|aK+IDi(pgK?)fRx0_AZ{a{2z273B^~a|bS~{CkCnVYsPqBN zL1&Ezw^)m>dk1G{KXG5G*LG<-9oDr}X%`20r7B_dgq`d1WQ1YBR8ZGCYj22sflp)a zX+e>}VA2%lQWjHh)AHxlDxJHTErIvim9qzz@<$hN1U;`~ACnTYuq97OA%w0Y!Y|+Mq39dlXewud5sS$~=At!m#ot z!QTEdsUNAEOY&~j2W5OyLmYYl0(d05A4+HBK~(TV6T8id4fN0aO2Wl zll{rY!_D~^D}U1(1{;4nV9JoQYx#fr@Zgb(X z6Zc!}A{is*{W3dppsgGsf;Ab&^5Tv4*s)}?DsP8Jdtu*st;fu^s-_i2SHRNrGEbUZ zp#X7u;N^nx;f?Vp^ULfnqMCj)xNGZ!a^Q0f)~ifz zM}2Ker}G1ortyK2l7xdJ1m@gnx=X`L;!8pq0(Q(KxN1)=&8E{)K^4o`DH+!-23$g`aGKlha{Lh&4vu~r_iY3Uo@@8mv(h9$$JEyU#7XlSPpyKI#I9&_lKW4A z$-KzdEb!G*>?ml`R(0*hwH9)o%E2g(I%>7)r}D(N?B;e40Y#mkTNNmAGJ7AT1@-SXgV|bLm(o9{btqf>X1!hQJQOo2wwwdAxU>#}Qw(oZ zRm&HW0}c+3*N%*WRHUr*|CzqMUdB_})R>rS=6yl>%h7?yd*Q#Vm$sUw zeqFwl>9T(Vm+~v^)NGY78FyYT-KWUrAuali%$wG6S6$7fdrjHmyl!W_{ZY4X;};XU zkLQiLEf_TPc**ZT;*%uS`XCc|P7KOQ^v~8aEn{7Nl#MIHoF|r< zi4NcCAn1L&d4|QxzW(v2Bu3fbrcjnxH_h>jnf;wVPw`o~ za3T1s!iHyl;PoG0+keCmT92r>>vy|S6m7_04o9C*-d zTf`Nk>=lT=KEbE^^KZ&{mGLcywq2Sw@BM-YUHckOp49#fCVoTRR=u4q6P^C1{(t0(iVZ~gC^ z(UxXzI8`PKY&uCKsFsS=B$wv2uFWFZlurVc}k7gey&T3 zlE#yf8h<~bAW?}+>tURS3K^#9Be|=n4 zC3X;*HQ8?y9qmnY;YY7GrJE>Tr6a-p4j^G1?umyi6gAHizpq?iOHJu|;S$D^d+wi> zy-~JDg#GtzzzzxA)MpM9GF%j<)2#wto5APi?*eS}%M1;pttc$hA08e#Klk!#myenG zU=)j176EH3->ZPHyLe3SadmsEzcEU?*;c5CKrHR_fc8`76T|#x;qJ1mX~*NDSMVkY zaz?t$wTDdG`|UBLuy=MJB&ImzGOJ&!tb1%B?Ed?`u0wm5)dOW_PR{#YGMAU@f+p4% zVI;KJ(mCTYkC*?~e)~Xl`$sJd@yDz`ljEpqYRb5|;Q^Ygv3DrXII@Ii-QQx5bv&8hewy{?$MEp?YCjS9?Pa>{*_&jX-L6JV*rCrg z%*7qd9vVBehgt0mjm-Sq^;(|~u2`j$B&NK4cvz<0lANBdBWhnNp2Mrio2RPPfVDo} zFndUDVDk4y(cGT5cCGteK!ENXk{f<6bh(Xl4Tl9NoLq__$=xez)n!xB&Ci~=v#ZHx zd(K_mA6vT6>^6a+=;E;Vo{2Cu^^UUNAT5FRK-(^gYjO1EGTLd=&;dnS7^+tAweV*! zQ{(rR4o4j?>P5<1s;H)DBD-$$FR|LPyHpmTpnsAt%>#ZRIkAeq9E)wFeTorDZll=u425JJG}fGXSzg@*7BE57dD;rT;N z>@D-f$0KfG1R_b~7Vr8#wQS}$qry&9UOXTWdLeeO7LBs`+e*VO!p`H^a3k-FY3fzQ zj-_4Gn)v?%1SVc<6$Px%QVix#XYaxZh}x2_K9F4 z)HAH`iuvuP+6a3QJtabp<810L2~C;M99tut_VTz`=;NBFUK9tq&9!i= z2^6@0YZYC+)_#-@pWN*ARmpKK&r^xr<(9!|*z^Wodu~U2Q{*`#Ee|j<$Fhl)g|`Jy z{3R;Sm+%Zcx0ztP0Pj2di8z{`5ZiG>$YSSjT@i%~`Yty8?{-5&r89JdXB!RXFu$q5 zbuw_z{zi=tAvv7JnJeK;D6O}mDOnQZV1DN@$FFglhuo)WMFU z#&(9lESs+%na*u)AgdgC5VJ8w;k3^sl}G2ZxBNiP>3RS)Ul=5^_U(35OVNS}O9q+U zr7q_WSR`b@*84ApzpJ7}PTK*h>92$yk2NlUSSG!DXSTdW(`c$L1K9rAVsE92wsz>? zs`2~4QwmYb3*zlD^D)P_&^cZ~X|?7qpREEOqIp{|@&acD>z~B@g7ChuV&iau5#!3A zrPoT-htQ-=JNZdM6v23SNI!7XiP=u4QA-imL;W?Fm6)sJl}|JJAJJ9~jr5<|o;1Im zxkwa&2^*k;>#JLq3QGujnK4a)=+(n@N?Blcwa>Jx<51X_hV}m1ekyZ9>4BG(v`!>K z7L{j338nzU5ha)BxqX^v3n1k@9~-QDTROb2H?UH>^t+eZ>uxPEmX#r|{EdTZyab}jtoz=Lsxy}gbkM`a>>LaWZx@<`R56%9$ z3=()*O28Qytm>liIa%A*c1tdSWMtn5ZiW%p3zU`6h^jUaM}$Un@VZD}J&fp@PesYm zshQCbwF{){?4ztZ#U)&#m#BB;EeL|r+3 zHixh}xXNBqp?`HR4{ndnD{q5d)SNqoG=p($d=W}wFtH1@J^7~?6xqHPx+-gx|IL;b zZ5Wz&Xkbgt&b-Kc)tyXdr9a$9d zEA8Gg8(~1pRd(4paC&)N9Q&Cc$wcqKtNT9TLY0r91n zE=BGnhNM2+QY%^3;^GR34nG}#7kpnGp(|f@@zT9D8zJ_qLv1G9 zc@{_s*^D-ve;ypJKa*mlq$i8g{lK0B$Ne|~ZpTqJrT@~bBW4OZsCWHgIeiP`q(9Pq?XSxQd&bN|by5C3)@(ojD_{%uU{#ArWN|jIW@=q6<{d+>bDKfms7WhzLvsbYVgNE5=-+ z-Fwd(nEYP=f%h2rSm0zJ1Y9U?|MndC8HAAo(uc)w-XK^w1iJ{Ned<6^bVl~@7GToA zijvSC?216Lrf%r)F>}JCV+USemPiUB{s7Vem%tV6EdbyV9b}Z1GjQ--0OW!eCLTKj za?x9mW=F0VAtfT>&JV(Ht(>m|;1&T2)mjXi15p$R%`U^*7EYgUSOAE75KwLi$|6l7 zKwMK(6FNK*zzuPR??8@BB&M-F^hb z2$-hR*V{7rs!C#e8t=}}d@_~TgBNmx@#lclkqZoIpzk9>@*iip(ouP<2*ha?Y6ttB z3xGJ}243d0@2(=K5p)A;2@orS;yIk^yB4<)QxwFTA}J~9f5q!gUmwm;c5qo~s(nlh z-GldyL65Kzr`EF1WYfYJjq%Py! zOVnP((~Kac7!BrUAXR&byMI%GIM3==_;Wm(nx}5Qu_`JmMnkzhdJ_wmFX5%%l>@L6 z;34IxbE&(mcb=*|4dh*o()aN*IPuRpWwjYA!_9vF@lvUrw)qXpL6?p}S*s!9+VrRC zX_vPBebU722@GP2-pNrufBjmjG}oVbqWDc!)rVH|#jZrp$&DjpkDtvw<{Vifa|#OT zbC6V9HCSu*C8*O@zk7r($#EUtLJKV@-!@7eyPr!A0(F}PK05~)T_)xY*Hh4P<6PK_ zmtWi_vXpxEGw@V!Y0a39$v!4LaONN(sBFD1QP#?C5HjC=drLp%v31Q@a_rGGC%glU zsaeaNtnlYv`&&{Y>)XQwSRYzNr9K!9)Wxc3XqY<0(0%E>c44$5^tsoISiVf-9}ZDQ zm)V28yj~ccR)5MiH}@TzWip~3Eu8zd(pPFrPW4b;>xbznI#+HyNnzu3Gr*& z^gJB1g&+9Yv9Ii6M;HxMy^7J4aFcj*(y-3`;SMVkV5*jYR*Q&2Bg7>D9)E3iv$+6{ zEP|j6aJXuCF0Zdo4d}XOz*g0B8`9LpwO+#^yYuut*g}2O1_f|nq9G#ZUH~gbXdjk< z3Lmh*>p*m%3(!_5g|v@53%v-?4xmp9uz?%9+&~f@2?A%^F#(9(laC&R4q|1|>p6pu zK#j~n1@=idkgYyKCJAw*%0ap?5wT%Fgt#ZcQ8`449>IEn2#FA2;fl-47tYT%&k-Lk zP}}1HJfA4CWRYB^&3j>5<7OC~YYX5wQ3(Dni25eN7=dwvlK7!%Nl6I+&=DC%#FGc4 zBqQ2S*BuZMf6!=D)z(IIH~^)}4jRN3su%)Yr% zqj}--J7*nZcAK0q%u(dGvO-jkYcJ`*6(jNxvQPEf2!I5a zpd=h2aeg=mRSA>vN~6aRKGJzlh1FEj&R1=e-p#;Ma z7kJJt5Q7P$IuVTo#8l%DB&X~xJS})`*Dkf(f8Q+BlkEa`1TxY=*W+w4gC9df3z?Oa z*;pUEf9`>_f4ou=aHsMB9Ee^`)(kJ)ek&&r9Q#*d{lKYV1YCn0xGN$yw4g(B;r-Gs z&_`@7boL+^!ukP#I#EF)aFO4QDYz@5e*-fjMbG&vV(eS}w5(h48)$|-Xj}%t7aCao!71oew9AwM_1z_+;;|{R5U>UAHJkO%#5|$yxkIvh9MAW1L6~GYOcYtod@O= z$bmv2{x=Z%P`il7Gq6d==7nKbzl8P-tki0FZp#R?mTc8)h9RkD!>ID}fegr>65%vKnu$}PC2Y|q_{51~)h;Sx=DSd?I zt!UfVdHszA$@s!)yjeiN^RCW8PxP&?u|FKpl+h0_mWx?+%M=qn2Q$A5!)F@@$B3g0 zxZEuPN5TwF1z@CLSB~^TarXtZpQK@w0TL1jG3Xb(pp#b-AtpgfEz^Y-obs`KOU>5kPom{vGUe?Tv3CW)j zJ`_AUh!2PYcS&g}LfsMquk-afR~c0u4qcBT$iBq(M=?No2~ga9U|%VJhYXQIS_7tE zruRxQEU7byT|2;LL}-i*AwS_jSqQ|yHv%bc%mEduyjBXI|sNR-vI4h@$SePU-&m2 zECP!xH!^r4h}x@$rsh4foe-GEc z6mdAmQc6i^ZN0xZ`@6zVorMr8SMIb=OS=r1?Y{bJ8wK^ze{T@@X9P6exyiRsbLmMx z|3jkL5J+1Gi5*O$4cdLy>&eegHv`rWf5WN= z3iSoJlw`QEz{EAPa5lY4@0^Z5G(3z*K94up*33L5AJ;Q5Amn(ruaSh;D)6P>u8qo}$@F-tin^F$VuKW` zL-i4L=k-Ta(4Ex(GJI>i$>|pOWfZ{*KuRgV*R$)nev|Qqos1|qWy11DY<-|J@)9)P z5LX~L*&!t4f(kIA6u`%ETWY}UWH!cRCwh4A1na5^N7C3J>S2M z_U)(cz`7LMXx&vp$h|;|=ztyI1=KFY+a3&<%z+u7>D?h1%$=NK{88xS@B2 zFu;tsWWiS$nq(SUS_~oYxo{2q56zI?bw%rrJRtc;*7!}*nW5x^*tgYwej4K_Xe)4+ zjgzyHN2rDm)5hAmtfFP!Y1;qT&c1n>*}iG^3POqkB`-w43V8F=i+jZ^kxWDpRq(W- zi%skICoaoOPgB!uNVl8nHdJSTtZ!I_A%DY5@c-G02{;Lc%#Wk_Hv__!20l1acOu~r z31J}X2z*E85iH=D7=w@=5|M$H4er+t);2b8&yH4wphQOK2Oy@vjEJitj(y0BfduFa zWiX;+kC?sy4dvIJC_*i=S2=K4|W-DjwbuNBEK%RY=3jm z3$*>4Cf2U~L}~1$h>h;pzERge>|M&UK{?_NFH|PI2~c9&B*2R}()9jtTpp)3=lYhy zM_quoe3}1kt>+}onb)SYuYsZ8;u3$~6L+DSi<=fXIcZjljW$@ON$U?TY@5al%mDd< zCe@U0h_4}_vZ^P#x)-w+k=+2QARN)Aa8g`ALL*Yl!*ZYRtt(P2R1<{~7$KkS4u}l; ze{3v`lx6_3uE`qtF(D^uce_f3b^53t1EK-u!*R`gHAw+2K{pr&bIHFDRdfn;_KmOG#h zuHaLBfx6?qAk`v#BOlUOBnPuHWS#MZoCbf&|SB5(#OB z>mn~w?N%Hoox1LMZ0NDEvtKnI??+y@?I1AUzW|3Zd}Or{-W|EEFl|Lt zH4ZkWZisqvLD`CYVx;y${5HU(5Dm7SaJ2NqJ))6=y|=qGh-hCGsIek8KCDHVCYvce zmCqhe6x}yU?KaOKw!MbtT?U^1wr8d^gQUN|I8eE2cvwRTVaq}b+-jtP8iEsm5)gBS z3oY3*aFe?vv8aF8x){-8!qoWZOP+!Et9xp?y1k%_FZeSM;|p1?edg)cDs45ONF#QY zAc}(Nz8BtsT?ttjldkptspN3$%s{O7ofkS8=gSAZ> zxb8uB9Dd#ur2c?OL>mZI3o%?4Bo;7*cKFUXT9T&mvUlM%xV6GM(US^P)Lfn)w zzD=Jwb-}p>TJ1>w1I+>Kzz6t3AqY9mxZ?@{y`{L*el4V&BmTB;;aq|Rv&FG3ZDiAG zP&t)AYcwKfy>Y1zM8TsvU99!tkeziE{ze_$H{;TkR9^f;rPl7vO_)<4ZVNEc3qn+X z;4a506|K{Jt`WOz9&D;658YOP*QKGdwTN?UtsVJ&KCZhv+|y;F!smhfxh2pVbjt@$ zl2cM#Kh-wpn4w%u%n$^jtI=C|T^5Xk+_eE*o6a{k0 z7>HG@r{A&zq{Fgnjnh1H3wie1Ww-reM_%ZR;X+@*6Z{YULVNAS!+c1*pw+m(`4JZK zQ%lmvKisHex*h}fd5w}8FE|=efI{kPC`dY&UFk7x$Lk_2gK6&7iuKpSU4dtUB)mv9 z17^hjHOv_`r&nvH93GdAYY!7U>btl&4mwR_LVIpX85)?-m7Ryq;sTg?eCAbzw59W2 z7u5rJRyDmG^RRDcfh~?GKY{6m(}0jgz7=Kl(@gDJb5M?ZQU&L{Lv=+~VmvZngB~rY z%^>1GP`~j(*FuFQQ3z~(-py{8RaJc*km@J%nBI1?CNVo;V$yRTGt2ZpT1Il=4EyE? zU}BCP8+7<_HSR~a`S)b^h7dyE8VUz!>4NSJ;#=xJFw|R8Ye)Q&Slr?7r62spBU<@!HQL+ zFav{4L_ZgzRP&J0u=0?amG9a(4VT+F{Hq^J#7hr<`*^~{hnaBht4`liBHAaQq50^c`t$y2Qy8~b^MVrt8rLRg`h53*`=th zeM3_-3Gf8t^K8JeA}OOy`C4{F&QU}hQK$43kMljIhL%03711IMIz+`JLOK&-AkvnG z+M|og1sCGrGx+xinfxX(d&p{Kj@{Q`n3|aEJ_|B-OnMgm7K(0s-z-BwxpU5`CByeN zQL5_;{qOKGG9v_ zzd>q)N-X^mE}k(Hr6P>*id%{au*IBuSc@DNw`PBllj%&v5W-QBZ$lXtXAVUh(hzxK z;1z1b6_Xz=90{j?97LDdT`!O2QwI-IhHn?}ZVS`!QpqaduQ>6PU-GfoFSY9%h}R-e z8AE;cnDiI%*&k1U3MchG-TTvnb7C|v90<^@%wByIvl#!F6E^z0IR}BMPf*s&EDh)* z7`U;*6fQWcnv;{9;DDNUZb=uN{2sE0Sr3Cq*L5Al@w*G;ZV!z$8`ziD@KO`w@4xS%<9k`>9gAX___8uEDFd8AI4yJQ>JqQRn8RgI{4o%c zSy{e>_ti@`U|<(@7?Y3nn=|(I38B~B^Q?y7Rz8M01jJe5ZdLw_;uL>2*`)h>q>LZ*+3hkzOLp0AGoSLSXo3CaQKc@1i{C6?#yyEP`6e)v zyLvZZ{|@*1H+_47^a}cWYs@PkeHJ(qV;Q^77Gi!tvG4PvY9qCtBhq7sYW+yzR)3^f zl$X_T`_mTtQwQ-VMfr%4`PmOx8{kJnGbR8k8m#TYrB-=I(*ZW0$aDM|Z^bn$P{S6iP};ul_yNsuZG>W>CfLXqFtI#)qUM&M`#g zOUXz=xl>&!(WQ@W#;eZZHsrnmjZ#tV8D`|3YfW==I{ekX@fslBwSqwcU$JK&>7Ko#=&{)hE!onBDVqwBUXXAH7(Es9oaz9ZDG~=Bpus=NfV@N>6)pHAEw zv#pfHR2SZ+2dCDP?zHFKZuRvP=FBST%hf7qUg%0Av}qC?Fj9F_ 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

@M_{kP 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

wbLiErwJZA3HTfoI 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 T4|J}_fApu!o*X!FmE->b`Hwl| literal 0 HcmV?d00001 From 4df3ff4d4cbd87fe623a72adb848cde9f331528c Mon Sep 17 00:00:00 2001 From: xuxingliang Date: Tue, 9 Jul 2024 17:13:11 +0800 Subject: [PATCH 16/21] sched/note: add note for wdog module Signed-off-by: xuxingliang --- drivers/note/note_driver.c | 39 +++++++++++++++++++++++++++++++- drivers/note/noteram_driver.c | 23 ++++++++++++++++++- drivers/segger/note_sysview.c | 3 +++ include/nuttx/note/note_driver.h | 4 ++++ include/nuttx/sched_note.h | 19 +++++++++++++++- sched/Kconfig | 8 +++++++ sched/wdog/wd_cancel.c | 4 ++++ sched/wdog/wd_start.c | 15 +++++++++++- 8 files changed, 111 insertions(+), 4 deletions(-) diff --git a/drivers/note/note_driver.c b/drivers/note/note_driver.c index 74141665420fc..2777acd60611a 100644 --- a/drivers/note/note_driver.c +++ b/drivers/note/note_driver.c @@ -94,6 +94,8 @@ ((drv)->ops->irqhandler(drv, irq, handler, enter), true)) #define note_heap(drv, event, data, mem, size, used) \ ((drv)->ops->heap && ((drv)->ops->heap(drv, event, data, mem, size, used), true)) +#define note_wdog(drv, event, handler, arg) \ + ((drv)->ops->wdog && ((drv)->ops->wdog(drv, event, handler, arg), true)) #define note_string(drv, ip, buf) \ ((drv)->ops->string && ((drv)->ops->string(drv, ip, buf), true)) #define note_event(drv, ip, event, buf, len) \ @@ -1354,6 +1356,41 @@ void sched_note_irqhandler(int irq, FAR void *handler, bool enter) } #endif +#ifdef CONFIG_SCHED_INSTRUMENTATION_WDOG +void sched_note_wdog(uint8_t event, FAR void *handler, FAR const void *arg) +{ + FAR struct note_driver_s **driver; + struct note_wdog_s note; + bool formatted = false; + FAR struct tcb_s *tcb = this_task(); + + for (driver = g_note_drivers; *driver; driver++) + { + if (note_wdog(*driver, event, handler, arg)) + { + continue; + } + + if ((*driver)->ops->add == NULL) + { + continue; + } + + if (!formatted) + { + formatted = true; + note_common(tcb, ¬e.nwd_cmn, sizeof(note), event); + note.handler = (uintptr_t)handler; + note.arg = (uintptr_t)arg; + } + + /* Add the note to circular buffer */ + + note_add(*driver, ¬e, sizeof(note)); + } +} +#endif + #ifdef CONFIG_SCHED_INSTRUMENTATION_HEAP void sched_note_heap(uint8_t event, FAR void *heap, FAR void *mem, size_t size, size_t used) @@ -1385,7 +1422,7 @@ void sched_note_heap(uint8_t event, FAR void *heap, FAR void *mem, if (!formatted) { formatted = true; - note_common(tcb, ¬e.nmm_cmn, sizeof(note), event); + note_common(tcb, ¬e.nhp_cmn, sizeof(note), event); note.heap = heap; note.mem = mem; note.size = size; diff --git a/drivers/note/noteram_driver.c b/drivers/note/noteram_driver.c index e9b60333ab015..582cec5e73f73 100644 --- a/drivers/note/noteram_driver.c +++ b/drivers/note/noteram_driver.c @@ -901,6 +901,27 @@ static int noteram_dump_one(FAR uint8_t *p, FAR struct lib_outstream_s *s, break; #endif +#ifdef CONFIG_SCHED_INSTRUMENTATION_WDOG + case NOTE_WDOG_START: + case NOTE_WDOG_CANCEL: + case NOTE_WDOG_ENTER: + case NOTE_WDOG_LEAVE: + { + FAR struct note_wdog_s *nw; + FAR const char *name[] = + { + "start", "cancel", "enter", "leave", + }; + + nw = (FAR struct note_wdog_s *)p; + ret += noteram_dump_header(s, note, ctx); + ret += lib_sprintf(s, "tracing_mark_write: I|%d|wdog: %s-%pS %p\n", + pid, name[note->nc_type - NOTE_WDOG_START], + (FAR void *)nw->handler, (FAR void *)nw->arg); + } + break; +#endif + #ifdef CONFIG_SCHED_INSTRUMENTATION_CSECTION case NOTE_CSECTION_ENTER: case NOTE_CSECTION_LEAVE: @@ -1031,7 +1052,7 @@ static int noteram_dump_one(FAR uint8_t *p, FAR struct lib_outstream_s *s, "add", "remove", "malloc", "free" }; - ret += noteram_dump_header(s, &nmm->nmm_cmn, ctx); + ret += noteram_dump_header(s, &nmm->nhp_cmn, ctx); ret += lib_sprintf(s, "tracing_mark_write: C|%d|Heap Usage|%d|%s" ": heap: %p size:%" PRIiPTR ", address: %p\n", pid, nmm->used, diff --git a/drivers/segger/note_sysview.c b/drivers/segger/note_sysview.c index 95ded2b2ebcb6..a00dcbe8e1dca 100644 --- a/drivers/segger/note_sysview.c +++ b/drivers/segger/note_sysview.c @@ -119,6 +119,9 @@ static const struct note_driver_ops_s g_note_sysview_ops = #ifdef CONFIG_SCHED_INSTRUMENTATION_IRQHANDLER note_sysview_irqhandler, /* irqhandler */ #endif +#ifdef CONFIG_SCHED_INSTRUMENTATION_WDOG + NULL, /* wdog */ +#endif #ifdef CONFIG_SCHED_INSTRUMENTATION_HEAP note_sysview_heap, /* heap */ #endif diff --git a/include/nuttx/note/note_driver.h b/include/nuttx/note/note_driver.h index cefe5e95b316a..db983570e0ceb 100644 --- a/include/nuttx/note/note_driver.h +++ b/include/nuttx/note/note_driver.h @@ -89,6 +89,10 @@ struct note_driver_ops_s CODE void (*irqhandler)(FAR struct note_driver_s *drv, int irq, FAR void *handler, bool enter); #endif +#ifdef CONFIG_SCHED_INSTRUMENTATION_WDOG + CODE void (*wdog)(FAR struct note_driver_s *drv, uint8_t event, + FAR void *handler, FAR const void *arg); +#endif #ifdef CONFIG_SCHED_INSTRUMENTATION_HEAP CODE void (*heap)(FAR struct note_driver_s *drv, uint8_t event, FAR void *heap, FAR void *mem, size_t size, diff --git a/include/nuttx/sched_note.h b/include/nuttx/sched_note.h index b49207ccf0d0d..0ee171a2a9be2 100644 --- a/include/nuttx/sched_note.h +++ b/include/nuttx/sched_note.h @@ -186,6 +186,10 @@ enum note_type_e NOTE_SYSCALL_LEAVE, NOTE_IRQ_ENTER, NOTE_IRQ_LEAVE, + NOTE_WDOG_START, + NOTE_WDOG_CANCEL, + NOTE_WDOG_ENTER, + NOTE_WDOG_LEAVE, NOTE_HEAP_ADD, NOTE_HEAP_REMOVE, NOTE_HEAP_ALLOC, @@ -384,9 +388,16 @@ struct note_irqhandler_s uint8_t nih_irq; /* IRQ number */ }; +struct note_wdog_s +{ + struct note_common_s nwd_cmn; /* Common note parameters */ + uintptr_t handler; + uintptr_t arg; +}; + struct note_heap_s { - struct note_common_s nmm_cmn; /* Common note parameters */ + struct note_common_s nhp_cmn; /* Common note parameters */ FAR void *heap; FAR void *mem; size_t size; @@ -555,6 +566,12 @@ void sched_note_irqhandler(int irq, FAR void *handler, bool enter); # define sched_note_irqhandler(i,h,e) #endif +#ifdef CONFIG_SCHED_INSTRUMENTATION_WDOG +void sched_note_wdog(uint8_t event, FAR void *handler, FAR const void *arg); +#else +# define sched_note_wdog(e,h,a) +#endif + #ifdef CONFIG_SCHED_INSTRUMENTATION_HEAP void sched_note_heap(uint8_t event, FAR void *heap, FAR void *mem, size_t size, size_t used); diff --git a/sched/Kconfig b/sched/Kconfig index 1fca42e4608ea..728f161b950ee 100644 --- a/sched/Kconfig +++ b/sched/Kconfig @@ -1292,6 +1292,14 @@ config SCHED_INSTRUMENTATION_HEAP void sched_note_heap(uint8_t event, FAR void* heap, FAR void *mem, size_t size, size_t curused); +config SCHED_INSTRUMENTATION_WDOG + bool "Watchdog timer monitor hooks" + default n + ---help--- + Enables additional hooks for watchdog timer. + + void sched_note_wdog(uint8_t event, FAR void *handler, FAR const void *arg); + config SCHED_INSTRUMENTATION_DUMP bool "Use note dump for instrumentation" default n diff --git a/sched/wdog/wd_cancel.c b/sched/wdog/wd_cancel.c index 65c063cd56086..538fa03e6b0b7 100644 --- a/sched/wdog/wd_cancel.c +++ b/sched/wdog/wd_cancel.c @@ -33,6 +33,7 @@ #include #include #include +#include #include "sched/sched.h" #include "wdog/wdog.h" @@ -95,6 +96,9 @@ int wd_cancel_irq(FAR struct wdog_s *wdog) return -EINVAL; } + sched_note_wdog(NOTE_WDOG_CANCEL, (FAR void *)wdog->func, + (FAR void *)(uintptr_t)wdog->expired); + /* Prohibit timer interactions with the timer queue until the * cancellation is complete */ diff --git a/sched/wdog/wd_start.c b/sched/wdog/wd_start.c index fd703e6c976d2..739cec16a2111 100644 --- a/sched/wdog/wd_start.c +++ b/sched/wdog/wd_start.c @@ -38,6 +38,7 @@ #include #include #include +#include #include "sched/sched.h" #include "wdog/wdog.h" @@ -56,9 +57,11 @@ { \ clock_t start; \ clock_t elapsed; \ + sched_note_wdog(NOTE_WDOG_ENTER, func, (FAR void *)arg); \ start = perf_gettime(); \ func(arg); \ elapsed = perf_gettime() - start; \ + sched_note_wdog(NOTE_WDOG_LEAVE, func, (FAR void *)arg); \ if (elapsed > CONFIG_SCHED_CRITMONITOR_MAXTIME_WDOG) \ { \ CRITMONITOR_PANIC("WDOG %p, %s IRQ, execute too long %ju\n", \ @@ -68,7 +71,15 @@ } \ while (0) #else -# define CALL_FUNC(func, arg) func(arg) +# define CALL_FUNC(func, arg) \ + do \ + { \ + sched_note_wdog(NOTE_WDOG_ENTER, func, (FAR void *)arg); \ + func(arg); \ + sched_note_wdog(NOTE_WDOG_LEAVE, func, (FAR void *)arg); \ + } \ + while (0) + #endif /**************************************************************************** @@ -319,6 +330,8 @@ int wd_start_abstick(FAR struct wdog_s *wdog, clock_t ticks, wd_insert(wdog, ticks, wdentry, arg); #endif leave_critical_section(flags); + + sched_note_wdog(NOTE_WDOG_START, wdentry, (FAR void *)(uintptr_t)ticks); return OK; } From fc048c1ec1d9047b603afb7c54e0744946814fc6 Mon Sep 17 00:00:00 2001 From: xuxingliang Date: Tue, 9 Jul 2024 18:05:53 +0800 Subject: [PATCH 17/21] sched/note: add wdog note for segger sysview Signed-off-by: xuxingliang --- drivers/segger/note_sysview.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/drivers/segger/note_sysview.c b/drivers/segger/note_sysview.c index a00dcbe8e1dca..a783925fdedbf 100644 --- a/drivers/segger/note_sysview.c +++ b/drivers/segger/note_sysview.c @@ -79,6 +79,10 @@ static void note_sysview_heap(FAR struct note_driver_s *drv, uint8_t event, FAR void *heap, FAR void *mem, size_t size, size_t curused); #endif +#ifdef CONFIG_SCHED_INSTRUMENTATION_WDOG +static void note_sysview_wdog(FAR struct note_driver_s *drv, uint8_t event, + FAR void *handler, FAR const void *arg); +#endif /**************************************************************************** * Private Data @@ -120,7 +124,7 @@ static const struct note_driver_ops_s g_note_sysview_ops = note_sysview_irqhandler, /* irqhandler */ #endif #ifdef CONFIG_SCHED_INSTRUMENTATION_WDOG - NULL, /* wdog */ + note_sysview_wdog, /* wdog */ #endif #ifdef CONFIG_SCHED_INSTRUMENTATION_HEAP note_sysview_heap, /* heap */ @@ -389,6 +393,21 @@ static void note_sysview_heap(FAR struct note_driver_s *drv, } #endif +#ifdef CONFIG_SCHED_INSTRUMENTATION_WDOG +static void note_sysview_wdog(FAR struct note_driver_s *drv, uint8_t event, + FAR void *handler, FAR const void *arg) +{ + if (event == NOTE_WDOG_ENTER) + { + SEGGER_SYSVIEW_RecordEnterTimer((uintptr_t)handler); + } + else if (event == NOTE_WDOG_LEAVE) + { + SEGGER_SYSVIEW_RecordExitTimer(); + } +} +#endif + /**************************************************************************** * Public Functions ****************************************************************************/ From 81ae540dc0c3962ef161ab89ead6086e1b70526f Mon Sep 17 00:00:00 2001 From: Neo Xu Date: Tue, 8 Oct 2024 15:36:54 +0800 Subject: [PATCH 18/21] boards/arm/stm32/stm32f429i-disco: use serial console by default Make it easy to access for beginners, using the default serial as console. Enable wdog sched note. Signed-off-by: Neo Xu --- .../arm/stm32/stm32f429i-disco/configs/systemview/defconfig | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/boards/arm/stm32/stm32f429i-disco/configs/systemview/defconfig b/boards/arm/stm32/stm32f429i-disco/configs/systemview/defconfig index adb3a67086eec..24953158ccf9f 100644 --- a/boards/arm/stm32/stm32f429i-disco/configs/systemview/defconfig +++ b/boards/arm/stm32/stm32f429i-disco/configs/systemview/defconfig @@ -7,6 +7,8 @@ # # CONFIG_ARCH_FPU is not set # CONFIG_DRIVERS_NOTERAM is not set +# CONFIG_SERIAL_RTT_CONSOLE is not set +# CONFIG_STANDARD_SERIAL is not set # CONFIG_STM32_FLASH_PREFETCH is not set CONFIG_ARCH="arm" CONFIG_ARCH_BOARD="stm32f429i-disco" @@ -41,6 +43,7 @@ CONFIG_SCHED_INSTRUMENTATION=y CONFIG_SCHED_INSTRUMENTATION_HEAP=y CONFIG_SCHED_INSTRUMENTATION_IRQHANDLER=y CONFIG_SCHED_INSTRUMENTATION_SWITCH=y +CONFIG_SCHED_INSTRUMENTATION_WDOG=y CONFIG_SEGGER_SYSVIEW=y CONFIG_SERIAL_RTT0=y CONFIG_SPI=y @@ -52,8 +55,10 @@ CONFIG_STM32_EXTERNAL_RAM=y CONFIG_STM32_FMC=y CONFIG_STM32_JTAG_SW_ENABLE=y CONFIG_STM32_PWR=y +CONFIG_STM32_USART1=y CONFIG_SYSLOG_CHAR=y CONFIG_SYSLOG_RTT=y CONFIG_SYSTEM_NSH=y CONFIG_SYSTEM_SYSTEM=y CONFIG_TASK_NAME_SIZE=0 +CONFIG_USART1_SERIAL_CONSOLE=y From 99f3252fb112da72d3222cbb1869e4a0145c6ec1 Mon Sep 17 00:00:00 2001 From: yinshengkai Date: Mon, 20 Nov 2023 16:43:06 +0800 Subject: [PATCH 19/21] note: change sched_note_counter to a macro Signed-off-by: yinshengkai --- include/nuttx/sched_note.h | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/include/nuttx/sched_note.h b/include/nuttx/sched_note.h index 0ee171a2a9be2..ecbd608f7b2ed 100644 --- a/include/nuttx/sched_note.h +++ b/include/nuttx/sched_note.h @@ -142,8 +142,6 @@ sched_note_printf_ip(tag, SCHED_NOTE_IP, fmt, ##__VA_ARGS__) #define sched_note_bprintf(tag, fmt, ...) \ sched_note_bprintf_ip(tag, SCHED_NOTE_IP, fmt, ##__VA_ARGS__) -#define sched_note_counter(tag, name, value) \ - sched_note_counter_ip(tag, SCHED_NOTE_IP, name, value) #define sched_note_begin(tag) \ sched_note_event(tag, NOTE_DUMP_BEGIN, NULL, 0) @@ -156,6 +154,17 @@ #define sched_note_mark(tag, str) \ sched_note_event(tag, NOTE_DUMP_MARK, str, strlen(str)) +#define sched_note_counter(tag, name_, value_) \ + do \ + { \ + struct note_counter_s counter; \ + counter.value = value_; \ + strlcpy(counter.name, name_, NAME_MAX); \ + sched_note_event(tag, NOTE_DUMP_COUNTER, \ + &counter, sizeof(counter)); \ + } \ + while (0) + /**************************************************************************** * Public Types ****************************************************************************/ @@ -591,16 +600,6 @@ void sched_note_printf_ip(uint32_t tag, uintptr_t ip, FAR const char *fmt, ...) printf_like(3, 4); void sched_note_bprintf_ip(uint32_t tag, uintptr_t ip, FAR const char *fmt, ...) printf_like(3, 4); - -static inline void sched_note_counter_ip(uint32_t tag, uintptr_t ip, - FAR const char *name, - long int value) -{ - struct note_counter_s counter; - counter.value = value; - strlcpy(counter.name, name, sizeof(counter.name)); - sched_note_event_ip(tag, ip, NOTE_DUMP_COUNTER, &counter, sizeof(counter)); -} #else # define sched_note_string_ip(t,ip,b) # define sched_note_event_ip(t,ip,e,b,l) @@ -608,7 +607,6 @@ static inline void sched_note_counter_ip(uint32_t tag, uintptr_t ip, # define sched_note_vbprintf_ip(t,ip,f,v) # define sched_note_printf_ip(t,ip,f,...) # define sched_note_bprintf_ip(t,ip,f,...) -# define sched_note_counter_ip(t,ip,n,v) #endif /* CONFIG_SCHED_INSTRUMENTATION_DUMP */ #if defined(__KERNEL__) || defined(CONFIG_BUILD_FLAT) From c33e78e3ba8781049174b228309ee06c1141ed96 Mon Sep 17 00:00:00 2001 From: yinshengkai Date: Fri, 24 Nov 2023 15:56:37 +0800 Subject: [PATCH 20/21] gote: implement asynchronous printf formatting Do not format immediately when calling sched_note_printf, but delay formatting until dump trace. After turning on SYSTEM_NOTE, similar asynchronous syslog functions can be achieved. Signed-off-by: yinshengkai --- drivers/note/note_driver.c | 252 ++++++++----------------------- drivers/note/noteram_driver.c | 213 +++++++++++++++++++------- include/nuttx/note/note_driver.h | 4 - include/nuttx/sched_note.h | 47 ++---- sched/Kconfig | 9 +- 5 files changed, 247 insertions(+), 278 deletions(-) diff --git a/drivers/note/note_driver.c b/drivers/note/note_driver.c index 2777acd60611a..ea58c8be17e51 100644 --- a/drivers/note/note_driver.c +++ b/drivers/note/note_driver.c @@ -96,14 +96,10 @@ ((drv)->ops->heap && ((drv)->ops->heap(drv, event, data, mem, size, used), true)) #define note_wdog(drv, event, handler, arg) \ ((drv)->ops->wdog && ((drv)->ops->wdog(drv, event, handler, arg), true)) -#define note_string(drv, ip, buf) \ - ((drv)->ops->string && ((drv)->ops->string(drv, ip, buf), true)) #define note_event(drv, ip, event, buf, len) \ ((drv)->ops->event && ((drv)->ops->event(drv, ip, event, buf, len), true)) #define note_vprintf(drv, ip, fmt, va) \ ((drv)->ops->vprintf && ((drv)->ops->vprintf(drv, ip, fmt, va), true)) -#define note_vbprintf(drv, ip, fmt, va) \ - ((drv)->ops->vbprintf && ((drv)->ops->vbprintf(drv, ip, fmt, va), true)) /**************************************************************************** * Private Types @@ -1437,60 +1433,10 @@ void sched_note_heap(uint8_t event, FAR void *heap, FAR void *mem, #endif #ifdef CONFIG_SCHED_INSTRUMENTATION_DUMP -void sched_note_string_ip(uint32_t tag, uintptr_t ip, FAR const char *buf) -{ - FAR struct note_string_s *note; - uint8_t data[255]; - unsigned int length; - FAR struct note_driver_s **driver; - bool formatted = false; - FAR struct tcb_s *tcb = this_task(); - - if (!note_isenabled_dump(tag)) - { - return; - } - - for (driver = g_note_drivers; *driver; driver++) - { - if (note_string(*driver, ip, buf)) - { - continue; - } - - if ((*driver)->ops->add == NULL) - { - continue; - } - - /* Format the note */ - - if (!formatted) - { - formatted = true; - note = (FAR struct note_string_s *)data; - length = SIZEOF_NOTE_STRING(strlen(buf)); - if (length > sizeof(data)) - { - length = sizeof(data); - } - - note_common(tcb, ¬e->nst_cmn, length, NOTE_DUMP_STRING); - memcpy(note->nst_data, buf, length - sizeof(struct note_string_s)); - data[length - 1] = '\0'; - note->nst_ip = ip; - } - - /* Add the note to circular buffer */ - - note_add(*driver, note, length); - } -} - void sched_note_event_ip(uint32_t tag, uintptr_t ip, uint8_t event, FAR const void *buf, size_t len) { - FAR struct note_binary_s *note; + FAR struct note_event_s *note; FAR struct note_driver_s **driver; bool formatted = false; char data[255]; @@ -1519,17 +1465,16 @@ void sched_note_event_ip(uint32_t tag, uintptr_t ip, uint8_t event, if (!formatted) { formatted = true; - note = (FAR struct note_binary_s *)data; - length = SIZEOF_NOTE_BINARY(len); + note = (FAR struct note_event_s *)data; + length = SIZEOF_NOTE_EVENT(len); if (length > sizeof(data)) { length = sizeof(data); } - note_common(tcb, ¬e->nbi_cmn, length, event); - memcpy(note->nbi_data, buf, - length - sizeof(struct note_binary_s) + 1); - note->nbi_ip = ip; + note_common(tcb, ¬e->nev_cmn, length, event); + note->nev_ip = ip; + memcpy(note->nev_data, buf, length - SIZEOF_NOTE_EVENT(0)); } /* Add the note to circular buffer */ @@ -1541,67 +1486,12 @@ void sched_note_event_ip(uint32_t tag, uintptr_t ip, uint8_t event, void sched_note_vprintf_ip(uint32_t tag, uintptr_t ip, FAR const char *fmt, va_list va) { - FAR struct note_string_s *note; - uint8_t data[255]; - unsigned int length; - FAR struct note_driver_s **driver; - bool formatted = false; - FAR struct tcb_s *tcb = this_task(); - - if (!note_isenabled_dump(tag)) - { - return; - } - - for (driver = g_note_drivers; *driver; driver++) - { - if (note_vprintf(*driver, ip, fmt, va)) - { - continue; - } - - if ((*driver)->ops->add == NULL) - { - continue; - } - - /* Format the note */ - - if (!formatted) - { - formatted = true; - note = (FAR struct note_string_s *)data; - length = vsnprintf(note->nst_data, - sizeof(data) - sizeof(struct note_string_s), - fmt, - va); - length = SIZEOF_NOTE_STRING(length); - if (length > sizeof(data)) - { - length = sizeof(data); - } - - note_common(tcb, ¬e->nst_cmn, length, NOTE_DUMP_STRING); - note->nst_ip = ip; - } - - /* Add the note to circular buffer */ - - note_add(*driver, note, length); - } -} - -void sched_note_vbprintf_ip(uint32_t tag, uintptr_t ip, - FAR const char *fmt, va_list va) -{ - FAR struct note_binary_s *note; + FAR struct note_printf_s *note; FAR struct note_driver_s **driver; bool formatted = false; uint8_t data[255]; begin_packed_struct union { - char c; - short s; int i; long l; #ifdef CONFIG_HAVE_LONG_LONG @@ -1610,23 +1500,22 @@ void sched_note_vbprintf_ip(uint32_t tag, uintptr_t ip, intmax_t im; size_t sz; ptrdiff_t ptr; -#ifdef CONFIG_HAVE_FLOAT - float f; -#endif + FAR void *p; #ifdef CONFIG_HAVE_DOUBLE double d; -#endif -#ifdef CONFIG_HAVE_LONG_DOUBLE +# ifdef CONFIG_HAVE_LONG_DOUBLE long double ld; +# endif #endif } end_packed_struct *var; char c; - int length; + size_t length; + size_t next = 0; bool infmt = false; - int next = 0; + FAR const char *p = fmt; FAR struct tcb_s *tcb = this_task(); if (!note_isenabled_dump(tag)) @@ -1636,7 +1525,7 @@ void sched_note_vbprintf_ip(uint32_t tag, uintptr_t ip, for (driver = g_note_drivers; *driver; driver++) { - if (note_vbprintf(*driver, ip, fmt, va)) + if (note_vprintf(*driver, ip, fmt, va)) { continue; } @@ -1651,10 +1540,10 @@ void sched_note_vbprintf_ip(uint32_t tag, uintptr_t ip, if (!formatted) { formatted = true; - note = (FAR struct note_binary_s *)data; - length = sizeof(data) - sizeof(struct note_binary_s) + 1; + note = (FAR struct note_printf_s *)data; + length = sizeof(data) - SIZEOF_NOTE_PRINTF(0); - while ((c = *fmt++) != '\0') + while ((c = *p++) != '\0') { if (c != '%' && !infmt) { @@ -1662,32 +1551,12 @@ void sched_note_vbprintf_ip(uint32_t tag, uintptr_t ip, } infmt = true; - var = (FAR void *)¬e->nbi_data[next]; + var = (FAR void *)¬e->npt_data[next]; - if (c == 'd' || c == 'i' || c == 'u' || + if (c == 'c' || c == 'd' || c == 'i' || c == 'u' || c == 'o' || c == 'x' || c == 'X') { - if (*(fmt - 2) == 'h' && *(fmt - 3) == 'h') - { - if (next + sizeof(var->c) > length) - { - break; - } - - var->c = va_arg(va, int); - next += sizeof(var->c); - } - else if (*(fmt - 2) == 'h') - { - if (next + sizeof(var->s) > length) - { - break; - } - - var->s = va_arg(va, int); - next += sizeof(var->s); - } - else if (*(fmt - 2) == 'j') + if (*(p - 2) == 'j') { if (next + sizeof(var->im) > length) { @@ -1698,7 +1567,7 @@ void sched_note_vbprintf_ip(uint32_t tag, uintptr_t ip, next += sizeof(var->im); } #ifdef CONFIG_HAVE_LONG_LONG - else if (*(fmt - 2) == 'l' && *(fmt - 3) == 'l') + else if (*(p - 2) == 'l' && *(p - 3) == 'l') { if (next + sizeof(var->ll) > length) { @@ -1709,7 +1578,7 @@ void sched_note_vbprintf_ip(uint32_t tag, uintptr_t ip, next += sizeof(var->ll); } #endif - else if (*(fmt - 2) == 'l') + else if (*(p - 2) == 'l') { if (next + sizeof(var->l) > length) { @@ -1719,7 +1588,7 @@ void sched_note_vbprintf_ip(uint32_t tag, uintptr_t ip, var->l = va_arg(va, long); next += sizeof(var->l); } - else if (*(fmt - 2) == 'z') + else if (*(p - 2) == 'z') { if (next + sizeof(var->sz) > length) { @@ -1729,7 +1598,7 @@ void sched_note_vbprintf_ip(uint32_t tag, uintptr_t ip, var->sz = va_arg(va, size_t); next += sizeof(var->sz); } - else if (*(fmt - 2) == 't') + else if (*(p - 2) == 't') { if (next + sizeof(var->ptr) > length) { @@ -1752,13 +1621,13 @@ void sched_note_vbprintf_ip(uint32_t tag, uintptr_t ip, infmt = false; } - - if (c == 'e' || c == 'f' || c == 'g' || - c == 'E' || c == 'F' || c == 'G') + else if (c == 'e' || c == 'f' || c == 'g' || c == 'a' || + c == 'A' || c == 'E' || c == 'F' || c == 'G') { - if (*(fmt - 2) == 'L') +#ifdef CONFIG_HAVE_DOUBLE +# ifdef CONFIG_HAVE_LONG_DOUBLE + if (*(p - 2) == 'L') { -#ifdef CONFIG_HAVE_LONG_DOUBLE if (next + sizeof(var->ld) > length) { break; @@ -1766,11 +1635,10 @@ void sched_note_vbprintf_ip(uint32_t tag, uintptr_t ip, var->ld = va_arg(va, long double); next += sizeof(var->ld); -#endif } - else if (*(fmt - 2) == 'l') + else +# endif { -#ifdef CONFIG_HAVE_DOUBLE if (next + sizeof(var->d) > length) { break; @@ -1778,28 +1646,46 @@ void sched_note_vbprintf_ip(uint32_t tag, uintptr_t ip, var->d = va_arg(va, double); next += sizeof(var->d); -#endif } - else -#ifdef CONFIG_HAVE_FLOAT +#endif + + infmt = false; + } + else if (c == '*') + { + var->i = va_arg(va, int); + next += sizeof(var->i); + } + else if (c == 's') + { + FAR char *str = (FAR char *)va_arg(va, FAR char *); + size_t len = strlen(str) + 1; + if (next + len > length) { - if (next + sizeof(var->l) > length) - { - break; - } + len = length - next; + } - var->l = va_arg(va, double); - next += sizeof(var->l); -#endif + strlcpy(¬e->npt_data[next], str, len); + next += len; + infmt = false; + } + else if (c == 'p') + { + if (next + sizeof(var->p) > length) + { + break; } + var->p = va_arg(va, FAR void *); + next += sizeof(var->p); infmt = false; } } - length = SIZEOF_NOTE_BINARY(next); - note_common(tcb, ¬e->nbi_cmn, length, NOTE_DUMP_BINARY); - note->nbi_ip = ip; + length = SIZEOF_NOTE_PRINTF(next); + note_common(tcb, ¬e->npt_cmn, length, NOTE_DUMP_PRINTF); + note->npt_ip = ip; + note->npt_fmt = fmt; } /* Add the note to circular buffer */ @@ -1817,14 +1703,6 @@ void sched_note_printf_ip(uint32_t tag, uintptr_t ip, va_end(va); } -void sched_note_bprintf_ip(uint32_t tag, uintptr_t ip, - FAR const char *fmt, ...) -{ - va_list va; - va_start(va, fmt); - sched_note_vbprintf_ip(tag, ip, fmt, va); - va_end(va); -} #endif /* CONFIG_SCHED_INSTRUMENTATION_DUMP */ #ifdef CONFIG_SCHED_INSTRUMENTATION_FILTER @@ -2051,14 +1929,16 @@ static void note_driver_instrument_enter(FAR void *this_fn, FAR void *call_site, FAR void *arg) { - sched_note_string_ip(NOTE_TAG_ALWAYS, (uintptr_t)this_fn, "B"); + sched_note_event_ip(NOTE_TAG_ALWAYS, (uintptr_t)this_fn, + NOTE_DUMP_BEGIN, NULL, 0); } static void note_driver_instrument_leave(FAR void *this_fn, FAR void *call_site, FAR void *arg) { - sched_note_string_ip(NOTE_TAG_ALWAYS, (uintptr_t)this_fn, "E"); + sched_note_event_ip(NOTE_TAG_ALWAYS, (uintptr_t)this_fn, + NOTE_DUMP_END, NULL, 0); } #endif diff --git a/drivers/note/noteram_driver.c b/drivers/note/noteram_driver.c index 582cec5e73f73..75400f1edd5dd 100644 --- a/drivers/note/noteram_driver.c +++ b/drivers/note/noteram_driver.c @@ -710,6 +710,151 @@ static int noteram_dump_sched_switch(FAR struct lib_outstream_s *s, } #endif +/**************************************************************************** + * Name: noteram_dump_printf + ****************************************************************************/ + +#ifdef CONFIG_SCHED_INSTRUMENTATION_DUMP +static int noteram_dump_printf(FAR struct lib_outstream_s *s, + FAR struct note_printf_s *note) +{ + begin_packed_struct union + { + int i; + long l; +#ifdef CONFIG_HAVE_LONG_LONG + long long ll; +#endif + intmax_t im; + size_t sz; + ptrdiff_t pd; + uintptr_t p; +#ifdef CONFIG_HAVE_DOUBLE + double d; +# ifdef CONFIG_HAVE_LONG_DOUBLE + long double ld; +# endif +#endif + } + + end_packed_struct *var; + FAR const char *p = note->npt_fmt; + FAR char *data = note->npt_data; + char fmtstr[64]; + bool infmt = false; + size_t offset = 0; + size_t ret = 0; + size_t len = 0; + char c; + + while ((c = *p++) != '\0') + { + if (c != '%' && !infmt) + { + lib_stream_putc(s, c); + ret++; + continue; + } + + if (!infmt) + { + len = 0; + infmt = true; + memset(fmtstr, 0, sizeof(fmtstr)); + } + + var = (FAR void *)(note->npt_data + offset); + fmtstr[len++] = c; + + if (c == 'c' || c == 'd' || c == 'i' || c == 'u' || + c == 'o' || c == 'x' || c == 'X') + { + if (*(p - 2) == 'j') + { + offset += sizeof(var->im); + ret += lib_sprintf(s, fmtstr, var->im); + } +#ifdef CONFIG_HAVE_LONG_LONG + else if (*(p - 2) == 'l' && *(p - 3) == 'l') + { + offset += sizeof(var->ll); + ret += lib_sprintf(s, fmtstr, var->ll); + } +#endif + else if (*(p - 2) == 'l') + { + offset += sizeof(var->l); + ret += lib_sprintf(s, fmtstr, var->l); + } + else if (*(p - 2) == 'z') + { + offset += sizeof(var->sz); + ret += lib_sprintf(s, fmtstr, var->sz); + } + else if (*(p - 2) == 't') + { + offset += sizeof(var->pd); + ret += lib_sprintf(s, fmtstr, var->pd); + } + else + { + offset += sizeof(var->i); + ret += lib_sprintf(s, fmtstr, var->i); + } + + infmt = false; + } + else if (c == 'e' || c == 'f' || c == 'g' || c == 'a' || + c == 'A' || c == 'E' || c == 'F' || c == 'G') + { +#ifdef CONFIG_HAVE_DOUBLE +# ifdef CONFIG_HAVE_LONG_DOUBLE + if (*(p - 2) == 'L') + { + offset += sizeof(var->ld); + ret += lib_sprintf(s, fmtstr, var->ld); + } + else +# endif + { + offset += sizeof(var->d); + ret += lib_sprintf(s, fmtstr, var->d); + } + + infmt = false; + } +#endif + else if (c == '*') + { + itoa(var->i, fmtstr + len - 1, 10); + len = strlen(fmtstr); + offset += sizeof(var->i); + } + else if (c == 's') + { + FAR const char *value = data + offset; + offset += strlen(value) + 1; + ret += lib_sprintf(s, fmtstr, value); + infmt = false; + } + else if (c == 'p') + { + offset += sizeof(var->p); + ret += lib_sprintf(s, fmtstr, var->p); + infmt = false; + } + } + + if (*(p - 2) != '\n') + { + lib_stream_putc(s, '\n'); + ret++; + } + + return ret; +} +#endif + /**************************************************************************** * Name: noteram_dump_one ****************************************************************************/ @@ -954,42 +1099,30 @@ static int noteram_dump_one(FAR uint8_t *p, FAR struct lib_outstream_s *s, #endif #ifdef CONFIG_SCHED_INSTRUMENTATION_DUMP - case NOTE_DUMP_STRING: + case NOTE_DUMP_PRINTF: { - FAR struct note_string_s *nst; - uintptr_t ip; + FAR struct note_printf_s *npt; - nst = (FAR struct note_string_s *)p; - ret += noteram_dump_header(s, note, ctx); - ip = nst->nst_ip; - - if (nst->nst_data[1] == '\0' && - (nst->nst_data[0] == 'B' || nst->nst_data[0] == 'E')) - { - ret += lib_sprintf(s, "tracing_mark_write: %c|%d|%pS\n", - nst->nst_data[0], pid, (FAR void *)ip); - } - else - { - ret += lib_sprintf(s, "tracing_mark_write: %s\n", - nst->nst_data); - } + npt = (FAR struct note_printf_s *)p; + ret += noteram_dump_header(s, &npt->npt_cmn, ctx); + ret += lib_sprintf(s, "tracing_mark_write: "); + ret += noteram_dump_printf(s, npt); } break; case NOTE_DUMP_BEGIN: case NOTE_DUMP_END: { - FAR struct note_binary_s *nbi = (FAR struct note_binary_s *)p; + FAR struct note_event_s *nbi = (FAR struct note_event_s *)p; char c = note->nc_type == NOTE_DUMP_BEGIN ? 'B' : 'E'; int len = note->nc_length - SIZEOF_NOTE_EVENT(0); uintptr_t ip; - ip = nbi->nbi_ip; - ret += noteram_dump_header(s, &nbi->nbi_cmn, ctx); + ip = nbi->nev_ip; + ret += noteram_dump_header(s, &nbi->nev_cmn, ctx); if (len > 0) { ret += lib_sprintf(s, "tracing_mark_write: %c|%d|%.*s\n", - c, pid, len, (FAR const char *)nbi->nbi_data); + c, pid, len, (FAR const char *)nbi->nev_data); } else { @@ -1000,45 +1133,23 @@ static int noteram_dump_one(FAR uint8_t *p, FAR struct lib_outstream_s *s, break; case NOTE_DUMP_MARK: { - int len = note->nc_length - sizeof(struct note_binary_s); - FAR struct note_binary_s *nbi = (FAR struct note_binary_s *)p; - ret += noteram_dump_header(s, &nbi->nbi_cmn, ctx); + int len = note->nc_length - sizeof(struct note_event_s); + FAR struct note_event_s *nbi = (FAR struct note_event_s *)p; + ret += noteram_dump_header(s, &nbi->nev_cmn, ctx); ret += lib_sprintf(s, "tracing_mark_write: I|%d|%.*s\n", - pid, len, (FAR const char *)nbi->nbi_data); + pid, len, (FAR const char *)nbi->nev_data); } break; case NOTE_DUMP_COUNTER: { - FAR struct note_binary_s *nbi = (FAR struct note_binary_s *)p; + FAR struct note_event_s *nbi = (FAR struct note_event_s *)p; FAR struct note_counter_s *counter; - counter = (FAR struct note_counter_s *)nbi->nbi_data; - ret += noteram_dump_header(s, &nbi->nbi_cmn, ctx); + counter = (FAR struct note_counter_s *)nbi->nev_data; + ret += noteram_dump_header(s, &nbi->nev_cmn, ctx); ret += lib_sprintf(s, "tracing_mark_write: C|%d|%s|%ld\n", pid, counter->name, counter->value); } break; - case NOTE_DUMP_BINARY: - { - FAR struct note_binary_s *nbi; - uint8_t count; - uintptr_t ip; - int i; - - nbi = (FAR struct note_binary_s *)p; - ret += noteram_dump_header(s, note, ctx); - count = note->nc_length - sizeof(struct note_binary_s) + 1; - ip = nbi->nbi_ip; - - ret += lib_sprintf(s, "tracing_mark_write: %pS: count=%u", - (FAR void *)ip, count); - for (i = 0; i < count; i++) - { - ret += lib_sprintf(s, " 0x%x", nbi->nbi_data[i]); - } - - ret += lib_sprintf(s, "\n"); - } - break; #endif #ifdef CONFIG_SCHED_INSTRUMENTATION_HEAP case NOTE_HEAP_ADD: diff --git a/include/nuttx/note/note_driver.h b/include/nuttx/note/note_driver.h index db983570e0ceb..fa6b7fe36ca45 100644 --- a/include/nuttx/note/note_driver.h +++ b/include/nuttx/note/note_driver.h @@ -99,14 +99,10 @@ struct note_driver_ops_s size_t curused); #endif #ifdef CONFIG_SCHED_INSTRUMENTATION_DUMP - CODE void (*string)(FAR struct note_driver_s *drv, uintptr_t ip, - FAR const char *buf); CODE void (*event)(FAR struct note_driver_s *drv, uintptr_t ip, uint8_t event, FAR const void *buf, size_t len); CODE void (*vprintf)(FAR struct note_driver_s *drv, uintptr_t ip, FAR const char *fmt, va_list va) printf_like(3, 0); - CODE void (*vbprintf)(FAR struct note_driver_s *drv, uintptr_t ip, - FAR const char *fmt, va_list va) printf_like(3, 0); #endif }; diff --git a/include/nuttx/sched_note.h b/include/nuttx/sched_note.h index ecbd608f7b2ed..50d587ddb5cbb 100644 --- a/include/nuttx/sched_note.h +++ b/include/nuttx/sched_note.h @@ -128,20 +128,12 @@ #define SCHED_NOTE_IP \ ({ __label__ __here; __here: (unsigned long)&&__here; }) -#define sched_note_string(tag, buf) \ - sched_note_string_ip(tag, SCHED_NOTE_IP, buf) #define sched_note_event(tag, event, buf, len) \ sched_note_event_ip(tag, SCHED_NOTE_IP, event, buf, len) -#define sched_note_dump(tag, buf, len) \ - sched_note_event_ip(tag, SCHED_NOTE_IP, NOTE_DUMP_BINARY, buf, len) #define sched_note_vprintf(tag, fmt, va) \ sched_note_vprintf_ip(tag, SCHED_NOTE_IP, fmt, va) -#define sched_note_vbprintf(tag, fmt, va) \ - sched_note_vbprintf_ip(tag, SCHED_NOTE_IP, fmt, va) #define sched_note_printf(tag, fmt, ...) \ sched_note_printf_ip(tag, SCHED_NOTE_IP, fmt, ##__VA_ARGS__) -#define sched_note_bprintf(tag, fmt, ...) \ - sched_note_bprintf_ip(tag, SCHED_NOTE_IP, fmt, ##__VA_ARGS__) #define sched_note_begin(tag) \ sched_note_event(tag, NOTE_DUMP_BEGIN, NULL, 0) @@ -203,8 +195,8 @@ enum note_type_e NOTE_HEAP_REMOVE, NOTE_HEAP_ALLOC, NOTE_HEAP_FREE, - NOTE_DUMP_STRING, - NOTE_DUMP_BINARY, + NOTE_DUMP_PRINTF, + NOTE_DUMP_BEGIN, NOTE_DUMP_END, NOTE_DUMP_MARK, @@ -413,25 +405,26 @@ struct note_heap_s size_t used; }; -struct note_string_s +struct note_printf_s { - struct note_common_s nst_cmn; /* Common note parameters */ - uintptr_t nst_ip; /* Instruction pointer called from */ - char nst_data[1]; /* String data terminated by '\0' */ + struct note_common_s npt_cmn; /* Common note parameters */ + uintptr_t npt_ip; /* Instruction pointer called from */ + FAR const char *npt_fmt; /* Printf format string */ + char npt_data[1]; /* Print arguments */ }; -#define SIZEOF_NOTE_STRING(n) (sizeof(struct note_string_s) + \ - (n) * sizeof(char)) +#define SIZEOF_NOTE_PRINTF(n) (sizeof(struct note_printf_s) + \ + ((n) - 1) * sizeof(uint8_t)) -struct note_binary_s +struct note_event_s { - struct note_common_s nbi_cmn; /* Common note parameters */ - uintptr_t nbi_ip; /* Instruction pointer called from */ - uint8_t nbi_data[1]; /* Binary data */ + struct note_common_s nev_cmn; /* Common note parameters */ + uintptr_t nev_ip; /* Instruction pointer called from */ + uint8_t nev_data[1]; /* Event data */ }; -#define SIZEOF_NOTE_BINARY(n) (sizeof(struct note_binary_s) + \ - ((n) - 1) * sizeof(uint8_t)) +#define SIZEOF_NOTE_EVENT(n) (sizeof(struct note_event_s) + \ + ((n)) * sizeof(uint8_t)) struct note_counter_s { @@ -589,24 +582,16 @@ void sched_note_heap(uint8_t event, FAR void *heap, FAR void *mem, #endif #ifdef CONFIG_SCHED_INSTRUMENTATION_DUMP -void sched_note_string_ip(uint32_t tag, uintptr_t ip, FAR const char *buf); void sched_note_event_ip(uint32_t tag, uintptr_t ip, uint8_t event, - FAR const void *buf, size_t len); + FAR const void *buf, size_t len); void sched_note_vprintf_ip(uint32_t tag, uintptr_t ip, FAR const char *fmt, va_list va) printf_like(3, 0); -void sched_note_vbprintf_ip(uint32_t tag, uintptr_t ip, FAR const char *fmt, - va_list va) printf_like(3, 0); void sched_note_printf_ip(uint32_t tag, uintptr_t ip, FAR const char *fmt, ...) printf_like(3, 4); -void sched_note_bprintf_ip(uint32_t tag, uintptr_t ip, - FAR const char *fmt, ...) printf_like(3, 4); #else -# define sched_note_string_ip(t,ip,b) # define sched_note_event_ip(t,ip,e,b,l) # define sched_note_vprintf_ip(t,ip,f,v) -# define sched_note_vbprintf_ip(t,ip,f,v) # define sched_note_printf_ip(t,ip,f,...) -# define sched_note_bprintf_ip(t,ip,f,...) #endif /* CONFIG_SCHED_INSTRUMENTATION_DUMP */ #if defined(__KERNEL__) || defined(CONFIG_BUILD_FLAT) diff --git a/sched/Kconfig b/sched/Kconfig index 728f161b950ee..be765d9928103 100644 --- a/sched/Kconfig +++ b/sched/Kconfig @@ -1306,12 +1306,9 @@ config SCHED_INSTRUMENTATION_DUMP ---help--- Use note dump for instrumentation. - void sched_note_string(FAR const char *buf); - void sched_note_dump(uint32_t module, uint8_t event, FAR const void *buf, size_t len); - void sched_note_vprintf(FAR const char *fmt, va_list va); - void sched_note_vbprintf(uint32_t module, uint8_t event, FAR const char *fmt, va_list va); - void sched_note_printf(FAR const char *fmt, ...) printf_like(1, 2); - void sched_note_bprintf(uint32_t module, uint8_t event, FAR const char *fmt, ...); + void sched_note_event_ip(uint32_t tag, uintptr_t ip, uint8_t event, FAR const void *buf, size_t len); + void sched_note_vprintf_ip(uint32_t tag, uintptr_t ip, FAR const char *fmt, va_list va) printf_like(3, 0); + void sched_note_printf_ip(uint32_t tag, uintptr_t ip, FAR const char *fmt, ...) printf_like(3, 4); config SCHED_INSTRUMENTATION_FUNCTION bool "Enable function auto-tracing" From e1947b2c23a7588568b4bbdcc5218f3f1cc533e2 Mon Sep 17 00:00:00 2001 From: yinshengkai Date: Wed, 29 Nov 2023 12:35:29 +0800 Subject: [PATCH 21/21] note: print without relying on format strings Signed-off-by: yinshengkai --- drivers/note/Kconfig | 5 + drivers/note/note_driver.c | 322 ++++++++++++++++++++-------------- drivers/note/noteram_driver.c | 217 ++++++++++++++--------- include/nuttx/compiler.h | 8 +- include/nuttx/macro.h | 140 +++++++++++++++ include/nuttx/sched_note.h | 86 ++++++++- sched/Kconfig | 4 +- 7 files changed, 561 insertions(+), 221 deletions(-) create mode 100644 include/nuttx/macro.h diff --git a/drivers/note/Kconfig b/drivers/note/Kconfig index 49248bd121c63..e5469b6ab9eb0 100644 --- a/drivers/note/Kconfig +++ b/drivers/note/Kconfig @@ -87,6 +87,11 @@ config DRIVERS_NOTERAM_CRASH_DUMP endif # DRIVERS_NOTERAM +config DRIVERS_NOTE_STRIP_FORMAT + bool "Strip sched_note_printf format string" + ---help--- + Strip sched_note_printf format string. + config DRIVERS_NOTELOG bool "Note syslog driver" ---help--- diff --git a/drivers/note/note_driver.c b/drivers/note/note_driver.c index ea58c8be17e51..0b4d725c67cdf 100644 --- a/drivers/note/note_driver.c +++ b/drivers/note/note_driver.c @@ -1483,39 +1483,14 @@ void sched_note_event_ip(uint32_t tag, uintptr_t ip, uint8_t event, } } -void sched_note_vprintf_ip(uint32_t tag, uintptr_t ip, - FAR const char *fmt, va_list va) +void sched_note_vprintf_ip(uint32_t tag, uintptr_t ip, FAR const char *fmt, + uint32_t type, va_list va) { FAR struct note_printf_s *note; FAR struct note_driver_s **driver; bool formatted = false; uint8_t data[255]; - begin_packed_struct union - { - int i; - long l; -#ifdef CONFIG_HAVE_LONG_LONG - long long ll; -#endif - intmax_t im; - size_t sz; - ptrdiff_t ptr; - FAR void *p; -#ifdef CONFIG_HAVE_DOUBLE - double d; -# ifdef CONFIG_HAVE_LONG_DOUBLE - long double ld; -# endif -#endif - } - - end_packed_struct *var; - - char c; - size_t length; - size_t next = 0; - bool infmt = false; - FAR const char *p = fmt; + size_t length = 0; FAR struct tcb_s *tcb = this_task(); if (!note_isenabled_dump(tag)) @@ -1539,146 +1514,236 @@ void sched_note_vprintf_ip(uint32_t tag, uintptr_t ip, if (!formatted) { + begin_packed_struct union + { + int i; + long l; +#ifdef CONFIG_HAVE_LONG_LONG + long long ll; +#endif + intmax_t im; + size_t sz; + ptrdiff_t ptr; + FAR void *p; + FAR const char *s; +#ifdef CONFIG_HAVE_DOUBLE + double d; +# ifdef CONFIG_HAVE_LONG_DOUBLE + long double ld; +# endif +#endif + } + + end_packed_struct *var; + size_t next = 0; formatted = true; note = (FAR struct note_printf_s *)data; length = sizeof(data) - SIZEOF_NOTE_PRINTF(0); - while ((c = *p++) != '\0') + if (type) { - if (c != '%' && !infmt) - { - continue; - } - - infmt = true; - var = (FAR void *)¬e->npt_data[next]; + size_t count = NOTE_PRINTF_GET_COUNT(type); + size_t i; - if (c == 'c' || c == 'd' || c == 'i' || c == 'u' || - c == 'o' || c == 'x' || c == 'X') + for (i = 0; i < count; i++) { - if (*(p - 2) == 'j') + var = (FAR void *)¬e->npt_data[next]; + switch (NOTE_PRINTF_GET_TYPE(type, i)) { - if (next + sizeof(var->im) > length) + case NOTE_PRINTF_UINT32: { - break; + var->i = va_arg(va, int); + if (next + sizeof(var->i) > length) + { + break; + } + + next += sizeof(var->i); } + break; + case NOTE_PRINTF_UINT64: + { + if (next + sizeof(var->ll) > length) + { + break; + } - var->im = va_arg(va, intmax_t); - next += sizeof(var->im); - } -#ifdef CONFIG_HAVE_LONG_LONG - else if (*(p - 2) == 'l' && *(p - 3) == 'l') - { - if (next + sizeof(var->ll) > length) + var->ll = va_arg(va, long long); + next += sizeof(var->ll); + } + break; + case NOTE_PRINTF_STRING: { - break; + size_t len; + var->s = va_arg(va, FAR const char *); + len = strlen(var->s) + 1; + if (next + len > length) + { + len = length - next; + } + + strlcpy(note->npt_data + next, var->s, len); + next += len; } + break; + case NOTE_PRINTF_DOUBLE: + { + var->d = va_arg(va, double); + if (next + sizeof(var->d) > length) + { + break; + } - var->ll = va_arg(va, long long); - next += sizeof(var->ll); + next += sizeof(var->d); + } + break; } -#endif - else if (*(p - 2) == 'l') + } + } + else + { + FAR const char *p = fmt; + bool infmt = false; + char c; + + while ((c = *p++) != '\0') + { + if (c != '%' && !infmt) + { + continue; + } + + infmt = true; + var = (FAR void *)¬e->npt_data[next]; + + if (c == 'c' || c == 'd' || c == 'i' || c == 'u' || + c == 'o' || c == 'x' || c == 'X') { - if (next + sizeof(var->l) > length) + if (*(p - 2) == 'j') { - break; + if (next + sizeof(var->im) > length) + { + break; + } + + var->im = va_arg(va, intmax_t); + next += sizeof(var->im); + } +#ifdef CONFIG_HAVE_LONG_LONG + else if (*(p - 2) == 'l' && *(p - 3) == 'l') + { + if (next + sizeof(var->ll) > length) + { + break; + } + + var->ll = va_arg(va, long long); + next += sizeof(var->ll); } +#endif + else if (*(p - 2) == 'l') + { + if (next + sizeof(var->l) > length) + { + break; + } - var->l = va_arg(va, long); - next += sizeof(var->l); - } - else if (*(p - 2) == 'z') - { - if (next + sizeof(var->sz) > length) + var->l = va_arg(va, long); + next += sizeof(var->l); + } + else if (*(p - 2) == 'z') { - break; + if (next + sizeof(var->sz) > length) + { + break; + } + + var->sz = va_arg(va, size_t); + next += sizeof(var->sz); } + else if (*(p - 2) == 't') + { + if (next + sizeof(var->ptr) > length) + { + break; + } - var->sz = va_arg(va, size_t); - next += sizeof(var->sz); - } - else if (*(p - 2) == 't') - { - if (next + sizeof(var->ptr) > length) + var->ptr = va_arg(va, ptrdiff_t); + next += sizeof(var->ptr); + } + else { - break; + if (next + sizeof(var->i) > length) + { + break; + } + + var->i = va_arg(va, int); + next += sizeof(var->i); } - var->ptr = va_arg(va, ptrdiff_t); - next += sizeof(var->ptr); + infmt = false; } - else + else if (c == 'e' || c == 'f' || c == 'g' || c == 'a' || + c == 'A' || c == 'E' || c == 'F' || c == 'G') { - if (next + sizeof(var->i) > length) +#ifdef CONFIG_HAVE_DOUBLE +# ifdef CONFIG_HAVE_LONG_DOUBLE + if (*(p - 2) == 'L') { - break; + if (next + sizeof(var->ld) > length) + { + break; + } + + var->ld = va_arg(va, long double); + next += sizeof(var->ld); + } + else +# endif + { + if (next + sizeof(var->d) > length) + { + break; + } + + var->d = va_arg(va, double); + next += sizeof(var->d); } +#endif + infmt = false; + } + else if (c == '*') + { var->i = va_arg(va, int); next += sizeof(var->i); } - - infmt = false; - } - else if (c == 'e' || c == 'f' || c == 'g' || c == 'a' || - c == 'A' || c == 'E' || c == 'F' || c == 'G') - { -#ifdef CONFIG_HAVE_DOUBLE -# ifdef CONFIG_HAVE_LONG_DOUBLE - if (*(p - 2) == 'L') + else if (c == 's') { - if (next + sizeof(var->ld) > length) + size_t len; + var->s = va_arg(va, FAR char *); + len = strlen(var->s) + 1; + if (next + len > length) { - break; + len = length - next; } - var->ld = va_arg(va, long double); - next += sizeof(var->ld); + strlcpy(note->npt_data + next, var->s, len); + next += len; + infmt = false; } - else -# endif + else if (c == 'p') { - if (next + sizeof(var->d) > length) + if (next + sizeof(var->p) > length) { break; } - var->d = va_arg(va, double); - next += sizeof(var->d); - } -#endif - - infmt = false; - } - else if (c == '*') - { - var->i = va_arg(va, int); - next += sizeof(var->i); - } - else if (c == 's') - { - FAR char *str = (FAR char *)va_arg(va, FAR char *); - size_t len = strlen(str) + 1; - if (next + len > length) - { - len = length - next; - } - - strlcpy(¬e->npt_data[next], str, len); - next += len; - infmt = false; - } - else if (c == 'p') - { - if (next + sizeof(var->p) > length) - { - break; + var->p = va_arg(va, FAR void *); + next += sizeof(var->p); + infmt = false; } - - var->p = va_arg(va, FAR void *); - next += sizeof(var->p); - infmt = false; } } @@ -1686,6 +1751,7 @@ void sched_note_vprintf_ip(uint32_t tag, uintptr_t ip, note_common(tcb, ¬e->npt_cmn, length, NOTE_DUMP_PRINTF); note->npt_ip = ip; note->npt_fmt = fmt; + note->npt_type = type; } /* Add the note to circular buffer */ @@ -1694,12 +1760,12 @@ void sched_note_vprintf_ip(uint32_t tag, uintptr_t ip, } } -void sched_note_printf_ip(uint32_t tag, uintptr_t ip, - FAR const char *fmt, ...) +void sched_note_printf_ip(uint32_t tag, uintptr_t ip, FAR const char *fmt, + uint32_t type, ...) { va_list va; - va_start(va, fmt); - sched_note_vprintf_ip(tag, ip, fmt, va); + va_start(va, type); + sched_note_vprintf_ip(tag, ip, fmt, type, va); va_end(va); } diff --git a/drivers/note/noteram_driver.c b/drivers/note/noteram_driver.c index 75400f1edd5dd..c29447a28acee 100644 --- a/drivers/note/noteram_driver.c +++ b/drivers/note/noteram_driver.c @@ -728,7 +728,8 @@ static int noteram_dump_printf(FAR struct lib_outstream_s *s, intmax_t im; size_t sz; ptrdiff_t pd; - uintptr_t p; + FAR void *p; + FAR const char *s; #ifdef CONFIG_HAVE_DOUBLE double d; # ifdef CONFIG_HAVE_LONG_DOUBLE @@ -738,117 +739,169 @@ static int noteram_dump_printf(FAR struct lib_outstream_s *s, } end_packed_struct *var; - FAR const char *p = note->npt_fmt; - FAR char *data = note->npt_data; - char fmtstr[64]; - bool infmt = false; size_t offset = 0; size_t ret = 0; size_t len = 0; - char c; - while ((c = *p++) != '\0') + if (note->npt_type == 0) { - if (c != '%' && !infmt) - { - lib_stream_putc(s, c); - ret++; - continue; - } - - if (!infmt) - { - len = 0; - infmt = true; - memset(fmtstr, 0, sizeof(fmtstr)); - } - - var = (FAR void *)(note->npt_data + offset); - fmtstr[len++] = c; + FAR const char *p = note->npt_fmt; + bool infmt = false; + char fmtstr[64]; + char c; - if (c == 'c' || c == 'd' || c == 'i' || c == 'u' || - c == 'o' || c == 'x' || c == 'X') + while ((c = *p++) != '\0') { - if (*(p - 2) == 'j') - { - offset += sizeof(var->im); - ret += lib_sprintf(s, fmtstr, var->im); - } -#ifdef CONFIG_HAVE_LONG_LONG - else if (*(p - 2) == 'l' && *(p - 3) == 'l') + if (c != '%' && !infmt) { - offset += sizeof(var->ll); - ret += lib_sprintf(s, fmtstr, var->ll); + lib_stream_putc(s, c); + ret++; + continue; } -#endif - else if (*(p - 2) == 'l') + + if (!infmt) { - offset += sizeof(var->l); - ret += lib_sprintf(s, fmtstr, var->l); + len = 0; + infmt = true; + memset(fmtstr, 0, sizeof(fmtstr)); } - else if (*(p - 2) == 'z') + + var = (FAR void *)(note->npt_data + offset); + fmtstr[len++] = c; + + if (c == 'c' || c == 'd' || c == 'i' || c == 'u' || + c == 'o' || c == 'x' || c == 'X') { - offset += sizeof(var->sz); - ret += lib_sprintf(s, fmtstr, var->sz); + if (*(p - 2) == 'j') + { + offset += sizeof(var->im); + ret += lib_sprintf(s, fmtstr, var->im); + } +#ifdef CONFIG_HAVE_LONG_LONG + else if (*(p - 2) == 'l' && *(p - 3) == 'l') + { + offset += sizeof(var->ll); + ret += lib_sprintf(s, fmtstr, var->ll); + } +#endif + else if (*(p - 2) == 'l') + { + offset += sizeof(var->l); + ret += lib_sprintf(s, fmtstr, var->l); + } + else if (*(p - 2) == 'z') + { + offset += sizeof(var->sz); + ret += lib_sprintf(s, fmtstr, var->sz); + } + else if (*(p - 2) == 't') + { + offset += sizeof(var->pd); + ret += lib_sprintf(s, fmtstr, var->pd); + } + else + { + offset += sizeof(var->i); + ret += lib_sprintf(s, fmtstr, var->i); + } + + infmt = false; } - else if (*(p - 2) == 't') + else if (c == 'e' || c == 'f' || c == 'g' || c == 'a' || + c == 'A' || c == 'E' || c == 'F' || c == 'G') { - offset += sizeof(var->pd); - ret += lib_sprintf(s, fmtstr, var->pd); +#ifdef CONFIG_HAVE_DOUBLE +# ifdef CONFIG_HAVE_LONG_DOUBLE + if (*(p - 2) == 'L') + { + offset += sizeof(var->ld); + ret += lib_sprintf(s, fmtstr, var->ld); + } + else +# endif + { + offset += sizeof(var->d); + ret += lib_sprintf(s, fmtstr, var->d); + } + + infmt = false; } - else +#endif + else if (c == '*') { + itoa(var->i, fmtstr + len - 1, 10); + len = strlen(fmtstr); offset += sizeof(var->i); - ret += lib_sprintf(s, fmtstr, var->i); } - - infmt = false; - } - else if (c == 'e' || c == 'f' || c == 'g' || c == 'a' || - c == 'A' || c == 'E' || c == 'F' || c == 'G') - { -#ifdef CONFIG_HAVE_DOUBLE -# ifdef CONFIG_HAVE_LONG_DOUBLE - if (*(p - 2) == 'L') + else if (c == 's') { - offset += sizeof(var->ld); - ret += lib_sprintf(s, fmtstr, var->ld); + const char *str = note->npt_data + offset; + offset += strlen(str) + 1; + ret += lib_sprintf(s, fmtstr, str); + infmt = false; } - else -# endif + else if (c == 'p') { - offset += sizeof(var->d); - ret += lib_sprintf(s, fmtstr, var->d); + offset += sizeof(var->p); + ret += lib_sprintf(s, fmtstr, var->p); + infmt = false; } - - infmt = false; } -#endif - else if (c == '*') + + if (*(p - 2) != '\n') { - itoa(var->i, fmtstr + len - 1, 10); - len = strlen(fmtstr); - offset += sizeof(var->i); + lib_stream_putc(s, '\n'); + ret++; } - else if (c == 's') + } + else + { + size_t count = NOTE_PRINTF_GET_COUNT(note->npt_type); + size_t i; + + len = strlen(note->npt_fmt); + if (note->npt_fmt[len - 1] == '\n') { - FAR const char *value = data + offset; - offset += strlen(value) + 1; - ret += lib_sprintf(s, fmtstr, value); - infmt = false; + len--; } - else if (c == 'p') + + ret += lib_sprintf(s, "%p", note->npt_fmt); + for (i = 0; i < count; i++) { - offset += sizeof(var->p); - ret += lib_sprintf(s, fmtstr, var->p); - infmt = false; + int type = NOTE_PRINTF_GET_TYPE(note->npt_type, i); + var = (FAR void *)(note->npt_data + offset); + + switch (type) + { + case NOTE_PRINTF_UINT32: + { + offset += sizeof(var->i); + ret += lib_sprintf(s, " %u", var->i); + } + break; + case NOTE_PRINTF_UINT64: + { + offset += sizeof(var->ll); + ret += lib_sprintf(s, " %llu", var->ll); + } + break; + case NOTE_PRINTF_STRING: + { + const char *str = note->npt_data + offset; + offset += strlen(str) + 1; + ret += lib_sprintf(s, " %s", str); + } + break; + case NOTE_PRINTF_DOUBLE: + { + offset += sizeof(var->d); + ret += lib_sprintf(s, " %f", var->d); + } + } } - } - if (*(p - 2) != '\n') - { - lib_stream_putc(s, '\n'); - ret++; + lib_stream_putc(s, '\n'); + ret++; } return ret; diff --git a/include/nuttx/compiler.h b/include/nuttx/compiler.h index dc994002e41f0..4658e26aff471 100644 --- a/include/nuttx/compiler.h +++ b/include/nuttx/compiler.h @@ -172,7 +172,7 @@ * unnecessary "weak" functions can be excluded from the link. */ -#undef CONFIG_HAVE_WEAKFUNCTIONS +# undef CONFIG_HAVE_WEAKFUNCTIONS # if !defined(__CYGWIN__) && !defined(CONFIG_ARCH_GNU_NO_WEAKFUNCTIONS) # define CONFIG_HAVE_WEAKFUNCTIONS 1 @@ -344,6 +344,7 @@ # define syslog_like(a, b) __attribute__((__format__(__syslog__, a, b))) # define scanf_like(a, b) __attribute__((__format__(__scanf__, a, b))) # define strftime_like(a) __attribute__((__format__(__strftime__, a, 0))) +# define object_size(o, t) __builtin_object_size(o, t) /* GCC does not use storage classes to qualify addressing */ @@ -612,6 +613,7 @@ # define syslog_like(a, b) # define scanf_like(a, b) # define strftime_like(a) +# define object_size(o, t) ((size_t)-1) /* The reentrant attribute informs SDCC that the function * must be reentrant. In this case, SDCC will store input @@ -756,6 +758,7 @@ # define syslog_like(a, b) # define scanf_like(a, b) # define strftime_like(a) +# define object_size(o, t) ((size_t)-1) /* REVISIT: */ @@ -871,6 +874,7 @@ # define syslog_like(a, b) # define scanf_like(a, b) # define strftime_like(a) +# define object_size(o, t) ((size_t)-1) # define FAR # define NEAR @@ -1049,6 +1053,7 @@ # define syslog_like(a, b) # define scanf_like(a, b) # define strftime_like(a) +# define object_size(o, t) ((size_t)-1) # define FAR # define NEAR @@ -1118,6 +1123,7 @@ # define syslog_like(a, b) # define scanf_like(a, b) # define strftime_like(a) +# define object_size(o, t) ((size_t)-1) # define FAR # define NEAR diff --git a/include/nuttx/macro.h b/include/nuttx/macro.h new file mode 100644 index 0000000000000..c9c2481430705 --- /dev/null +++ b/include/nuttx/macro.h @@ -0,0 +1,140 @@ +/**************************************************************************** + * include/nuttx/macro.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __INCLUDE_NUTTX_MACRO_H +#define __INCLUDE_NUTTX_MACRO_H + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +#define GET_ARG_VALUE(_00, _01, _02, _03, _04, _05, _06, _07, \ + _08, _09, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _23, \ + _24, _25, _26, _27, _28, _29, _30, _31, \ + _32, name, ...) name + +/* Get the number of arguments (up to 32) */ + +#define GET_ARG_COUNT(...) \ + GET_ARG_VALUE(_0, ##__VA_ARGS__, 32, 31, 30, \ + 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, \ + 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, \ + 9, 8, 7, 6, 5, 4, 3, 2, 1, 0) + +/* Reverse the arguments */ + +#define EXPAND(x) x + +#define REVERSE_00() +#define REVERSE_01(a) a +#define REVERSE_02(a,b) b,a +#define REVERSE_03(a,...) EXPAND(REVERSE_02(__VA_ARGS__)),a +#define REVERSE_04(a,...) EXPAND(REVERSE_03(__VA_ARGS__)),a +#define REVERSE_05(a,...) EXPAND(REVERSE_04(__VA_ARGS__)),a +#define REVERSE_06(a,...) EXPAND(REVERSE_05(__VA_ARGS__)),a +#define REVERSE_07(a,...) EXPAND(REVERSE_06(__VA_ARGS__)),a +#define REVERSE_08(a,...) EXPAND(REVERSE_07(__VA_ARGS__)),a +#define REVERSE_09(a,...) EXPAND(REVERSE_08(__VA_ARGS__)),a +#define REVERSE_10(a,...) EXPAND(REVERSE_09(__VA_ARGS__)),a +#define REVERSE_11(a,...) EXPAND(REVERSE_10(__VA_ARGS__)),a +#define REVERSE_12(a,...) EXPAND(REVERSE_11(__VA_ARGS__)),a +#define REVERSE_13(a,...) EXPAND(REVERSE_12(__VA_ARGS__)),a +#define REVERSE_14(a,...) EXPAND(REVERSE_13(__VA_ARGS__)),a +#define REVERSE_15(a,...) EXPAND(REVERSE_14(__VA_ARGS__)),a +#define REVERSE_16(a,...) EXPAND(REVERSE_15(__VA_ARGS__)),a +#define REVERSE_17(a,...) EXPAND(REVERSE_16(__VA_ARGS__)),a +#define REVERSE_18(a,...) EXPAND(REVERSE_17(__VA_ARGS__)),a +#define REVERSE_19(a,...) EXPAND(REVERSE_18(__VA_ARGS__)),a +#define REVERSE_20(a,...) EXPAND(REVERSE_19(__VA_ARGS__)),a +#define REVERSE_21(a,...) EXPAND(REVERSE_20(__VA_ARGS__)),a +#define REVERSE_22(a,...) EXPAND(REVERSE_21(__VA_ARGS__)),a +#define REVERSE_23(a,...) EXPAND(REVERSE_22(__VA_ARGS__)),a +#define REVERSE_24(a,...) EXPAND(REVERSE_23(__VA_ARGS__)),a +#define REVERSE_25(a,...) EXPAND(REVERSE_24(__VA_ARGS__)),a +#define REVERSE_26(a,...) EXPAND(REVERSE_25(__VA_ARGS__)),a +#define REVERSE_27(a,...) EXPAND(REVERSE_26(__VA_ARGS__)),a +#define REVERSE_28(a,...) EXPAND(REVERSE_27(__VA_ARGS__)),a +#define REVERSE_29(a,...) EXPAND(REVERSE_28(__VA_ARGS__)),a +#define REVERSE_30(a,...) EXPAND(REVERSE_29(__VA_ARGS__)),a +#define REVERSE_31(a,...) EXPAND(REVERSE_30(__VA_ARGS__)),a +#define REVERSE_32(a,...) EXPAND(REVERSE_31(__VA_ARGS__)),a + +#define REVERSE_ARG_(...) \ + GET_ARG_VALUE(0, ##__VA_ARGS__, \ + REVERSE_32, REVERSE_31, REVERSE_30, REVERSE_29, REVERSE_28, REVERSE_27, \ + REVERSE_26, REVERSE_25, REVERSE_24, REVERSE_23, REVERSE_22, REVERSE_21, \ + REVERSE_20, REVERSE_19, REVERSE_18, REVERSE_17, REVERSE_16, REVERSE_15, \ + REVERSE_14, REVERSE_13, REVERSE_12, REVERSE_11, REVERSE_10, REVERSE_09, \ + REVERSE_08, REVERSE_07, REVERSE_06, REVERSE_05, REVERSE_04, REVERSE_03, \ + REVERSE_02, REVERSE_01, REVERSE_00)(__VA_ARGS__) + +#define REVERSE_ARG(...) REVERSE_ARG_(##__VA_ARGS__) + +/* Apply the macro to each argument */ + +#define FOREACH_00(action, count, ...) 0 +#define FOREACH_01(action, count, arg, ...) action(arg, count - 1 ) +#define FOREACH_02(action, count, arg, ...) action(arg, count - 2 ) FOREACH_01(action, count, __VA_ARGS__) +#define FOREACH_03(action, count, arg, ...) action(arg, count - 3 ) FOREACH_02(action, count, __VA_ARGS__) +#define FOREACH_04(action, count, arg, ...) action(arg, count - 4 ) FOREACH_03(action, count, __VA_ARGS__) +#define FOREACH_05(action, count, arg, ...) action(arg, count - 5 ) FOREACH_04(action, count, __VA_ARGS__) +#define FOREACH_06(action, count, arg, ...) action(arg, count - 6 ) FOREACH_05(action, count, __VA_ARGS__) +#define FOREACH_07(action, count, arg, ...) action(arg, count - 7 ) FOREACH_06(action, count, __VA_ARGS__) +#define FOREACH_08(action, count, arg, ...) action(arg, count - 8 ) FOREACH_07(action, count, __VA_ARGS__) +#define FOREACH_09(action, count, arg, ...) action(arg, count - 9 ) FOREACH_08(action, count, __VA_ARGS__) +#define FOREACH_10(action, count, arg, ...) action(arg, count - 10) FOREACH_09(action, count, __VA_ARGS__) +#define FOREACH_11(action, count, arg, ...) action(arg, count - 11) FOREACH_10(action, count, __VA_ARGS__) +#define FOREACH_12(action, count, arg, ...) action(arg, count - 12) FOREACH_11(action, count, __VA_ARGS__) +#define FOREACH_13(action, count, arg, ...) action(arg, count - 13) FOREACH_12(action, count, __VA_ARGS__) +#define FOREACH_14(action, count, arg, ...) action(arg, count - 14) FOREACH_13(action, count, __VA_ARGS__) +#define FOREACH_15(action, count, arg, ...) action(arg, count - 15) FOREACH_14(action, count, __VA_ARGS__) +#define FOREACH_16(action, count, arg, ...) action(arg, count - 16) FOREACH_15(action, count, __VA_ARGS__) +#define FOREACH_17(action, count, arg, ...) action(arg, count - 17) FOREACH_16(action, count, __VA_ARGS__) +#define FOREACH_18(action, count, arg, ...) action(arg, count - 18) FOREACH_17(action, count, __VA_ARGS__) +#define FOREACH_19(action, count, arg, ...) action(arg, count - 19) FOREACH_18(action, count, __VA_ARGS__) +#define FOREACH_20(action, count, arg, ...) action(arg, count - 20) FOREACH_19(action, count, __VA_ARGS__) +#define FOREACH_21(action, count, arg, ...) action(arg, count - 21) FOREACH_20(action, count, __VA_ARGS__) +#define FOREACH_22(action, count, arg, ...) action(arg, count - 22) FOREACH_21(action, count, __VA_ARGS__) +#define FOREACH_23(action, count, arg, ...) action(arg, count - 23) FOREACH_22(action, count, __VA_ARGS__) +#define FOREACH_24(action, count, arg, ...) action(arg, count - 24) FOREACH_23(action, count, __VA_ARGS__) +#define FOREACH_25(action, count, arg, ...) action(arg, count - 25) FOREACH_24(action, count, __VA_ARGS__) +#define FOREACH_26(action, count, arg, ...) action(arg, count - 26) FOREACH_25(action, count, __VA_ARGS__) +#define FOREACH_27(action, count, arg, ...) action(arg, count - 27) FOREACH_26(action, count, __VA_ARGS__) +#define FOREACH_28(action, count, arg, ...) action(arg, count - 28) FOREACH_27(action, count, __VA_ARGS__) +#define FOREACH_29(action, count, arg, ...) action(arg, count - 29) FOREACH_28(action, count, __VA_ARGS__) +#define FOREACH_30(action, count, arg, ...) action(arg, count - 30) FOREACH_29(action, count, __VA_ARGS__) +#define FOREACH_31(action, count, arg, ...) action(arg, count - 31) FOREACH_30(action, count, __VA_ARGS__) +#define FOREACH_32(action, count, arg, ...) action(arg, count - 32) FOREACH_31(action, count, __VA_ARGS__) + +#define FOREACH_ARG_(action, count, ...) \ + GET_ARG_VALUE(0, ##__VA_ARGS__, \ + FOREACH_32, FOREACH_31, FOREACH_30, FOREACH_29, FOREACH_28, FOREACH_27, \ + FOREACH_26, FOREACH_25, FOREACH_24, FOREACH_23, FOREACH_22, FOREACH_21, \ + FOREACH_20, FOREACH_19, FOREACH_18, FOREACH_17, FOREACH_16, FOREACH_15, \ + FOREACH_14, FOREACH_13, FOREACH_12, FOREACH_11, FOREACH_10, FOREACH_09, \ + FOREACH_08, FOREACH_07, FOREACH_06, FOREACH_05, FOREACH_04, FOREACH_03, \ + FOREACH_02, FOREACH_01, FOREACH_00)(action, count, ##__VA_ARGS__) + +#define FOREACH_ARG(action, ...) \ + FOREACH_ARG_(action, GET_ARG_COUNT(__VA_ARGS__), ##__VA_ARGS__) + +#endif /* __INCLUDE_NUTTX_MACRO_H */ + diff --git a/include/nuttx/sched_note.h b/include/nuttx/sched_note.h index 50d587ddb5cbb..305bad308eb6b 100644 --- a/include/nuttx/sched_note.h +++ b/include/nuttx/sched_note.h @@ -32,6 +32,7 @@ #include #include +#include #include #include @@ -125,15 +126,83 @@ # define NOTE_FILTER_TAGMASK_ZERO(s) #endif +/* Printf argument type */ + +#define NOTE_PRINTF_UINT32 0 +#define NOTE_PRINTF_UINT64 1 +#define NOTE_PRINTF_DOUBLE 2 +#define NOTE_PRINTF_STRING 3 + +/* Get/set printf tag. each parameter occupies 2 bits. The highest + * four bits are used to represent the number of parameters, So up to + * 14 variable arguments can be passed. + */ + +#define NOTE_PRINTF_GET_TYPE(tag, index) (((tag) >> (index) * 2) & 0x03) +#define NOTE_PRINTF_GET_COUNT(tag) (((tag) >> 28) & 0x0f) + +/* Check if a variable is 32-bit or 64-bit */ + +#define NOTE_PRINTF_INT_TYPE(arg) (sizeof((arg) + 0) <= sizeof(uint32_t) ? \ + NOTE_PRINTF_UINT32 : NOTE_PRINTF_UINT64) + +/* Use object_size to mark strings of known size */ + +#define NOTE_PRINTF_OBJECT_SIZE(arg) object_size((FAR void *)(uintptr_t)(arg), 2) + +/* Use _Generic to determine the type of the parameter */ + +#define NOTE_PRINTF_ARG_TYPE(__arg__) \ + _Generic((__arg__) + 0, \ + float : NOTE_PRINTF_DOUBLE, \ + double: NOTE_PRINTF_DOUBLE, \ + char *: ({NOTE_PRINTF_OBJECT_SIZE(__arg__) > 0 ? \ + NOTE_PRINTF_STRING : \ + NOTE_PRINTF_INT_TYPE(__arg__);}), \ + const char *: ({NOTE_PRINTF_OBJECT_SIZE(__arg__) > 0 ? \ + NOTE_PRINTF_STRING : \ + NOTE_PRINTF_INT_TYPE(__arg__);}), \ + default: NOTE_PRINTF_INT_TYPE(__arg__)) + +/* Set the type of each parameter */ + +#define NOTE_PRINTF_TYPE(arg, index) + ((NOTE_PRINTF_ARG_TYPE(arg) << (index) * 2)) +#define NOTE_PRINTF_TYPES(...) FOREACH_ARG(NOTE_PRINTF_TYPE, ##__VA_ARGS__) + +/* Using macro expansion to calculate the expression of tag, tag will + * be a constant at compile time, which will reduce the number of + * size in the code. + */ + +#define NOTE_PRINTF_TAG(...) \ + ((GET_ARG_COUNT(__VA_ARGS__) << 28) + NOTE_PRINTF_TYPES(__VA_ARGS__)) + #define SCHED_NOTE_IP \ ({ __label__ __here; __here: (unsigned long)&&__here; }) #define sched_note_event(tag, event, buf, len) \ sched_note_event_ip(tag, SCHED_NOTE_IP, event, buf, len) #define sched_note_vprintf(tag, fmt, va) \ - sched_note_vprintf_ip(tag, SCHED_NOTE_IP, fmt, va) -#define sched_note_printf(tag, fmt, ...) \ - sched_note_printf_ip(tag, SCHED_NOTE_IP, fmt, ##__VA_ARGS__) + sched_note_vprintf_ip(tag, SCHED_NOTE_IP, fmt, 0, va) + +#ifdef CONFIG_DRIVERS_NOTE_STRIP_FORMAT +# define sched_note_printf(tag, fmt, ...) \ + do \ + { \ + static const locate_data(".printf_format") \ + char __fmt__[] = fmt; \ + uint32_t __type__ = NOTE_PRINTF_TAG(__VA_ARGS__); \ + static_assert(GET_ARG_COUNT(__VA_ARGS__) <= 14, \ + "The number of sched_note_nprintf " \ + "parameters needs to be less than 14"); \ + sched_note_printf_ip(tag, SCHED_NOTE_IP, __fmt__, \ + __type__, ##__VA_ARGS__); \ + } \ + while (0) +#else +# define sched_note_printf(tag, fmt, ...) \ + sched_note_printf_ip(tag, SCHED_NOTE_IP, fmt, 0, ##__VA_ARGS__) +#endif #define sched_note_begin(tag) \ sched_note_event(tag, NOTE_DUMP_BEGIN, NULL, 0) @@ -410,6 +479,7 @@ struct note_printf_s struct note_common_s npt_cmn; /* Common note parameters */ uintptr_t npt_ip; /* Instruction pointer called from */ FAR const char *npt_fmt; /* Printf format string */ + uint32_t npt_type; /* Printf parameter type */ char npt_data[1]; /* Print arguments */ }; @@ -585,13 +655,13 @@ void sched_note_heap(uint8_t event, FAR void *heap, FAR void *mem, void sched_note_event_ip(uint32_t tag, uintptr_t ip, uint8_t event, FAR const void *buf, size_t len); void sched_note_vprintf_ip(uint32_t tag, uintptr_t ip, FAR const char *fmt, - va_list va) printf_like(3, 0); -void sched_note_printf_ip(uint32_t tag, uintptr_t ip, - FAR const char *fmt, ...) printf_like(3, 4); + uint32_t type, va_list va) printf_like(3, 0); +void sched_note_printf_ip(uint32_t tag, uintptr_t ip, FAR const char *fmt, + uint32_t type, ...) printf_like(3, 5); #else # define sched_note_event_ip(t,ip,e,b,l) -# define sched_note_vprintf_ip(t,ip,f,v) -# define sched_note_printf_ip(t,ip,f,...) +# define sched_note_vprintf_ip(t,ip,f,p,v) +# define sched_note_printf_ip(t,ip,f,p,...) #endif /* CONFIG_SCHED_INSTRUMENTATION_DUMP */ #if defined(__KERNEL__) || defined(CONFIG_BUILD_FLAT) diff --git a/sched/Kconfig b/sched/Kconfig index be765d9928103..2dbbb0a588f99 100644 --- a/sched/Kconfig +++ b/sched/Kconfig @@ -1307,8 +1307,8 @@ config SCHED_INSTRUMENTATION_DUMP Use note dump for instrumentation. void sched_note_event_ip(uint32_t tag, uintptr_t ip, uint8_t event, FAR const void *buf, size_t len); - void sched_note_vprintf_ip(uint32_t tag, uintptr_t ip, FAR const char *fmt, va_list va) printf_like(3, 0); - void sched_note_printf_ip(uint32_t tag, uintptr_t ip, FAR const char *fmt, ...) printf_like(3, 4); + void sched_note_vprintf_ip(uint32_t tag, uintptr_t ip, FAR const char *fmt, uint32_t type, va_list va) printf_like(3, 0); + void sched_note_printf_ip(uint32_t tag, uintptr_t ip, FAR const char *fmt, uint32_t type, ...) printf_like(3, 5); config SCHED_INSTRUMENTATION_FUNCTION bool "Enable function auto-tracing"