change log for rtems (2010-08-23)
Joel Sherrill
joel.sherrill at OARcorp.com
Mon Aug 23 17:12:05 UTC 2010
Is test code coming?
Are these going to be available as rtems_chain_xxx? If
so, there will also need to be documentation.
--joel
On 08/23/2010 12:10 PM, rtems-vc at rtems.org wrote:
> *sh*
> 2010-08-23 Sebastian Huber<sebastian.huber at embedded-brains.de>
>
> PR 1673/cpukit
> * score/src/chainappendempty.c, score/src/chaingetempty.c,
> score/src/chainprependempty.c: New files.
> * score/Makefile.am: Reflect changes above.
> * score/include/rtems/score/chain.h: Declare
> _Chain_Append_with_empty_check(), _Chain_Prepend_with_empty_check(),
> and _Chain_Get_with_empty_check().
> * score/inline/rtems/score/chain.inl: Define
> _Chain_Append_with_empty_check_unprotected(),
> _Chain_Prepend_with_empty_check_unprotected(), and
> _Chain_Get_with_empty_check_unprotected().
>
> M
> <http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/ChangeLog.diff?r1=text&tr1=1.2578&r2=text&tr2=1.2579&diff_format=h>
> 1.2579 cpukit/ChangeLog
> M
> <http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/score/Makefile.am.diff?r1=text&tr1=1.87&r2=text&tr2=1.88&diff_format=h>
> 1.88 cpukit/score/Makefile.am
> M
> <http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/score/include/rtems/score/chain.h.diff?r1=text&tr1=1.24&r2=text&tr2=1.25&diff_format=h>
> 1.25 cpukit/score/include/rtems/score/chain.h
> M
> <http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/score/inline/rtems/score/chain.inl.diff?r1=text&tr1=1.21&r2=text&tr2=1.22&diff_format=h>
> 1.22 cpukit/score/inline/rtems/score/chain.inl
> A
> <http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/score/src/chainappendempty.c?rev=1.1&content-type=text/vnd.viewcvs-markup>
> 1.1 cpukit/score/src/chainappendempty.c
> A
> <http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/score/src/chaingetempty.c?rev=1.1&content-type=text/vnd.viewcvs-markup>
> 1.1 cpukit/score/src/chaingetempty.c
> A
> <http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/score/src/chainprependempty.c?rev=1.1&content-type=text/vnd.viewcvs-markup>
> 1.1 cpukit/score/src/chainprependempty.c
>
> diff -u rtems/cpukit/ChangeLog:1.2578 rtems/cpukit/ChangeLog:1.2579
> --- rtems/cpukit/ChangeLog:1.2578 Mon Aug 23 02:59:38 2010
> +++ rtems/cpukit/ChangeLog Mon Aug 23 11:10:53 2010
> @@ -1,5 +1,19 @@
> 2010-08-23 Sebastian Huber<sebastian.huber at embedded-brains.de>
>
> + PR 1673/cpukit
> + * score/src/chainappendempty.c, score/src/chaingetempty.c,
> + score/src/chainprependempty.c: New files.
> + * score/Makefile.am: Reflect changes above.
> + * score/include/rtems/score/chain.h: Declare
> + _Chain_Append_with_empty_check(), _Chain_Prepend_with_empty_check(),
> + and _Chain_Get_with_empty_check().
> + * score/inline/rtems/score/chain.inl: Define
> + _Chain_Append_with_empty_check_unprotected(),
> + _Chain_Prepend_with_empty_check_unprotected(), and
> + _Chain_Get_with_empty_check_unprotected().
> +
> +2010-08-23 Sebastian Huber<sebastian.huber at embedded-brains.de>
> +
> PR 1671/cpukit
> * libcsupport/include/rtems/gxx_wrappers.h: New file.
> * libcsupport/Makefile.am, libcsupport/preinstall.am: Reflect change
>
> diff -u rtems/cpukit/score/Makefile.am:1.87 rtems/cpukit/score/Makefile.am:1.88
> --- rtems/cpukit/score/Makefile.am:1.87 Thu Jul 29 12:52:09 2010
> +++ rtems/cpukit/score/Makefile.am Mon Aug 23 11:10:53 2010
> @@ -200,6 +200,7 @@
> ## STD_C_FILES
> libscore_a_SOURCES += src/apiext.c src/chain.c src/chainappend.c \
> src/chainextract.c src/chainget.c src/chaininsert.c \
> + src/chainappendempty.c src/chainprependempty.c src/chaingetempty.c \
> src/interr.c src/isr.c src/wkspace.c
>
> EXTRA_DIST = src/Unlimited.txt
>
> diff -u rtems/cpukit/score/include/rtems/score/chain.h:1.24 rtems/cpukit/score/include/rtems/score/chain.h:1.25
> --- rtems/cpukit/score/include/rtems/score/chain.h:1.24 Mon Nov 30 07:20:29 2009
> +++ rtems/cpukit/score/include/rtems/score/chain.h Mon Aug 23 11:10:53 2010
> @@ -1,11 +1,14 @@
> /**
> - * @file rtems/score/chain.h
> + * @file
> *
> - * This include file contains all the constants and structures associated
> - * with the Doubly-Linked Chain Handler.
> + * @ingroup ScoreChain
> + *
> + * @brief Chain Handler API.
> */
>
> /*
> + * Copyright (c) 2010 embedded brains GmbH.
> + *
> * COPYRIGHT (c) 1989-2006.
> * On-Line Applications Research Corporation (OAR).
> *
> @@ -22,6 +25,8 @@
> /**
> * @defgroup ScoreChain Chain Handler
> *
> + * @ingroup Score
> + *
> * The Chain Handler is used to manage sets of entities. This handler
> * provides two data structures. The Chain Node data structure is included
> * as the first part of every data structure that will be placed on
> @@ -185,6 +190,66 @@
> Chain_Node *the_node
> );
>
> +/**
> + * @brief Append a node and check if the chain was empty before.
> + *
> + * This routine appends the_node onto the end of the_chain.
> + *
> + * @param[in] the_chain is the chain to be operated upon.
> + * @param[in] the_node is the node to be appended.
> + *
> + * @note It disables interrupts to ensure the atomicity of the append
> + * operation.
> + *
> + * @retval true The chain was empty before.
> + * @retval false The chain contained at least one node before.
> + */
> +bool _Chain_Append_with_empty_check(
> + Chain_Control *the_chain,
> + Chain_Node *the_node
> +);
> +
> +/**
> + * @brief Prepend a node and check if the chain was empty before.
> + *
> + * This routine prepends the_node onto the front of the_chain.
> + *
> + * @param[in] the_chain is the chain to be operated upon.
> + * @param[in] the_node is the node to be prepended.
> + *
> + * @note It disables interrupts to ensure the atomicity of the append
> + * operation.
> + *
> + * @retval true The chain was empty before.
> + * @retval false The chain contained at least one node before.
> + */
> +bool _Chain_Prepend_with_empty_check(
> + Chain_Control *the_chain,
> + Chain_Node *the_node
> +);
> +
> +/**
> + * @brief Get the first node and check if the chain is empty afterwards.
> + *
> + * This function removes the first node from the_chain and returns
> + * a pointer to that node in @a the_node. If the_chain is empty, then NULL is
> + * returned.
> + *
> + * @param[in] the_chain is the chain to attempt to get the first node from.
> + * @param[out] the_node is the first node on the chain or NULL if the chain is
> + * empty.
> + *
> + * @note It disables interrupts to ensure the atomicity of the append
> + * operation.
> + *
> + * @retval true The chain is empty now.
> + * @retval false The chain contains at least one node now.
> + */
> +bool _Chain_Get_with_empty_check(
> + Chain_Control *the_chain,
> + Chain_Node **the_node
> +);
> +
> #ifndef __RTEMS_APPLICATION__
> #include<rtems/score/chain.inl>
> #endif
>
> diff -u rtems/cpukit/score/inline/rtems/score/chain.inl:1.21 rtems/cpukit/score/inline/rtems/score/chain.inl:1.22
> --- rtems/cpukit/score/inline/rtems/score/chain.inl:1.21 Thu Oct 8 02:07:36 2009
> +++ rtems/cpukit/score/inline/rtems/score/chain.inl Mon Aug 23 11:10:53 2010
> @@ -1,15 +1,14 @@
> /**
> - * @file rtems/score/chain.inl
> + * @file
> *
> - * This include file contains the bodies of the routines which are
> - * associated with doubly linked chains and inlined.
> + * @ingroup ScoreChain
> *
> - * @note The routines in this file are ordered from simple
> - * to complex. No other Chain Handler routine is referenced
> - * unless it has already been defined.
> + * @brief Chain Handler API.
> */
>
> /*
> + * Copyright (c) 2010 embedded brains GmbH.
> + *
> * COPYRIGHT (c) 1989-2006.
> * On-Line Applications Research Corporation (OAR).
> *
> @@ -481,6 +480,99 @@
> _Chain_Insert(_Chain_Head(the_chain), the_node);
> }
>
> +/**
> + * @brief Append a node and check if the chain was empty before (unprotected).
> + *
> + * This routine appends the_node onto the end of the_chain.
> + *
> + * @param[in] the_chain is the chain to be operated upon.
> + * @param[in] the_node is the node to be appended.
> + *
> + * @note It does NOT disable interrupts to ensure the atomicity of the
> + * append operation.
> + *
> + * @retval true The chain was empty before.
> + * @retval false The chain contained at least one node before.
> + */
> +RTEMS_INLINE_ROUTINE bool _Chain_Append_with_empty_check_unprotected(
> + Chain_Control *the_chain,
> + Chain_Node *the_node
> +)
> +{
> + bool was_empty = _Chain_Is_empty( the_chain );
> +
> + _Chain_Append_unprotected( the_chain, the_node );
> +
> + return was_empty;
> +}
> +
> +/**
> + * @brief Prepend a node and check if the chain was empty before (unprotected).
> + *
> + * This routine prepends the_node onto the front of the_chain.
> + *
> + * @param[in] the_chain is the chain to be operated upon.
> + * @param[in] the_node is the node to be prepended.
> + *
> + * @note It does NOT disable interrupts to ensure the atomicity of the
> + * prepend operation.
> + *
> + * @retval true The chain was empty before.
> + * @retval false The chain contained at least one node before.
> + */
> +RTEMS_INLINE_ROUTINE bool _Chain_Prepend_with_empty_check_unprotected(
> + Chain_Control *the_chain,
> + Chain_Node *the_node
> +)
> +{
> + bool was_empty = _Chain_Is_empty( the_chain );
> +
> + _Chain_Prepend_unprotected( the_chain, the_node );
> +
> + return was_empty;
> +}
> +
> +/**
> + * @brief Get the first node and check if the chain is empty afterwards
> + * (unprotected).
> + *
> + * This function removes the first node from the_chain and returns
> + * a pointer to that node in @a the_node. If the_chain is empty, then NULL is
> + * returned.
> + *
> + * @param[in] the_chain is the chain to attempt to get the first node from.
> + * @param[out] the_node is the first node on the chain or NULL if the chain is
> + * empty.
> + *
> + * @note It does NOT disable interrupts to ensure the atomicity of the
> + * get operation.
> + *
> + * @retval true The chain is empty now.
> + * @retval false The chain contains at least one node now.
> + */
> +RTEMS_INLINE_ROUTINE bool _Chain_Get_with_empty_check_unprotected(
> + Chain_Control *the_chain,
> + Chain_Node **the_node
> +)
> +{
> + bool is_empty_now = true;
> + Chain_Node *first = the_chain->first;
> +
> + if ( first != _Chain_Tail( the_chain ) ) {
> + Chain_Node *new_first = first->next;
> +
> + the_chain->first = new_first;
> + new_first->previous = _Chain_Head( the_chain );
> +
> + *the_node = first;
> +
> + is_empty_now = new_first == _Chain_Tail( the_chain );
> + } else
> + *the_node = NULL;
> +
> + return is_empty_now;
> +}
> +
> /**@}*/
>
> #endif
>
> diff -u /dev/null rtems/cpukit/score/src/chainappendempty.c:1.1
> --- /dev/null Mon Aug 23 12:10:15 2010
> +++ rtems/cpukit/score/src/chainappendempty.c Mon Aug 23 11:10:53 2010
> @@ -0,0 +1,44 @@
> +/**
> + * @file
> + *
> + * @ingroup ScoreChain
> + *
> + * @brief _Chain_Append_with_empty_check() implementation.
> + */
> +
> +/*
> + * Copyright (c) 2010 embedded brains GmbH. All rights reserved.
> + *
> + * embedded brains GmbH
> + * Obere Lagerstr. 30
> + * 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.com/license/LICENSE.
> + */
> +
> +#if HAVE_CONFIG_H
> +#include "config.h"
> +#endif
> +
> +#include<rtems/system.h>
> +#include<rtems/score/chain.h>
> +#include<rtems/score/isr.h>
> +
> +bool _Chain_Append_with_empty_check(
> + Chain_Control *chain,
> + Chain_Node *node
> +)
> +{
> + ISR_Level level;
> + bool was_empty;
> +
> + _ISR_Disable( level );
> + was_empty = _Chain_Append_with_empty_check_unprotected( chain, node );
> + _ISR_Enable( level );
> +
> + return was_empty;
> +}
>
> diff -u /dev/null rtems/cpukit/score/src/chaingetempty.c:1.1
> --- /dev/null Mon Aug 23 12:10:15 2010
> +++ rtems/cpukit/score/src/chaingetempty.c Mon Aug 23 11:10:53 2010
> @@ -0,0 +1,44 @@
> +/**
> + * @file
> + *
> + * @ingroup ScoreChain
> + *
> + * @brief _Chain_Get_with_empty_check() implementation.
> + */
> +
> +/*
> + * Copyright (c) 2010 embedded brains GmbH. All rights reserved.
> + *
> + * embedded brains GmbH
> + * Obere Lagerstr. 30
> + * 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.com/license/LICENSE.
> + */
> +
> +#if HAVE_CONFIG_H
> +#include "config.h"
> +#endif
> +
> +#include<rtems/system.h>
> +#include<rtems/score/chain.h>
> +#include<rtems/score/isr.h>
> +
> +bool _Chain_Get_with_empty_check(
> + Chain_Control *chain,
> + Chain_Node **node
> +)
> +{
> + ISR_Level level;
> + bool is_empty_now;
> +
> + _ISR_Disable( level );
> + is_empty_now = _Chain_Get_with_empty_check_unprotected( chain, node );
> + _ISR_Enable( level );
> +
> + return is_empty_now;
> +}
>
> diff -u /dev/null rtems/cpukit/score/src/chainprependempty.c:1.1
> --- /dev/null Mon Aug 23 12:10:15 2010
> +++ rtems/cpukit/score/src/chainprependempty.c Mon Aug 23 11:10:53 2010
> @@ -0,0 +1,44 @@
> +/**
> + * @file
> + *
> + * @ingroup ScoreChain
> + *
> + * @brief _Chain_Prepend_with_empty_check() implementation.
> + */
> +
> +/*
> + * Copyright (c) 2010 embedded brains GmbH. All rights reserved.
> + *
> + * embedded brains GmbH
> + * Obere Lagerstr. 30
> + * 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.com/license/LICENSE.
> + */
> +
> +#if HAVE_CONFIG_H
> +#include "config.h"
> +#endif
> +
> +#include<rtems/system.h>
> +#include<rtems/score/chain.h>
> +#include<rtems/score/isr.h>
> +
> +bool _Chain_Prepend_with_empty_check(
> + Chain_Control *chain,
> + Chain_Node *node
> +)
> +{
> + ISR_Level level;
> + bool was_empty;
> +
> + _ISR_Disable( level );
> + was_empty = _Chain_Prepend_with_empty_check_unprotected( chain, node );
> + _ISR_Enable( level );
> +
> + return was_empty;
> +}
>
> --
> Generated by Deluxe Loginfo
> <http://www.codewiz.org/projects/index.html#loginfo> 2.122 by Bernardo
> Innocenti <bernie at develer.com>
>
--
Joel Sherrill, Ph.D. Director of Research& Development
joel.sherrill at OARcorp.com On-Line Applications Research
Ask me about RTEMS: a free RTOS Huntsville AL 35805
Support Available (256) 722-9985
More information about the vc
mailing list