mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2026-02-05 05:01:38 +00:00
score: Add _Workspace_Allocate_aligned()
This commit is contained in:
@@ -71,6 +71,17 @@ void *_Workspace_Allocate(
|
||||
size_t size
|
||||
);
|
||||
|
||||
/**
|
||||
* @brief Allocate aligned memory from workspace.
|
||||
*
|
||||
* @param[in] size The size of the requested memory.
|
||||
* @param[in] alignment The alignment of the requested memory.
|
||||
*
|
||||
* @retval NULL Not enough resources.
|
||||
* @retval other The memory area begin.
|
||||
*/
|
||||
void *_Workspace_Allocate_aligned( size_t size, size_t alignment );
|
||||
|
||||
/**
|
||||
* @brief Free memory to the workspace.
|
||||
*
|
||||
|
||||
@@ -114,6 +114,11 @@ void *_Workspace_Allocate(
|
||||
return memory;
|
||||
}
|
||||
|
||||
void *_Workspace_Allocate_aligned( size_t size, size_t alignment )
|
||||
{
|
||||
return _Heap_Allocate_aligned( &_Workspace_Area, size, alignment );
|
||||
}
|
||||
|
||||
/*
|
||||
* _Workspace_Free
|
||||
*/
|
||||
|
||||
@@ -54,6 +54,17 @@ static void test_workspace_string_duplicate(void)
|
||||
_Workspace_Free( dup_e );
|
||||
}
|
||||
|
||||
static void test_workspace_allocate_aligned(void)
|
||||
{
|
||||
uintptr_t align = 512;
|
||||
void *p = _Workspace_Allocate_aligned( 1, align );
|
||||
|
||||
rtems_test_assert( p != NULL );
|
||||
rtems_test_assert( ((uintptr_t) p & (align - 1)) == 0 );
|
||||
|
||||
_Workspace_Free( p );
|
||||
}
|
||||
|
||||
rtems_task Init(
|
||||
rtems_task_argument argument
|
||||
)
|
||||
@@ -100,6 +111,9 @@ rtems_task Init(
|
||||
puts( "_Workspace_String_duplicate - samples" );
|
||||
test_workspace_string_duplicate();
|
||||
|
||||
puts( "_Workspace_Allocate_aligned" );
|
||||
test_workspace_allocate_aligned();
|
||||
|
||||
puts( "*** END OF TEST WORKSPACE CLASSIC API ***" );
|
||||
rtems_test_exit( 0 );
|
||||
}
|
||||
|
||||
@@ -15,6 +15,8 @@ directives:
|
||||
rtems_workspace_get_information
|
||||
rtems_workspace_allocate
|
||||
rtems_workspace_free
|
||||
_Workspace_String_duplicate
|
||||
_Workspace_Allocate_aligned
|
||||
|
||||
concepts:
|
||||
|
||||
|
||||
@@ -7,4 +7,6 @@ rtems_workspace_allocate - too many bytes
|
||||
rtems_workspace_allocate - 42 bytes
|
||||
rtems_workspace_free - NULL
|
||||
rtems_workspace_free - previous pointer to 42 bytes
|
||||
_Workspace_String_duplicate - samples
|
||||
_Workspace_Allocate_aligned
|
||||
*** END OF TEST WORKSPACE CLASSIC API ***
|
||||
|
||||
Reference in New Issue
Block a user