You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by cc...@apache.org on 2019/02/13 19:35:23 UTC

[mynewt-core] branch master updated: kernel/os: Track most recent event in debug builds

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

ccollins pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-core.git


The following commit(s) were added to refs/heads/master by this push:
     new 56b7eba  kernel/os: Track most recent event in debug builds
56b7eba is described below

commit 56b7ebab7cde0af5b43c906fc51e66b80fdb2dcd
Author: Christopher Collins <cc...@apache.org>
AuthorDate: Tue Feb 12 12:09:56 2019 -0800

    kernel/os: Track most recent event in debug builds
    
    Add a new syscfg setting: `OS_EVENTQ_DEBUG`.  When this setting is
    enabled, each eventq remembers its most recently processed event.
    
    This feature is only useful when debugging with gdb.
---
 kernel/os/include/os/os_eventq.h | 5 ++++-
 kernel/os/src/os_eventq.c        | 4 ++++
 kernel/os/syscfg.yml             | 6 ++++++
 3 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/kernel/os/include/os/os_eventq.h b/kernel/os/include/os/os_eventq.h
index 2445fd6..770dc5c 100644
--- a/kernel/os/include/os/os_eventq.h
+++ b/kernel/os/include/os/os_eventq.h
@@ -71,11 +71,14 @@ struct os_eventq {
      */
     struct os_task *evq_task;
 
+#if MYNEWT_VAL(OS_EVENTQ_DEBUG)
+    /** Most recently processed event. */
+    struct os_event *evq_prev;
+#endif
 
     STAILQ_HEAD(, os_event) evq_list;
 };
 
-
 /**
  * Initialize the event queue
  *
diff --git a/kernel/os/src/os_eventq.c b/kernel/os/src/os_eventq.c
index e8389df..ab54afd 100644
--- a/kernel/os/src/os_eventq.c
+++ b/kernel/os/src/os_eventq.c
@@ -148,6 +148,10 @@ pull_one:
 
     os_trace_api_ret_u32(OS_TRACE_ID_EVENTQ_GET, (uint32_t)ev);
 
+#if MYNEWT_VAL(OS_EVENTQ_DEBUG)
+    evq->evq_prev = ev;
+#endif
+
     return (ev);
 }
 
diff --git a/kernel/os/syscfg.yml b/kernel/os/syscfg.yml
index 7a38d24..71d7241 100644
--- a/kernel/os/syscfg.yml
+++ b/kernel/os/syscfg.yml
@@ -138,6 +138,11 @@ syscfg.defs:
         description: >
             Enables debug runtime checks for time-related functionality.
         value: 0
+    OS_EVENTQ_DEBUG:
+        description: >
+            Enables debug runtime checks for eventq-related functionality.
+        value: 0
+
     OS_CRASH_FILE_LINE:
         description: >
             Include filename and line number in crash messages.  Aids in
@@ -154,3 +159,4 @@ syscfg.vals.OS_DEBUG_MODE:
     OS_MEMPOOL_CHECK: 1
     OS_MEMPOOL_POISON: 1
     OS_TIME_DEBUG: 1
+    OS_EVENTQ_DEBUG: 1