Split up rbtreenext.c since only _RBTree_Minimum() is used by the operating system core services (thread queues and the EDF scheduler).
Change license to BSD-2-Clause according to file history and re-licensing agreement. Update #3053. --- cpukit/Makefile.am | 3 ++ cpukit/score/src/rbtreemax.c | 55 +++++++++++++++++++++++++++++++ cpukit/score/src/rbtreemin.c | 55 +++++++++++++++++++++++++++++++ cpukit/score/src/rbtreenext.c | 48 +++++++++++---------------- cpukit/score/src/rbtreeprev.c | 47 ++++++++++++++++++++++++++ spec/build/cpukit/librtemscpu.yml | 3 ++ 6 files changed, 183 insertions(+), 28 deletions(-) create mode 100644 cpukit/score/src/rbtreemax.c create mode 100644 cpukit/score/src/rbtreemin.c create mode 100644 cpukit/score/src/rbtreeprev.c diff --git a/cpukit/Makefile.am b/cpukit/Makefile.am index a883941c9a..35de56615d 100644 --- a/cpukit/Makefile.am +++ b/cpukit/Makefile.am @@ -952,8 +952,11 @@ librtemscpu_a_SOURCES += score/src/freechain.c librtemscpu_a_SOURCES += score/src/rbtreeextract.c librtemscpu_a_SOURCES += score/src/rbtreeinsert.c librtemscpu_a_SOURCES += score/src/rbtreeiterate.c +librtemscpu_a_SOURCES += score/src/rbtreemax.c +librtemscpu_a_SOURCES += score/src/rbtreemin.c librtemscpu_a_SOURCES += score/src/rbtreenext.c librtemscpu_a_SOURCES += score/src/rbtreepostorder.c +librtemscpu_a_SOURCES += score/src/rbtreeprev.c librtemscpu_a_SOURCES += score/src/rbtreereplace.c librtemscpu_a_SOURCES += score/src/threadallocateunlimited.c librtemscpu_a_SOURCES += score/src/thread.c diff --git a/cpukit/score/src/rbtreemax.c b/cpukit/score/src/rbtreemax.c new file mode 100644 index 0000000000..1b0e463aa2 --- /dev/null +++ b/cpukit/score/src/rbtreemax.c @@ -0,0 +1,55 @@ +/** + * @file + * + * @ingroup RTEMSScoreRBTree + * + * @brief This source file contains the implementation of + * _RBTree_Maximum(). + */ + +/* + * Copyright (C) 2021 embedded brains GmbH (http://www.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. + * + * 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. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <rtems/score/rbtreeimpl.h> + +RBTree_Node *_RBTree_Maximum( const RBTree_Control *tree ) +{ + RBTree_Node *parent; + RBTree_Node *node; + + parent = NULL; + node = _RBTree_Root( tree ); + + while ( node != NULL ) { + parent = node; + node = _RBTree_Right( node ); + } + + return parent; +} diff --git a/cpukit/score/src/rbtreemin.c b/cpukit/score/src/rbtreemin.c new file mode 100644 index 0000000000..b3cd4331c1 --- /dev/null +++ b/cpukit/score/src/rbtreemin.c @@ -0,0 +1,55 @@ +/** + * @file + * + * @ingroup RTEMSScoreRBTree + * + * @brief This source file contains the implementation of + * _RBTree_Minimum(). + */ + +/* + * Copyright (C) 2021 embedded brains GmbH (http://www.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. + * + * 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. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <rtems/score/rbtreeimpl.h> + +RBTree_Node *_RBTree_Minimum( const RBTree_Control *tree ) +{ + RBTree_Node *parent; + RBTree_Node *node; + + parent = NULL; + node = _RBTree_Root( tree ); + + while ( node != NULL ) { + parent = node; + node = _RBTree_Left( node ); + } + + return parent; +} diff --git a/cpukit/score/src/rbtreenext.c b/cpukit/score/src/rbtreenext.c index 32087955fe..5d43af0068 100644 --- a/cpukit/score/src/rbtreenext.c +++ b/cpukit/score/src/rbtreenext.c @@ -9,17 +9,28 @@ */ /* - * Copyright (c) 2012 embedded brains GmbH. All rights reserved. + * Copyright (C) 2012 embedded brains GmbH (http://www.embedded-brains.de) * - * embedded brains GmbH - * Obere Lagerstr. 30 - * 82178 Puchheim - * Germany - * <rt...@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. */ #ifdef HAVE_CONFIG_H @@ -29,28 +40,9 @@ #include <rtems/score/rbtreeimpl.h> #include <rtems/score/basedefs.h> -RB_GENERATE_MINMAX( RBTree_Control, RBTree_Node, Node, static ) - RB_GENERATE_NEXT( RBTree_Control, RBTree_Node, Node, static ) -RB_GENERATE_PREV( RBTree_Control, RBTree_Node, Node, static ) - -RBTree_Node *_RBTree_Minimum( const RBTree_Control *tree ) -{ - return RB_MIN( RBTree_Control, RTEMS_DECONST( RBTree_Control *, tree ) ); -} - -RBTree_Node *_RBTree_Maximum( const RBTree_Control *tree ) -{ - return RB_MAX( RBTree_Control, RTEMS_DECONST( RBTree_Control *, tree ) ); -} - RBTree_Node *_RBTree_Successor( const RBTree_Node *node ) { return RB_NEXT( RBTree_Control, NULL, RTEMS_DECONST( RBTree_Node *, node ) ); } - -RBTree_Node *_RBTree_Predecessor( const RBTree_Node *node ) -{ - return RB_PREV( RBTree_Control, NULL, RTEMS_DECONST( RBTree_Node *, node ) ); -} diff --git a/cpukit/score/src/rbtreeprev.c b/cpukit/score/src/rbtreeprev.c new file mode 100644 index 0000000000..9869cade99 --- /dev/null +++ b/cpukit/score/src/rbtreeprev.c @@ -0,0 +1,47 @@ +/** + * @file + * + * @ingroup RTEMSScoreRBTree + * + * @brief This source file contains the implementation of + * _RBTree_Predecessor(). + */ + +/* + * Copyright (C) 2012 embedded brains GmbH (http://www.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. + * + * 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. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <rtems/score/rbtreeimpl.h> +#include <rtems/score/basedefs.h> + +RB_GENERATE_PREV( RBTree_Control, RBTree_Node, Node, static inline ) + +RBTree_Node *_RBTree_Predecessor( const RBTree_Node *node ) +{ + return RB_PREV( RBTree_Control, NULL, RTEMS_DECONST( RBTree_Node *, node ) ); +} diff --git a/spec/build/cpukit/librtemscpu.yml b/spec/build/cpukit/librtemscpu.yml index ee9200aab5..88107b051c 100644 --- a/spec/build/cpukit/librtemscpu.yml +++ b/spec/build/cpukit/librtemscpu.yml @@ -1472,8 +1472,11 @@ source: - cpukit/score/src/rbtreeextract.c - cpukit/score/src/rbtreeinsert.c - cpukit/score/src/rbtreeiterate.c +- cpukit/score/src/rbtreemax.c +- cpukit/score/src/rbtreemin.c - cpukit/score/src/rbtreenext.c - cpukit/score/src/rbtreepostorder.c +- cpukit/score/src/rbtreeprev.c - cpukit/score/src/rbtreereplace.c - cpukit/score/src/sched.c - cpukit/score/src/scheduler.c -- 2.26.2 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel