I forgot to update the hand-crafted texi. We can't be rid of this
stuff soon enough.

-Gedare

On Fri, Dec 19, 2014 at 12:15 PM, Gedare Bloom <ged...@rtems.org> wrote:
> closes #2059
> ---
>  doc/user/Makefile.am | 13 +++++---
>  doc/user/c_user.texi |  2 ++
>  doc/user/rbtree.t    | 92 
> ++++++++++++++++++++++++++++++++++++++++++++++++++++
>  3 files changed, 103 insertions(+), 4 deletions(-)
>  create mode 100644 doc/user/rbtree.t
>
> diff --git a/doc/user/Makefile.am b/doc/user/Makefile.am
> index e774319..cd8b5f3 100644
> --- a/doc/user/Makefile.am
> +++ b/doc/user/Makefile.am
> @@ -14,8 +14,8 @@ GENERATED_FILES = overview.texi concepts.texi 
> datatypes.texi init.texi \
>      task.texi intr.texi clock.texi timer.texi sem.texi msg.texi event.texi \
>      signal.texi part.texi region.texi dpmem.texi io.texi fatal.texi \
>      schedule.texi rtmon.texi barrier.texi bsp.texi userext.texi conf.texi \
> -    mp.texi stackchk.texi cpuuse.texi object.texi chains.texi timespec.texi \
> -    cbs.texi dirstat.texi smp.texi
> +    mp.texi stackchk.texi cpuuse.texi object.texi chains.texi rbtree.texi \
> +    timespec.texi cbs.texi dirstat.texi smp.texi
>
>  COMMON_FILES += $(top_srcdir)/common/cpright.texi
>
> @@ -186,10 +186,15 @@ object.texi: object.t
>  chains.texi: chains.t
>         $(BMENU2) -p "Object Services OBJECT_GET_CLASS_INFORMATION - Obtain 
> Class Information" \
>             -u "Top" \
> +           -n "Red-Black Trees" < $< > $@
> +
> +rbtree.texi: rbtree.t
> +       $(BMENU2) -p "Chains Prepend a Node" \
> +           -u "Top" \
>             -n "Timespec Helpers" < $< > $@
>
>  timespec.texi: timespec.t
> -       $(BMENU2) -p "Chains Prepend a Node" \
> +       $(BMENU2) -p "Red-Black Trees Documentation for the Red-Black Tree 
> Directives" \
>             -u "Top" \
>             -n "Constant Bandwidth Server Scheduler API" < $< > $@
>
> @@ -205,7 +210,7 @@ dirstat.texi: dirstat.t
>
>  EXTRA_DIST = bsp.t cbs.t clock.t chains.t concepts.t cpuuse.t datatypes.t 
> conf.t \
>      dpmem.t event.t fatal.t init.t intr.t io.t mp.t msg.t overview.t \
> -    part.t region.t rtmon.t sem.t schedule.t signal.t stackchk.t \
> +    part.t rbtree.t region.t rtmon.t sem.t schedule.t signal.t stackchk.t \
>      task.t timer.t userext.t dirstat.t $(TXT_FILES) $(PNG_FILES) 
> $(EPS_IMAGES) \
>      $(noinst_DATA)
>
> diff --git a/doc/user/c_user.texi b/doc/user/c_user.texi
> index 2085415..2ff47bf 100644
> --- a/doc/user/c_user.texi
> +++ b/doc/user/c_user.texi
> @@ -111,6 +111,7 @@
>  * CPU Usage Statistics::
>  * Object Services::
>  * Chains::
> +* Red-Black Trees::
>  * Timespec Helpers::
>  * Constant Bandwidth Server Scheduler API::
>  * Directive Status Codes::
> @@ -155,6 +156,7 @@
>  @include cpuuse.texi
>  @include object.texi
>  @include chains.texi
> +@include rbtree.texi
>  @include timespec.texi
>  @include cbs.texi
>  @include dirstat.texi
> diff --git a/doc/user/rbtree.t b/doc/user/rbtree.t
> new file mode 100644
> index 0000000..c90065b
> --- /dev/null
> +++ b/doc/user/rbtree.t
> @@ -0,0 +1,92 @@
> +@c
> +@c Copyright 2014 Gedare Bloom.
> +@c All rights reserved.
> +
> +@chapter Red-Black Trees
> +
> +@cindex rbtrees
> +
> +@section Introduction
> +
> +The Red-Black Tree API is an interface to the SuperCore (score) rbtree
> +implementation. Within RTEMS, red-black trees are used when a binary search
> +tree is needed, including dynamic priority thread queues and non-contiguous
> +heap memory. The Red-Black Tree API provided by RTEMS is:
> +
> +@itemize @bullet
> +@c build_id
> +@item @code{@value{DIRPREFIX}rtems_rbtree_node} - Red-Black Tree node 
> embedded in another struct
> +@item @code{@value{DIRPREFIX}rtems_rbtree_control} - Red-Black Tree control 
> node for an entire tree
> +@item @code{@value{DIRPREFIX}rtems_rbtree_initialize} - initialize the 
> red-black tree with nodes
> +@item @code{@value{DIRPREFIX}rtems_rbtree_initialize_empty} - initialize the 
> red-black tree as empty
> +@item @code{@value{DIRPREFIX}rtems_rbtree_set_off_tree} - Clear a node's 
> links
> +@item @code{@value{DIRPREFIX}rtems_rbtree_root} - Return the red-black 
> tree's root node
> +@item @code{@value{DIRPREFIX}rtems_rbtree_min} - Return the red-black tree's 
> minimum node
> +@item @code{@value{DIRPREFIX}rtems_rbtree_max} - Return the red-black tree's 
> maximum node
> +@item @code{@value{DIRPREFIX}rtems_rbtree_left} - Return a node's left child 
> node
> +@item @code{@value{DIRPREFIX}rtems_rbtree_right} - Return a node's right 
> child node
> +@item @code{@value{DIRPREFIX}rtems_rbtree_parent} - Return a node's parent 
> node
> +@item @code{@value{DIRPREFIX}rtems_rbtree_are_nodes_equal} - Are the node's 
> equal ?
> +@item @code{@value{DIRPREFIX}rtems_rbtree_is_empty} - Is the red-black tree 
> empty ?
> +@item @code{@value{DIRPREFIX}rtems_rbtree_is_min} - Is the Node the minimum 
> in the red-black tree ?
> +@item @code{@value{DIRPREFIX}rtems_rbtree_is_max} - Is the Node the maximum 
> in the red-black tree ?
> +@item @code{@value{DIRPREFIX}rtems_rbtree_is_root} - Is the Node the root of 
> the red-black tree ?
> +@item @code{@value{DIRPREFIX}rtems_rbtree_find} - Find the node with a 
> matching key in the red-black tree
> +@item @code{@value{DIRPREFIX}rtems_rbtree_predecessor} - Return the in-order 
> predecessor of a node.
> +@item @code{@value{DIRPREFIX}rtems_rbtree_successor} - Return the in-order 
> successor of a node.
> +@item @code{@value{DIRPREFIX}rtems_rbtree_extract} - Remove the node from 
> the red-black tree
> +@item @code{@value{DIRPREFIX}rtems_rbtree_get_min} - Remove the minimum node 
> from the red-black tree
> +@item @code{@value{DIRPREFIX}rtems_rbtree_get_max} - Remove the maximum node 
> from the red-black tree
> +@item @code{@value{DIRPREFIX}rtems_rbtree_peek_min} - Returns the minimum 
> node from the red-black tree
> +@item @code{@value{DIRPREFIX}rtems_rbtree_peek_max} - Returns the maximum 
> node from the red-black tree
> +@item @code{@value{DIRPREFIX}rtems_rbtree_find_control} - Returns the 
> control node of a red-black tree given a node in the tree.
> +@item @code{@value{DIRPREFIX}rtems_rbtree_insert} - Add the node to the 
> red-black tree
> +@end itemize
> +
> +@section Background
> +
> +The Red-Black Trees API is a thin layer above the SuperCore Red-Black Trees
> +implementation. A Red-Black Tree is defined by a control node with pointers 
> to
> +the root, minimum, and maximum nodes in the tree. Each node in the tree
> +consists of a parent pointer, two children pointers, and a color attribute.  
> A
> +tree is parameterized as either unique, meaning identical keys are rejected, 
> or
> +not, in which case duplicate keys are allowed.
> +
> +Users must provide a comparison functor that gets passed to functions that 
> need
> +to compare nodes. In addition, no internal synchronization is offered within
> +the red-black tree implementation, thus users must ensure at most one thread
> +accesses a red-black tree instance at a time.
> +
> +@subsection Nodes
> +
> +A red-black tree is made up from nodes that orginate from a red-black tree 
> control
> +object. A node is of type @code{@value{DIRPREFIX}rtems_rbtree_node}. The node
> +is designed to be part of a user data structure. To obtain the encapsulating
> +structure users can use the @code{RTEMS_CONTAINER_OF} macro.
> +The node can be placed anywhere within the user's structure and the macro 
> will
> +calculate the structure's address from the node's address.
> +
> +@subsection Controls
> +
> +A red-black tree is rooted with a control object. Red-Black Tree control
> +provide the user with access to the nodes on the red-black tree.  The
> +implementation does not require special checks for manipulating the root of 
> the
> +red-black tree. To accomplish this the
> +@code{@value{DIRPREFIX}rtems_rbtree_control} structure is treated as a
> +@code{@value{DIRPREFIX}rtems_rbtree_node} structure with a @code{NULL} parent
> +and left child pointing to the root.
> +
> +@section Operations
> +
> +Examples for using the red-black trees
> +can be found in the testsuites/sptests/sprbtree01/init.c file.
> +
> +@section Directives
> +
> +@subsection Documentation for the Red-Black Tree Directives
> +
> +@cindex rbtree doc
> +
> +Source documentation for the Red-Black Tree API can be found in the
> +generated Doxygen output for cpukit/sapi.
> +
> --
> 1.8.3.1
>
_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to