diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2022-07-13 15:14:47 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2022-07-18 09:36:09 +0200 |
commit | fc7584d71940e4bfda3efcecd1a744bcab6f40a1 (patch) | |
tree | 21695a26dc9b014490c7212daf7ee02fcb4a40d0 | |
parent | Synchronize all file descriptors in sync() (diff) | |
download | rtems-fc7584d71940e4bfda3efcecd1a744bcab6f40a1.tar.bz2 |
score: Fix _Objects_Active_count()
With unlimited objects the object maximum may be larger than the sum of active
and inactive objects.
Update #4676.
-rw-r--r-- | cpukit/score/src/objectactivecount.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/cpukit/score/src/objectactivecount.c b/cpukit/score/src/objectactivecount.c index c658fc21e3..12c15147c7 100644 --- a/cpukit/score/src/objectactivecount.c +++ b/cpukit/score/src/objectactivecount.c @@ -24,14 +24,22 @@ Objects_Maximum _Objects_Active_count( const Objects_Information *information ) { - Objects_Maximum inactive; - Objects_Maximum maximum; + Objects_Maximum active; + Objects_Maximum index; + Objects_Maximum maximum; + Objects_Control **local_table; _Assert( _Objects_Allocator_is_owner() ); - inactive = (Objects_Maximum) - _Chain_Node_count_unprotected( &information->Inactive ); + active = 0; maximum = _Objects_Get_maximum_index( information ); + local_table = information->local_table; - return maximum - inactive; + for ( index = 0; index < maximum; ++index ) { + if ( local_table[ index ] != NULL ) { + ++active; + } + } + + return active; } |