This is an automated email from the ASF dual-hosted git repository.

xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git


The following commit(s) were added to refs/heads/master by this push:
     new b5d1ec2  mm: do kmm_checkcorruption in IRQ when TCB_FLAG_DEBUG_CHECK 
set
b5d1ec2 is described below

commit b5d1ec28def9a9a9c3611a5a8fddacc4f5e6fc4a
Author: ligd <liguidi...@xiaomi.com>
AuthorDate: Sun Apr 25 22:57:55 2021 +0800

    mm: do kmm_checkcorruption in IRQ when TCB_FLAG_DEBUG_CHECK set
    
    Signed-off-by: ligd <liguidi...@xiaomi.com>
---
 include/nuttx/sched.h    | 3 ++-
 sched/irq/irq_dispatch.c | 9 +++++++++
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/include/nuttx/sched.h b/include/nuttx/sched.h
index caec634..f9d00b0 100644
--- a/include/nuttx/sched.h
+++ b/include/nuttx/sched.h
@@ -108,7 +108,8 @@
 #define TCB_FLAG_SYSCALL           (1 << 10)                     /* Bit 9: In 
a system call */
 #define TCB_FLAG_EXIT_PROCESSING   (1 << 11)                     /* Bit 10: 
Exitting */
 #define TCB_FLAG_FREE_STACK        (1 << 12)                     /* Bit 12: 
Free stack after exit */
-                                                                 /* Bits 
13-15: Available */
+#define TCB_FLAG_MEM_CHECK         (1 << 13)                     /* Bit 13: 
Memory check */
+                                                                 /* Bits 
14-15: Available */
 
 /* Values for struct task_group tg_flags */
 
diff --git a/sched/irq/irq_dispatch.c b/sched/irq/irq_dispatch.c
index ab984a0..96486b1 100644
--- a/sched/irq/irq_dispatch.c
+++ b/sched/irq/irq_dispatch.c
@@ -27,6 +27,7 @@
 #include <debug.h>
 #include <nuttx/arch.h>
 #include <nuttx/irq.h>
+#include <nuttx/mm/mm.h>
 #include <nuttx/random.h>
 #include <nuttx/sched_note.h>
 
@@ -184,6 +185,14 @@ void irq_dispatch(int irq, FAR void *context)
   sched_note_irqhandler(irq, vector, false);
 #endif
 
+#ifdef CONFIG_DEBUG_MM
+  if ((g_running_tasks[this_cpu()]->flags & TCB_FLAG_MEM_CHECK) || \
+       (this_task()->flags & TCB_FLAG_MEM_CHECK))
+    {
+      kmm_checkcorruption();
+    }
+#endif
+
   /* Record the new "running" task.  g_running_tasks[] is only used by
    * assertion logic for reporting crashes.
    */

Reply via email to