<!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-02)</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>jennifer</strong></font>
</td></tr>
<tr><td colspan='3' bgcolor='#dddddd'><pre>2011-08-02 Jennifer.Averett <Jennifer.Averett@OARcorp.com>

        PR 1872
        * score/src/apimutexlock.c, score/src/apimutexunlock.c: Added smp
        support to apimutex.
</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.2898&r2=text&tr2=1.2899&diff_format=h">M</a></td><td width='1%'>1.2899</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/src/apimutexlock.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/apimutexlock.c</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/score/src/apimutexunlock.c.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/src/apimutexunlock.c</td></tr>
</table>
<pre>
<font color='#006600'>diff -u rtems/cpukit/ChangeLog:1.2898 rtems/cpukit/ChangeLog:1.2899
--- rtems/cpukit/ChangeLog:1.2898       Tue Aug  2 08:37:20 2011
+++ rtems/cpukit/ChangeLog      Tue Aug  2 08:38:24 2011
</font><font color='#997700'>@@ -1,3 +1,9 @@
</font><font color='#000088'>+2011-08-02    Jennifer.Averett <Jennifer.Averett@OARcorp.com>
+
+       PR 1872
+       * score/src/apimutexlock.c, score/src/apimutexunlock.c: Added smp
+       support to apimutex.
+
</font> 2011-08-02        Petr Benes <benesp16@fel.cvut.cz>
 
        PR 1861/cpukit

<font color='#006600'>diff -u rtems/cpukit/score/src/apimutexlock.c:1.4 rtems/cpukit/score/src/apimutexlock.c:1.5
--- rtems/cpukit/score/src/apimutexlock.c:1.4   Sun Nov 29 07:51:52 2009
+++ rtems/cpukit/score/src/apimutexlock.c       Tue Aug  2 08:38:25 2011
</font><font color='#997700'>@@ -22,6 +22,10 @@
</font> {
   ISR_Level level;
 
<font color='#000088'>+  #if defined(RTEMS_SMP)
+    _Thread_Disable_dispatch();
+  #endif
+
</font>   _ISR_Disable( level );
 
   _CORE_mutex_Seize(

<font color='#006600'>diff -u rtems/cpukit/score/src/apimutexunlock.c:1.2 rtems/cpukit/score/src/apimutexunlock.c:1.3
--- rtems/cpukit/score/src/apimutexunlock.c:1.2 Fri Nov  9 15:52:09 2007
+++ rtems/cpukit/score/src/apimutexunlock.c     Tue Aug  2 08:38:25 2011
</font><font color='#997700'>@@ -20,7 +20,10 @@
</font>   API_Mutex_Control *the_mutex
 )
 {
<font color='#880000'>-  _Thread_Disable_dispatch();
</font><font color='#000088'>+   /* Dispatch is already disabled in SMP while lock is held. */
+   #if !defined(RTEMS_SMP)
+     _Thread_Disable_dispatch();
+   #endif
</font>     _CORE_mutex_Surrender(
       &the_mutex->Mutex,
       the_mutex->Object.id,
</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>jennifer</strong></font>
</td></tr>
<tr><td colspan='3' bgcolor='#dddddd'><pre>2011-08-02 Jennifer Averett <Jennifer.Averett@OARcorp.com>

        * score/include/rtems/score/coremutex.h: Move check dispatch for seize
        into its own macro and add smp support.
</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.2899&r2=text&tr2=1.2900&diff_format=h">M</a></td><td width='1%'>1.2900</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/coremutex.h.diff?r1=text&tr1=1.44&r2=text&tr2=1.45&diff_format=h">M</a></td><td width='1%'>1.45</td><td width='100%'>cpukit/score/include/rtems/score/coremutex.h</td></tr>
</table>
<pre>
<font color='#006600'>diff -u rtems/cpukit/ChangeLog:1.2899 rtems/cpukit/ChangeLog:1.2900
--- rtems/cpukit/ChangeLog:1.2899       Tue Aug  2 08:38:24 2011
+++ rtems/cpukit/ChangeLog      Tue Aug  2 08:59:48 2011
</font><font color='#997700'>@@ -1,3 +1,8 @@
</font><font color='#000088'>+2011-08-02    Jennifer Averett <Jennifer.Averett@OARcorp.com>
+
+       * score/include/rtems/score/coremutex.h: Move check dispatch for seize
+       into its own macro and add smp support.
+
</font> 2011-08-02        Jennifer.Averett <Jennifer.Averett@OARcorp.com>
 
        PR 1872

<font color='#006600'>diff -u rtems/cpukit/score/include/rtems/score/coremutex.h:1.44 rtems/cpukit/score/include/rtems/score/coremutex.h:1.45
--- rtems/cpukit/score/include/rtems/score/coremutex.h:1.44     Fri Jun 17 10:40:08 2011
+++ rtems/cpukit/score/include/rtems/score/coremutex.h  Tue Aug  2 08:59:48 2011
</font><font color='#997700'>@@ -8,7 +8,7 @@
</font>  */
 
 /*
<font color='#880000'>- *  COPYRIGHT (c) 1989-2009.
</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'>@@ -339,6 +339,25 @@
</font>   Watchdog_Interval    timeout
 );
 
<font color='#000088'>+
+/**
+ *  @brief Sieze Interrupt Wrapper
+ *
+ *  This macro is to verify that a mutex blocking seize is
+ *  performed from a safe system state.  For example, one<span style="background-color: #FF0000"> </span>
+ *  cannot block inside an isr.
+ *
+ *  @return this method returns true if dispatch is in an unsafe state.
+ */
+#ifdef RTEMS_SMP
+  #define _CORE_mutex_Check_dispatch_for_seize(_wait) 0
+#else
+  #define _CORE_mutex_Check_dispatch_for_seize(_wait) \
+      (_Thread_Dispatch_in_critical_section() \
+        && (_wait) \
+        && (_System_state_Get() >= SYSTEM_STATE_BEGIN_MULTITASKING))
+#endif
+
</font> /**
  *  @brief Sieze Interrupt Wrapper
  *
<font color='#997700'>@@ -366,14 +385,10 @@
</font>  *  * If the caller is willing to wait
  *      then they are blocked.
  */
<font color='#880000'>-
</font> #define _CORE_mutex_Seize_body( \
   _the_mutex, _id, _wait, _timeout, _level ) \
   do { \
<font color='#880000'>-    if ( _Thread_Dispatch_in_critical_section() \
-        && (_wait) \
-        && (_System_state_Get() >= SYSTEM_STATE_BEGIN_MULTITASKING ) \
-       ) { \
</font><font color='#000088'>+    if ( _CORE_mutex_Check_dispatch_for_seize(_wait) ) { \
</font>         _Internal_error_Occurred( \
            INTERNAL_ERROR_CORE, \
            false, \
</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>
</td></tr>
<tr><td colspan='3' bgcolor='#dddddd'><pre>2011-08-02 Ricardo Aguirre <el.mastin@ymail.com>

        PR 1874/tests
        * Makefile.am, configure.ac, psxtmtests_plan.csv: Add benchmark of
        multiple pthread_rwlock operations that can be done as single shot
        times.
        * psxtmrwlock01/.cvsignore, psxtmrwlock01/Makefile.am,
        psxtmrwlock01/init.c, psxtmrwlock01/psxtmrwlock01.doc: New files.
</pre></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/testsuites/psxtmtests/ChangeLog.diff?r1=text&tr1=1.37&r2=text&tr2=1.38&diff_format=h">M</a></td><td width='1%'>1.38</td><td width='100%'>testsuites/psxtmtests/ChangeLog</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/testsuites/psxtmtests/Makefile.am.diff?r1=text&tr1=1.20&r2=text&tr2=1.21&diff_format=h">M</a></td><td width='1%'>1.21</td><td width='100%'>testsuites/psxtmtests/Makefile.am</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/testsuites/psxtmtests/configure.ac.diff?r1=text&tr1=1.23&r2=text&tr2=1.24&diff_format=h">M</a></td><td width='1%'>1.24</td><td width='100%'>testsuites/psxtmtests/configure.ac</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/testsuites/psxtmtests/psxtmrwlock01/.cvsignore?rev=1.1&content-type=text/vnd.viewcvs-markup">A</a></td><td width='1%'><font color="#000088">1.1</font></td><td width='100%'><font color="#000088">testsuites/psxtmtests/psxtmrwlock01/.cvsignore</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/testsuites/psxtmtests/psxtmrwlock01/Makefile.am?rev=1.1&content-type=text/vnd.viewcvs-markup">A</a></td><td width='1%'><font color="#000088">1.1</font></td><td width='100%'><font color="#000088">testsuites/psxtmtests/psxtmrwlock01/Makefile.am</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/testsuites/psxtmtests/psxtmrwlock01/init.c?rev=1.1&content-type=text/vnd.viewcvs-markup">A</a></td><td width='1%'><font color="#000088">1.1</font></td><td width='100%'><font color="#000088">testsuites/psxtmtests/psxtmrwlock01/init.c</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/testsuites/psxtmtests/psxtmrwlock01/psxtmrwlock01.doc?rev=1.1&content-type=text/vnd.viewcvs-markup">A</a></td><td width='1%'><font color="#000088">1.1</font></td><td width='100%'><font color="#000088">testsuites/psxtmtests/psxtmrwlock01/psxtmrwlock01.doc</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/testsuites/psxtmtests/psxtmtests_plan.csv.diff?r1=text&tr1=1.22&r2=text&tr2=1.23&diff_format=h">M</a></td><td width='1%'>1.23</td><td width='100%'>testsuites/psxtmtests/psxtmtests_plan.csv</td></tr>
</table>
<pre>
<font color='#006600'>diff -u rtems/testsuites/psxtmtests/ChangeLog:1.37 rtems/testsuites/psxtmtests/ChangeLog:1.38
--- rtems/testsuites/psxtmtests/ChangeLog:1.37  Fri Jul 29 11:54:32 2011
+++ rtems/testsuites/psxtmtests/ChangeLog       Tue Aug  2 08:23:32 2011
</font><font color='#997700'>@@ -1,3 +1,12 @@
</font><font color='#000088'>+2011-08-02    Ricardo Aguirre <el.mastin@ymail.com>
+
+       PR 1874/tests
+       * Makefile.am, configure.ac, psxtmtests_plan.csv: Add benchmark of
+       multiple pthread_rwlock operations that can be done as single shot
+       times.
+       * psxtmrwlock01/.cvsignore, psxtmrwlock01/Makefile.am,
+       psxtmrwlock01/init.c, psxtmrwlock01/psxtmrwlock01.doc: New files.
+
</font> 2011-07-29        Ricardo Aguirre <el.mastin@ymail.com>
 
        PR 1863/tests

<font color='#006600'>diff -u rtems/testsuites/psxtmtests/Makefile.am:1.20 rtems/testsuites/psxtmtests/Makefile.am:1.21
--- rtems/testsuites/psxtmtests/Makefile.am:1.20        Fri Jul 29 11:54:32 2011
+++ rtems/testsuites/psxtmtests/Makefile.am     Tue Aug  2 08:23:33 2011
</font><font color='#997700'>@@ -21,6 +21,7 @@
</font> SUBDIRS += psxtmmutex07
 SUBDIRS += psxtmnanosleep01
 SUBDIRS += psxtmnanosleep02
<font color='#000088'>+SUBDIRS += psxtmrwlock01
</font> SUBDIRS += psxtmsem01
 SUBDIRS += psxtmsem02
 SUBDIRS += psxtmsem03

<font color='#006600'>diff -u rtems/testsuites/psxtmtests/configure.ac:1.23 rtems/testsuites/psxtmtests/configure.ac:1.24
--- rtems/testsuites/psxtmtests/configure.ac:1.23       Fri Jul 29 11:54:32 2011
+++ rtems/testsuites/psxtmtests/configure.ac    Tue Aug  2 08:23:33 2011
</font><font color='#997700'>@@ -93,6 +93,7 @@
</font> psxtmmutex07/Makefile
 psxtmnanosleep01/Makefile
 psxtmnanosleep02/Makefile
<font color='#000088'>+psxtmrwlock01//Makefile
</font> psxtmsem01/Makefile
 psxtmsem02/Makefile
 psxtmsem03/Makefile

<font color='#006600'>diff -u /dev/null rtems/testsuites/psxtmtests/psxtmrwlock01/.cvsignore:1.1
--- /dev/null   Tue Aug  2 09:11:49 2011
+++ rtems/testsuites/psxtmtests/psxtmrwlock01/.cvsignore        Tue Aug  2 08:23:33 2011
</font><font color='#997700'>@@ -0,0 +1,2 @@
</font><font color='#000088'>+Makefile
+Makefile.in
</font>
<font color='#006600'>diff -u /dev/null rtems/testsuites/psxtmtests/psxtmrwlock01/Makefile.am:1.1
--- /dev/null   Tue Aug  2 09:11:49 2011
+++ rtems/testsuites/psxtmtests/psxtmrwlock01/Makefile.am       Tue Aug  2 08:23:33 2011
</font><font color='#997700'>@@ -0,0 +1,30 @@
</font><font color='#000088'>+##
+## $Id$
+##
+
+MANAGERS = all
+
+rtems_tests_PROGRAMS = psxtmrwlock01
+psxtmrwlock01_SOURCES = init.c ../../tmtests/include/timesys.h \
+    ../../support/src/tmtests_empty_function.c \
+    ../../support/src/tmtests_support.c
+
+dist_rtems_tests_DATA = psxtmrwlock01.doc
+
+include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
+include $(top_srcdir)/../automake/compile.am
+include $(top_srcdir)/../automake/leaf.am
+
+OPERATION_COUNT = @OPERATION_COUNT@
+AM_CPPFLAGS += -I$(top_srcdir)/../tmtests/include
+AM_CPPFLAGS += -DOPERATION_COUNT=$(OPERATION_COUNT)
+AM_CPPFLAGS += -I$(top_srcdir)/../support/include
+
+LINK_OBJS = $(psxtmrwlock01_OBJECTS) $(psxtmrwlock01_LDADD)
+LINK_LIBS = $(psxtmrwlock01_LDLIBS)
+
+psxtmrwlock01$(EXEEXT): $(psxtmrwlock01_OBJECTS) $(psxtmrwlock01_DEPENDENCIES)
+       @rm -f psxtmrwlock01$(EXEEXT)
+       $(make-exe)
+
+include $(top_srcdir)/../automake/local.am
</font>
<font color='#006600'>diff -u /dev/null rtems/testsuites/psxtmtests/psxtmrwlock01/init.c:1.1
--- /dev/null   Tue Aug  2 09:11:49 2011
+++ rtems/testsuites/psxtmtests/psxtmrwlock01/init.c    Tue Aug  2 08:23:33 2011
</font><font color='#997700'>@@ -0,0 +1,254 @@
</font><font color='#000088'>+/*
+ *  COPYRIGHT (c) 1989-2011.
+ *  On-Line Applications Research Corporation (OAR).
+ *
+ *  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$
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <errno.h>
+#include <timesys.h>
+#include <rtems/timerdrv.h>
+#include <pthread.h>
+#include "test_support.h"
+
+pthread_rwlock_t     rwlock;
+
+void benchmark_pthread_rwlock_init(void)
+{
+  long end_time;
+  int  status;
+  pthread_rwlockattr_t attr;
+
+  pthread_rwlockattr_init( &attr );
+  benchmark_timer_initialize();
+    status = pthread_rwlock_init( &rwlock, &attr );
+  end_time = benchmark_timer_read();
+  rtems_test_assert( status == 0 );
+
+  put_time(
+    "pthread_rwlock_init",
+    end_time,
+    1,        /* Only executed once */
+    0,
+    0
+  );
+}
+
+void benchmark_pthread_rwlock_rdlock(void)
+{
+  long end_time;
+  int  status;
+
+  benchmark_timer_initialize();
+    status = pthread_rwlock_rdlock(&rwlock);
+  end_time = benchmark_timer_read();
+  rtems_test_assert( status == 0 );
+
+  put_time(
+    "pthread_rwlock_rdlock - available",
+    end_time,
+    1,        /* Only executed once */
+    0,
+    0
+  );
+}
+
+void benchmark_pthread_rwlock_unlock(bool do_print)
+{
+  long end_time;
+  int  status;
+
+  benchmark_timer_initialize();
+    status = pthread_rwlock_unlock(&rwlock);
+  end_time = benchmark_timer_read();
+  if ( status == EPERM )
+    puts( "The current thread does not own the read-write lock");
+  else
+    rtems_test_assert( status == 0 );
+
+  if ( do_print ) {
+    put_time(
+      "pthread_rwlock_unlock - available",
+      end_time,
+      1,        /* Only executed once */
+      0,
+      0
+    );
+  }
+}
+
+void benchmark_pthread_rwlock_tryrdlock(void)
+{
+  long end_time;
+  int  status;
+
+  benchmark_timer_initialize();
+    status = pthread_rwlock_tryrdlock(&rwlock);
+  end_time = benchmark_timer_read();
+  rtems_test_assert( status == 0 );
+
+  put_time(
+    "pthread_rwlock_tryrdlock - available",
+    end_time,
+    1,        /* Only executed once */
+    0,
+    0
+  );
+}
+
+void benchmark_pthread_rwlock_timedrdlock(void)
+{
+  long end_time;
+  int  status;
+
+  benchmark_timer_initialize();
+    status = pthread_rwlock_timedrdlock(&rwlock, 0);
+  end_time = benchmark_timer_read();
+  rtems_test_assert( status == 0 );
+
+  put_time(
+    "pthread_rwlock_timedrdlock - available",
+    end_time,
+    1,        /* Only executed once */
+    0,
+    0
+  );
+}
+
+void benchmark_pthread_rwlock_wrlock(void)
+{
+  long end_time;
+  int  status;
+
+  benchmark_timer_initialize();
+    status = pthread_rwlock_wrlock(&rwlock);
+  end_time = benchmark_timer_read();
+  rtems_test_assert( status == 0 );
+
+  put_time(
+    "pthread_rwlock_wrlock - available",
+    end_time,
+    1,        /* Only executed once */
+    0,
+    0
+  );
+}
+
+void benchmark_pthread_rwlock_trywrlock(void)
+{
+  long end_time;
+  int  status;
+
+  benchmark_timer_initialize();
+    status = pthread_rwlock_trywrlock(&rwlock);
+  end_time = benchmark_timer_read();
+  rtems_test_assert( status == 0 );
+
+  put_time(
+    "pthread_rwlock_trywrlock - available",
+    end_time,
+    1,        /* Only executed once */
+    0,
+    0
+  );
+}
+
+void benchmark_pthread_rwlock_timedwrlock(void)
+{
+  long end_time;
+  int  status;
+
+  benchmark_timer_initialize();
+    status = pthread_rwlock_timedwrlock(&rwlock,0);
+  end_time = benchmark_timer_read();
+  rtems_test_assert( status == 0 );
+
+  put_time(
+    "pthread_rwlock_timedwrlock - available",
+    end_time,
+    1,        /* Only executed once */
+    0,
+    0
+  );
+}
+
+void benchmark_pthread_rwlock_destroy(void)
+{
+  long end_time;
+  int  status;
+
+  benchmark_timer_initialize();
+    status = pthread_rwlock_destroy(&rwlock);
+  end_time = benchmark_timer_read();
+  rtems_test_assert( status == 0 );
+
+  put_time(
+    "pthread_rwlock_destroy",
+    end_time,
+    1,        /* Only executed once */
+    0,
+    0
+  );
+}
+
+void *POSIX_Init(
+  void *argument
+)
+{
+
+  puts( "\n\n*** POSIX TIME PSXTMRWLOCK 01  ***" );
+
+  /* initializing rwlock */
+  benchmark_pthread_rwlock_init();
+  /* applying a read lock */
+  benchmark_pthread_rwlock_rdlock();
+  /* unlocking rwlock */
+  benchmark_pthread_rwlock_unlock( true );
+  /* trying to apply a read lock when it is available */
+  benchmark_pthread_rwlock_tryrdlock();
+  /* unlocking rwlock */
+  benchmark_pthread_rwlock_unlock( false );
+  /* applying a timed read lock */
+  benchmark_pthread_rwlock_timedrdlock();
+  /* unlocking rwlock */
+  benchmark_pthread_rwlock_unlock( false );
+  /* applying a write lock */
+  benchmark_pthread_rwlock_wrlock();
+  /* unlocking rwlock */
+  benchmark_pthread_rwlock_unlock( false );
+  /* trying to apply a write lock, when it is available */
+  benchmark_pthread_rwlock_trywrlock();
+  /* unlocking rwlock */
+  benchmark_pthread_rwlock_unlock( false );
+  /* applying a timed write lock */
+  benchmark_pthread_rwlock_timedwrlock();
+  /* unlocking rwlock */
+  benchmark_pthread_rwlock_unlock( false );
+  /* destroying rwlock */
+  benchmark_pthread_rwlock_destroy();
+
+  puts( "*** END OF POSIX TIME PSXTMRWLOCK 01 ***" );
+  rtems_test_exit(0);
+}
+
+/* configuration information */
+
+#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
+#define CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER
+
+#define CONFIGURE_MAXIMUM_POSIX_THREADS     1
+#define CONFIGURE_MAXIMUM_POSIX_RWLOCKS     1
+#define CONFIGURE_POSIX_INIT_THREAD_TABLE
+
+#define CONFIGURE_INIT
+
+#include <rtems/confdefs.h>
+/* end of file */
</font>
<font color='#006600'>diff -u /dev/null rtems/testsuites/psxtmtests/psxtmrwlock01/psxtmrwlock01.doc:1.1
--- /dev/null   Tue Aug  2 09:11:49 2011
+++ rtems/testsuites/psxtmtests/psxtmrwlock01/psxtmrwlock01.doc Tue Aug  2 08:23:33 2011
</font><font color='#997700'>@@ -0,0 +1,23 @@
</font><font color='#000088'>+#
+#  $Id$
+#
+#  COPYRIGHT (c) 1989-2011.
+#  On-Line Applications Research Corporation (OAR).
+#
+#  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.
+#
+
+This test benchmarks the following operations:
+
++ pthread_rwlock_init<span style="background-color: #FF0000"> </span>
++ pthread_rwlock_rdlock - available<span style="background-color: #FF0000"> </span>
++ pthread_rwlock_unlock
++ pthread_rwlock_tryrdlock - available<span style="background-color: #FF0000"> </span>
++ pthread_rwlock_timedrdlock - available<span style="background-color: #FF0000"> </span>
++ pthread_rwlock_wrlock - available<span style="background-color: #FF0000"> </span>
++ pthread_rwlock_trywrlock - available<span style="background-color: #FF0000"> </span>
++ pthread_rwlock_timedwrlock - available<span style="background-color: #FF0000"> </span>
++ pthread_rwlock_destroy<span style="background-color: #FF0000"> </span>
+
</font>
<font color='#006600'>diff -u rtems/testsuites/psxtmtests/psxtmtests_plan.csv:1.22 rtems/testsuites/psxtmtests/psxtmtests_plan.csv:1.23
--- rtems/testsuites/psxtmtests/psxtmtests_plan.csv:1.22        Fri Jul 29 11:54:32 2011
+++ rtems/testsuites/psxtmtests/psxtmtests_plan.csv     Tue Aug  2 08:23:33 2011
</font><font color='#997700'>@@ -63,22 +63,22 @@
</font> "pthread_spin_trylock - not available",,"psxtmtest_single",
 "pthread_spin_unlock",,,
 ,,,
<font color='#880000'>-"pthread_rwlock_init",,"psxtmtest_init_destroy",
-"pthread_rwlock_destroy",,"psxtmtest_init_destroy",
-"pthread_rwlock_rdlock - available",,"psxtmtest_single",
</font><font color='#000088'>+"pthread_rwlock_init","psxtmrwlock01","psxtmtest_init_destroy","Yes"
+"pthread_rwlock_destroy","psxtmrwlock01","psxtmtest_init_destroy","Yes"
+"pthread_rwlock_rdlock - available","psxtmrwlock01","psxtmtest_single","Yes"
</font> "pthread_rwlock_rdlock - not available, blocks",,"psxtmtest_blocking",
<font color='#880000'>-"pthread_rwlock_tryrdlock - available",,"psxtmtest_single",
</font><font color='#000088'>+"pthread_rwlock_tryrdlock - available","psxtmrwlock01","psxtmtest_single","Yes"
</font> "pthread_rwlock_tryrdlock - not available",,"psxtmtest_single",
<font color='#880000'>-"pthread_rwlock_timedrdlock - available",,"psxtmtest_single",
</font><font color='#000088'>+"pthread_rwlock_timedrdlock - available","psxtmrwlock01","psxtmtest_single","Yes"
</font> "pthread_rwlock_timedrdlock - not available, blocks",,"psxtmtest_blocking",
<font color='#880000'>-"pthread_rwlock_unlock - no threads waiting",,,
</font><font color='#000088'>+"pthread_rwlock_unlock - no threads waiting","psxtmrwlock01","psxtmtest_single","Yes"
</font> "pthread_rwlock_unlock - thread waiting, no preempt",,,
 "pthread_rwlock_unlock - thread waiting, preempt",,,
<font color='#880000'>-"pthread_rwlock_wrlock - available",,"psxtmtest_single",
</font><font color='#000088'>+"pthread_rwlock_wrlock - available","psxtmrwlock01","psxtmtest_single","Yes"
</font> "pthread_rwlock_wrlock - not available, blocks",,"psxtmtest_blocking",
<font color='#880000'>-"pthread_rwlock_trywrlock - available",,"psxtmtest_single",
</font><font color='#000088'>+"pthread_rwlock_trywrlock - available","psxtmrwlock01","psxtmtest_single","Yes"
</font> "pthread_rwlock_trywrlock - not available",,"psxtmtest_single",
<font color='#880000'>-"pthread_rwlock_timedwrlock - available",,"psxtmtest_single",
</font><font color='#000088'>+"pthread_rwlock_timedwrlock - available","psxtmrwlock01","psxtmtest_single","Yes"
</font> "pthread_rwlock_timedwrlock - not available, blocks",,"psxtmtest_blocking",
 ,,,
 "mq_open (first open)","psxtmmq01","psxtmtest_init_destroy",
</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-02 Petr Benes <benesp16@fel.cvut.cz>

        PR 1861/cpukit
        * score/src/rbtreeextract.c: Remove redundant code.
</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.2897&r2=text&tr2=1.2898&diff_format=h">M</a></td><td width='1%'>1.2898</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/src/rbtreeextract.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/rbtreeextract.c</td></tr>
</table>
<pre>
<font color='#006600'>diff -u rtems/cpukit/ChangeLog:1.2897 rtems/cpukit/ChangeLog:1.2898
--- rtems/cpukit/ChangeLog:1.2897       Mon Aug  1 14:21:46 2011
+++ rtems/cpukit/ChangeLog      Tue Aug  2 08:37:20 2011
</font><font color='#997700'>@@ -1,3 +1,8 @@
</font><font color='#000088'>+2011-08-02    Petr Benes <benesp16@fel.cvut.cz>
+
+       PR 1861/cpukit
+       * score/src/rbtreeextract.c: Remove redundant code.
+
</font> 2011-08-01        Jennifer Averett <Jennifer.Averett@OARcorp.com>
 
        * score/include/rtems/score/isr.h: Cleaned up comments.

<font color='#006600'>diff -u rtems/cpukit/score/src/rbtreeextract.c:1.3 rtems/cpukit/score/src/rbtreeextract.c:1.4
--- rtems/cpukit/score/src/rbtreeextract.c:1.3  Wed Jul 27 08:27:48 2011
+++ rtems/cpukit/score/src/rbtreeextract.c      Tue Aug  2 08:37:21 2011
</font><font color='#997700'>@@ -54,8 +54,7 @@
</font>     }
 
     /* sibling is black, see if both of its children are also black. */
<font color='#880000'>-    if (sibling &&
-        !_RBTree_Is_red(sibling->child[RBT_RIGHT]) &&
</font><font color='#000088'>+    if (!_RBTree_Is_red(sibling->child[RBT_RIGHT]) &&
</font>         !_RBTree_Is_red(sibling->child[RBT_LEFT])) {
         sibling->color = RBT_RED;
         if (_RBTree_Is_red(parent)) {
<font color='#997700'>@@ -65,7 +64,7 @@
</font>         the_node = parent; /* done if parent is red */
         parent = the_node->parent;
         sibling = _RBTree_Sibling(the_node);
<font color='#880000'>-    } else if(sibling) {
</font><font color='#000088'>+    } else {
</font>       /* at least one of sibling's children is red. we now proceed in two
        * cases, either the_node is to the left or the right of the parent.
        * In both cases, first check if one of sibling's children is black,
<font color='#997700'>@@ -105,7 +104,7 @@
</font>   RBTree_Color victim_color;
   RBTree_Direction dir;
 
<font color='#880000'>-  if(!the_node) return;
</font><font color='#000088'>+  if (!the_node) return;
</font> 
   /* check if min needs to be updated */
   if (the_node == the_rbtree->first[RBT_LEFT]) {
<font color='#997700'>@@ -147,7 +146,7 @@
</font>      * should become NULL. This may cause the coloring to be violated.
      * For now we store the color of the node being deleted in victim_color.
      */
<font color='#880000'>-     leaf = target->child[RBT_LEFT];
</font><font color='#000088'>+    leaf = target->child[RBT_LEFT];
</font>     if(leaf) {
       leaf->parent = target->parent;
     } else {
<font color='#997700'>@@ -199,17 +198,14 @@
</font>   }
 
   /* fix coloring. leaf has moved up the tree. The color of the deleted
<font color='#880000'>-   * node is in victim_color. There are three cases:
</font><font color='#000088'>+   * node is in victim_color. There are two cases:
</font>    *   1. Deleted a red node, its child must be black. Nothing must be done.
<font color='#880000'>-   *   2. Deleted a black node and the child is red. Paint child black.
-   *   3. Deleted a black node and its child is black. This requires some
-   *      care and rotations.
</font><font color='#000088'>+   *   2. Deleted a black node, its child must be red. Paint child black.
</font>    */
   if (victim_color == RBT_BLACK) { /* eliminate case 1 */
<font color='#880000'>-    if (_RBTree_Is_red(leaf))
</font><font color='#000088'>+    if (leaf) {
</font>       leaf->color = RBT_BLACK; /* case 2 */
<font color='#880000'>-    else if(leaf)
-      _RBTree_Extract_validate_unprotected(leaf); /* case 3 */
</font><font color='#000088'>+    }
</font>   }
 
   /* Wipe the_node */
</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-02 Petr Benes <benesp16@fel.cvut.cz>

        PR 1862/testing
        * sprbtree01/init.c, sprbtree01/sprbtree01.scn: Improve test coverage.
</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.469&r2=text&tr2=1.470&diff_format=h">M</a></td><td width='1%'>1.470</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.2&r2=text&tr2=1.3&diff_format=h">M</a></td><td width='1%'>1.3</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.2&r2=text&tr2=1.3&diff_format=h">M</a></td><td width='1%'>1.3</td><td width='100%'>testsuites/sptests/sprbtree01/sprbtree01.scn</td></tr>
</table>
<pre>
<font color='#006600'>diff -u rtems/testsuites/sptests/ChangeLog:1.469 rtems/testsuites/sptests/ChangeLog:1.470
--- rtems/testsuites/sptests/ChangeLog:1.469    Mon Aug  1 11:15:45 2011
+++ rtems/testsuites/sptests/ChangeLog  Tue Aug  2 08:38:40 2011
</font><font color='#997700'>@@ -1,3 +1,8 @@
</font><font color='#000088'>+2011-08-02    Petr Benes <benesp16@fel.cvut.cz>
+
+       PR 1862/testing
+       * sprbtree01/init.c, sprbtree01/sprbtree01.scn: Improve test coverage.
+
</font> 2011-08-01        Joel Sherrill <joel.sherrill@oarcorp.com>
 
        * sp75/init.c, sp75/sp75.doc, sp75/sp75.scn: Correct test and

<font color='#006600'>diff -u rtems/testsuites/sptests/sprbtree01/init.c:1.2 rtems/testsuites/sptests/sprbtree01/init.c:1.3
--- rtems/testsuites/sptests/sprbtree01/init.c:1.2      Wed Jul 27 08:35:11 2011
+++ rtems/testsuites/sptests/sprbtree01/init.c  Tue Aug  2 08:38:41 2011
</font><font color='#997700'>@@ -96,6 +96,18 @@
</font>   rtems_rbtree_insert( &rbtree1, &node1.Node );
   rtems_rbtree_insert( &rbtree1, &node2.Node );
 
<font color='#000088'>+  p = _RBTree_Insert_unprotected( &rbtree1, NULL );
+  if (p != (void *)(-1))
+    puts( "INIT - FAILED NULL NODE INSERT" );
+
+  _RBTree_Rotate(NULL, RBT_LEFT);
+  i = (node1.Node.parent == &node2.Node);
+  _RBTree_Rotate( &node1.Node,
+                  !node1.Node.child[RBT_LEFT] ? RBT_RIGHT : RBT_LEFT
+                );
+  if ( (node1.Node.parent == &node2.Node) != i )
+    puts( "INIT - FAILED FALSE ROTATION" );
+
</font>   if (!rb_assert(rbtree1.root) )
     puts( "INIT - FAILED TREE CHECK" );
 
<font color='#997700'>@@ -324,6 +336,27 @@
</font>     rtems_test_exit(0);
   }
 
<font color='#000088'>+  /* Additional rtems_rbtree_extract test which removes a node
+   * with two children while target node has a left child only. */
+  for ( i = 0; i < 7; i++ ) {
+    node_array[i].id = i;
+    node_array[i].Node.value = i;
+  }
+  rtems_rbtree_insert( &rbtree1, &node_array[3].Node );
+  rtems_rbtree_insert( &rbtree1, &node_array[1].Node );
+  rtems_rbtree_insert( &rbtree1, &node_array[5].Node );
+  rtems_rbtree_insert( &rbtree1, &node_array[0].Node );
+  rtems_rbtree_insert( &rbtree1, &node_array[2].Node );
+  rtems_rbtree_insert( &rbtree1, &node_array[4].Node );
+  rtems_rbtree_insert( &rbtree1, &node_array[6].Node );
+  rtems_rbtree_extract( &rbtree1, &node_array[2].Node );
+  /* node_array[1] has now only a left child. */
+  if ( !node_array[1].Node.child[RBT_LEFT] ||
+        node_array[1].Node.child[RBT_RIGHT] )
+     puts( "INIT - LEFT CHILD ONLY NOT FOUND" );
+  rtems_rbtree_extract( &rbtree1, &node_array[3].Node );
+  while( (p = rtems_rbtree_get_max(&rbtree1)) );
+
</font>   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;
<font color='#997700'>@@ -368,32 +401,39 @@
</font>   }
 
   puts( "INIT - Verify rtems_rbtree_find" );
<font color='#880000'>-  p = rtems_rbtree_find(&rbtree1, 50);
-  if(rtems_rbtree_container_of(p,test_node,Node)->id != 50) {
</font><font color='#000088'>+  p = rtems_rbtree_find(&rbtree1, 30);
+  if(rtems_rbtree_container_of(p,test_node,Node)->id != 30) {
</font>     puts ("INIT - ERROR ON RBTREE ID MISMATCH");
     rtems_test_exit(0);
   }
 
   puts( "INIT - Verify rtems_rbtree_predecessor/successor");
   p = rtems_rbtree_predecessor(p);
<font color='#880000'>-  if(p && rtems_rbtree_container_of(p,test_node,Node)->id > 50) {
</font><font color='#000088'>+  if(p && rtems_rbtree_container_of(p,test_node,Node)->id > 30) {
</font>     puts ("INIT - ERROR ON RBTREE ID MISMATCH");
     rtems_test_exit(0);
   }
<font color='#880000'>-  p = rtems_rbtree_find(&rbtree1, 50);
</font><font color='#000088'>+  p = rtems_rbtree_find(&rbtree1, 30);
</font>   p = rtems_rbtree_successor(p);
<font color='#880000'>-  if(p && rtems_rbtree_container_of(p,test_node,Node)->id < 50) {
</font><font color='#000088'>+  if(p && rtems_rbtree_container_of(p,test_node,Node)->id < 30) {
</font>     puts ("INIT - ERROR ON RBTREE ID MISMATCH");
     rtems_test_exit(0);
   }
 
<font color='#880000'>-  p = rtems_rbtree_find(&rbtree1, 50);
</font><font color='#000088'>+  p = rtems_rbtree_find(&rbtree1, 30);
</font>   puts( "INIT - Verify rtems_rbtree_find_header" );
   if (rtems_rbtree_find_header(p) != &rbtree1) {
     puts ("INIT - ERROR ON RBTREE HEADER MISMATCH");
     rtems_test_exit(0);
   }
 
<font color='#000088'>+  if ( _RBTree_Sibling( NULL ) != NULL )
+    puts ( "INIT - ERROR ON RBTREE NULL SIBLING MISMATCH" );
+  if ( _RBTree_Sibling( rbtree1.root ) != NULL )
+    puts ( "INIT - ERROR ON RBTREE NULL SIBLING MISMATCH" );
+  if ( _RBTree_Grandparent( NULL ) != NULL )
+    puts ( "INIT - ERROR ON RBTREE NULL GRANDPARENT MISMATCH" );
+
</font>   puts( "INIT - Removing 100 nodes" );
 
   for ( p = rtems_rbtree_get_max(&rbtree1), id = 99 ; p ;
<font color='#997700'>@@ -417,6 +457,15 @@
</font>     rtems_test_exit(0);
   }
 
<font color='#000088'>+  if (rtems_rbtree_find_header(p) != NULL) {
+    puts ("INIT - ERROR ON RBTREE HEADER MISMATCH");
+    rtems_test_exit(0);
+  }
+  if (rtems_rbtree_find_header(NULL) != NULL) {
+    puts ("INIT - ERROR ON RBTREE HEADER MISMATCH");
+    rtems_test_exit(0);
+  }
+
</font>   puts("INIT - Insert 20 random numbers");
   for (i = 0; i < 20; i++) {
     node_array[i].id = numbers[i];
<font color='#997700'>@@ -450,6 +499,38 @@
</font>     rtems_test_exit(0);
   }
 
<font color='#000088'>+  puts( "INIT - Verify rtems_rbtree_initialize 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_initialize( &rbtree1, &node_array[0].Node, 100,
+                           sizeof(test_node));
+
+  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 ) {
+      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.2 rtems/testsuites/sptests/sprbtree01/sprbtree01.scn:1.3
--- rtems/testsuites/sptests/sprbtree01/sprbtree01.scn:1.2      Wed Jul 27 08:35:11 2011
+++ rtems/testsuites/sptests/sprbtree01/sprbtree01.scn  Tue Aug  2 08:38:41 2011
</font><font color='#997700'>@@ -17,6 +17,11 @@
</font> INIT - Removing 100 nodes
 INIT - Verify rtems_rbtree_get_max with 100 nodes value [0,99]
 INIT - Verify rtems_rbtree_find
<font color='#000088'>+INIT - Verify rtems_rbtree_predecessor/successor
</font> INIT - Verify rtems_rbtree_find_header
 INIT - Removing 100 nodes
<font color='#000088'>+INIT - Insert 20 random numbers
+INIT - Removing 20 nodes
+INIT - Verify rtems_rbtree_initialize with 100 nodes value [0,99]
+INIT - Removing 100 nodes
</font> *** END OF RTEMS RBTREE API TEST ***
</pre>
<p> </p>
<a name='cs6'></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-02 Sebastien Bourdeauducq <sebastien.bourdeauducq@gmail.com>

        PR 1869/bsps
        * README: Merge content from lm32/README which was specific to
        this BSP.
</pre></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/c/src/lib/libbsp/lm32/lm32_evr/ChangeLog.diff?r1=text&tr1=1.19&r2=text&tr2=1.20&diff_format=h">M</a></td><td width='1%'>1.20</td><td width='100%'>c/src/lib/libbsp/lm32/lm32_evr/ChangeLog</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/c/src/lib/libbsp/lm32/lm32_evr/README.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%'>c/src/lib/libbsp/lm32/lm32_evr/README</td></tr>
</table>
<pre>
<font color='#006600'>diff -u rtems/c/src/lib/libbsp/lm32/lm32_evr/ChangeLog:1.19 rtems/c/src/lib/libbsp/lm32/lm32_evr/ChangeLog:1.20
--- rtems/c/src/lib/libbsp/lm32/lm32_evr/ChangeLog:1.19 Wed Feb  2 08:58:26 2011
+++ rtems/c/src/lib/libbsp/lm32/lm32_evr/ChangeLog      Tue Aug  2 09:04:27 2011
</font><font color='#997700'>@@ -1,3 +1,9 @@
</font><font color='#000088'>+2011-08-02    Sebastien Bourdeauducq <sebastien.bourdeauducq@gmail.com>
+
+       PR 1869/bsps
+       * README: Merge content from lm32/README which was specific to
+       this BSP.
+
</font> 2011-02-02        Ralf Corsépius <ralf.corsepius@rtems.org>
 
        * configure.ac: Require autoconf-2.68, automake-1.11.1.

<font color='#006600'>diff -u rtems/c/src/lib/libbsp/lm32/lm32_evr/README:1.2 rtems/c/src/lib/libbsp/lm32/lm32_evr/README:1.3
--- rtems/c/src/lib/libbsp/lm32/lm32_evr/README:1.2     Wed Feb 25 15:32:22 2009
+++ rtems/c/src/lib/libbsp/lm32/lm32_evr/README Tue Aug  2 09:04:27 2011
</font><font color='#997700'>@@ -1,6 +1,41 @@
</font> #
 #  $Id$
 #
<font color='#000088'>+#  The Lattice Mico32 port uses the system_config.h generated by the Mico
+#  System Builder to retrieve the properties of the peripherals.
+#
+#   Implemented (in shared/ subdirectory)
+#     Polled console driver (uart)
+#     Clock interrupt with 10 ms tick
+#     Networking using Lattice tri-speed ethernet MAC
+#
+#   Todo
+#     Support more peripherals:
+#       - uart driver using interrupts
+#
+#  jukka.pietarinen@mrf.fi, 3.12.2008
+#<span style="background-color: #FF0000">    </span>
+
+BSP NAME:           lm32_evr
+BOARD:              cRIO-EVR, Micro-Research Finland Oy
+BUS:                wishbone
+CPU FAMILY:         lm32 (Lattice Mico32)
+CPU:                small
+COPROCESSORS:       none
+MODE:               32 bit mode
+
+DEBUG MONITOR:      none
+
+PERIPHERALS
+===========
+TIMERS:             clock
+  RESOLUTION:       10 ms
+SERIAL PORTS:       uart
+REAL-TIME CLOCK:    none
+DMA:                none
+VIDEO:              none
+SCSI:               none
+NETWORKING:         tsmac
</font> 
 To on the simulator included in lm32-gdb use these commands:
 
</pre>
<p> </p>
<a name='cs7'></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-02 Sebastien Bourdeauducq <sebastien.bourdeauducq@gmail.com>

        PR 1869/bsps
        * milkymist_networking/mm_crc32.c: Removed.
</pre></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/c/src/lib/libbsp/lm32/shared/ChangeLog.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%'>c/src/lib/libbsp/lm32/shared/ChangeLog</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/c/src/lib/libbsp/lm32/shared/milkymist_networking/mm_crc32.c?rev=1.1&content-type=text/vnd.viewcvs-markup">R</a></td><td width='1%'><font color="#880000">1.1</font></td><td width='100%'><font color="#880000">c/src/lib/libbsp/lm32/shared/milkymist_networking/mm_crc32.c</font></td></tr>
</table>
<pre>
<font color='#006600'>diff -u rtems/c/src/lib/libbsp/lm32/shared/ChangeLog:1.1 rtems/c/src/lib/libbsp/lm32/shared/ChangeLog:1.2
--- rtems/c/src/lib/libbsp/lm32/shared/ChangeLog:1.1    Mon Aug  1 08:48:39 2011
+++ rtems/c/src/lib/libbsp/lm32/shared/ChangeLog        Tue Aug  2 09:04:31 2011
</font><font color='#997700'>@@ -1,3 +1,8 @@
</font><font color='#000088'>+2011-08-02    Sebastien Bourdeauducq <sebastien.bourdeauducq@gmail.com>
+
+       PR 1869/bsps
+       * milkymist_networking/mm_crc32.c: Removed.
+
</font> 2011-08-01        Sebastien Bourdeauducq <sebastien.bourdeauducq@gmail.com>
 
        PR 1869/bsps
</pre>
<p> </p>
<a name='cs8'></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-02 Sebastien Bourdeauducq <sebastien.bourdeauducq@gmail.com>

        PR 1869/bsps
        * ChangeLog: Spacing.
        * README: Removed.
</pre></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/c/src/lib/libbsp/lm32/ChangeLog.diff?r1=text&tr1=1.19&r2=text&tr2=1.20&diff_format=h">M</a></td><td width='1%'>1.20</td><td width='100%'>c/src/lib/libbsp/lm32/ChangeLog</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/c/src/lib/libbsp/lm32/README?rev=1.1&content-type=text/vnd.viewcvs-markup">R</a></td><td width='1%'><font color="#880000">1.1</font></td><td width='100%'><font color="#880000">c/src/lib/libbsp/lm32/README</font></td></tr>
</table>
<pre>
<font color='#006600'>diff -u rtems/c/src/lib/libbsp/lm32/ChangeLog:1.19 rtems/c/src/lib/libbsp/lm32/ChangeLog:1.20
--- rtems/c/src/lib/libbsp/lm32/ChangeLog:1.19  Fri Feb 11 06:13:12 2011
+++ rtems/c/src/lib/libbsp/lm32/ChangeLog       Tue Aug  2 09:04:40 2011
</font><font color='#997700'>@@ -1,3 +1,79 @@
</font><font color='#000088'>+2011-08-02    Sebastien Bourdeauducq <sebastien.bourdeauducq@gmail.com>
+
+       PR 1869/bsps
+       * ChangeLog: Spacing.
+       * README: Removed.
+
+2011-08-01     Sébastien Bourdeauducq <sebastien@milkymist.org>
+
+       * c/src/lib/libbsp/lm32/README,
+       c/src/lib/libbsp/lm32/lm32_evr/README,
+       c/src/lib/libbsp/lm32/milkymist/Makefile.am,
+       c/src/lib/libbsp/lm32/milkymist/README,
+       c/src/lib/libbsp/lm32/milkymist/include/bsp.h,
+       c/src/lib/libbsp/lm32/milkymist/include/system_conf.h,
+       c/src/lib/libbsp/lm32/milkymist/include/tm27.h,
+       c/src/lib/libbsp/lm32/milkymist/make/custom/milkymist.cfg,
+       c/src/lib/libbsp/lm32/milkymist/preinstall.am,
+       c/src/lib/libbsp/lm32/milkymist/startup/bspclean.c,
+       c/src/lib/libbsp/lm32/milkymist/startup/linkcmds,
+       c/src/lib/libbsp/lm32/shared/include/irq.h,
+       c/src/lib/libbsp/lm32/shared/irq/irq.c,
+       c/src/lib/libbsp/lm32/shared/milkymist_ac97/ac97.c,
+       c/src/lib/libbsp/lm32/shared/milkymist_ac97/milkymist_ac97.h,
+       c/src/lib/libbsp/lm32/shared/milkymist_buttons/buttons.c,
+       c/src/lib/libbsp/lm32/shared/milkymist_buttons/milkymist_buttons.h,
+       c/src/lib/libbsp/lm32/shared/milkymist_clock/ckinit.c,
+       c/src/lib/libbsp/lm32/shared/milkymist_clock/clock.h,
+       c/src/lib/libbsp/lm32/shared/milkymist_console/console.c,
+       c/src/lib/libbsp/lm32/shared/milkymist_console/uart.c,
+       c/src/lib/libbsp/lm32/shared/milkymist_console/uart.h,
+       c/src/lib/libbsp/lm32/shared/milkymist_dmx/dmx.c,
+       c/src/lib/libbsp/lm32/shared/milkymist_dmx/milkymist_dmx.h,
+       c/src/lib/libbsp/lm32/shared/milkymist_flash/flash.c,
+       c/src/lib/libbsp/lm32/shared/milkymist_flash/milkymist_flash.h,
+       c/src/lib/libbsp/lm32/shared/milkymist_framebuffer/framebuffer.c,
+       c/src/lib/libbsp/lm32/shared/milkymist_gpio/gpio.c,
+       c/src/lib/libbsp/lm32/shared/milkymist_gpio/milkymist_gpio.h,
+       c/src/lib/libbsp/lm32/shared/milkymist_ir/ir.c,
+       c/src/lib/libbsp/lm32/shared/milkymist_ir/milkymist_ir.h,
+       c/src/lib/libbsp/lm32/shared/milkymist_memcard/memcard.c,
+       c/src/lib/libbsp/lm32/shared/milkymist_memcard/milkymist_memcard.h,
+       c/src/lib/libbsp/lm32/shared/milkymist_midi/midi.c,
+       c/src/lib/libbsp/lm32/shared/milkymist_midi/milkymist_midi.h,
+       c/src/lib/libbsp/lm32/shared/milkymist_networking/mm_crc32.c,
+       c/src/lib/libbsp/lm32/shared/milkymist_networking/network.c,
+       c/src/lib/libbsp/lm32/shared/milkymist_networking/network.h,
+       c/src/lib/libbsp/lm32/shared/milkymist_pfpu/milkymist_pfpu.h,
+       c/src/lib/libbsp/lm32/shared/milkymist_pfpu/pfpu.c,
+       c/src/lib/libbsp/lm32/shared/milkymist_timer/timer.c,
+       c/src/lib/libbsp/lm32/shared/milkymist_tmu/milkymist_tmu.h,
+       c/src/lib/libbsp/lm32/shared/milkymist_tmu/tmu.c,
+       c/src/lib/libbsp/lm32/shared/milkymist_usbinput/comloc.h,
+       c/src/lib/libbsp/lm32/shared/milkymist_usbinput/milkymist_usbinput.h,
+       c/src/lib/libbsp/lm32/shared/milkymist_usbinput/softusb-input.h,
+       c/src/lib/libbsp/lm32/shared/milkymist_usbinput/usbinput.c,
+       c/src/lib/libbsp/lm32/shared/milkymist_versions/milkymist_versions.h,
+       c/src/lib/libbsp/lm32/shared/milkymist_versions/versions.c,
+       c/src/lib/libbsp/lm32/shared/milkymist_video/milkymist_video.h,
+       c/src/lib/libbsp/lm32/shared/milkymist_video/video.c,
+       c/src/lib/libbsp/lm32/shared/start/start.S,
+       c/src/lib/libbsp/lm32/shared/startup/bspstart.c,
+       c/src/lib/libbsp/lm32/shared/startup/setvec.c:
+       Full port to the Milkymist One. Supports Milkymist SoC 1.0.x.
+       Includes new or updated drivers for:
+       - Multi-standard video input (PAL/SECAM/NTSC)
+       - Two DMX512 (RS485) ports
+       - MIDI IN and MIDI OUT ports
+       - VGA output
+       - AC'97 audio
+       - NOR flash
+       - 10/100 Ethernet
+       - Memory card (experimental and incomplete)
+       - USB host connectors (input devices only)
+       - RC5 infrared receiver
+       - RS232 debug port
+
</font> 2011-02-11        Ralf Corsépius <ralf.corsepius@rtems.org>
 
        * shared/milkymist_networking/network.c:
</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>