diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2015-11-03 11:14:21 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2015-11-05 11:30:21 +0100 |
commit | 8dbb14d58b36fc37a4f05d11505483d30f9e6a83 (patch) | |
tree | 0b284488e10bb469115f85e5648644f6c48fb0a0 | |
parent | sapi: Add rtems_chain_get_first_unprotected() (diff) | |
download | rtems-8dbb14d58b36fc37a4f05d11505483d30f9e6a83.tar.bz2 |
bsp/irq-server: Use proper chain API
Diffstat (limited to '')
-rw-r--r-- | c/src/lib/libbsp/shared/src/irq-server.c | 14 |
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); |