You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by ja...@apache.org on 2017/04/26 22:41:21 UTC

[33/50] [abbrv] incubator-mynewt-core git commit: kernel/os: Add os_eventq_get_no_wait function

kernel/os: Add os_eventq_get_no_wait function

This function is needed in interrupt context for quick queue
polls.


Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/commit/10d350c5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/tree/10d350c5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/diff/10d350c5

Branch: refs/heads/bluetooth5
Commit: 10d350c5ebb751a371fae7c0d2c73a80af4c2d45
Parents: 271ab1b
Author: Micha\u0142 Narajowski <mi...@codecoup.pl>
Authored: Fri Jan 27 16:01:20 2017 +0100
Committer: Micha\u0142 Narajowski <mi...@codecoup.pl>
Committed: Mon Apr 24 09:27:37 2017 -0700

----------------------------------------------------------------------
 kernel/os/include/os/os_eventq.h |  1 +
 kernel/os/src/os_eventq.c        | 14 ++++++++++++++
 2 files changed, 15 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/10d350c5/kernel/os/include/os/os_eventq.h
----------------------------------------------------------------------
diff --git a/kernel/os/include/os/os_eventq.h b/kernel/os/include/os/os_eventq.h
index 2ae779c..812d822 100644
--- a/kernel/os/include/os/os_eventq.h
+++ b/kernel/os/include/os/os_eventq.h
@@ -49,6 +49,7 @@ struct os_eventq {
 void os_eventq_init(struct os_eventq *);
 int os_eventq_inited(const struct os_eventq *evq);
 void os_eventq_put(struct os_eventq *, struct os_event *);
+struct os_event *os_eventq_get_no_wait(struct os_eventq *evq);
 struct os_event *os_eventq_get(struct os_eventq *);
 void os_eventq_run(struct os_eventq *evq);
 struct os_event *os_eventq_poll(struct os_eventq **, int, os_time_t);

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/10d350c5/kernel/os/src/os_eventq.c
----------------------------------------------------------------------
diff --git a/kernel/os/src/os_eventq.c b/kernel/os/src/os_eventq.c
index 626d560..ed9aa37 100644
--- a/kernel/os/src/os_eventq.c
+++ b/kernel/os/src/os_eventq.c
@@ -96,6 +96,20 @@ os_eventq_put(struct os_eventq *evq, struct os_event *ev)
     }
 }
 
+struct os_event *
+os_eventq_get_no_wait(struct os_eventq *evq)
+{
+    struct os_event *ev;
+
+    ev = STAILQ_FIRST(&evq->evq_list);
+    if (ev) {
+        STAILQ_REMOVE(&evq->evq_list, ev, os_event, ev_next);
+        ev->ev_queued = 0;
+    }
+
+    return ev;
+}
+
 /**
  * Pull a single item from an event queue.  This function blocks until there
  * is an item on the event queue to read.