From 8a43adbe47454689149bac27adc45439eab44965 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Tue, 10 Dec 2019 11:09:32 +0100 Subject: score: Add _Freechain_Extend() Update #3835. --- cpukit/score/src/freechain.c | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) (limited to 'cpukit/score') diff --git a/cpukit/score/src/freechain.c b/cpukit/score/src/freechain.c index f7da12216d..f15ce1ea4f 100644 --- a/cpukit/score/src/freechain.c +++ b/cpukit/score/src/freechain.c @@ -21,6 +21,28 @@ #include #include +void *_Freechain_Extend( + Freechain_Control *freechain, + Freechain_Allocator allocator, + size_t number_nodes_to_extend, + size_t node_size +) +{ + void *starting_address; + + starting_address = ( *allocator )( number_nodes_to_extend * node_size ); + number_nodes_to_extend *= ( starting_address != NULL ); + + _Chain_Initialize( + &freechain->Free, + starting_address, + number_nodes_to_extend, + node_size + ); + + return starting_address; +} + void *_Freechain_Get( Freechain_Control *freechain, Freechain_Allocator allocator, @@ -31,14 +53,9 @@ void *_Freechain_Get( _Assert( node_size >= sizeof( Chain_Node ) ); if ( _Chain_Is_empty( &freechain->Free ) && number_nodes_to_extend > 0 ) { - void *starting_address; - - starting_address = ( *allocator )( number_nodes_to_extend * node_size ); - number_nodes_to_extend *= ( starting_address != NULL ); - - _Chain_Initialize( - &freechain->Free, - starting_address, + _Freechain_Extend( + freechain, + allocator, number_nodes_to_extend, node_size ); -- cgit v1.2.3