<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>change log for rtems (2011-08-21)</title>
</head>
<body text='#000000' bgcolor='#ffffff'>
<a name='cs1'></a>
<table border='0' cellspacing='0' cellpadding='5' width='100%' bgcolor='#eeeeee'>
<tr><td colspan='3' bgcolor='#dddddd'>
<font color='#bb2222'><strong>joel</strong></font>
</td></tr>
<tr><td colspan='3' bgcolor='#dddddd'><pre>2011-08-21 Joel Sherrill <joel.sherrilL@OARcorp.com>
PR 1873/cpukit
* score/include/rtems/score/heap.h: When using heap protection, we
should account for adding an aligned protection footer.
</pre></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/ChangeLog.diff?r1=text&tr1=1.2904&r2=text&tr2=1.2905&diff_format=h">M</a></td><td width='1%'>1.2905</td><td width='100%'>cpukit/ChangeLog</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/score/include/rtems/score/heap.h.diff?r1=text&tr1=1.45&r2=text&tr2=1.46&diff_format=h">M</a></td><td width='1%'>1.46</td><td width='100%'>cpukit/score/include/rtems/score/heap.h</td></tr>
</table>
<pre>
<font color='#006600'>diff -u rtems/cpukit/ChangeLog:1.2904 rtems/cpukit/ChangeLog:1.2905
--- rtems/cpukit/ChangeLog:1.2904 Wed Aug 17 04:14:08 2011
+++ rtems/cpukit/ChangeLog Sun Aug 21 14:51:40 2011
</font><font color='#997700'>@@ -1,3 +1,9 @@
</font><font color='#000088'>+2011-08-21 Joel Sherrill <joel.sherrilL@OARcorp.com>
+
+ PR 1873/cpukit
+ * score/include/rtems/score/heap.h: When using heap protection, we
+ should account for adding an aligned protection footer.
+
</font> 2011-08-17 Sebastian Huber <sebastian.huber@embedded-brains.de>
* sapi/include/confdefs.h: Revert previous commit due to multi-lib
<font color='#006600'>diff -u rtems/cpukit/score/include/rtems/score/heap.h:1.45 rtems/cpukit/score/include/rtems/score/heap.h:1.46
--- rtems/cpukit/score/include/rtems/score/heap.h:1.45 Thu Feb 17 08:17:09 2011
+++ rtems/cpukit/score/include/rtems/score/heap.h Sun Aug 21 14:51:41 2011
</font><font color='#997700'>@@ -177,7 +177,9 @@
</font> } Heap_Protection_block_end;
#define HEAP_PROTECTION_HEADER_SIZE \
<font color='#880000'>- (sizeof(Heap_Protection_block_begin) + sizeof(Heap_Protection_block_end))
</font><font color='#000088'>+ (sizeof(Heap_Protection_block_begin) + \
+ CPU_ALIGNMENT + \
+ sizeof(Heap_Protection_block_end))
</font> #endif
/**
</pre>
<p> </p>
<a name='cs2'></a>
<table border='0' cellspacing='0' cellpadding='5' width='100%' bgcolor='#eeeeee'>
<tr><td colspan='3' bgcolor='#dddddd'>
<font color='#bb2222'><strong>joel</strong></font>
<font color='#225522'><em>(on branch rtems-4-9-branch)</em></font>
</td></tr>
<tr><td colspan='3' bgcolor='#dddddd'><pre>2011-08-21 Joel Sherrill <joel.sherrilL@OARcorp.com>
PR 1890/cpukit
* posix/src/mqueuerecvsupp.c: POSIX says msg_prio is allowed to be
NULL.
</pre></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/ChangeLog.diff?r1=text&tr1=1.2905&r2=text&tr2=1.2906&diff_format=h">M</a></td><td width='1%'>1.2906</td><td width='100%'>cpukit/ChangeLog</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/ChangeLog.diff?r1=text&tr1=1.1539.2.80&r2=text&tr2=1.1539.2.81&diff_format=h">M</a></td><td width='1%'>1.1539.2.81</td><td width='100%'>cpukit/ChangeLog</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/posix/src/mqueuerecvsupp.c.diff?r1=text&tr1=1.18&r2=text&tr2=1.19&diff_format=h">M</a></td><td width='1%'>1.19</td><td width='100%'>cpukit/posix/src/mqueuerecvsupp.c</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/posix/src/mqueuerecvsupp.c.diff?r1=text&tr1=1.17&r2=text&tr2=1.17.2.1&diff_format=h">M</a></td><td width='1%'>1.17.2.1</td><td width='100%'>cpukit/posix/src/mqueuerecvsupp.c</td></tr>
</table>
<pre>
<font color='#006600'>diff -u rtems/cpukit/ChangeLog:1.2905 rtems/cpukit/ChangeLog:1.2906
--- rtems/cpukit/ChangeLog:1.2905 Sun Aug 21 14:51:40 2011
+++ rtems/cpukit/ChangeLog Sun Aug 21 14:59:03 2011
</font><font color='#997700'>@@ -1,5 +1,11 @@
</font> 2011-08-21 Joel Sherrill <joel.sherrilL@OARcorp.com>
<font color='#000088'>+ PR 1890/cpukit
+ * posix/src/mqueuerecvsupp.c: POSIX says msg_prio is allowed to be
+ NULL.
+
+2011-08-21 Joel Sherrill <joel.sherrilL@OARcorp.com>
+
</font> PR 1873/cpukit
* score/include/rtems/score/heap.h: When using heap protection, we
should account for adding an aligned protection footer.
<font color='#006600'>diff -u rtems/cpukit/ChangeLog:1.1539.2.80 rtems/cpukit/ChangeLog:1.1539.2.81
--- rtems/cpukit/ChangeLog:1.1539.2.80 Sun Jul 31 17:41:04 2011
+++ rtems/cpukit/ChangeLog Sun Aug 21 14:59:10 2011
</font><font color='#997700'>@@ -1,3 +1,9 @@
</font><font color='#000088'>+2011-08-21 Joel Sherrill <joel.sherrilL@OARcorp.com>
+
+ PR 1890/cpukit
+ * posix/src/mqueuerecvsupp.c: POSIX says msg_prio is allowed to be
+ NULL.
+
</font> 2011-07-31 Joel Sherrill <joel.sherrilL@OARcorp.com>
PR 1855/cpukit
<font color='#006600'>diff -u rtems/cpukit/posix/src/mqueuerecvsupp.c:1.18 rtems/cpukit/posix/src/mqueuerecvsupp.c:1.19
--- rtems/cpukit/posix/src/mqueuerecvsupp.c:1.18 Tue Feb 3 04:10:48 2009
+++ rtems/cpukit/posix/src/mqueuerecvsupp.c Sun Aug 21 14:59:03 2011
</font><font color='#997700'>@@ -11,7 +11,7 @@
</font> * This code ignores the O_RDONLY/O_WRONLY/O_RDWR flag at open
* time.
*
<font color='#880000'>- * COPYRIGHT (c) 1989-2008.
</font><font color='#000088'>+ * COPYRIGHT (c) 1989-2011.
</font> * On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
<font color='#997700'>@@ -105,8 +105,11 @@
</font> );
_Thread_Enable_dispatch();
<font color='#880000'>- *msg_prio =
- _POSIX_Message_queue_Priority_from_core(_Thread_Executing->Wait.count);
</font><font color='#000088'>+ if (msg_prio) {
+ *msg_prio = _POSIX_Message_queue_Priority_from_core(
+ _Thread_Executing->Wait.count
+ );
+ }
</font>
if ( !_Thread_Executing->Wait.return_code )
return length_out;
<font color='#006600'>diff -u rtems/cpukit/posix/src/mqueuerecvsupp.c:1.17 rtems/cpukit/posix/src/mqueuerecvsupp.c:1.17.2.1
--- rtems/cpukit/posix/src/mqueuerecvsupp.c:1.17 Thu Sep 4 10:23:11 2008
+++ rtems/cpukit/posix/src/mqueuerecvsupp.c Sun Aug 21 14:59:13 2011
</font><font color='#997700'>@@ -11,7 +11,7 @@
</font> * This code ignores the O_RDONLY/O_WRONLY/O_RDWR flag at open
* time.
*
<font color='#880000'>- * COPYRIGHT (c) 1989-2008.
</font><font color='#000088'>+ * COPYRIGHT (c) 1989-2011.
</font> * On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
<font color='#997700'>@@ -105,8 +105,11 @@
</font> );
_Thread_Enable_dispatch();
<font color='#880000'>- *msg_prio =
- _POSIX_Message_queue_Priority_from_core(_Thread_Executing->Wait.count);
</font><font color='#000088'>+ if (msg_prio) {
+ *msg_prio = _POSIX_Message_queue_Priority_from_core(
+ _Thread_Executing->Wait.count
+ );
+ }
</font>
if ( !_Thread_Executing->Wait.return_code )
return length_out;
</pre>
<p> </p>
<a name='cs3'></a>
<table border='0' cellspacing='0' cellpadding='5' width='100%' bgcolor='#eeeeee'>
<tr><td colspan='3' bgcolor='#dddddd'>
<font color='#bb2222'><strong>joel</strong></font>
<font color='#225522'><em>(on branch rtems-4-10-branch)</em></font>
</td></tr>
<tr><td colspan='3' bgcolor='#dddddd'><pre>2011-08-21 Joel Sherrill <joel.sherrilL@OARcorp.com>
PR 1890/cpukit
* psxmsgq01/init.c: POSIX says msg_prio is allowed to be NULL.
</pre></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/testsuites/psxtests/ChangeLog.diff?r1=text&tr1=1.352&r2=text&tr2=1.353&diff_format=h">M</a></td><td width='1%'>1.353</td><td width='100%'>testsuites/psxtests/ChangeLog</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/testsuites/psxtests/ChangeLog.diff?r1=text&tr1=1.125.2.2&r2=text&tr2=1.125.2.3&diff_format=h">M</a></td><td width='1%'>1.125.2.3</td><td width='100%'>testsuites/psxtests/ChangeLog</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/testsuites/psxtests/ChangeLog.diff?r1=text&tr1=1.264.2.5&r2=text&tr2=1.264.2.6&diff_format=h">M</a></td><td width='1%'>1.264.2.6</td><td width='100%'>testsuites/psxtests/ChangeLog</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/testsuites/psxtests/psxmsgq01/init.c.diff?r1=text&tr1=1.27&r2=text&tr2=1.28&diff_format=h">M</a></td><td width='1%'>1.28</td><td width='100%'>testsuites/psxtests/psxmsgq01/init.c</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/testsuites/psxtests/psxmsgq01/init.c.diff?r1=text&tr1=1.18&r2=text&tr2=1.18.2.1&diff_format=h">M</a></td><td width='1%'>1.18.2.1</td><td width='100%'>testsuites/psxtests/psxmsgq01/init.c</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/testsuites/psxtests/psxmsgq01/init.c.diff?r1=text&tr1=1.23&r2=text&tr2=1.23.2.1&diff_format=h">M</a></td><td width='1%'>1.23.2.1</td><td width='100%'>testsuites/psxtests/psxmsgq01/init.c</td></tr>
</table>
<pre>
<font color='#006600'>diff -u rtems/testsuites/psxtests/ChangeLog:1.352 rtems/testsuites/psxtests/ChangeLog:1.353
--- rtems/testsuites/psxtests/ChangeLog:1.352 Thu Aug 18 02:47:37 2011
+++ rtems/testsuites/psxtests/ChangeLog Sun Aug 21 14:59:51 2011
</font><font color='#997700'>@@ -1,3 +1,8 @@
</font><font color='#000088'>+2011-08-21 Joel Sherrill <joel.sherrilL@OARcorp.com>
+
+ PR 1890/cpukit
+ * psxmsgq01/init.c: POSIX says msg_prio is allowed to be NULL.
+
</font> 2011-08-18 Sebastian Huber <sebastian.huber@embedded-brains.de>
* psxfatal_support/init.c: Ensure that _Thread_BSP_context is
<font color='#006600'>diff -u rtems/testsuites/psxtests/ChangeLog:1.125.2.2 rtems/testsuites/psxtests/ChangeLog:1.125.2.3
--- rtems/testsuites/psxtests/ChangeLog:1.125.2.2 Sun Jul 31 17:41:16 2011
+++ rtems/testsuites/psxtests/ChangeLog Sun Aug 21 15:00:01 2011
</font><font color='#997700'>@@ -1,3 +1,8 @@
</font><font color='#000088'>+2011-08-21 Joel Sherrill <joel.sherrilL@OARcorp.com>
+
+ PR 1890/cpukit
+ * psxmsgq01/init.c: POSIX says msg_prio is allowed to be NULL.
+
</font> 2011-07-31 Joel Sherrill <joel.sherrilL@OARcorp.com>
PR 1855/cpukit
<font color='#006600'>diff -u rtems/testsuites/psxtests/ChangeLog:1.264.2.5 rtems/testsuites/psxtests/ChangeLog:1.264.2.6
--- rtems/testsuites/psxtests/ChangeLog:1.264.2.5 Sun Jul 31 17:40:53 2011
+++ rtems/testsuites/psxtests/ChangeLog Sun Aug 21 14:59:56 2011
</font><font color='#997700'>@@ -1,3 +1,8 @@
</font><font color='#000088'>+2011-08-21 Joel Sherrill <joel.sherrilL@OARcorp.com>
+
+ PR 1890/cpukit
+ * psxmsgq01/init.c: POSIX says msg_prio is allowed to be NULL.
+
</font> 2011-07-31 Joel Sherrill <joel.sherrilL@OARcorp.com>
PR 1855/cpukit
<font color='#006600'>diff -u rtems/testsuites/psxtests/psxmsgq01/init.c:1.27 rtems/testsuites/psxtests/psxmsgq01/init.c:1.28
--- rtems/testsuites/psxtests/psxmsgq01/init.c:1.27 Fri May 6 12:29:29 2011
+++ rtems/testsuites/psxtests/psxmsgq01/init.c Sun Aug 21 14:59:51 2011
</font><font color='#997700'>@@ -1141,11 +1141,10 @@
</font> int is_blocking
)
{
<font color='#880000'>- char message[ 100 ];
- unsigned int priority;
- struct timespec tm;
- struct timeval tv1, tv2, tv3;
- struct timezone tz1, tz2;
</font><font color='#000088'>+ char message[ 100 ];
+ struct timespec tm;
+ struct timeval tv1, tv2, tv3;
+ struct timezone tz1, tz2;
</font> int status;
printf(
<font color='#997700'>@@ -1158,7 +1157,7 @@
</font> tm.tv_sec = tv1.tv_sec - 1;
tm.tv_nsec = tv1.tv_usec * 1000;
<font color='#880000'>- status = mq_timedreceive( Test_q[ que ].mq, message, 100, &priority, &tm );
</font><font color='#000088'>+ status = mq_timedreceive( Test_q[ que ].mq, message, 100, NULL, &tm );
</font>
gettimeofday( &tv2, &tz2 );
tv3.tv_sec = tv2.tv_sec - tv1.tv_sec;
<font color='#006600'>diff -u rtems/testsuites/psxtests/psxmsgq01/init.c:1.18 rtems/testsuites/psxtests/psxmsgq01/init.c:1.18.2.1
--- rtems/testsuites/psxtests/psxmsgq01/init.c:1.18 Fri Jul 18 13:47:30 2008
+++ rtems/testsuites/psxtests/psxmsgq01/init.c Sun Aug 21 15:00:01 2011
</font><font color='#997700'>@@ -789,11 +789,10 @@
</font> int is_blocking
)
{
<font color='#880000'>- char message[ 100 ];
- unsigned int priority;
- struct timespec tm;
- struct timeval tv1, tv2, tv3;
- struct timezone tz1, tz2;
</font><font color='#000088'>+ char message[ 100 ];
+ struct timespec tm;
+ struct timeval tv1, tv2, tv3;
+ struct timezone tz1, tz2;
</font> int status;
printf(
<font color='#997700'>@@ -806,7 +805,7 @@
</font> tm.tv_sec = tv1.tv_sec + 1;
tm.tv_nsec = tv1.tv_usec * 1000;
<font color='#880000'>- status = mq_timedreceive( Test_q[ que ].mq, message, 100, &priority, &tm );
</font><font color='#000088'>+ status = mq_timedreceive( Test_q[ que ].mq, message, 100, NULL, &tm );
</font>
gettimeofday( &tv2, &tz2 );
tv3.tv_sec = tv2.tv_sec - tv1.tv_sec;
<font color='#006600'>diff -u rtems/testsuites/psxtests/psxmsgq01/init.c:1.23 rtems/testsuites/psxtests/psxmsgq01/init.c:1.23.2.1
--- rtems/testsuites/psxtests/psxmsgq01/init.c:1.23 Tue Dec 8 11:52:53 2009
+++ rtems/testsuites/psxtests/psxmsgq01/init.c Sun Aug 21 14:59:56 2011
</font><font color='#997700'>@@ -1137,11 +1137,10 @@
</font> int is_blocking
)
{
<font color='#880000'>- char message[ 100 ];
- unsigned int priority;
- struct timespec tm;
- struct timeval tv1, tv2, tv3;
- struct timezone tz1, tz2;
</font><font color='#000088'>+ char message[ 100 ];
+ struct timespec tm;
+ struct timeval tv1, tv2, tv3;
+ struct timezone tz1, tz2;
</font> int status;
printf(
<font color='#997700'>@@ -1154,7 +1153,7 @@
</font> tm.tv_sec = tv1.tv_sec - 1;
tm.tv_nsec = tv1.tv_usec * 1000;
<font color='#880000'>- status = mq_timedreceive( Test_q[ que ].mq, message, 100, &priority, &tm );
</font><font color='#000088'>+ status = mq_timedreceive( Test_q[ que ].mq, message, 100, NULL, &tm );
</font>
gettimeofday( &tv2, &tz2 );
tv3.tv_sec = tv2.tv_sec - tv1.tv_sec;
</pre>
<p> </p>
<a name='cs4'></a>
<table border='0' cellspacing='0' cellpadding='5' width='100%' bgcolor='#eeeeee'>
<tr><td colspan='3' bgcolor='#dddddd'>
<font color='#bb2222'><strong>joel</strong></font>
</td></tr>
<tr><td colspan='3' bgcolor='#dddddd'><pre>2011-08-21 Petr Benes <benesp16@fel.cvut.cz>
PR 1886/cpukit
* sapi/include/rtems/rbtree.h, sapi/inline/rtems/rbtree.inl,
score/include/rtems/score/rbtree.h,
score/inline/rtems/score/rbtree.inl, score/src/rbtree.c,
score/src/rbtreeinsert.c: This patch enables inserting duplicate keys
into rbtree. It is possible to turn on this feature when initializing
the tree.
</pre></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/ChangeLog.diff?r1=text&tr1=1.2906&r2=text&tr2=1.2907&diff_format=h">M</a></td><td width='1%'>1.2907</td><td width='100%'>cpukit/ChangeLog</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/sapi/include/rtems/rbtree.h.diff?r1=text&tr1=1.1&r2=text&tr2=1.2&diff_format=h">M</a></td><td width='1%'>1.2</td><td width='100%'>cpukit/sapi/include/rtems/rbtree.h</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/sapi/inline/rtems/rbtree.inl.diff?r1=text&tr1=1.2&r2=text&tr2=1.3&diff_format=h">M</a></td><td width='1%'>1.3</td><td width='100%'>cpukit/sapi/inline/rtems/rbtree.inl</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/score/include/rtems/score/rbtree.h.diff?r1=text&tr1=1.5&r2=text&tr2=1.6&diff_format=h">M</a></td><td width='1%'>1.6</td><td width='100%'>cpukit/score/include/rtems/score/rbtree.h</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/score/inline/rtems/score/rbtree.inl.diff?r1=text&tr1=1.2&r2=text&tr2=1.3&diff_format=h">M</a></td><td width='1%'>1.3</td><td width='100%'>cpukit/score/inline/rtems/score/rbtree.inl</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/score/src/rbtree.c.diff?r1=text&tr1=1.4&r2=text&tr2=1.5&diff_format=h">M</a></td><td width='1%'>1.5</td><td width='100%'>cpukit/score/src/rbtree.c</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/score/src/rbtreeinsert.c.diff?r1=text&tr1=1.3&r2=text&tr2=1.4&diff_format=h">M</a></td><td width='1%'>1.4</td><td width='100%'>cpukit/score/src/rbtreeinsert.c</td></tr>
</table>
<pre>
<font color='#006600'>diff -u rtems/cpukit/ChangeLog:1.2906 rtems/cpukit/ChangeLog:1.2907
--- rtems/cpukit/ChangeLog:1.2906 Sun Aug 21 14:59:03 2011
+++ rtems/cpukit/ChangeLog Sun Aug 21 15:07:10 2011
</font><font color='#997700'>@@ -1,3 +1,13 @@
</font><font color='#000088'>+2011-08-21 Petr Benes <benesp16@fel.cvut.cz>
+
+ PR 1886/cpukit
+ * sapi/include/rtems/rbtree.h, sapi/inline/rtems/rbtree.inl,
+ score/include/rtems/score/rbtree.h,
+ score/inline/rtems/score/rbtree.inl, score/src/rbtree.c,
+ score/src/rbtreeinsert.c: This patch enables inserting duplicate keys
+ into rbtree. It is possible to turn on this feature when initializing
+ the tree.
+
</font> 2011-08-21 Joel Sherrill <joel.sherrilL@OARcorp.com>
PR 1890/cpukit
<font color='#006600'>diff -u rtems/cpukit/sapi/include/rtems/rbtree.h:1.1 rtems/cpukit/sapi/include/rtems/rbtree.h:1.2
--- rtems/cpukit/sapi/include/rtems/rbtree.h:1.1 Mon Apr 4 13:44:16 2011
+++ rtems/cpukit/sapi/include/rtems/rbtree.h Sun Aug 21 15:07:11 2011
</font><font color='#997700'>@@ -43,6 +43,29 @@
</font> typedef RBTree_Control rtems_rbtree_control;
/**
<font color='#000088'>+ * @typedef rtems_rbtree_compare_function
+ *
+ * This type defines function pointers for user-provided comparison
+ * function. The function compares two nodes in order to determine
+ * the order in a red-black tree.
+ */
+typedef RBTree_Compare_function rtems_rbtree_compare_function;
+
+/**
+ * @typedef rtems_rbtree_unique
+ *
+ * This enum type defines whether the tree can contain nodes with
+ * duplicate keys.
+ */
+typedef enum {
+ /** The tree is not unique, insertion of duplicate keys is performed
+ * in a FIFO manner. */
+ RTEMS_RBTREE_DUPLICATE = false,
+ /** The tree is unique, insertion of duplicate key is refused. */
+ RTEMS_RBTREE_UNIQUE = true
+} rtems_rbtree_unique;
+
+/**
</font> * @brief RBTree initializer for an empty rbtree with designator @a name.
*/
#define RTEMS_RBTREE_INITIALIZER_EMPTY(name) \
<font color='#006600'>diff -u rtems/cpukit/sapi/inline/rtems/rbtree.inl:1.2 rtems/cpukit/sapi/inline/rtems/rbtree.inl:1.3
--- rtems/cpukit/sapi/inline/rtems/rbtree.inl:1.2 Tue Aug 2 14:25:59 2011
+++ rtems/cpukit/sapi/inline/rtems/rbtree.inl Sun Aug 21 15:07:11 2011
</font><font color='#997700'>@@ -35,15 +35,16 @@
</font> * @a starting_address. Each node is of @a node_size bytes.
*/
RTEMS_INLINE_ROUTINE void rtems_rbtree_initialize(
<font color='#880000'>- rtems_rbtree_control *the_rbtree,
- void *compare_function,
- void *starting_address,
- size_t number_nodes,
- size_t node_size
</font><font color='#000088'>+ rtems_rbtree_control *the_rbtree,
+ rtems_rbtree_compare_function compare_function,
+ void *starting_address,
+ size_t number_nodes,
+ size_t node_size,
+ rtems_rbtree_unique is_unique
</font> )
{
_RBTree_Initialize( the_rbtree, compare_function, starting_address,
<font color='#880000'>- number_nodes, node_size);
</font><font color='#000088'>+ number_nodes, node_size, is_unique);
</font> }
/**
<font color='#997700'>@@ -52,11 +53,12 @@
</font> * This routine initializes @a the_rbtree to contain zero nodes.
*/
RTEMS_INLINE_ROUTINE void rtems_rbtree_initialize_empty(
<font color='#880000'>- rtems_rbtree_control *the_rbtree,
- void *compare_function
</font><font color='#000088'>+ rtems_rbtree_control *the_rbtree,
+ rtems_rbtree_compare_function compare_function,
+ rtems_rbtree_unique is_unique
</font> )
{
<font color='#880000'>- _RBTree_Initialize_empty( the_rbtree, compare_function );
</font><font color='#000088'>+ _RBTree_Initialize_empty( the_rbtree, compare_function, is_unique );
</font> }
/**
<font color='#997700'>@@ -257,6 +259,9 @@
</font> * This function returns a pointer to the node having key equal to the key
* of @a the_node if it exists within @a the_rbtree, and NULL if not.
* @a the_node has to be made up before a search.
<font color='#000088'>+ *
+ * @note If the tree is not unique and contains duplicate keys, the set
+ * of duplicate keys acts as FIFO.
</font> */
RTEMS_INLINE_ROUTINE rtems_rbtree_node* rtems_rbtree_find(
rtems_rbtree_control *the_rbtree,
<font color='#997700'>@@ -382,13 +387,27 @@
</font> *
* This routine inserts @a the_node on @a the_rbtree.
* It disables interrupts to ensure the atomicity of the insert operation.
<font color='#000088'>+ *
+ * @retval 0 Successfully inserted.
+ * @retval -1 NULL @a the_node.
+ * @retval RBTree_Node* if one with equal key to the key of @a the_node exists
+ * in an unique @a the_rbtree.
</font> */
<font color='#880000'>-RTEMS_INLINE_ROUTINE void rtems_rbtree_insert(
</font><font color='#000088'>+RTEMS_INLINE_ROUTINE rtems_rbtree_node *rtems_rbtree_insert(
</font> rtems_rbtree_control *the_rbtree,
rtems_rbtree_node *the_node
)
{
<font color='#880000'>- _RBTree_Insert( the_rbtree, the_node );
</font><font color='#000088'>+ return _RBTree_Insert( the_rbtree, the_node );
+}
+
+/** @brief Determines whether the tree is unique
+ */
+RTEMS_INLINE_ROUTINE rtems_rbtree_unique rtems_rbtree_is_unique(
+ rtems_rbtree_control *the_rbtree
+)
+{
+ return( _RBTree_Is_unique(the_rbtree) );
</font> }
#endif
<font color='#006600'>diff -u rtems/cpukit/score/include/rtems/score/rbtree.h:1.5 rtems/cpukit/score/include/rtems/score/rbtree.h:1.6
--- rtems/cpukit/score/include/rtems/score/rbtree.h:1.5 Tue Aug 2 14:25:59 2011
+++ rtems/cpukit/score/include/rtems/score/rbtree.h Sun Aug 21 15:07:11 2011
</font><font color='#997700'>@@ -100,6 +100,16 @@
</font> } RBTree_Direction;
/**
<font color='#000088'>+ * This type defines function pointers for user-provided comparison
+ * function. The function compares two nodes in order to determine
+ * the order in a red-black tree.
+ */
+typedef int (*RBTree_Compare_function)(
+ RBTree_Node *node1,
+ RBTree_Node *node2
+);
+
+/**
</font> * @struct RBTree_Control
*
* This is used to manage a RBT. A rbtree consists of a tree of zero or more
<font color='#997700'>@@ -126,11 +136,13 @@
</font> /** This points to the min and max nodes of this RBT. */
RBTree_Node *first[2];
/**
<font color='#880000'>- * Comparison function pointer. Keys to compare has to be found
</font><font color='#000088'>+ * Comparison function pointer. Keys to compare have to be found
</font> * inside to maintain generality. It has to return 1 if first node
* has higher key than second, -1 if lower, 0 if equal.
*/
<font color='#880000'>- int (*compare_function) (RBTree_Node*, RBTree_Node*);
</font><font color='#000088'>+ RBTree_Compare_function compare_function;
+ /** Determines whether the tree accepts duplicate keys. */
+ bool is_unique;
</font> } RBTree_Control;
/**
<font color='#997700'>@@ -142,7 +154,8 @@
</font> .root = NULL, \
.first[0] = NULL, \
.first[1] = NULL, \
<font color='#880000'>- .compare_function = NULL \
</font><font color='#000088'>+ .compare_function = NULL, \
+ .is_unique = 0 \
</font> }
/**
<font color='#997700'>@@ -176,11 +189,12 @@
</font> * @a starting_address. Each node is of @a node_size bytes.
*/
void _RBTree_Initialize(
<font color='#880000'>- RBTree_Control *the_rbtree,
- void *compare_function,
- void *starting_address,
- size_t number_nodes,
- size_t node_size
</font><font color='#000088'>+ RBTree_Control *the_rbtree,
+ RBTree_Compare_function compare_function,
+ void *starting_address,
+ size_t number_nodes,
+ size_t node_size,
+ bool is_unique
</font> );
/**
<font color='#997700'>@@ -247,8 +261,8 @@
</font> *
* @retval 0 Successfully inserted.
* @retval -1 NULL @a the_node.
<font color='#880000'>- * @retval RBTree_Node* if one with equal value to @a the_node->value exists
- * in @a the_rbtree.
</font><font color='#000088'>+ * @retval RBTree_Node* if one with equal value to @a the_node 's key exists
+ * in an unique @a the_rbtree.
</font> *
* @note It does NOT disable interrupts to ensure the atomicity
* of the extract operation.
<font color='#997700'>@@ -263,10 +277,15 @@
</font> *
* This routine inserts @a the_node on the tree @a the_rbtree.
*
<font color='#000088'>+ * @retval 0 Successfully inserted.
+ * @retval -1 NULL @a the_node.
+ * @retval RBTree_Node* if one with equal value to @a the_node 's key exists
+ * in an unique @a the_rbtree.
+ *
</font> * @note It disables interrupts to ensure the atomicity
* of the extract operation.
*/
<font color='#880000'>-void _RBTree_Insert(
</font><font color='#000088'>+RBTree_Node *_RBTree_Insert(
</font> RBTree_Control *the_rbtree,
RBTree_Node *the_node
);
<font color='#006600'>diff -u rtems/cpukit/score/inline/rtems/score/rbtree.inl:1.2 rtems/cpukit/score/inline/rtems/score/rbtree.inl:1.3
--- rtems/cpukit/score/inline/rtems/score/rbtree.inl:1.2 Tue Aug 2 14:25:59 2011
+++ rtems/cpukit/score/inline/rtems/score/rbtree.inl Sun Aug 21 15:07:11 2011
</font><font color='#997700'>@@ -235,8 +235,9 @@
</font> * This routine initializes @a the_rbtree to contain zero nodes.
*/
RTEMS_INLINE_ROUTINE void _RBTree_Initialize_empty(
<font color='#880000'>- RBTree_Control *the_rbtree,
- void *compare_function
</font><font color='#000088'>+ RBTree_Control *the_rbtree,
+ RBTree_Compare_function compare_function,
+ bool is_unique
</font> )
{
the_rbtree->permanent_null = NULL;
<font color='#997700'>@@ -244,6 +245,7 @@
</font> the_rbtree->first[0] = NULL;
the_rbtree->first[1] = NULL;
the_rbtree->compare_function = compare_function;
<font color='#000088'>+ the_rbtree->is_unique = is_unique;
</font> }
/** @brief Return a pointer to node's grandparent
<font color='#997700'>@@ -317,6 +319,9 @@
</font> * This function returns a pointer to the node in @a the_rbtree<span style="background-color: #FF0000"> </span>
* having key equal to key of @a the_node if it exists,
* and NULL if not. @a the_node has to be made up before a search.
<font color='#000088'>+ *
+ * @note If the tree is not unique and contains duplicate keys, the set
+ * of duplicate keys acts as FIFO.
</font> */
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Find_unprotected(
RBTree_Control *the_rbtree,
<font color='#997700'>@@ -324,18 +329,21 @@
</font> )
{
RBTree_Node* iter_node = the_rbtree->root;
<font color='#000088'>+ RBTree_Node* found = NULL;
</font> int compare_result;
while (iter_node) {
compare_result = the_rbtree->compare_function(the_node, iter_node);
if (compare_result == 0) {
<font color='#880000'>- return(iter_node);
</font><font color='#000088'>+ found = iter_node;
+ if ( the_rbtree->is_unique )
+ break;
</font> }
<font color='#880000'>- RBTree_Direction dir = (compare_result != -1);
</font><font color='#000088'>+ RBTree_Direction dir = (compare_result == 1);
</font> iter_node = iter_node->child[dir];
} /* while(iter_node) */
<font color='#880000'>- return 0;
</font><font color='#000088'>+ return found;
</font> }
/** @brief Find the nodes in-order predecessor
<font color='#997700'>@@ -428,7 +436,6 @@
</font> RBTree_Node *c;
if (the_node == NULL) return;
if (the_node->child[(1-dir)] == NULL) return;
<font color='#880000'>-<span style="background-color: #FF0000"> </span>
</font>
c = the_node->child[(1-dir)];
the_node->child[(1-dir)] = c->child[dir];
<font color='#997700'>@@ -443,6 +450,15 @@
</font> c->parent = the_node->parent;
the_node->parent = c;
}
<font color='#000088'>+
+/** @brief Determines whether the tree is unique
+ */
+RTEMS_INLINE_ROUTINE bool _RBTree_Is_unique(
+ RBTree_Control *the_rbtree
+)
+{
+ return( the_rbtree && the_rbtree->is_unique );
+}
</font> /**@}*/
#endif
<font color='#006600'>diff -u rtems/cpukit/score/src/rbtree.c:1.4 rtems/cpukit/score/src/rbtree.c:1.5
--- rtems/cpukit/score/src/rbtree.c:1.4 Tue Aug 2 14:25:59 2011
+++ rtems/cpukit/score/src/rbtree.c Sun Aug 21 15:07:11 2011
</font><font color='#997700'>@@ -32,11 +32,12 @@
</font> */
void _RBTree_Initialize(
<font color='#880000'>- RBTree_Control *the_rbtree,
- void *compare_function,
- void *starting_address,
- size_t number_nodes,
- size_t node_size
</font><font color='#000088'>+ RBTree_Control *the_rbtree,
+ RBTree_Compare_function compare_function,
+ void *starting_address,
+ size_t number_nodes,
+ size_t node_size,
+ bool is_unique
</font> )
{
size_t count;
<font color='#997700'>@@ -46,7 +47,7 @@
</font> if (!the_rbtree) return;
/* could do sanity checks here */
<font color='#880000'>- _RBTree_Initialize_empty(the_rbtree, compare_function);
</font><font color='#000088'>+ _RBTree_Initialize_empty(the_rbtree, compare_function, is_unique);
</font>
count = number_nodes;
next = starting_address;
<font color='#006600'>diff -u rtems/cpukit/score/src/rbtreeinsert.c:1.3 rtems/cpukit/score/src/rbtreeinsert.c:1.4
--- rtems/cpukit/score/src/rbtreeinsert.c:1.3 Tue Aug 2 14:25:59 2011
+++ rtems/cpukit/score/src/rbtreeinsert.c Sun Aug 21 15:07:11 2011
</font><font color='#997700'>@@ -72,7 +72,7 @@
</font> * @retval 0 Successfully inserted.
* @retval -1 NULL @a the_node.
* @retval RBTree_Node* if one with equal key to the key of @a the_node exists
<font color='#880000'>- * in @a the_rbtree.
</font><font color='#000088'>+ * in an unique @a the_rbtree.
</font> *
* @note It does NOT disable interrupts to ensure the atomicity
* of the extract operation.
<font color='#997700'>@@ -97,7 +97,8 @@
</font> /* typical binary search tree insert, descend tree to leaf and insert */
while (iter_node) {
compare_result = the_rbtree->compare_function(the_node, iter_node);
<font color='#880000'>- if ( !compare_result ) return iter_node;
</font><font color='#000088'>+ if ( the_rbtree->is_unique && !compare_result )
+ return iter_node;
</font> RBTree_Direction dir = (compare_result != -1);
if (!iter_node->child[dir]) {
the_node->child[RBT_LEFT] = the_node->child[RBT_RIGHT] = NULL;
<font color='#997700'>@@ -138,7 +139,7 @@
</font> * only case
*/
<font color='#880000'>-void _RBTree_Insert(
</font><font color='#000088'>+RBTree_Node *_RBTree_Insert(
</font> RBTree_Control *tree,
RBTree_Node *node
)
<font color='#997700'>@@ -146,6 +147,6 @@
</font> ISR_Level level;
_ISR_Disable( level );
<font color='#880000'>- _RBTree_Insert_unprotected( tree, node );
</font><font color='#000088'>+ return _RBTree_Insert_unprotected( tree, node );
</font> _ISR_Enable( level );
}
</pre>
<p> </p>
<a name='cs5'></a>
<table border='0' cellspacing='0' cellpadding='5' width='100%' bgcolor='#eeeeee'>
<tr><td colspan='3' bgcolor='#dddddd'>
<font color='#bb2222'><strong>joel</strong></font>
</td></tr>
<tr><td colspan='3' bgcolor='#dddddd'><pre>2011-08-21 Petr Benes <benesp16@fel.cvut.cz>
PR 1886/cpukit
* sprbtree01/init.c, sprbtree01/sprbtree01.scn: This patch enables
inserting duplicate keys into rbtree. It is possible to turn on this
feature when initializing the tree.
</pre></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/testsuites/sptests/ChangeLog.diff?r1=text&tr1=1.473&r2=text&tr2=1.474&diff_format=h">M</a></td><td width='1%'>1.474</td><td width='100%'>testsuites/sptests/ChangeLog</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/testsuites/sptests/sprbtree01/init.c.diff?r1=text&tr1=1.5&r2=text&tr2=1.6&diff_format=h">M</a></td><td width='1%'>1.6</td><td width='100%'>testsuites/sptests/sprbtree01/init.c</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/testsuites/sptests/sprbtree01/sprbtree01.scn.diff?r1=text&tr1=1.3&r2=text&tr2=1.4&diff_format=h">M</a></td><td width='1%'>1.4</td><td width='100%'>testsuites/sptests/sprbtree01/sprbtree01.scn</td></tr>
</table>
<pre>
<font color='#006600'>diff -u rtems/testsuites/sptests/ChangeLog:1.473 rtems/testsuites/sptests/ChangeLog:1.474
--- rtems/testsuites/sptests/ChangeLog:1.473 Thu Aug 18 02:47:07 2011
+++ rtems/testsuites/sptests/ChangeLog Sun Aug 21 15:07:23 2011
</font><font color='#997700'>@@ -1,3 +1,10 @@
</font><font color='#000088'>+2011-08-21 Petr Benes <benesp16@fel.cvut.cz>
+
+ PR 1886/cpukit
+ * sprbtree01/init.c, sprbtree01/sprbtree01.scn: This patch enables
+ inserting duplicate keys into rbtree. It is possible to turn on this
+ feature when initializing the tree.
+
</font> 2011-08-18 Sebastian Huber <sebastian.huber@embedded-brains.de>
* spfatal_support/init.c: Ensure that _Thread_BSP_context is
<font color='#006600'>diff -u rtems/testsuites/sptests/sprbtree01/init.c:1.5 rtems/testsuites/sptests/sprbtree01/init.c:1.6
--- rtems/testsuites/sptests/sprbtree01/init.c:1.5 Tue Aug 2 16:46:20 2011
+++ rtems/testsuites/sptests/sprbtree01/init.c Sun Aug 21 15:07:23 2011
</font><font color='#997700'>@@ -100,8 +100,14 @@
</font> puts( "\n\n*** TEST OF RTEMS RBTREE API ***" );
puts( "Init - Initialize rbtree empty" );
<font color='#880000'>- rtems_rbtree_initialize_empty( &rbtree1, &test_compare_function );
-<span style="background-color: #FF0000"> </span>
</font><font color='#000088'>+ rtems_rbtree_initialize_empty( &rbtree1, &test_compare_function,
+ RTEMS_RBTREE_UNIQUE );
+
+ if ( !rtems_rbtree_is_unique( &rbtree1 ) )
+ puts( "INIT - FAILED IS UNIQUE CHECK" );
+ if ( rtems_rbtree_is_unique( NULL ) )
+ puts( "INIT - FAILED IS UNIQUE CHECK" );
+
</font> /* verify that the rbtree insert work */
puts( "INIT - Verify rtems_rbtree_insert with two nodes" );
node1.id = 1;
<font color='#997700'>@@ -111,7 +117,7 @@
</font> rtems_rbtree_insert( &rbtree1, &node1.Node );
rtems_rbtree_insert( &rbtree1, &node2.Node );
<font color='#880000'>- p = _RBTree_Insert_unprotected( &rbtree1, NULL );
</font><font color='#000088'>+ p = rtems_rbtree_insert( &rbtree1, NULL );
</font> if (p != (void *)(-1))
puts( "INIT - FAILED NULL NODE INSERT" );
<font color='#997700'>@@ -149,7 +155,11 @@
</font> puts("INIT - Verify rtems_rbtree_insert with the same value twice");
node2.key = node1.key;
rtems_rbtree_insert(&rbtree1, &node1.Node);
<font color='#880000'>- rtems_rbtree_insert(&rbtree1, &node2.Node);
</font><font color='#000088'>+ p = rtems_rbtree_insert(&rbtree1, &node2.Node);
+
+ if (p != &node1.Node)
+ puts( "INIT - FAILED DUPLICATE INSERT" );
+
</font> for ( p = rtems_rbtree_get_min(&rbtree1), id = 1 ; p ;
p = rtems_rbtree_get_min(&rbtree1) , id++ ) {
test_node *t = rtems_rbtree_container_of(p,test_node,Node);
<font color='#997700'>@@ -527,7 +537,8 @@
</font> node_array[i].key = i;
}
rtems_rbtree_initialize( &rbtree1, &test_compare_function,
<font color='#880000'>- &node_array[0].Node, 100, sizeof(test_node));
</font><font color='#000088'>+ &node_array[0].Node, 100,
+ sizeof(test_node), RTEMS_RBTREE_UNIQUE );
</font>
puts( "INIT - Removing 100 nodes" );
<font color='#997700'>@@ -553,6 +564,98 @@
</font> rtems_test_exit(0);
}
<font color='#000088'>+ /* Initialize the tree for duplicate keys */
+ puts( "Init - Initialize duplicate rbtree empty" );
+ rtems_rbtree_initialize_empty( &rbtree1, &test_compare_function,
+ RTEMS_RBTREE_DUPLICATE );
+
+ if ( rtems_rbtree_is_unique( &rbtree1 ) )
+ puts( "INIT - FAILED IS UNIQUE CHECK" );
+ if ( rtems_rbtree_is_unique( NULL ) )
+ puts( "INIT - FAILED IS UNIQUE CHECK" );
+
+ puts( "INIT - Verify rtems_rbtree_insert with 100 nodes value [0,99]" );
+ for (i = 0; i < 100; i++) {
+ node_array[i].id = i;
+ node_array[i].key = i%5;
+ rtems_rbtree_insert( &rbtree1, &node_array[i].Node );
+
+ if (!rb_assert(rbtree1.root) )
+ puts( "INIT - FAILED TREE CHECK" );
+ }
+
+ puts( "INIT - Verify rtems_rbtree_find in a duplicate tree" );
+ search_node.key = 2;
+ p = rtems_rbtree_find(&rbtree1, &search_node.Node);
+ if(rtems_rbtree_container_of(p,test_node,Node)->id != 2) {
+ puts ("INIT - ERROR ON RBTREE ID MISMATCH");
+ rtems_test_exit(0);
+ }
+
+ puts( "INIT - Removing 100 nodes" );
+
+ for ( p = rtems_rbtree_get_min(&rbtree1), id = 0 ; p ;
+ p = rtems_rbtree_get_min(&rbtree1) , id++ ) {
+ test_node *t = rtems_rbtree_container_of(p,test_node,Node);
+ if ( id > 99 ) {
+ puts( "INIT - TOO MANY NODES ON RBTREE" );
+ rtems_test_exit(0);
+ }
+ if ( t->id != ( ((id*5)%100) + (id/20) ) ) {
+ puts( "INIT - ERROR ON RBTREE ID MISMATCH" );
+ rtems_test_exit(0);
+ }
+
+ if (!rb_assert(rbtree1.root) )
+ puts( "INIT - FAILED TREE CHECK" );
+ }
+
+ if(!rtems_rbtree_is_empty(&rbtree1)) {
+ puts( "INIT - TREE NOT EMPTY" );
+ rtems_test_exit(0);
+ }
+
+ puts( "INIT - Verify rtems_rbtree_insert with 100 nodes value [99,0]" );
+ for (i = 0; i < 100; i++) {
+ node_array[i].id = 99-i;
+ node_array[i].key = (99-i)%5;
+ rtems_rbtree_insert( &rbtree1, &node_array[i].Node );
+
+ if (!rb_assert(rbtree1.root) )
+ puts( "INIT - FAILED TREE CHECK" );
+ }
+
+ puts( "INIT - Verify rtems_rbtree_find in a duplicate tree" );
+ search_node.key = 2;
+ p = rtems_rbtree_find(&rbtree1, &search_node.Node);
+ if(rtems_rbtree_container_of(p,test_node,Node)->id != 97) {
+ puts ("INIT - ERROR ON RBTREE ID MISMATCH");
+ rtems_test_exit(0);
+ }
+
+ puts( "INIT - Removing 100 nodes" );
+
+ for ( p = rtems_rbtree_get_min(&rbtree1), id = 0 ; p ;
+ p = rtems_rbtree_get_min(&rbtree1) , id++ ) {
+ test_node *t = rtems_rbtree_container_of(p,test_node,Node);
+ if ( id > 99 ) {
+ puts( "INIT - TOO MANY NODES ON RBTREE" );
+ rtems_test_exit(0);
+ }
+ if ( t->id != ( (((99-id)*5)%100) + (id/20) ) ) {
+ puts( "INIT - ERROR ON RBTREE ID MISMATCH" );
+ rtems_test_exit(0);
+ }
+
+ if (!rb_assert(rbtree1.root) )
+ puts( "INIT - FAILED TREE CHECK" );
+ }
+
+ if(!rtems_rbtree_is_empty(&rbtree1)) {
+ puts( "INIT - TREE NOT EMPTY" );
+ rtems_test_exit(0);
+ }
+
</font> puts( "*** END OF RTEMS RBTREE API TEST ***" );
rtems_test_exit(0);
}
<font color='#006600'>diff -u rtems/testsuites/sptests/sprbtree01/sprbtree01.scn:1.3 rtems/testsuites/sptests/sprbtree01/sprbtree01.scn:1.4
--- rtems/testsuites/sptests/sprbtree01/sprbtree01.scn:1.3 Tue Aug 2 08:38:41 2011
+++ rtems/testsuites/sptests/sprbtree01/sprbtree01.scn Sun Aug 21 15:07:23 2011
</font><font color='#997700'>@@ -24,4 +24,11 @@
</font> INIT - Removing 20 nodes
INIT - Verify rtems_rbtree_initialize with 100 nodes value [0,99]
INIT - Removing 100 nodes
<font color='#000088'>+Init - Initialize duplicate rbtree empty
+INIT - Verify rtems_rbtree_insert with 100 nodes value [0,99]
+INIT - Verify rtems_rbtree_find in a duplicate tree
+INIT - Removing 100 nodes
+INIT - Verify rtems_rbtree_insert with 100 nodes value [99,0]
+INIT - Verify rtems_rbtree_find in a duplicate tree
+INIT - Removing 100 nodes
</font> *** END OF RTEMS RBTREE API TEST ***
</pre>
<p> </p>
<p>--<br />
<small>Generated by <a href="http://www.codewiz.org/projects/index.html#loginfo">Deluxe Loginfo</a> 2.122 by Bernardo Innocenti <bernie@develer.com></small></p>
</body>
</html>