diff options
Diffstat (limited to 'os/kernel')
-rw-r--r-- | os/kernel/include/chevents.h | 6 | ||||
-rw-r--r-- | os/kernel/src/chevents.c | 8 |
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;
}
|