score: Add _Workspace_Allocate_aligned()

This commit is contained in:
Sebastian Huber
2014-01-28 11:32:35 +01:00
parent fe535885e6
commit a850d040ab
5 changed files with 34 additions and 0 deletions

View File

@@ -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.
*

View File

@@ -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
*/

View File

@@ -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 );
}

View File

@@ -15,6 +15,8 @@ directives:
rtems_workspace_get_information
rtems_workspace_allocate
rtems_workspace_free
_Workspace_String_duplicate
_Workspace_Allocate_aligned
concepts:

View File

@@ -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 ***