[PATCH 2/2] score/rbtree: replace _RBTree_Peek_unprotected with _RBTree_First.
Gedare Bloom
gedare at rtems.org
Wed May 2 15:41:04 UTC 2012
I guess the chain default behavior is unprotected unless the function
modifies the chain. I would like to rework the red-black tree to be
the same way. The primary difference is the "Find" function which
right now defaults to protected but does not modify the red-black
tree.
If anyone has an objection to the default behavior of unprotected for
read-only and protected otherwise please let me know. Otherwise I'll
have a patch coming soon to make the red-black tree more consistently
apply critical regions with respect to chains.
-Gedare
On Wed, May 2, 2012 at 11:32 AM, Gedare Bloom <gedare at rtems.org> wrote:
> I noticed that RBTree_First and RBTree_Peek_unprotected implement the
> same thing. I prefer to simplify to one of them and RBTree_First
> seemed to be more commonly used and is "unprotected" by default.
>
> Right now I'm leaving RBTree_Peek in place as the protected interface.
> The user API remains unchanged since it lacked an unprotected version
> previously. I will follow-up with a user API wrapper for RBTree_First.
>
> I'm not really satisfied with the mixture of default protected vs
> unprotected but the behavior generally follows the chains where a
> function tends to be protected by default if it modifies or iterates a
> chain and unprotected if it only deals with a single node. It might be
> nice to formalize the reasoning and make sure the approach is
> consistent between the two data structures.
>
> -Gedare
>
> On Wed, May 2, 2012 at 11:26 AM, Gedare Bloom <gedare at rtems.org> wrote:
>> ---
>> cpukit/score/inline/rtems/score/rbtree.inl | 20 +-------------------
>> cpukit/score/src/rbtreepeek.c | 6 ++----
>> 2 files changed, 3 insertions(+), 23 deletions(-)
>>
>> diff --git a/cpukit/score/inline/rtems/score/rbtree.inl b/cpukit/score/inline/rtems/score/rbtree.inl
>> index d646b06..a079745 100644
>> --- a/cpukit/score/inline/rtems/score/rbtree.inl
>> +++ b/cpukit/score/inline/rtems/score/rbtree.inl
>> @@ -10,13 +10,11 @@
>> */
>>
>> /*
>> - * Copyright (c) 2010 Gedare Bloom.
>> + * Copyright (c) 2010-2012 Gedare Bloom.
>> *
>> * 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.
>> - *
>> - * $Id$
>> */
>>
>> #ifndef _RTEMS_SCORE_RBTREE_H
>> @@ -459,22 +457,6 @@ RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Get_unprotected(
>> return the_node;
>> }
>>
>> -/** @brief Peek at the First Node (unprotected)
>> - *
>> - * This function returns a pointer to the first node, minimum if @a dir is 0
>> - * or maximum if @a dir is 1, from @a the_rbtree without extracting it.
>> - * It does NOT disable interrupts to ensure the atomicity of the peek.
>> - *
>> - * @retval NULL if @a the_rbtree is empty.
>> - */
>> -RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Peek_unprotected(
>> - const RBTree_Control *the_rbtree,
>> - RBTree_Direction dir
>> -)
>> -{
>> - return(the_rbtree->first[dir]);
>> -}
>> -
>> /** @brief Rotate the_node in the direction passed as second argument
>> *
>> * This routine rotates @a the_node to the direction @a dir, swapping
>> diff --git a/cpukit/score/src/rbtreepeek.c b/cpukit/score/src/rbtreepeek.c
>> index 13ea333..81ff0fd 100644
>> --- a/cpukit/score/src/rbtreepeek.c
>> +++ b/cpukit/score/src/rbtreepeek.c
>> @@ -1,11 +1,9 @@
>> /*
>> - * Copyright (c) 2010 Gedare Bloom.
>> + * Copyright (c) 2010-2012 Gedare Bloom.
>> *
>> * 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.
>> - *
>> - * $Id$
>> */
>>
>> #if HAVE_CONFIG_H
>> @@ -45,7 +43,7 @@ RBTree_Node *_RBTree_Peek(
>>
>> return_node = NULL;
>> _ISR_Disable( level );
>> - return_node = _RBTree_Peek_unprotected( the_rbtree, dir );
>> + return_node = _RBTree_First( the_rbtree, dir );
>> _ISR_Enable( level );
>> return return_node;
>> }
>> --
>> 1.7.1
>>
More information about the devel
mailing list