summaryrefslogtreecommitdiffstats
path: root/libbsd.txt
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2012-04-16 12:43:49 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2012-04-16 12:43:49 +0200
commit362782eb25245ee29d97a30f882e1886194c3dd0 (patch)
tree47ea666ae997ae5e804b4489a156291222af4094 /libbsd.txt
parentElaborate RTEMS libbsd initialization (diff)
downloadrtems-libbsd-362782eb25245ee29d97a30f882e1886194c3dd0.tar.bz2
Explain why we need the interrupt server
Diffstat (limited to 'libbsd.txt')
-rw-r--r--libbsd.txt14
1 files changed, 13 insertions, 1 deletions
diff --git a/libbsd.txt b/libbsd.txt
index 178a0fa6..3e87a9ab 100644
--- a/libbsd.txt
+++ b/libbsd.txt
@@ -67,7 +67,7 @@ The SVN checkout command is this
* How does one initialize the TCP/IP stack?
* linker section issues: I have undefined symbols for
- _bsd__start_set_sysinit_set and _bsd__stop_set_sysinit_set.
+ `_bsd__start_set_sysinit_set` and `_bsd__stop_set_sysinit_set`.
Is this the only type of new section magic? What about the old sysctl_set?
I added this to my linkcmds.
@@ -81,6 +81,18 @@ The SVN checkout command is this
----
+* Why is the interrupt server used? The BSD interrupt handlers can block on
+synchronization primitives like mutexes. This is in contrast to RTEMS
+interrupt service routines. The BSPs using the generic interrupt support must
+implement the `bsp_interrupt_vector_enable()` and
+`bsp_interrupt_vector_disable()` routines. They normally enable/disable a
+particular interrupt source at the interrupt controller. This can be used to
+implement the interrupt server. The interrupt server is a task that wakes-up
+in case an associated interrupt happens. The interrupt source is disabled in
+a generic interrupt handler that wakes-up the interrupt server task. Once the
+postponed interrupt processing is performed in the interrupt server the
+interrupt source is enabled again.
+
* Convert all BSP linkcmds to use a linkcmds.base so the sections are
easier to insert.