summaryrefslogtreecommitdiffstats
path: root/freebsd/sys/sys
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2018-07-26 14:12:46 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2018-07-26 14:12:46 +0200
commit6d9d7b195621ffda676eda0154ebb8ee24dc3186 (patch)
treeffec06408cf1edbf84b9fcee7e8262388dbafab0 /freebsd/sys/sys
parentselectpollkqueue01: Invalidate file descriptor (diff)
downloadrtems-libbsd-6d9d7b195621ffda676eda0154ebb8ee24dc3186.tar.bz2
Critical bug fix for callouts
FreeBSD has two callout executors, one in software and one in hardware interrupt context. In libbsd, all callouts are executed by the timer server. Entirely remove the different execution contexts for libbsd. Previously, this was not properly done which could result an invalid callout_drain() sequence leading to system memory corruption.
Diffstat (limited to 'freebsd/sys/sys')
-rw-r--r--freebsd/sys/sys/callout.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/freebsd/sys/sys/callout.h b/freebsd/sys/sys/callout.h
index b219052f..eee68843 100644
--- a/freebsd/sys/sys/callout.h
+++ b/freebsd/sys/sys/callout.h
@@ -48,7 +48,9 @@
#define CALLOUT_SHAREDLOCK 0x0020 /* callout lock held in shared mode */
#define CALLOUT_DFRMIGRATION 0x0040 /* callout in deferred migration mode */
#define CALLOUT_PROCESSED 0x0080 /* callout in wheel or processing list? */
+#ifndef __rtems__
#define CALLOUT_DIRECT 0x0100 /* allow exec from hw int context */
+#endif /* __rtems__ */
#define C_DIRECT_EXEC 0x0001 /* direct execution of callout */
#define C_PRELBITS 7