diff options
author | Chris Johns <chrisj@rtems.org> | 2014-10-26 18:09:41 -0700 |
---|---|---|
committer | Chris Johns <chrisj@rtems.org> | 2014-10-31 11:04:15 +1100 |
commit | ae5fe7e6bca2874c5f1ef077204bb63124fb3db3 (patch) | |
tree | 90a6e9e7b414ed3713011267b1fee404b5f6093f /cpukit/libdl/rtl-chain-iterator.c | |
parent | Added missing stm32f4xxxx_adc.h (diff) | |
download | rtems-ae5fe7e6bca2874c5f1ef077204bb63124fb3db3.tar.bz2 |
cpukit: Add libdl with the Runtime Loader (RTL) code.
This is a merge of the RTL project.
Diffstat (limited to 'cpukit/libdl/rtl-chain-iterator.c')
-rw-r--r-- | cpukit/libdl/rtl-chain-iterator.c | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/cpukit/libdl/rtl-chain-iterator.c b/cpukit/libdl/rtl-chain-iterator.c new file mode 100644 index 0000000000..39184ee513 --- /dev/null +++ b/cpukit/libdl/rtl-chain-iterator.c @@ -0,0 +1,57 @@ +/* + * COPYRIGHT (c) 2012 Chris Johns <chrisj@rtems.org> + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + */ +/** + * @file + * + * @ingroup rtems_rtld + * + * @brief RTEMS Run-Time Link Editor Chain Iterator + * + * A means of executing an iterator on a chain. + */ + +#if HAVE_CONFIG_H +#include "config.h" +#endif + +#include "rtl-chain-iterator.h" + +bool +rtems_rtl_chain_iterate (rtems_chain_control* chain, + rtems_chain_iterator iterator, + void* data) +{ + rtems_chain_node* node = rtems_chain_first (chain); + while (!rtems_chain_is_tail (chain, node)) + { + rtems_chain_node* next_node = rtems_chain_next (node); + if (!iterator (node, data)) + return false; + node = next_node; + } + return true; +} + +/** + * Count iterator. + */ +static bool +rtems_rtl_count_iterator (rtems_chain_node* node, void* data) +{ + int* count = data; + ++(*count); + return true; +} + +int +rtems_rtl_chain_count (rtems_chain_control* chain) +{ + int count = 0; + rtems_rtl_chain_iterate (chain, rtems_rtl_count_iterator, &count); + return count; +} |