aboutsummaryrefslogtreecommitdiffstats
path: root/os/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'os/kernel')
-rw-r--r--os/kernel/include/chevents.h6
-rw-r--r--os/kernel/src/chevents.c8
2 files changed, 8 insertions, 6 deletions
diff --git a/os/kernel/include/chevents.h b/os/kernel/include/chevents.h
index 7550ca2b7..fd52b8de9 100644
--- a/os/kernel/include/chevents.h
+++ b/os/kernel/include/chevents.h
@@ -173,8 +173,10 @@ extern "C" {
eventmask_t chEvtAddFlags(eventmask_t mask);
void chEvtSignal(Thread *tp, eventmask_t mask);
void chEvtSignalI(Thread *tp, eventmask_t mask);
- void chEvtBroadcastFlags(EventSource *esp, eventmask_t mask);
- void chEvtBroadcastFlagsI(EventSource *esp, eventmask_t mask);
+ void chEvtBroadcastFlags(EventSource *esp, flagsmask_t flags);
+ void chEvtBroadcastFlagsI(EventSource *esp, flagsmask_t flags);
+ flagsmask_t chEvtGetAndClearFlags(EventListener *elp);
+ flagsmask_t chEvtGetAndClearFlagsI(EventListener *elp);
void chEvtDispatch(const evhandler_t *handlers, eventmask_t mask);
#if CH_OPTIMIZE_SPEED || !CH_USE_EVENTS_TIMEOUT
eventmask_t chEvtWaitOne(eventmask_t mask);
diff --git a/os/kernel/src/chevents.c b/os/kernel/src/chevents.c
index 3518b6975..bb948ab52 100644
--- a/os/kernel/src/chevents.c
+++ b/os/kernel/src/chevents.c
@@ -264,11 +264,13 @@ void chEvtBroadcastFlagsI(EventSource *esp, flagsmask_t flags) {
*
* @iclass
*/
-flagsmask_t chEvtGetAndClearFlagsI(EventListener *elp) {
+flagsmask_t chEvtGetAndClearFlags(EventListener *elp) {
flagsmask_t flags;
+ chSysLock();
flags = elp->el_flags;
elp->el_flags = 0;
+ chSysUnlock();
return flags;
}
@@ -284,13 +286,11 @@ flagsmask_t chEvtGetAndClearFlagsI(EventListener *elp) {
*
* @iclass
*/
-flagsmask_t chEvtGetAndClearFlags(EventListener *elp) {
+flagsmask_t chEvtGetAndClearFlagsI(EventListener *elp) {
flagsmask_t flags;
- chSysLock();
flags = elp->el_flags;
elp->el_flags = 0;
- chSysUnlock();
return flags;
}