[PATCH 2/2] rtems: Relax partition buffer area alignment

Gedare Bloom gedare at rtems.org
Thu Aug 2 13:58:18 UTC 2018


This makes sense. Probably there is some documentation in c-user
manual that needs tweaking.

On Thu, Aug 2, 2018 at 8:55 AM, Sebastian Huber
<sebastian.huber at embedded-brains.de> wrote:
> The partition buffer area alignment required by rtems_partition_create()
> was too strict since it was checked via _Addresses_Is_aligned() which
> uses CPU_ALIGNMENT.  The CPU_ALIGNMENT must take long double and vector
> data type alignment requirements into account.  For the partition
> maintenance only pointer alignment is required (Chain_Node, which
> consists of two pointers). The user should ensure that its partition
> buffer area is suitable for the items it wants to manage.  The user
> should not be burdened to provide buffers with the maximum architecture
> alignment, e.g. why need a 16 byte aligned buffer if you want to manage
> items with 4 byte integers only?
>
> Update #3482.
> ---
>  cpukit/rtems/src/partcreate.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/cpukit/rtems/src/partcreate.c b/cpukit/rtems/src/partcreate.c
> index c058adff1f..9484ccb1c3 100644
> --- a/cpukit/rtems/src/partcreate.c
> +++ b/cpukit/rtems/src/partcreate.c
> @@ -68,8 +68,8 @@ rtems_status_code rtems_partition_create(
>           !_Partition_Is_buffer_size_aligned( buffer_size ) )
>      return RTEMS_INVALID_SIZE;
>
> -  if ( !_Addresses_Is_aligned( starting_address ) )
> -     return RTEMS_INVALID_ADDRESS;
> +  if ( !_Partition_Is_buffer_area_aligned( starting_address ) )
> +    return RTEMS_INVALID_ADDRESS;
>
>  #if defined(RTEMS_MULTIPROCESSING)
>    if ( _Attributes_Is_global( attribute_set ) &&
> --
> 2.13.7
>
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel


More information about the devel mailing list