[PATCH 2/8] score: Add Processor_mask, etc.
Joel Sherrill
joel at rtems.org
Thu Mar 3 15:18:58 UTC 2016
OK. Makes sense based on what appears to be coming.
On Thu, Mar 3, 2016 at 8:47 AM, Sebastian Huber <
sebastian.huber at embedded-brains.de> wrote:
> ---
> cpukit/score/Makefile.am | 1 +
> cpukit/score/include/rtems/score/processormask.h | 90
> ++++++++++++++++++++++++
> cpukit/score/preinstall.am | 4 ++
> 3 files changed, 95 insertions(+)
> create mode 100644 cpukit/score/include/rtems/score/processormask.h
>
> diff --git a/cpukit/score/Makefile.am b/cpukit/score/Makefile.am
> index 8506f22..3d3f1c1 100644
> --- a/cpukit/score/Makefile.am
> +++ b/cpukit/score/Makefile.am
> @@ -61,6 +61,7 @@ include_rtems_score_HEADERS +=
> include/rtems/score/priority.h
> include_rtems_score_HEADERS += include/rtems/score/prioritybitmap.h
> include_rtems_score_HEADERS += include/rtems/score/prioritybitmapimpl.h
> include_rtems_score_HEADERS += include/rtems/score/profiling.h
> +include_rtems_score_HEADERS += include/rtems/score/processormask.h
> include_rtems_score_HEADERS += include/rtems/score/rbtree.h
> include_rtems_score_HEADERS += include/rtems/score/rbtreeimpl.h
> include_rtems_score_HEADERS += include/rtems/score/resource.h
> diff --git a/cpukit/score/include/rtems/score/processormask.h
> b/cpukit/score/include/rtems/score/processormask.h
> new file mode 100644
> index 0000000..5a78dd3
> --- /dev/null
> +++ b/cpukit/score/include/rtems/score/processormask.h
> @@ -0,0 +1,90 @@
> +/**
> + * @file
> + *
> + * @brief Processor Mask API
> + *
> + * @ingroup ScoreProcessorMask
> + */
> +
> +/*
> + * Copyright (c) 2016 embedded brains GmbH. All rights reserved.
> + *
> + * embedded brains GmbH
> + * Dornierstr. 4
> + * 82178 Puchheim
> + * Germany
> + * <rtems at embedded-brains.de>
> + *
> + * The license and distribution terms for this file may be
> + * found in the file LICENSE in this distribution or at
> + * http://www.rtems.org/license/LICENSE.
> + */
> +
> +#ifndef _RTEMS_SCORE_PROCESSORMASK_H
> +#define _RTEMS_SCORE_PROCESSORMASK_H
> +
> +#include <rtems/score/cpu.h>
> +
> +#ifdef __cplusplus
> +extern "C" {
> +#endif /* __cplusplus */
> +
> +/**
> + * @defgroup ScoreProcessorMask Processor Mask
> + *
> + * @ingroup Score
> + *
> + * The processor mask provides a bit map large enough to provide one bit
> for
> + * each processor in the system. It is a fixed size internal data type
> + * provided for efficiency in addition to the API level cpu_set_t.
> + *
> + * @{
> + */
> +
> +#define PROCESSOR_MASK_BITS_PER_FIELD 32
> +
> +#define PROCESSOR_MASK_FIELD_COUNT \
> + ( ( CPU_MAXIMUM_PROCESSORS + PROCESSOR_MASK_BITS_PER_FIELD - 1 ) \
> + / PROCESSOR_MASK_BITS_PER_FIELD )
> +
> +#define PROCESSOR_MASK_BIT( index ) \
> + (1UL << ( ( index ) % PROCESSOR_MASK_BITS_PER_FIELD ) )
> +
> +#define PROCESSOR_MASK_FIELD( index ) \
> + ( ( index ) / PROCESSOR_MASK_BITS_PER_FIELD )
> +
> +/**
> + * @brief A bit map consisting of 32-bit integer fields which is large
> enough
> + * to provide one bit for each processor in the system.
> + *
> + * Processor 0 corresponds to the bit 0 (least-significant) of the field
> 0 in
> + * the array, and so on.
> + */
> +typedef uint32_t Processor_mask[ PROCESSOR_MASK_FIELD_COUNT ];
> +
> +RTEMS_INLINE_ROUTINE void _Processor_mask_Set( Processor_mask mask,
> uint32_t index )
> +{
> + mask[ PROCESSOR_MASK_FIELD( index ) ] |= PROCESSOR_MASK_BIT( index );
> +}
> +
> +RTEMS_INLINE_ROUTINE void _Processor_mask_Clear( Processor_mask mask,
> uint32_t index )
> +{
> + mask[ PROCESSOR_MASK_FIELD( index ) ] &= ~PROCESSOR_MASK_BIT( index );
> +}
> +
> +RTEMS_INLINE_ROUTINE bool _Processor_mask_Is_set(
> + const Processor_mask mask,
> + uint32_t index
> +)
> +{
> + return ( mask[ PROCESSOR_MASK_FIELD( index ) ]
> + & PROCESSOR_MASK_BIT( index ) ) != 0;
> +}
> +
> +/** @} */
> +
> +#ifdef __cplusplus
> +}
> +#endif /* __cplusplus */
> +
> +#endif /* _RTEMS_SCORE_PROCESSORMASK_H */
> diff --git a/cpukit/score/preinstall.am b/cpukit/score/preinstall.am
> index 0d9cade..3a70bfa 100644
> --- a/cpukit/score/preinstall.am
> +++ b/cpukit/score/preinstall.am
> @@ -212,6 +212,10 @@ $(PROJECT_INCLUDE)/rtems/score/profiling.h:
> include/rtems/score/profiling.h $(PR
> $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/score/profiling.h
> PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/score/profiling.h
>
> +$(PROJECT_INCLUDE)/rtems/score/processormask.h:
> include/rtems/score/processormask.h
> $(PROJECT_INCLUDE)/rtems/score/$(dirstamp)
> + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/score/processormask.h
> +PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/score/processormask.h
> +
> $(PROJECT_INCLUDE)/rtems/score/rbtree.h: include/rtems/score/rbtree.h
> $(PROJECT_INCLUDE)/rtems/score/$(dirstamp)
> $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/score/rbtree.h
> PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/score/rbtree.h
> --
> 1.8.4.5
>
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/devel/attachments/20160303/d0f65ae2/attachment-0002.html>
More information about the devel
mailing list