forked from Imagelibrary/rtems
@@ -79,6 +79,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.
|
* @brief Gets a node from the freechain.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -30,12 +30,13 @@ static rtems_task Init(rtems_task_argument ignored)
|
|||||||
TEST_BEGIN();
|
TEST_BEGIN();
|
||||||
|
|
||||||
_Freechain_Initialize(&fc, &node2, 1, sizeof(node2));
|
_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_Node_count_unprotected(&fc.Free) == 1);
|
||||||
rtems_test_assert(_Chain_First(&fc.Free) == &node2.Node);
|
rtems_test_assert(_Chain_First(&fc.Free) == &node2.Node);
|
||||||
rtems_test_assert(_Chain_Last(&fc.Free) == &node2.Node);
|
rtems_test_assert(_Chain_Last(&fc.Free) == &node2.Node);
|
||||||
|
|
||||||
_Freechain_Initialize(&fc, NULL, 0, sizeof(test_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);
|
rtems_test_assert(_Freechain_Get(&fc, NULL, 0, sizeof(test_node)) == NULL);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user