change log for rtems (2011-07-27)

rtems-vc at rtems.org rtems-vc at rtems.org
Wed Jul 27 14:10:35 UTC 2011


 *joel*:
2011-07-27	Petr Benes <benesp16 at fel.cvut.cz>

	PR 1856/cpukit
	* posix/src/pthread.c, posix/src/pthreadjoin.c,
	score/src/rbtreeextract.c: Do not derefence NULL.

M 1.2890  cpukit/ChangeLog
M   1.83  cpukit/posix/src/pthread.c
M   1.10  cpukit/posix/src/pthreadjoin.c
M    1.3  cpukit/score/src/rbtreeextract.c

diff -u rtems/cpukit/ChangeLog:1.2889 rtems/cpukit/ChangeLog:1.2890
--- rtems/cpukit/ChangeLog:1.2889	Sun Jul 24 18:55:05 2011
+++ rtems/cpukit/ChangeLog	Wed Jul 27 08:27:47 2011
@@ -1,3 +1,9 @@
+2011-07-27	Petr Benes <benesp16 at fel.cvut.cz>
+
+	PR 1856/cpukit
+	* posix/src/pthread.c, posix/src/pthreadjoin.c,
+	score/src/rbtreeextract.c: Do not derefence NULL.
+
 2011-07-24	Joel Sherrill <joel.sherrill at oarcorp.com>
 
 	* ftpd/ftpd.c, libcsupport/src/geteuid.c, libcsupport/src/getgroups.c,

diff -u rtems/cpukit/posix/src/pthread.c:1.82 rtems/cpukit/posix/src/pthread.c:1.83
--- rtems/cpukit/posix/src/pthread.c:1.82	Tue Feb 15 18:24:49 2011
+++ rtems/cpukit/posix/src/pthread.c	Wed Jul 27 08:27:48 2011
@@ -217,7 +217,7 @@
   _Thread_queue_Initialize(
     &api->Join_List,
     THREAD_QUEUE_DISCIPLINE_FIFO,
-    STATES_WAITING_FOR_JOIN_AT_EXIT,
+    STATES_WAITING_FOR_JOIN_AT_EXIT | STATES_INTERRUPTIBLE_BY_SIGNAL,
     0
   );
 

diff -u rtems/cpukit/posix/src/pthreadjoin.c:1.9 rtems/cpukit/posix/src/pthreadjoin.c:1.10
--- rtems/cpukit/posix/src/pthreadjoin.c:1.9	Tue Mar  8 16:14:14 2011
+++ rtems/cpukit/posix/src/pthreadjoin.c	Wed Jul 27 08:27:48 2011
@@ -32,6 +32,7 @@
   Objects_Locations        location;
   void                    *return_pointer;
 
+on_EINTR:
   the_thread = _Thread_Get( thread, &location );
   switch ( location ) {
 
@@ -60,6 +61,11 @@
 
       _Thread_Enable_dispatch();
 
+/*
+      if ( _Thread_Executing->Wait.return_code == EINTR )
+        goto on_EINTR;
+*/
+
       if ( value_ptr )
         *value_ptr = return_pointer;
       return 0;

diff -u rtems/cpukit/score/src/rbtreeextract.c:1.2 rtems/cpukit/score/src/rbtreeextract.c:1.3
--- rtems/cpukit/score/src/rbtreeextract.c:1.2	Mon May 23 21:44:57 2011
+++ rtems/cpukit/score/src/rbtreeextract.c	Wed Jul 27 08:27:48 2011
@@ -164,9 +164,11 @@
 
     /* set target's new children to the original node's children */
     target->child[RBT_RIGHT] = the_node->child[RBT_RIGHT];
-    the_node->child[RBT_RIGHT]->parent = target;
+    if (the_node->child[RBT_RIGHT])
+      the_node->child[RBT_RIGHT]->parent = target;
     target->child[RBT_LEFT] = the_node->child[RBT_LEFT];
-    the_node->child[RBT_LEFT]->parent = target;
+    if (the_node->child[RBT_LEFT])
+      the_node->child[RBT_LEFT]->parent = target;
 
     /* finally, update the parent node and recolor. target has completely
      * replaced the_node, and target's child has moved up the tree if needed.


 *joel*:
2011-07-27	Petr Benes <benesp16 at fel.cvut.cz>

	PR 1854/cpukit
	* sprbtree01/init.c, sprbtree01/sprbtree01.scn: Add test of the
	rtems_rbtree_extract() to improve test coverage.

M  1.466  testsuites/sptests/ChangeLog
M    1.2  testsuites/sptests/sprbtree01/init.c
M    1.2  testsuites/sptests/sprbtree01/sprbtree01.scn

diff -u rtems/testsuites/sptests/ChangeLog:1.465 rtems/testsuites/sptests/ChangeLog:1.466
--- rtems/testsuites/sptests/ChangeLog:1.465	Tue Jul 26 15:53:09 2011
+++ rtems/testsuites/sptests/ChangeLog	Wed Jul 27 08:35:11 2011
@@ -1,3 +1,9 @@
+2011-07-27	Petr Benes <benesp16 at fel.cvut.cz>
+
+	PR 1854/cpukit
+	* sprbtree01/init.c, sprbtree01/sprbtree01.scn: Add test of the
+	rtems_rbtree_extract() to improve test coverage.
+
 2011-07-26	Joel Sherrill <joel.sherrilL at OARcorp.com>
 
 	* Makefile.am, configure.ac: New test to get coverage of core mutex

diff -u rtems/testsuites/sptests/sprbtree01/init.c:1.1 rtems/testsuites/sptests/sprbtree01/init.c:1.2
--- rtems/testsuites/sptests/sprbtree01/init.c:1.1	Mon Apr  4 13:45:38 2011
+++ rtems/testsuites/sptests/sprbtree01/init.c	Wed Jul 27 08:35:11 2011
@@ -12,10 +12,10 @@
 #include <rtems/rbtree.h>
 
 int numbers[20] = {
-52, 99, 5, 85, 43, 44, 10, 60, 50, 19, 8, 68, 48, 57, 17, 67, 90, 12, 77, 71};
+52, 99, 0, 85, 43, 44, 10, 60, 50, 19, 8, 68, 48, 57, 17, 67, 90, 12, 77, 71};
 
 int numbers_sorted[20] = {
-  5, 8, 10, 12, 17, 19, 43, 44, 48, 50, 52, 57, 60, 67, 68, 71, 77, 85, 90, 99};
+  0, 8, 10, 12, 17, 19, 43, 44, 48, 50, 52, 57, 60, 67, 68, 71, 77, 85, 90, 99};
 
 typedef struct {
   int              id;
@@ -272,6 +272,58 @@
     rtems_test_exit(0);
   }
 
+  /* testing rbtree_extract by adding 100 nodes then removing the 20 with
+   * keys specified by the numbers array, then removing the rest */
+  puts( "INIT - Verify rtems_rbtree_extract with 100 nodes value [0,99]" );
+  for (i = 0; i < 100; i++) {
+    node_array[i].id = i;
+    node_array[i].Node.value = i;
+    rtems_rbtree_insert( &rbtree1, &node_array[i].Node );
+
+    if (!rb_assert(rbtree1.root) )
+      puts( "INIT - FAILED TREE CHECK" );
+  }
+
+  puts( "INIT - Extracting 20 random nodes" );
+
+  for (i = 0; i < 20; i++) {
+    id = numbers[i];
+    rtems_rbtree_extract( &rbtree1, &node_array[id].Node );
+    if (!rb_assert(rbtree1.root) )
+      puts( "INIT - FAILED TREE CHECK" );
+  }
+
+  puts( "INIT - Removing 80 nodes" );
+
+  for ( p = rtems_rbtree_get_min(&rbtree1), id = 0, i = 0 ; p ;
+      p = rtems_rbtree_get_min(&rbtree1) , id++ ) {
+    test_node *t = rtems_rbtree_container_of(p, test_node, Node);
+
+    while ( id == numbers_sorted[i] ) {
+      /* skip if expected minimum (id) is in the set of extracted numbers */
+      id++;
+      i++;
+    }
+
+    if ( id > 99 ) {
+      puts( "INIT - TOO MANY NODES ON RBTREE" );
+      rtems_test_exit(0);
+    }
+
+    if ( t->id != id ) {
+      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_get_max with 100 nodes value [99,0]" );
   for (i = 0; i < 100; i++) {
     node_array[i].id = 99-i;

diff -u rtems/testsuites/sptests/sprbtree01/sprbtree01.scn:1.1 rtems/testsuites/sptests/sprbtree01/sprbtree01.scn:1.2
--- rtems/testsuites/sptests/sprbtree01/sprbtree01.scn:1.1	Mon Apr  4 13:45:38 2011
+++ rtems/testsuites/sptests/sprbtree01/sprbtree01.scn	Wed Jul 27 08:35:11 2011
@@ -10,6 +10,9 @@
 INIT - Removing 100 nodes
 INIT - Verify rtems_rbtree_insert with 100 nodes value [99,0]
 INIT - Removing 100 nodes
+INIT - Verify rtems_rbtree_extract with 100 nodes value [0,99]
+INIT - Extracting 20 random nodes
+INIT - Removing 80 nodes
 INIT - Verify rtems_rbtree_get_max with 100 nodes value [99,0]
 INIT - Removing 100 nodes
 INIT - Verify rtems_rbtree_get_max with 100 nodes value [0,99]



--

Generated by Deluxe Loginfo [http://www.codewiz.org/projects/index.html#loginfo] 2.122 by Bernardo Innocenti <bernie at develer.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/vc/attachments/20110727/ae4f80ff/attachment-0001.html>


More information about the vc mailing list