[PATCH] Change license to BSD-2

Richi Dubey richidubey at gmail.com
Wed Aug 26 20:30:55 UTC 2020


Hi,

This patch is for sweeping the changes for the doxygen documentation.

Thanks,
Richi.

On Thu, Aug 27, 2020 at 1:56 AM Richi Dubey <richidubey at gmail.com> wrote:

> ---
>  .../include/rtems/score/schedulerstrongapa.h  | 153 ++++++++++++++----
>  1 file changed, 118 insertions(+), 35 deletions(-)
>
> diff --git a/cpukit/include/rtems/score/schedulerstrongapa.h
> b/cpukit/include/rtems/score/schedulerstrongapa.h
> index 0ac28cb439..9354acb052 100644
> --- a/cpukit/include/rtems/score/schedulerstrongapa.h
> +++ b/cpukit/include/rtems/score/schedulerstrongapa.h
> @@ -5,32 +5,47 @@
>   *
>   * @brief Strong APA Scheduler API
>   */
> -
> -/*
> - * Copyright (c) 2013, 2018 embedded brains GmbH.  All rights reserved.
> +
> +/* SPDX-License-Identifier: BSD-2-Clause
> + *
> + * Copyright (c) 2013, 2018 embedded brains GmbH
>   *
> - *  embedded brains GmbH
> - *  Dornierstr. 4
> - *  82178 Puchheim
> - *  Germany
> - *  <rtems at embedded-brains.de>
> + * Redistribution and use in source and binary forms, with or without
> + * modification, are permitted provided that the following conditions
> + * are met:
> + * 1. Redistributions of source code must retain the above copyright
> + *    notice, this list of conditions and the following disclaimer.
> + * 2. Redistributions in binary form must reproduce the above copyright
> + *    notice, this list of conditions and the following disclaimer in the
> + *    documentation and/or other materials provided with the distribution.
>   *
> - * 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.
> + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
> "AS IS"
> + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
> THE
> + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
> PURPOSE
> + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
> BE
> + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
> + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
> + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
> BUSINESS
> + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
> + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
> + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
> THE
> + * POSSIBILITY OF SUCH DAMAGE.
>   */
>
>  #ifndef _RTEMS_SCORE_SCHEDULERSTRONGAPA_H
>  #define _RTEMS_SCORE_SCHEDULERSTRONGAPA_H
>
>  #include <rtems/score/scheduler.h>
> -#include <rtems/score/schedulerpriority.h>
>  #include <rtems/score/schedulersmp.h>
> +#include <rtems/score/percpu.h>
>
>  #ifdef __cplusplus
>  extern "C" {
>  #endif /* __cplusplus */
>
> +#define STRONG_SCHEDULER_NODE_OF_CHAIN( node ) \
> +  RTEMS_CONTAINER_OF( node, Scheduler_strong_APA_Node, Ready_node )
> +
>  /**
>   * @defgroup RTEMSScoreSchedulerStrongAPA Strong APA Scheduler
>   *
> @@ -38,43 +53,97 @@ extern "C" {
>   *
>   * @brief Strong APA Scheduler
>   *
> - * This is an implementation of the global fixed priority scheduler
> (G-FP).  It
> - * uses one ready chain per priority to ensure constant time insert
> operations.
> - * The scheduled chain uses linear insert operations and has at most
> processor
> - * count entries.  Since the processor and priority count are constants
> all
> - * scheduler operations complete in a bounded execution time.
> - *
> - * The the_thread preempt mode will be ignored.
> + * This is an implementation of the Strong APA scheduler defined by
> + * Cerqueira et al. in Linux's Processor Affinity API, Refined:
> + * Shifting Real-Time Tasks Towards Higher Schedulability.
>   *
> + * The scheduled and ready nodes are accessed via the
> + * Scheduler_strong_APA_Context::Ready which helps in backtracking when a
> + * node which is executing on a CPU gets blocked. New node is allocated to
> + * the cpu by checking all the executing nodes in the affinity set of the
> + * node and the subsequent nodes executing on the processors in its
> + * affinity set.
>   * @{
>   */
>
>  /**
> - * @brief Scheduler context specialization for Strong APA
> - * schedulers.
> - */
> -typedef struct {
> -  Scheduler_SMP_Context    Base;
> -  Priority_bit_map_Control Bit_map;
> -  Chain_Control            Ready[ RTEMS_ZERO_LENGTH_ARRAY ];
> -} Scheduler_strong_APA_Context;
> -
> -/**
> - * @brief Scheduler node specialization for Strong APA
> - * schedulers.
> + * @brief Scheduler node specialization for Strong APA schedulers.
>   */
>  typedef struct {
>    /**
>     * @brief SMP scheduler node.
>     */
>    Scheduler_SMP_Node Base;
> +
> + /**
> +   * @brief Chain node for Scheduler_strong_APA_Context::Ready.
> +   */
> +  Chain_Node Ready_node;
> +
> +  /**
> +   * @brief CPU that this node would preempt in the backtracking part of
> +   * _Scheduler_strong_APA_Get_highest_ready and
> +   * _Scheduler_strong_APA_Do_Enqueue.
> +   */
> +  Per_CPU_Control *cpu_to_preempt;
>
>    /**
> -   * @brief The associated ready queue of this node.
> +   * @brief The associated affinity set of this node.
>     */
> -  Scheduler_priority_Ready_queue Ready_queue;
> +  Processor_mask Affinity;
>  } Scheduler_strong_APA_Node;
>
> +
> +/**
> + * @brief CPU related variables and a CPU_Control to implement BFS.
> + */
> +typedef struct
> +{
> +   /**
> +   * @brief CPU in a queue.
> +   */
> +  Per_CPU_Control *cpu;
> +
> +  /**
> +   * @brief The node that would preempt this CPU.
> +   */
> +  Scheduler_Node *preempting_node;
> +
> +   /**
> +   * @brief Whether or not this cpu has been added to the queue
> +   * (visited in BFS).
> +   */
> +  bool visited;
> +
> +  /**
> +   * @brief The node currently executing on this cpu
> +   */
> +   Scheduler_Node *executing;
> +} Scheduler_strong_APA_CPU;
> +
> + /**
> + * @brief Scheduler context and node definition for Strong APA scheduler.
> + */
> +typedef struct {
> + /**
> +   * @brief @see Scheduler_SMP_Context.
> +   */
> +  Scheduler_SMP_Context Base;
> +
> +  /**
> +   * @brief Chain of all the ready and scheduled nodes present in
> +   * the Strong APA scheduler.
> +   */
> +  Chain_Control Ready;
> +
> +  /**
> +   * @brief Struct with important variables for each cpu.
> +   */
> +  Scheduler_strong_APA_CPU CPU[ RTEMS_ZERO_LENGTH_ARRAY ];
> +} Scheduler_strong_APA_Context;
> +
> +#define SCHEDULER_STRONG_APA_MAXIMUM_PRIORITY 255
> +
>  /**
>   * @brief Entry points for the Strong APA Scheduler.
>   */
> @@ -100,8 +169,8 @@ typedef struct {
>      _Scheduler_default_Release_job, \
>      _Scheduler_default_Cancel_job, \
>      _Scheduler_default_Tick, \
> -    _Scheduler_SMP_Start_idle \
> -    SCHEDULER_OPERATION_DEFAULT_GET_SET_AFFINITY \
> +    _Scheduler_SMP_Start_idle, \
> +    _Scheduler_strong_APA_Set_affinity \
>    }
>
>  /**
> @@ -246,6 +315,20 @@ void _Scheduler_strong_APA_Yield(
>    Scheduler_Node          *node
>  );
>
> +/**
> + * @brief Sets the affinity .
> + *
> + * @param scheduler The scheduler control instance.
> + * @param the_thread The thread to yield.
> + * @param[in, out] node The node of @a the_thread.
> + */
> +bool _Scheduler_strong_APA_Set_affinity(
> +  const Scheduler_Control *scheduler,
> +  Thread_Control          *thread,
> +  Scheduler_Node          *node_base,
> +  const Processor_mask    *affinity
> +);
> +
>  /** @} */
>
>  #ifdef __cplusplus
> --
> 2.17.1
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/devel/attachments/20200827/67eb764c/attachment.html>


More information about the devel mailing list