summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2015-11-03 11:14:21 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2015-11-05 11:30:21 +0100
commit8dbb14d58b36fc37a4f05d11505483d30f9e6a83 (patch)
tree0b284488e10bb469115f85e5648644f6c48fb0a0
parentsapi: Add rtems_chain_get_first_unprotected() (diff)
downloadrtems-8dbb14d58b36fc37a4f05d11505483d30f9e6a83.tar.bz2
bsp/irq-server: Use proper chain API
-rw-r--r--c/src/lib/libbsp/shared/src/irq-server.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/c/src/lib/libbsp/shared/src/irq-server.c b/c/src/lib/libbsp/shared/src/irq-server.c
index 6cf22e1d7a..5e5dbf1a9d 100644
--- a/c/src/lib/libbsp/shared/src/irq-server.c
+++ b/c/src/lib/libbsp/shared/src/irq-server.c
@@ -63,7 +63,7 @@ static void bsp_interrupt_server_trigger(void *arg)
bsp_interrupt_vector_disable(e->vector);
- if (e->node.next == NULL) {
+ if (rtems_chain_is_node_off_chain(&e->node)) {
rtems_interrupt_lock_context lock_context;
rtems_interrupt_lock_acquire(&bsp_interrupt_server_lock, &lock_context);
@@ -80,13 +80,17 @@ static bsp_interrupt_server_entry *bsp_interrupt_server_get_entry(void)
{
rtems_interrupt_lock_context lock_context;
bsp_interrupt_server_entry *e;
+ rtems_chain_control *chain;
rtems_interrupt_lock_acquire(&bsp_interrupt_server_lock, &lock_context);
+ chain = &bsp_interrupt_server_chain;
- e = (bsp_interrupt_server_entry *)
- rtems_chain_get_unprotected(&bsp_interrupt_server_chain);
- if (e != NULL) {
- e->node.next = NULL;
+ if (!rtems_chain_is_empty(chain)) {
+ e = (bsp_interrupt_server_entry *)
+ rtems_chain_get_first_unprotected(chain);
+ rtems_chain_set_off_chain(&e->node);
+ } else {
+ e = NULL;
}
rtems_interrupt_lock_release(&bsp_interrupt_server_lock, &lock_context);