aboutsummaryrefslogtreecommitdiffstats
path: root/os/kernel
diff options
context:
space:
mode:
authorgdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2012-09-16 08:34:56 +0000
committergdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2012-09-16 08:34:56 +0000
commit1824750b9fcc929d4e0cc133f9e2b08ac541db53 (patch)
tree1d99959ab5bec113db1da4eec843b5e93479f619 /os/kernel
parent5b39691e9eaa4f03b14794b824487f324aea7ca2 (diff)
downloadChibiOS-1824750b9fcc929d4e0cc133f9e2b08ac541db53.tar.gz
ChibiOS-1824750b9fcc929d4e0cc133f9e2b08ac541db53.tar.bz2
ChibiOS-1824750b9fcc929d4e0cc133f9e2b08ac541db53.zip
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@4668 35acf78f-673a-0410-8e92-d51de3d6d3f4
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;
}