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