[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