diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-10-31 13:37:59 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-11-02 08:46:47 +0100 |
commit | d271c3bb78f86dd9417a964b019b8e38911064fa (patch) | |
tree | 3c36b87c580464cc7f1e5aec89e1137a68759da3 /cpukit/score/src/threaditerate.c | |
parent | posix: Fix timer interval (diff) | |
download | rtems-d271c3bb78f86dd9417a964b019b8e38911064fa.tar.bz2 |
rtems: Add rtems_task_iterate()
Update #2423.
Diffstat (limited to 'cpukit/score/src/threaditerate.c')
-rw-r--r-- | cpukit/score/src/threaditerate.c | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/cpukit/score/src/threaditerate.c b/cpukit/score/src/threaditerate.c new file mode 100644 index 0000000000..0f9a1bef44 --- /dev/null +++ b/cpukit/score/src/threaditerate.c @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2016 embedded brains GmbH. All rights reserved. + * + * embedded brains GmbH + * Dornierstr. 4 + * 82178 Puchheim + * Germany + * <rtems@embedded-brains.de> + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.org/license/LICENSE. + */ + +#if HAVE_CONFIG_H +#include "config.h" +#endif + +#include <rtems/score/threadimpl.h> + +void _Thread_Iterate( + Thread_Visitor visitor, + void *arg +) +{ + int api_index; + + for ( api_index = 1 ; api_index <= OBJECTS_APIS_LAST ; ++api_index ) { + const Objects_Information *information; + Objects_Maximum i; + +#if !defined(RTEMS_POSIX_API) + if ( _Objects_Information_table[ api_index ] == NULL ) { + continue; + } +#endif + + information = _Objects_Information_table[ api_index ][ 1 ]; + + if ( information == NULL ) { + continue; + } + + for ( i = 1 ; i <= information->maximum ; ++i ) { + Thread_Control *the_thread; + + the_thread = (Thread_Control *) information->local_table[ i ]; + + if ( the_thread != NULL ) { + bool done; + + done = (* visitor )( the_thread, arg ); + + if ( done ) { + return; + } + } + } + } +} |