diff options
-rw-r--r-- | cpukit/include/rtems/score/freechain.h | 12 | ||||
-rw-r--r-- | testsuites/sptests/spfreechain01/init.c | 3 |
2 files changed, 14 insertions, 1 deletions
diff --git a/cpukit/include/rtems/score/freechain.h b/cpukit/include/rtems/score/freechain.h index e65eba1448..bbae0b65bb 100644 --- a/cpukit/include/rtems/score/freechain.h +++ b/cpukit/include/rtems/score/freechain.h @@ -80,6 +80,18 @@ RTEMS_INLINE_ROUTINE void _Freechain_Initialize( } /** + * @brief Return true if the freechain is empty, otherwise false + * + * @param freechain The freechain control. + */ +RTEMS_INLINE_ROUTINE bool _Freechain_Is_empty( + const Freechain_Control *freechain +) +{ + return _Chain_Is_empty( &freechain->Free ); +} + +/** * @brief Gets a node from the freechain. * * @param[in, out] freechain The freechain control. diff --git a/testsuites/sptests/spfreechain01/init.c b/testsuites/sptests/spfreechain01/init.c index 22730793a4..370bfb41eb 100644 --- a/testsuites/sptests/spfreechain01/init.c +++ b/testsuites/sptests/spfreechain01/init.c @@ -30,12 +30,13 @@ static rtems_task Init(rtems_task_argument ignored) TEST_BEGIN(); _Freechain_Initialize(&fc, &node2, 1, sizeof(node2)); + rtems_test_assert(!_Freechain_Is_empty(&fc)); rtems_test_assert(_Chain_Node_count_unprotected(&fc.Free) == 1); rtems_test_assert(_Chain_First(&fc.Free) == &node2.Node); rtems_test_assert(_Chain_Last(&fc.Free) == &node2.Node); _Freechain_Initialize(&fc, NULL, 0, sizeof(test_node)); - rtems_test_assert(_Chain_Is_empty(&fc.Free)); + rtems_test_assert(_Freechain_Is_empty(&fc)); rtems_test_assert(_Freechain_Get(&fc, NULL, 0, sizeof(test_node)) == NULL); |