aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--os/rt/include/chevents.h14
-rw-r--r--os/rt/src/chevents.c6
-rw-r--r--readme.txt1
3 files changed, 18 insertions, 3 deletions
diff --git a/os/rt/include/chevents.h b/os/rt/include/chevents.h
index bb368e96b..a01c6d71e 100644
--- a/os/rt/include/chevents.h
+++ b/os/rt/include/chevents.h
@@ -257,6 +257,20 @@ static inline void chEvtBroadcastI(event_source_t *esp) {
}
/**
+ * @brief Adds (OR) a set of events to the current thread, this is
+ * @b much faster than using @p chEvtBroadcast() or @p chEvtSignal().
+ *
+ * @param[in] events the events to be added
+ * @return The mask of currently pending events.
+ *
+ * @iclass
+ */
+static inline eventmask_t chEvtAddEventsI(eventmask_t events) {
+
+ return currp->epending |= events;
+}
+
+/**
* @brief Returns the events mask.
* @details The pending events mask is returned but not altered in any way.
*
diff --git a/os/rt/src/chevents.c b/os/rt/src/chevents.c
index eedd240ad..4f318960a 100644
--- a/os/rt/src/chevents.c
+++ b/os/rt/src/chevents.c
@@ -180,13 +180,13 @@ eventmask_t chEvtGetAndClearEvents(eventmask_t events) {
* @api
*/
eventmask_t chEvtAddEvents(eventmask_t events) {
+ eventmask_t newevt;
chSysLock();
- currp->epending |= events;
- events = currp->epending;
+ newevt = chEvtAddEventsI(events);
chSysUnlock();
- return events;
+ return newevt;
}
/**
diff --git a/readme.txt b/readme.txt
index d0aca1ea1..57eb7a473 100644
--- a/readme.txt
+++ b/readme.txt
@@ -89,6 +89,7 @@
*****************************************************************************
*** Next ***
+- NEW: Added a new function to RT events chEvtAddEventsI().
- NEW: Integrated the latest FatFS 0.13 with patches.
- NEW: Improved RT and NIL test suite to report version numbers and
configuration settings.