<!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 (2010-12-17)</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>2010-12-17 Joel Sherrill <joel.sherrill@oarcorp.com>
                Jennifer Averett <jennifer.averett@oarcorp.com>

        Add RTEMS Scheduler Simulator.  This is the shell scripting portion.
        * .cvsignore, ChangeLog, Makefile.am, schedsim_priority/.cvsignore,
        schedsim_priority/Makefile.am, schedsim_priority/config.c,
        schedsim_priority/printheir_executing.c,
        schedsim_priority/schedsim.cc,
        schedsim_priority/wrap_thread_dispatch.c, scripts/script01,
        scripts/script02, scripts/script03, scripts/script04,
        scripts/script05, scripts/script06, shared/.cvsignore,
        shared/Makefile.am, shared/commands.c, shared/getopt.c,
        shared/lookup_semaphore.c, shared/lookup_task.c,
        shared/main_clocktick.c, shared/main_echo.c, shared/main_executing.c,
        shared/main_heir.c, shared/main_help.c, shared/main_rtemsinit.c,
        shared/main_semcreate.c, shared/main_semdelete.c,
        shared/main_semflush.c, shared/main_semobtain.c,
        shared/main_semrelease.c, shared/main_taskcreate.c,
        shared/main_taskdelete.c, shared/main_taskmode.c,
        shared/main_taskpriority.c, shared/main_taskresume.c,
        shared/main_tasksuspend.c, shared/main_taskwakeafter.c,
        shared/schedsim_shell.h, shared/shell_cmdset.c,
        shared/shell_makeargs.c, shared/include/shell.h,
        shared/include/newlib/_ansi.h, shared/include/newlib/getopt.h: New
        files.
</pre></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/shell/.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">tools/schedsim/shell/.cvsignore</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/shell/ChangeLog?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">tools/schedsim/shell/ChangeLog</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/shell/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">tools/schedsim/shell/Makefile.am</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/shell/schedsim_priority/.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">tools/schedsim/shell/schedsim_priority/.cvsignore</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/shell/schedsim_priority/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">tools/schedsim/shell/schedsim_priority/Makefile.am</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/shell/schedsim_priority/config.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">tools/schedsim/shell/schedsim_priority/config.c</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/shell/schedsim_priority/printheir_executing.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">tools/schedsim/shell/schedsim_priority/printheir_executing.c</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/shell/schedsim_priority/schedsim.cc?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">tools/schedsim/shell/schedsim_priority/schedsim.cc</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/shell/schedsim_priority/wrap_thread_dispatch.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">tools/schedsim/shell/schedsim_priority/wrap_thread_dispatch.c</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/shell/scripts/script01?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">tools/schedsim/shell/scripts/script01</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/shell/scripts/script02?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">tools/schedsim/shell/scripts/script02</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/shell/scripts/script03?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">tools/schedsim/shell/scripts/script03</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/shell/scripts/script04?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">tools/schedsim/shell/scripts/script04</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/shell/scripts/script05?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">tools/schedsim/shell/scripts/script05</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/shell/scripts/script06?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">tools/schedsim/shell/scripts/script06</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/shell/shared/.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">tools/schedsim/shell/shared/.cvsignore</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/shell/shared/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">tools/schedsim/shell/shared/Makefile.am</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/shell/shared/commands.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">tools/schedsim/shell/shared/commands.c</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/shell/shared/getopt.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">tools/schedsim/shell/shared/getopt.c</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/shell/shared/include/newlib/_ansi.h?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">tools/schedsim/shell/shared/include/newlib/_ansi.h</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/shell/shared/include/newlib/getopt.h?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">tools/schedsim/shell/shared/include/newlib/getopt.h</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/shell/shared/include/shell.h?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">tools/schedsim/shell/shared/include/shell.h</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/shell/shared/lookup_semaphore.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">tools/schedsim/shell/shared/lookup_semaphore.c</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/shell/shared/lookup_task.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">tools/schedsim/shell/shared/lookup_task.c</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/shell/shared/main_clocktick.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">tools/schedsim/shell/shared/main_clocktick.c</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/shell/shared/main_echo.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">tools/schedsim/shell/shared/main_echo.c</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/shell/shared/main_executing.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">tools/schedsim/shell/shared/main_executing.c</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/shell/shared/main_heir.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">tools/schedsim/shell/shared/main_heir.c</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/shell/shared/main_help.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">tools/schedsim/shell/shared/main_help.c</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/shell/shared/main_rtemsinit.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">tools/schedsim/shell/shared/main_rtemsinit.c</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/shell/shared/main_semcreate.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">tools/schedsim/shell/shared/main_semcreate.c</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/shell/shared/main_semdelete.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">tools/schedsim/shell/shared/main_semdelete.c</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/shell/shared/main_semflush.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">tools/schedsim/shell/shared/main_semflush.c</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/shell/shared/main_semobtain.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">tools/schedsim/shell/shared/main_semobtain.c</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/shell/shared/main_semrelease.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">tools/schedsim/shell/shared/main_semrelease.c</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/shell/shared/main_taskcreate.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">tools/schedsim/shell/shared/main_taskcreate.c</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/shell/shared/main_taskdelete.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">tools/schedsim/shell/shared/main_taskdelete.c</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/shell/shared/main_taskmode.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">tools/schedsim/shell/shared/main_taskmode.c</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/shell/shared/main_taskpriority.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">tools/schedsim/shell/shared/main_taskpriority.c</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/shell/shared/main_taskresume.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">tools/schedsim/shell/shared/main_taskresume.c</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/shell/shared/main_tasksuspend.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">tools/schedsim/shell/shared/main_tasksuspend.c</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/shell/shared/main_taskwakeafter.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">tools/schedsim/shell/shared/main_taskwakeafter.c</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/shell/shared/schedsim_shell.h?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">tools/schedsim/shell/shared/schedsim_shell.h</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/shell/shared/shell_cmdset.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">tools/schedsim/shell/shared/shell_cmdset.c</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/shell/shared/shell_makeargs.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">tools/schedsim/shell/shared/shell_makeargs.c</font></td></tr>
</table>
<pre>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/shell/.cvsignore:1.1
--- /dev/null   Fri Dec 17 09:10:57 2010
+++ rtems/tools/schedsim/shell/.cvsignore       Fri Dec 17 08:49:38 2010
</font><font color='#997700'>@@ -0,0 +1,2 @@
</font><font color='#000088'>+Makefile
+Makefile.in
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/shell/ChangeLog:1.1
--- /dev/null   Fri Dec 17 09:10:57 2010
+++ rtems/tools/schedsim/shell/ChangeLog        Fri Dec 17 08:49:38 2010
</font><font color='#997700'>@@ -0,0 +1,26 @@
</font><font color='#000088'>+2010-12-17    Joel Sherrill <joel.sherrill@oarcorp.com>
+               Jennifer Averett <jennifer.averett@oarcorp.com>
+
+       Add RTEMS Scheduler Simulator.  This is the shell scripting portion.
+       * .cvsignore, ChangeLog, Makefile.am, schedsim_priority/.cvsignore,
+       schedsim_priority/Makefile.am, schedsim_priority/config.c,
+       schedsim_priority/printheir_executing.c,
+       schedsim_priority/schedsim.cc,
+       schedsim_priority/wrap_thread_dispatch.c, scripts/script01,
+       scripts/script02, scripts/script03, scripts/script04,
+       scripts/script05, scripts/script06, shared/.cvsignore,
+       shared/Makefile.am, shared/commands.c, shared/getopt.c,
+       shared/lookup_semaphore.c, shared/lookup_task.c,
+       shared/main_clocktick.c, shared/main_echo.c, shared/main_executing.c,
+       shared/main_heir.c, shared/main_help.c, shared/main_rtemsinit.c,
+       shared/main_semcreate.c, shared/main_semdelete.c,
+       shared/main_semflush.c, shared/main_semobtain.c,
+       shared/main_semrelease.c, shared/main_taskcreate.c,
+       shared/main_taskdelete.c, shared/main_taskmode.c,
+       shared/main_taskpriority.c, shared/main_taskresume.c,
+       shared/main_tasksuspend.c, shared/main_taskwakeafter.c,
+       shared/schedsim_shell.h, shared/shell_cmdset.c,
+       shared/shell_makeargs.c, shared/include/shell.h,
+       shared/include/newlib/_ansi.h, shared/include/newlib/getopt.h: New
+       files.
+
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/shell/Makefile.am:1.1
--- /dev/null   Fri Dec 17 09:10:58 2010
+++ rtems/tools/schedsim/shell/Makefile.am      Fri Dec 17 08:49:39 2010
</font><font color='#997700'>@@ -0,0 +1,12 @@
</font><font color='#000088'>+##
+## $Id$
+##
+
+ACLOCAL_AMFLAGS = -I ../../aclocal
+
+SUBDIRS = shared schedsim_priority<span style="background-color: #FF0000"> </span>
+
+DIST_SUBDIRS = shared schedsim_priority
+
+include $(top_srcdir)/../../automake/subdirs.am
+include $(top_srcdir)/../../automake/host.am
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/shell/schedsim_priority/.cvsignore:1.1
--- /dev/null   Fri Dec 17 09:10:58 2010
+++ rtems/tools/schedsim/shell/schedsim_priority/.cvsignore     Fri Dec 17 08:49:39 2010
</font><font color='#997700'>@@ -0,0 +1,2 @@
</font><font color='#000088'>+Makefile
+Makefile.in
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/shell/schedsim_priority/Makefile.am:1.1
--- /dev/null   Fri Dec 17 09:10:58 2010
+++ rtems/tools/schedsim/shell/schedsim_priority/Makefile.am    Fri Dec 17 08:49:39 2010
</font><font color='#997700'>@@ -0,0 +1,32 @@
</font><font color='#000088'>+##
+## $Id$
+##
+
+bin_PROGRAMS = schedsim
+schedsim_SOURCES = config.c \
+    schedsim.cc wrap_thread_dispatch.c printheir_executing.c
+
+cpukitdir=$(srcdir)/../../../../cpukit
+schedsim_CPPFLAGS  = -I$(srcdir)/sched_cpu
+schedsim_CPPFLAGS += -I$(srcdir)/../../rtems
+schedsim_CPPFLAGS += -I$(cpukitdir)/include
+schedsim_CPPFLAGS += -I$(cpukitdir)/score/include
+schedsim_CPPFLAGS += -I$(cpukitdir)/score/inline
+schedsim_CPPFLAGS += -I$(cpukitdir)/rtems/include
+schedsim_CPPFLAGS += -I$(cpukitdir)/rtems/inline
+schedsim_CPPFLAGS += -I$(cpukitdir)/sapi/include
+schedsim_CPPFLAGS += -I$(cpukitdir)/sapi/inline
+schedsim_CPPFLAGS += -I$(cpukitdir)/libcsupport/include
+schedsim_CPPFLAGS += -I$(cpukitdir)/libmisc/stringto
+schedsim_CPPFLAGS += -I$(srcdir)/../../rtems/sched_cpu
+schedsim_CPPFLAGS += -I$(srcdir)/../shared/include
+schedsim_CPPFLAGS += -I$(srcdir)/../shared
+
+schedsim_LDFLAGS =-Wl,--wrap=_Thread_Dispatch
+## schedsim_LDADD +=-Wl,--start-group
+schedsim_LDADD = ../shared/libschedsim.a
+schedsim_LDADD += ../../rtems/librtems.a
+schedsim_LDADD += ../shared/libschedsim.a
+## schedsim_LDADD +=-Wl,--end-group
+
+include $(top_srcdir)/../../automake/host.am
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/shell/schedsim_priority/config.c:1.1
--- /dev/null   Fri Dec 17 09:10:58 2010
+++ rtems/tools/schedsim/shell/schedsim_priority/config.c       Fri Dec 17 08:49:39 2010
</font><font color='#997700'>@@ -0,0 +1,7 @@
</font><font color='#000088'>+#include <rtems.h>
+
+#define CONFIGURE_INIT
+#define CONFIGURE_MAXIMUM_TASKS             1000
+#define CONFIGURE_MAXIMUM_SEMAPHORES        1000
+#include <confdefs.h>
+
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/shell/schedsim_priority/printheir_executing.c:1.1
--- /dev/null   Fri Dec 17 09:10:58 2010
+++ rtems/tools/schedsim/shell/schedsim_priority/printheir_executing.c  Fri Dec 17 08:49:39 2010
</font><font color='#997700'>@@ -0,0 +1,31 @@
</font><font color='#000088'>+/*
+ *  printheir_executing
+ *
+ *  COPYRIGHT (c) 1989-2010.
+ *  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$
+ */
+
+#include <stdio.h>
+#include <rtems.h>
+
+void PRINT_EXECUTING() {
+  printf(
+    "  Thread Executing: 0x%08x priority=%ld\n",
+    _Thread_Executing->Object.id,
+    (long) _Thread_Executing->current_priority
+  );
+}
+
+void PRINT_HEIR() {
+  printf(<span style="background-color: #FF0000"> </span>
+    "  Thread Heir: 0x%08x priority=%ld\n",<span style="background-color: #FF0000"> </span>
+    _Thread_Heir->Object.id,<span style="background-color: #FF0000"> </span>
+    (long) _Thread_Heir->current_priority<span style="background-color: #FF0000"> </span>
+  );
+}
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/shell/schedsim_priority/schedsim.cc:1.1
--- /dev/null   Fri Dec 17 09:10:58 2010
+++ rtems/tools/schedsim/shell/schedsim_priority/schedsim.cc    Fri Dec 17 08:49:39 2010
</font><font color='#997700'>@@ -0,0 +1,169 @@
</font><font color='#000088'>+/*
+ *  COPYRIGHT (c) 1989-2010.
+ *  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$
+ */
+
+#include <newlib/getopt.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+
+#include "shell.h"
+#include "rtems_sched.h"
+
+/*
+ *  Variables to control global behavior
+ */
+int verbose = 0;
+const char *progname;
+const char *scriptname;
+
+FILE *Script;
+int ScriptFileLine = 0;
+
+/*
+ *  Print program usage message
+ */
+void usage()
+{
+  fprintf(
+    stderr,
+    "Usage: %s [-v] script\n"
+    "\n"
+    "  -v           - enable verbose output\n",
+    progname
+  );
+  exit( -1 );
+}
+
+#define RTEMS_SHELL_MAXIMUM_ARGUMENTS (128)
+
+void ProcessScript(
+  FILE *script
+)
+{
+  char               buffer[512];
+  char              *cStatus;
+  char              *c;
+  size_t             length;
+  int                argc;
+  char              *argv[RTEMS_SHELL_MAXIMUM_ARGUMENTS];
+  rtems_shell_cmd_t *shell_cmd;
+<span style="background-color: #FF0000">  </span>
+<span style="background-color: #FF0000"> </span>
+  while ( 1 ) {
+    cStatus = fgets( buffer, sizeof(buffer), script );
+    if ( cStatus == NULL )
+      break;
+
+    // If the last line does not have a CR, then we don't want to
+    // arbitrarily clobber an = instead of a \n.
+    length = strlen(buffer);
+    if ( buffer[ length - 1] == '\n' )
+      buffer[ length - 1] = '\0';
+
+    if ( verbose )
+      fprintf( stderr, "%d: %s\n", ++ScriptFileLine, buffer );
+
+    if ( buffer[0] == '#' )
+      continue;
+
+    for ( c = buffer ; *c ; c++ ) {
+      if (!isblank((int)*c))
+        break;
+    }
+
+
+    if (!strcmp(c,"bye") || !strcmp(c,"exit")) {
+      return;
+    }<span style="background-color: #FF0000"> </span>
+
+    if (rtems_shell_make_args(c, &argc, argv, RTEMS_SHELL_MAXIMUM_ARGUMENTS)) {
+      fprintf(stderr, "Error parsing arguments\n" );
+      continue;
+    }
+
+    shell_cmd = rtems_shell_lookup_cmd(argv[0]);
+    if ( !shell_cmd ) {
+      fprintf(stderr, "%s is unknown command\n", c );
+      continue;
+    }
+
+    shell_cmd->command(argc, argv);
+  }
+}
+
+int main(
+  int argc,
+  char **argv
+)
+{
+  int opt;
+  progname = argv[0];
+<span style="background-color: #FF0000">  </span>
+  while ((opt = getopt(argc, argv, "v")) != -1) {
+    switch (opt) {
+      case 'v': verbose = 1;                break;
+      default: /* '?' */
+        usage();
+    }
+  }
+
+  if ( optind >= argc ) {
+    fprintf( stderr, "no script to process\n" );
+    usage();
+  }
+
+  scriptname = argv[ optind ];
+
+  if ( verbose ) {
+    fprintf(
+      stderr,
+      "Script File               : %s\n"
+      "verbose                   : %d\n",
+      scriptname,
+      verbose
+    );
+  }
+
+  //
+  //  Initialize the command interpreter
+  //
+  rtems_shell_initialize_command_set();
+
+  //
+  //  Open the script file
+  //<span style="background-color: #FF0000"> </span>
+  Script = fopen( scriptname, "r" );
+  if ( !Script ) {
+    fprintf( stderr, "Unable to open script file (%s)\n", scriptname );
+    exit( -1 );
+  }
+
+  //
+  //  Process the Script
+  //
+  ProcessScript( Script );
+
+  //
+  //  Open the script file
+  //<span style="background-color: #FF0000"> </span>
+  (void) fclose( Script );
+
+  //
+  //  Just in case something throws
+  //
+  try {
+  } catch (...) {
+    exit(-1);
+  }
+
+  return 0;
+}
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/shell/schedsim_priority/wrap_thread_dispatch.c:1.1
--- /dev/null   Fri Dec 17 09:10:58 2010
+++ rtems/tools/schedsim/shell/schedsim_priority/wrap_thread_dispatch.c Fri Dec 17 08:49:39 2010
</font><font color='#997700'>@@ -0,0 +1,42 @@
</font><font color='#000088'>+/*
+ *  Thread Dispatch Wrapper Implmentation
+ *
+ *  COPYRIGHT (c) 1989-2010.
+ *  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$
+ */
+
+#include "shell.h"
+#include <schedsim_shell.h>
+
+#include <stdio.h>
+#include <rtems.h>
+
+Thread_Control *last_heir = NULL;
+Thread_Control *last_executing = NULL;
+
+extern void __real__Thread_Dispatch(void);
+
+void check_heir_and_executing(void)
+{
+  if ( last_heir != _Thread_Heir )<span style="background-color: #FF0000"> </span>
+    PRINT_HEIR();
+
+  if ( last_executing != _Thread_Executing )
+    PRINT_EXECUTING();
+
+  last_heir = _Thread_Heir;
+  last_executing = _Thread_Executing;
+}
+
+void __wrap__Thread_Dispatch(void)
+{
+  check_heir_and_executing();
+    __real__Thread_Dispatch();
+  check_heir_and_executing();
+}
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/shell/scripts/script01:1.1
--- /dev/null   Fri Dec 17 09:10:58 2010
+++ rtems/tools/schedsim/shell/scripts/script01 Fri Dec 17 08:49:39 2010
</font><font color='#997700'>@@ -0,0 +1,11 @@
</font><font color='#000088'>+echo "*** TEST 01 ***"
+rtems_init
+echo "=== Create and delete 0x0a010001 ==="
+task_create TA1 3
+task_delete TA1
+echo "=== Create and delete 0x0a010002 ==="
+task_create TA1 3
+task_delete 0x0a010002
+echo "*** END OF TEST 01 ***"
+exit
+# We will not get here
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/shell/scripts/script02:1.1
--- /dev/null   Fri Dec 17 09:10:58 2010
+++ rtems/tools/schedsim/shell/scripts/script02 Fri Dec 17 08:49:39 2010
</font><font color='#997700'>@@ -0,0 +1,9 @@
</font><font color='#000088'>+echo "*** TEST 02 ***"
+rtems_init
+echo "=== Create 0x0a010001 ==="
+task_create TA1 1
+task_wake_after 5
+clock_tick 7
+echo "*** END OF TEST 2 ***"
+exit
+# We will not get here
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/shell/scripts/script03:1.1
--- /dev/null   Fri Dec 17 09:10:58 2010
+++ rtems/tools/schedsim/shell/scripts/script03 Fri Dec 17 08:49:39 2010
</font><font color='#997700'>@@ -0,0 +1,19 @@
</font><font color='#000088'>+echo "*** TEST 03 ***"
+rtems_init
+echo "=== Create 0x0a010001 ==="
+task_create TA1 1
+echo "** Mode - query"
+task_mode
+echo "** Mode - set no timeslicing"
+task_mode -t
+echo "** Mode - set timeslicing"
+task_mode -T
+echo "** Mode - set no timeslicing and no preempt"
+task_mode -t -p
+echo "** Mode - set timeslicing and preempt"
+task_mode -T -P
+echo "** Mode - query"
+task_mode
+echo "*** END OF TEST 03 ***"
+exit
+# We will not get here
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/shell/scripts/script04:1.1
--- /dev/null   Fri Dec 17 09:10:59 2010
+++ rtems/tools/schedsim/shell/scripts/script04 Fri Dec 17 08:49:39 2010
</font><font color='#997700'>@@ -0,0 +1,10 @@
</font><font color='#000088'>+echo "*** TEST 04 ***"
+rtems_init
+echo Create 0x0a010001<span style="background-color: #FF0000"> </span>
+task_create TA1 1
+task_suspend TA1
+task_create TA1 2
+task_resume TA1
+echo "*** END OF TEST 04 ***"
+exit
+# We will not get here
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/shell/scripts/script05:1.1
--- /dev/null   Fri Dec 17 09:10:59 2010
+++ rtems/tools/schedsim/shell/scripts/script05 Fri Dec 17 08:49:39 2010
</font><font color='#997700'>@@ -0,0 +1,22 @@
</font><font color='#000088'>+echo "*** TEST 05 ***"
+rtems_init
+echo Create 0x0a010001<span style="background-color: #FF0000"> </span>
+task_create TA1 1
+task_create TA2 2
+task_create TA3 3
+semaphore_create SEM1
+semaphore_obtain SEM1 0
+semaphore_obtain SEM1 0
+semaphore_obtain SEM1 0
+semaphore_flush SEM1
+echo "*** Now back to TA1 to do it differently"
+semaphore_obtain SEM1 0
+semaphore_obtain SEM1 0
+semaphore_release SEM1
+# as TA1
+semaphore_obtain SEM1 0
+semaphore_delete SEM1
+# should preempt
+echo "*** END OF TEST 05 ***"
+exit
+# We will not get here
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/shell/scripts/script06:1.1
--- /dev/null   Fri Dec 17 09:10:59 2010
+++ rtems/tools/schedsim/shell/scripts/script06 Fri Dec 17 08:49:39 2010
</font><font color='#997700'>@@ -0,0 +1,14 @@
</font><font color='#000088'>+echo "*** TEST 06 ***"
+rtems_init
+echo Create 0x0a010001<span style="background-color: #FF0000"> </span>
+task_create TA1 1
+task_create TA2 2
+task_create TA3 3
+semaphore_create SEM1
+semaphore_obtain SEM1 0
+semaphore_obtain SEM1 0
+semaphore_release SEM1
+semaphore_delete SEM1
+echo "*** END OF TEST 06 ***"
+exit
+# We will not get here
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/shell/shared/.cvsignore:1.1
--- /dev/null   Fri Dec 17 09:10:59 2010
+++ rtems/tools/schedsim/shell/shared/.cvsignore        Fri Dec 17 08:49:39 2010
</font><font color='#997700'>@@ -0,0 +1,2 @@
</font><font color='#000088'>+Makefile
+Makefile.in
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/shell/shared/Makefile.am:1.1
--- /dev/null   Fri Dec 17 09:10:59 2010
+++ rtems/tools/schedsim/shell/shared/Makefile.am       Fri Dec 17 08:49:39 2010
</font><font color='#997700'>@@ -0,0 +1,61 @@
</font><font color='#000088'>+##
+##  $Id$
+##
+
+ACLOCAL_AMFLAGS = -I ../../../aclocal
+
+lib_LIBRARIES = libschedsim.a
+
+cpukitdir=$(srcdir)/../../../../cpukit
+libschedsim_a_CPPFLAGS  = -D__RTEMS_VIOLATE_KERNEL_VISIBILITY__
+libschedsim_a_CPPFLAGS += -I$(srcdir)/sched_cpu
+libschedsim_a_CPPFLAGS += -I$(srcdir)/../../rtems
+libschedsim_a_CPPFLAGS += -I$(cpukitdir)/include
+libschedsim_a_CPPFLAGS += -I$(cpukitdir)/score/include
+libschedsim_a_CPPFLAGS += -I$(cpukitdir)/score/inline
+libschedsim_a_CPPFLAGS += -I$(cpukitdir)/rtems/include
+libschedsim_a_CPPFLAGS += -I$(cpukitdir)/rtems/inline
+libschedsim_a_CPPFLAGS += -I$(cpukitdir)/sapi/include
+libschedsim_a_CPPFLAGS += -I$(cpukitdir)/sapi/inline
+libschedsim_a_CPPFLAGS += -I$(cpukitdir)/libcsupport/include
+libschedsim_a_CPPFLAGS += -I$(cpukitdir)/libmisc/stringto
+libschedsim_a_CPPFLAGS += -I$(srcdir)/../../rtems/sched_cpu
+libschedsim_a_CPPFLAGS += -I$(srcdir)/include
+
+
+libschedsim_a_SOURCES = \
+    commands.c \
+    getopt.c \
+    lookup_semaphore.c \
+    lookup_task.c \
+    main_echo.c \
+    main_executing.c \
+    main_heir.c \
+    main_help.c \
+    main_rtemsinit.c \
+    main_clocktick.c \
+    main_semcreate.c \
+    main_semdelete.c \
+    main_semflush.c \
+    main_semobtain.c \
+    main_semrelease.c \
+    main_taskcreate.c \
+    main_taskdelete.c \
+    main_taskmode.c \
+    main_taskpriority.c \
+    main_taskresume.c \
+    main_tasksuspend.c \
+    main_taskwakeafter.c \
+    shell_cmdset.c \
+    shell_makeargs.c<span style="background-color: #FF0000"> </span>
+
+schedsim_shell_includedir = $(includedir)/schedsim
+schedsim_newlib_includedir = $(includedir)/schedsim/newlib
+
+schedsim_shell_include_HEADERS  = include/shell.h schedsim_shell.h
+
+schedsim_newlib_include_HEADERS = \
+  include/newlib/getopt.h \
+  include/newlib/_ansi.h<span style="background-color: #FF0000"> </span>
+
+include $(top_srcdir)/../../automake/host.am
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/shell/shared/commands.c:1.1
--- /dev/null   Fri Dec 17 09:10:59 2010
+++ rtems/tools/schedsim/shell/shared/commands.c        Fri Dec 17 08:49:39 2010
</font><font color='#997700'>@@ -0,0 +1,73 @@
</font><font color='#000088'>+/*
+ *  BASED UPON SOURCE IN RTEMS, MODIFIED FOR SIMULATOR
+ *
+ *  COPYRIGHT (c) 1989-2010.
+ *  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$
+ */
+
+#include "shell.h"
+#include <stdio.h>
+
+extern rtems_shell_cmd_t rtems_shell_ECHO_Command;
+extern rtems_shell_cmd_t rtems_shell_HELP_Command;
+
+extern rtems_shell_cmd_t rtems_shell_RTEMS_INIT_Command;
+extern rtems_shell_cmd_t rtems_shell_TASK_CREATE_Command;
+extern rtems_shell_cmd_t rtems_shell_TASK_DELETE_Command;
+extern rtems_shell_cmd_t rtems_shell_TASK_MODE_Command;
+extern rtems_shell_cmd_t rtems_shell_TASK_PRIORITY_Command;
+extern rtems_shell_cmd_t rtems_shell_TASK_SUSPEND_Command;
+extern rtems_shell_cmd_t rtems_shell_TASK_RESUME_Command;
+extern rtems_shell_cmd_t rtems_shell_TASK_WAKE_AFTER_Command;
+
+extern rtems_shell_cmd_t rtems_shell_CLOCK_TICK_Command;
+
+
+extern rtems_shell_cmd_t rtems_shell_SEMAPHORE_CREATE_Command;
+extern rtems_shell_cmd_t rtems_shell_SEMAPHORE_DELETE_Command;
+extern rtems_shell_cmd_t rtems_shell_SEMAPHORE_OBTAIN_Command;
+extern rtems_shell_cmd_t rtems_shell_SEMAPHORE_RELEASE_Command;
+extern rtems_shell_cmd_t rtems_shell_SEMAPHORE_FLUSH_Command;
+
+extern rtems_shell_cmd_t rtems_shell_TASK_EXECUTING_Command;
+extern rtems_shell_cmd_t rtems_shell_TASK_HEIR_Command;
+
+rtems_shell_cmd_t *rtems_shell_Initial_commands[] = {
+  /* Generic Commands */
+  &rtems_shell_ECHO_Command,
+  &rtems_shell_HELP_Command,
+
+  /* RTEMS Classic API Type Commands */
+  &rtems_shell_RTEMS_INIT_Command,
+  &rtems_shell_TASK_CREATE_Command,
+  &rtems_shell_TASK_DELETE_Command,
+  &rtems_shell_TASK_MODE_Command,
+  &rtems_shell_TASK_PRIORITY_Command,
+  &rtems_shell_TASK_SUSPEND_Command,
+  &rtems_shell_TASK_RESUME_Command,
+  &rtems_shell_TASK_WAKE_AFTER_Command,
+
+  &rtems_shell_CLOCK_TICK_Command,
+
+  &rtems_shell_SEMAPHORE_CREATE_Command,
+  &rtems_shell_SEMAPHORE_DELETE_Command,
+  &rtems_shell_SEMAPHORE_OBTAIN_Command,
+  &rtems_shell_SEMAPHORE_RELEASE_Command,
+  &rtems_shell_SEMAPHORE_FLUSH_Command,
+
+  /* RTEMS Helper Commands */
+  &rtems_shell_TASK_EXECUTING_Command,
+  &rtems_shell_TASK_HEIR_Command,
+  NULL
+};
+
+rtems_shell_alias_t *rtems_shell_Initial_aliases[] = {
+  NULL
+};
+
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/shell/shared/getopt.c:1.1
--- /dev/null   Fri Dec 17 09:10:59 2010
+++ rtems/tools/schedsim/shell/shared/getopt.c  Fri Dec 17 08:49:39 2010
</font><font color='#997700'>@@ -0,0 +1,477 @@
</font><font color='#000088'>+/****************************************************************************
+
+getopt.c - Read command line options
+
+AUTHOR: Gregory Pietsch
+CREATED Fri Jan 10 21:13:05 1997
+
+DESCRIPTION:
+
+The getopt() function parses the command line arguments.  Its arguments argc
+and argv are the argument count and array as passed to the main() function
+on program invocation.  The argument optstring is a list of available option
+characters.  If such a character is followed by a colon (`:'), the option
+takes an argument, which is placed in optarg.  If such a character is
+followed by two colons, the option takes an optional argument, which is
+placed in optarg.  If the option does not take an argument, optarg is NULL.
+
+The external variable optind is the index of the next array element of argv
+to be processed; it communicates from one call to the next which element to
+process.
+
+The getopt_long() function works like getopt() except that it also accepts
+long options started by two dashes `--'.  If these take values, it is either
+in the form
+
+--arg=value
+
+ or
+
+--arg value
+
+It takes the additional arguments longopts which is a pointer to the first
+element of an array of type struct option.  The last element of the array
+has to be filled with NULL for the name field.
+
+The longind pointer points to the index of the current long option relative
+to longopts if it is non-NULL.
+
+The getopt() function returns the option character if the option was found
+successfully, `:' if there was a missing parameter for one of the options,
+`?' for an unknown option character, and EOF for the end of the option list.
+
+The getopt_long() function's return value is described in the header file.
+
+The function getopt_long_only() is identical to getopt_long(), except that a
+plus sign `+' can introduce long options as well as `--'.
+
+The following describes how to deal with options that follow non-option
+argv-elements.
+
+If the caller did not specify anything, the default is REQUIRE_ORDER if the
+environment variable POSIXLY_CORRECT is defined, PERMUTE otherwise.
+
+REQUIRE_ORDER means don't recognize them as options; stop option processing
+when the first non-option is seen.  This is what Unix does.  This mode of
+operation is selected by either setting the environment variable
+POSIXLY_CORRECT, or using `+' as the first character of the optstring
+parameter.
+
+PERMUTE is the default.  We permute the contents of ARGV as we scan, so that
+eventually all the non-options are at the end.  This allows options to be
+given in any order, even with programs that were not written to expect this.
+
+RETURN_IN_ORDER is an option available to programs that were written to
+expect options and other argv-elements in any order and that care about the
+ordering of the two.  We describe each non-option argv-element as if it were
+the argument of an option with character code 1.  Using `-' as the first
+character of the optstring parameter selects this mode of operation.
+
+The special argument `--' forces an end of option-scanning regardless of the
+value of ordering.  In the case of RETURN_IN_ORDER, only `--' can cause
+getopt() and friends to return EOF with optind != argc.
+
+COPYRIGHT NOTICE AND DISCLAIMER:
+
+Copyright (C) 1997 Gregory Pietsch
+
+This file and the accompanying getopt.h header file are hereby placed in the<span style="background-color: #FF0000"> </span>
+public domain without restrictions.  Just give the author credit, don't
+claim you wrote it or prevent anyone else from using it.
+
+Gregory Pietsch's current e-mail address:
+gpietsch@comcast.net
+****************************************************************************/
+
+/* include files */
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <newlib/getopt.h>
+
+/* macros */
+#define NO_ARG<span style="background-color: #FF0000">          </span>  0
+#define REQUIRED_ARG<span style="background-color: #FF0000">    </span>  1
+#define OPTIONAL_ARG<span style="background-color: #FF0000">    </span>  2
+
+/* types */
+typedef enum GETOPT_ORDERING_T
+{
+  PERMUTE,
+  RETURN_IN_ORDER,
+  REQUIRE_ORDER
+} GETOPT_ORDERING_T;
+
+/* globally-defined variables */
+char *optarg = 0;
+int optind = 0;
+int opterr = 1;
+int optopt = '?';
+
+/* static variables */
+static int optwhere = 0;
+
+/* functions */
+
+/* reverse_argv_elements:  reverses num elements starting at argv */
+static void
+reverse_argv_elements (char **argv, int num)
+{
+  int i;
+  char *tmp;
+
+  for (i = 0; i < (num >> 1); i++)
+    {
+      tmp = argv[i];
+      argv[i] = argv[num - i - 1];
+      argv[num - i - 1] = tmp;
+    }
+}
+
+/* permute: swap two blocks of argv-elements given their lengths */
+static void
+permute (char *const argv[], int len1, int len2)
+{
+  reverse_argv_elements ((char **) argv, len1);
+  reverse_argv_elements ((char **) argv, len1 + len2);
+  reverse_argv_elements ((char **) argv, len2);
+}
+
+/* is_option: is this argv-element an option or the end of the option list? */
+static int
+is_option (char *argv_element, int only)
+{
+  return ((argv_element == 0)
+         || (argv_element[0] == '-') || (only && argv_element[0] == '+'));
+}
+
+/* read_globals: read the values from the globals into a getopt_data<span style="background-color: #FF0000"> </span>
+   structure */
+static void
+read_globals (struct getopt_data *data)
+{
+  data->optarg = optarg;
+  data->optind = optind;
+  data->opterr = opterr;
+  data->optopt = optopt;
+  data->optwhere = optwhere;
+}
+
+/* write_globals: write the values into the globals from a getopt_data
+   structure */
+static void
+write_globals (struct getopt_data *data)
+{
+  optarg = data->optarg;
+  optind = data->optind;
+  opterr = data->opterr;
+  optopt = data->optopt;
+  optwhere = data->optwhere;
+}
+
+/* getopt_internal:  the function that does all the dirty work */
+static int
+getopt_internal (int argc, char *const argv[], const char *shortopts,
+                const struct option *longopts, int *longind, int only,
+                struct getopt_data *data)
+{
+  GETOPT_ORDERING_T ordering = PERMUTE;
+  size_t permute_from = 0;
+  int num_nonopts = 0;
+  int optindex = 0;
+  size_t match_chars = 0;
+  char *possible_arg = 0;
+  int longopt_match = -1;
+  int has_arg = -1;
+  char *cp = 0;
+  int arg_next = 0;
+
+  /* first, deal with silly parameters and easy stuff */
+  if (argc == 0 || argv == 0 || (shortopts == 0 && longopts == 0)
+      || data->optind >= argc || argv[data->optind] == 0)
+    return EOF;
+  if (strcmp (argv[data->optind], "--") == 0)
+    {
+      data->optind++;
+      return EOF;
+    }
+
+  /* if this is our first time through */
+  if (data->optind == 0)
+    data->optind = data->optwhere = 1;
+
+  /* define ordering */
+  if (shortopts != 0 && (*shortopts == '-' || *shortopts == '+'))
+    {
+      ordering = (*shortopts == '-') ? RETURN_IN_ORDER : REQUIRE_ORDER;
+      shortopts++;
+    }
+  else
+    ordering = (getenv ("POSIXLY_CORRECT") != 0) ? REQUIRE_ORDER : PERMUTE;
+
+  /*
+   * based on ordering, find our next option, if we're at the beginning of
+   * one
+   */
+  if (data->optwhere == 1)
+    {
+      switch (ordering)
+       {
+       default:                /* shouldn't happen */
+       case PERMUTE:
+         permute_from = data->optind;
+         num_nonopts = 0;
+         while (!is_option (argv[data->optind], only))
+           {
+             data->optind++;
+             num_nonopts++;
+           }
+         if (argv[data->optind] == 0)
+           {
+             /* no more options */
+             data->optind = permute_from;
+             return EOF;
+           }
+         else if (strcmp (argv[data->optind], "--") == 0)
+           {
+             /* no more options, but have to get `--' out of the way */
+             permute (argv + permute_from, num_nonopts, 1);
+             data->optind = permute_from + 1;
+             return EOF;
+           }
+         break;
+       case RETURN_IN_ORDER:
+         if (!is_option (argv[data->optind], only))
+           {
+             data->optarg = argv[data->optind++];
+             return (data->optopt = 1);
+           }
+         break;
+       case REQUIRE_ORDER:
+         if (!is_option (argv[data->optind], only))
+           return EOF;
+         break;
+       }
+    }
+  /* we've got an option, so parse it */
+
+  /* first, is it a long option? */
+  if (longopts != 0
+      && (memcmp (argv[data->optind], "--", 2) == 0
+         || (only && argv[data->optind][0] == '+')) && data->optwhere == 1)
+    {
+      /* handle long options */
+      if (memcmp (argv[data->optind], "--", 2) == 0)
+       data->optwhere = 2;
+      longopt_match = -1;
+      possible_arg = strchr (argv[data->optind] + data->optwhere, '=');
+      if (possible_arg == 0)
+       {
+         /* no =, so next argv might be arg */
+         match_chars = strlen (argv[data->optind]);
+         possible_arg = argv[data->optind] + match_chars;
+         match_chars = match_chars - data->optwhere;
+       }
+      else
+       match_chars = (possible_arg - argv[data->optind]) - data->optwhere;
+      for (optindex = 0; longopts[optindex].name != 0; ++optindex)
+       {
+         if (memcmp
+             (argv[data->optind] + data->optwhere, longopts[optindex].name,
+              match_chars) == 0)
+           {
+             /* do we have an exact match? */
+             if (match_chars == (int) (strlen (longopts[optindex].name)))
+               {
+                 longopt_match = optindex;
+                 break;
+               }
+             /* do any characters match? */
+             else
+               {
+                 if (longopt_match < 0)
+                   longopt_match = optindex;
+                 else
+                   {
+                     /* we have ambiguous options */
+                     if (data->opterr)
+                       fprintf (stderr, "%s: option `%s' is ambiguous "
+                                "(could be `--%s' or `--%s')\n",
+                                argv[0],
+                                argv[data->optind],
+                                longopts[longopt_match].name,
+                                longopts[optindex].name);
+                     return (data->optopt = '?');
+                   }
+               }
+           }
+       }
+      if (longopt_match >= 0)
+       has_arg = longopts[longopt_match].has_arg;
+    }
+
+  /* if we didn't find a long option, is it a short option? */
+  if (longopt_match < 0 && shortopts != 0)
+    {
+      cp = strchr (shortopts, argv[data->optind][data->optwhere]);
+      if (cp == 0)
+       {
+         /* couldn't find option in shortopts */
+         if (data->opterr)
+           fprintf (stderr,
+                    "%s: invalid option -- `-%c'\n",
+                    argv[0], argv[data->optind][data->optwhere]);
+         data->optwhere++;
+         if (argv[data->optind][data->optwhere] == '\0')
+           {
+             data->optind++;
+             data->optwhere = 1;
+           }
+         return (data->optopt = '?');
+       }
+      has_arg = ((cp[1] == ':')
+                ? ((cp[2] == ':') ? OPTIONAL_ARG : REQUIRED_ARG) : NO_ARG);
+      possible_arg = argv[data->optind] + data->optwhere + 1;
+      data->optopt = *cp;
+    }
+
+  /* get argument and reset data->optwhere */
+  arg_next = 0;
+  switch (has_arg)
+    {
+    case OPTIONAL_ARG:
+      if (*possible_arg == '=')
+       possible_arg++;
+      data->optarg = (*possible_arg != '\0') ? possible_arg : 0;
+      data->optwhere = 1;
+      break;
+    case REQUIRED_ARG:
+      if (*possible_arg == '=')
+       possible_arg++;
+      if (*possible_arg != '\0')
+       {
+         data->optarg = possible_arg;
+         data->optwhere = 1;
+       }
+      else if (data->optind + 1 >= argc)
+       {
+         if (data->opterr)
+           {
+             fprintf (stderr, "%s: argument required for option `", argv[0]);
+             if (longopt_match >= 0)
+               fprintf (stderr, "--%s'\n", longopts[longopt_match].name);
+             else
+               fprintf (stderr, "-%c'\n", *cp);
+           }
+         data->optind++;
+         return (data->optopt = ':');
+       }
+      else
+       {
+         data->optarg = argv[data->optind + 1];
+         arg_next = 1;
+         data->optwhere = 1;
+       }
+      break;
+    default:                   /* shouldn't happen */
+    case NO_ARG:
+      if (longopt_match < 0)
+       {
+         data->optwhere++;
+         if (argv[data->optind][data->optwhere] == '\0')
+           data->optwhere = 1;
+       }
+      else
+       data->optwhere = 1;
+      data->optarg = 0;
+      break;
+    }
+
+  /* do we have to permute or otherwise modify data->optind? */
+  if (ordering == PERMUTE && data->optwhere == 1 && num_nonopts != 0)
+    {
+      permute (argv + permute_from, num_nonopts, 1 + arg_next);
+      data->optind = permute_from + 1 + arg_next;
+    }
+  else if (data->optwhere == 1)
+    data->optind = data->optind + 1 + arg_next;
+
+  /* finally return */
+  if (longopt_match >= 0)
+    {
+      if (longind != 0)
+       *longind = longopt_match;
+      if (longopts[longopt_match].flag != 0)
+       {
+         *(longopts[longopt_match].flag) = longopts[longopt_match].val;
+         return 0;
+       }
+      else
+       return longopts[longopt_match].val;
+    }
+  else
+    return data->optopt;
+}
+
+int
+getopt (int argc, char *const argv[], const char *optstring)
+{
+  struct getopt_data data;
+  int r;
+
+  read_globals (&data);
+  r = getopt_internal (argc, argv, optstring, 0, 0, 0, &data);
+  write_globals (&data);
+  return r;
+}
+
+int
+getopt_long (int argc, char *const argv[], const char *shortopts,
+            const struct option *longopts, int *longind)
+{
+  struct getopt_data data;
+  int r;
+
+  read_globals (&data);
+  r = getopt_internal (argc, argv, shortopts, longopts, longind, 0, &data);
+  write_globals (&data);
+  return r;
+}
+
+int
+getopt_long_only (int argc, char *const argv[], const char *shortopts,
+                 const struct option *longopts, int *longind)
+{
+  struct getopt_data data;
+  int r;
+
+  read_globals (&data);
+  r = getopt_internal (argc, argv, shortopts, longopts, longind, 1, &data);
+  write_globals (&data);
+  return r;
+}
+
+int
+__getopt_r (int argc, char *const argv[], const char *optstring,
+           struct getopt_data *data)
+{
+  return getopt_internal (argc, argv, optstring, 0, 0, 0, data);
+}
+
+int
+__getopt_long_r (int argc, char *const argv[], const char *shortopts,
+                const struct option *longopts, int *longind,
+                struct getopt_data *data)
+{
+  return getopt_internal (argc, argv, shortopts, longopts, longind, 0, data);
+}
+
+int
+__getopt_long_only_r (int argc, char *const argv[], const char *shortopts,
+                     const struct option *longopts, int *longind,
+                     struct getopt_data *data)
+{
+  return getopt_internal (argc, argv, shortopts, longopts, longind, 1, data);
+}
+
+/* end of file GETOPT.C */
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/shell/shared/include/newlib/_ansi.h:1.1
--- /dev/null   Fri Dec 17 09:10:59 2010
+++ rtems/tools/schedsim/shell/shared/include/newlib/_ansi.h    Fri Dec 17 08:49:40 2010
</font><font color='#997700'>@@ -0,0 +1,99 @@
</font><font color='#000088'>+/* Provide support for both ANSI and non-ANSI environments.  */
+
+/* Some ANSI environments are "broken" in the sense that __STDC__ cannot be
+   relied upon to have it's intended meaning.  Therefore we must use our own
+   concoction: _HAVE_STDC.  Always use _HAVE_STDC instead of __STDC__ in newlib
+   sources!
+
+   To get a strict ANSI C environment, define macro __STRICT_ANSI__.  This will
+   "comment out" the non-ANSI parts of the ANSI header files (non-ANSI header
+   files aren't affected).  */
+
+#ifndef        _ANSIDECL_H_
+#define        _ANSIDECL_H_
+
+/* #include <newlib.h> */
+/* #include <sys/config.h> */
+
+/* First try to figure out whether we really are in an ANSI C environment.  */
+/* FIXME: This probably needs some work.  Perhaps sys/config.h can be
+   prevailed upon to give us a clue.  */
+
+#ifdef __STDC__
+#define _HAVE_STDC
+#endif
+
+#ifdef _HAVE_STDC
+#define        _PTR            void *
+#define        _AND            ,
+#define        _NOARGS         void
+#define        _CONST          const
+#define        _VOLATILE       volatile
+#define        _SIGNED         signed
+#define        _DOTS           , ...
+#define _VOID void
+#ifdef __CYGWIN__
+#define        _EXFUN(name, proto)             __cdecl name proto
+#define        _EXPARM(name, proto)            (* __cdecl name) proto
+#else
+#define        _EXFUN(name, proto)             name proto
+#define _EXPARM(name, proto)           (* name) proto
+#endif
+#define        _DEFUN(name, arglist, args)     name(args)
+#define        _DEFUN_VOID(name)               name(_NOARGS)
+#define _CAST_VOID (void)
+#ifndef _LONG_DOUBLE
+#define _LONG_DOUBLE long double
+#endif
+#ifndef _LONG_LONG
+#define _LONG_LONG long long
+#endif
+#ifndef _PARAMS
+#define _PARAMS(paramlist)             paramlist
+#endif
+#else<span style="background-color: #FF0000">  </span>
+#define        _PTR            char *
+#define        _AND            ;
+#define        _NOARGS
+#define        _CONST
+#define        _VOLATILE
+#define        _SIGNED
+#define        _DOTS
+#define _VOID void
+#define        _EXFUN(name, proto)             name()
+#define        _DEFUN(name, arglist, args)     name arglist args;
+#define        _DEFUN_VOID(name)               name()
+#define _CAST_VOID
+#define _LONG_DOUBLE double
+#define _LONG_LONG long
+#ifndef _PARAMS
+#define _PARAMS(paramlist)             ()
+#endif
+#endif
+
+/* Support gcc's __attribute__ facility.  */
+
+#ifdef __GNUC__
+#define _ATTRIBUTE(attrs) __attribute__ (attrs)
+#else
+#define _ATTRIBUTE(attrs)
+#endif
+
+/*  ISO C++.  */
+
+#ifdef __cplusplus
+#if !(defined(_BEGIN_STD_C) && defined(_END_STD_C))
+#ifdef _HAVE_STD_CXX
+#define _BEGIN_STD_C namespace std { extern "C" {
+#define _END_STD_C  } }
+#else
+#define _BEGIN_STD_C extern "C" {
+#define _END_STD_C  }
+#endif
+#endif
+#else
+#define _BEGIN_STD_C
+#define _END_STD_C
+#endif
+
+#endif /* _ANSIDECL_H_ */
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/shell/shared/include/newlib/getopt.h:1.1
--- /dev/null   Fri Dec 17 09:10:59 2010
+++ rtems/tools/schedsim/shell/shared/include/newlib/getopt.h   Fri Dec 17 08:49:40 2010
</font><font color='#997700'>@@ -0,0 +1,167 @@
</font><font color='#000088'>+/****************************************************************************
+
+getopt.h - Read command line options
+
+AUTHOR: Gregory Pietsch
+CREATED Thu Jan 09 22:37:00 1997
+
+DESCRIPTION:
+
+The getopt() function parses the command line arguments.  Its arguments argc
+and argv are the argument count and array as passed to the main() function
+on program invocation.  The argument optstring is a list of available option
+characters.  If such a character is followed by a colon (`:'), the option
+takes an argument, which is placed in optarg.  If such a character is
+followed by two colons, the option takes an optional argument, which is
+placed in optarg.  If the option does not take an argument, optarg is NULL.
+
+The external variable optind is the index of the next array element of argv
+to be processed; it communicates from one call to the next which element to
+process.
+
+The getopt_long() function works like getopt() except that it also accepts
+long options started by two dashes `--'.  If these take values, it is either
+in the form
+
+--arg=value
+
+ or
+
+--arg value
+
+It takes the additional arguments longopts which is a pointer to the first
+element of an array of type GETOPT_LONG_OPTION_T, defined below.  The last
+element of the array has to be filled with NULL for the name field.
+
+The longind pointer points to the index of the current long option relative
+to longopts if it is non-NULL.
+
+The getopt() function returns the option character if the option was found
+successfully, `:' if there was a missing parameter for one of the options,
+`?' for an unknown option character, and EOF for the end of the option list.
+
+The getopt_long() function's return value is described below.
+
+The function getopt_long_only() is identical to getopt_long(), except that a
+plus sign `+' can introduce long options as well as `--'.
+
+Describe how to deal with options that follow non-option ARGV-elements.
+
+If the caller did not specify anything, the default is REQUIRE_ORDER if the
+environment variable POSIXLY_CORRECT is defined, PERMUTE otherwise.
+
+REQUIRE_ORDER means don't recognize them as options; stop option processing
+when the first non-option is seen.  This is what Unix does.  This mode of
+operation is selected by either setting the environment variable
+POSIXLY_CORRECT, or using `+' as the first character of the optstring
+parameter.
+
+PERMUTE is the default.  We permute the contents of ARGV as we scan, so that
+eventually all the non-options are at the end.  This allows options to be
+given in any order, even with programs that were not written to expect this.
+
+RETURN_IN_ORDER is an option available to programs that were written to
+expect options and other ARGV-elements in any order and that care about the
+ordering of the two.  We describe each non-option ARGV-element as if it were
+the argument of an option with character code 1.  Using `-' as the first
+character of the optstring parameter selects this mode of operation.
+
+The special argument `--' forces an end of option-scanning regardless of the
+value of `ordering'.  In the case of RETURN_IN_ORDER, only `--' can cause
+getopt() and friends to return EOF with optind != argc.
+
+COPYRIGHT NOTICE AND DISCLAIMER:
+
+Copyright (C) 1997 Gregory Pietsch
+
+This file and the accompanying getopt.c implementation file are hereby<span style="background-color: #FF0000"> </span>
+placed in the public domain without restrictions.  Just give the author<span style="background-color: #FF0000"> </span>
+credit, don't claim you wrote it or prevent anyone else from using it.
+
+Gregory Pietsch's current e-mail address:
+gpietsch@comcast.net
+****************************************************************************/
+
+/* use _GETOPT_H so we avoid dupe include of glibc getopt.h */
+#ifndef _GETOPT_H
+#define _GETOPT_H
+
+#include <newlib/_ansi.h>
+
+/* include files needed by this include file */
+
+  /* These #defines are to keep the namespace clear... */
+#define getopt_r               __getopt_r
+#define getopt_long_r          __getopt_long_r
+#define getopt_long_only_r     __getopt_long_only_r
+
+#ifdef __cplusplus
+extern "C"
+{
+
+#endif                         /* __cplusplus */
+
+/* types defined by this include file */
+  struct option
+  {
+    char *name;                        /* the name of the long option */
+    int has_arg;               /* one of the above macros */
+    int *flag;                 /* determines if getopt_long() returns a
+                                * value for a long option; if it is
+                                * non-NULL, 0 is returned as a function
+                                * value and the value of val is stored in
+                                * the area pointed to by flag.  Otherwise,
+                                * val is returned. */
+    int val;                   /* determines the value to return if flag is
+                                * NULL. */
+
+  };
+
+  /* The getopt_data structure is for reentrancy. Its members are similar to
+     the externally-defined variables.  */
+  typedef struct getopt_data
+  {
+    char *optarg;
+    int optind, opterr, optopt, optwhere;
+  } getopt_data;
+
+  /* externally-defined variables */
+  extern char *optarg;
+  extern int optind;
+  extern int opterr;
+  extern int optopt;
+
+  /* function prototypes */
+  int _EXFUN (getopt,
+             (int __argc, char *const __argv[], const char *__optstring));
+
+  int _EXFUN (getopt_long,
+             (int __argc, char *const __argv[], const char *__shortopts,
+              const struct option * __longopts, int *__longind));
+
+  int _EXFUN (getopt_long_only,
+             (int __argc, char *const __argv[], const char *__shortopts,
+              const struct option * __longopts, int *__longind));
+
+  int _EXFUN (__getopt_r,
+             (int __argc, char *const __argv[], const char *__optstring,
+              struct getopt_data * __data));
+
+  int _EXFUN (__getopt_long_r,
+             (int __argc, char *const __argv[], const char *__shortopts,
+              const struct option * __longopts, int *__longind,
+              struct getopt_data * __data));
+
+  int _EXFUN (__getopt_long_only_r,
+             (int __argc, char *const __argv[], const char *__shortopts,
+              const struct option * __longopts, int *__longind,
+              struct getopt_data * __data));
+
+#ifdef __cplusplus
+};
+
+#endif /* __cplusplus  */
+
+#endif /* GETOPT_H */
+
+/* END OF FILE getopt.h */
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/shell/shared/include/shell.h:1.1
--- /dev/null   Fri Dec 17 09:10:59 2010
+++ rtems/tools/schedsim/shell/shared/include/shell.h   Fri Dec 17 08:49:40 2010
</font><font color='#997700'>@@ -0,0 +1,61 @@
</font><font color='#000088'>+/*
+ *  BASED UPON SOURCE IN RTEMS, MODIFIED FOR SIMULATOR
+ *
+ *  COPYRIGHT (c) 1989-2010.
+ *  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$
+ */
+
+
+#ifndef __SHELL_h
+#define __SHELL_h
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef int (*rtems_shell_command_t)(int argc, char **argv);
+
+struct rtems_shell_cmd_tt;
+typedef struct rtems_shell_cmd_tt rtems_shell_cmd_t;
+
+struct rtems_shell_cmd_tt {
+  const char            *name;
+  const char            *usage;
+  const char            *topic;
+  rtems_shell_command_t  command;
+  rtems_shell_cmd_t     *alias;
+  rtems_shell_cmd_t     *next;
+};
+
+typedef struct {
+  const char *name;
+  const char *alias;
+} rtems_shell_alias_t;
+
+void rtems_shell_initialize_command_set(void);
+
+rtems_shell_cmd_t * rtems_shell_lookup_cmd(const char *cmd);
+
+rtems_shell_cmd_t * rtems_shell_alias_cmd(
+  const char *cmd,
+  const char *alias
+);
+
+int rtems_shell_make_args(
+  char  *commandLine,
+  int   *argc_p,
+  char **argv_p,
+  int    max_args
+);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/shell/shared/lookup_semaphore.c:1.1
--- /dev/null   Fri Dec 17 09:10:59 2010
+++ rtems/tools/schedsim/shell/shared/lookup_semaphore.c        Fri Dec 17 08:49:39 2010
</font><font color='#997700'>@@ -0,0 +1,15 @@
</font><font color='#000088'>+/*
+ *  COPYRIGHT (c) 1989-2010.
+ *  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$
+ */
+
+#define METHOD_NAME lookup_semaphore
+#define RTEMS_IDENT_NAME rtems_semaphore_ident
+
+#include "lookup_task.c"
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/shell/shared/lookup_task.c:1.1
--- /dev/null   Fri Dec 17 09:11:00 2010
+++ rtems/tools/schedsim/shell/shared/lookup_task.c     Fri Dec 17 08:49:39 2010
</font><font color='#997700'>@@ -0,0 +1,58 @@
</font><font color='#000088'>+/*
+ *  Given Name or ID String, give Id
+ *
+ *  COPYRIGHT (c) 1989-2010.
+ *  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 <stdio.h>
+
+#include <rtems.h>
+#include <rtems/stringto.h>
+
+#ifndef METHOD_NAME
+  #define METHOD_NAME lookup_task
+#endif
+#ifndef RTEMS_IDENT_NAME
+  #define RTEMS_IDENT_NAME rtems_task_ident
+#endif
+
+int METHOD_NAME(
+  const char *string,
+  rtems_id   *id
+)
+{
+  char               name[5];
+  rtems_status_code  status;
+  unsigned long      tmp;
+
+  if ( string[0] != '0' ) {
+    memset( name, '\0', sizeof(name) );
+    strncpy( name, string, 4 );
+    status = RTEMS_IDENT_NAME(<span style="background-color: #FF0000"> </span>
+      rtems_build_name( name[0], name[1], name[2], name[3] ),
+      OBJECTS_SEARCH_ALL_NODES,
+      id
+    );
+    if ( status != RTEMS_SUCCESSFUL )
+      return 1;
+  } else {
+    if ( rtems_string_to_unsigned_long( string, &tmp, NULL, 0) ) {
+      fprintf( stderr, "Argument (%s) is not a number\n", string );
+      return 1;
+    }
+    *id = (rtems_id) tmp;
+  }
+
+  return 0;
+}
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/shell/shared/main_clocktick.c:1.1
--- /dev/null   Fri Dec 17 09:11:00 2010
+++ rtems/tools/schedsim/shell/shared/main_clocktick.c  Fri Dec 17 08:49:39 2010
</font><font color='#997700'>@@ -0,0 +1,75 @@
</font><font color='#000088'>+/*
+ *  Task Priority Shell Command Implmentation
+ *
+ *  COPYRIGHT (c) 1989-2010.
+ *  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 <stdio.h>
+
+#include <rtems.h>
+#include "shell.h"
+#include <rtems/stringto.h>
+#include <schedsim_shell.h>
+#include <rtems/error.h>
+
+int rtems_shell_main_clock_tick(
+  int   argc,
+  char *argv[]
+)
+{
+  rtems_status_code    status;
+  rtems_interval       ticks;
+  unsigned long        tmp;
+  rtems_interval       t;
+<span style="background-color: #FF0000"> </span>
+  if (argc != 2) {
+    fprintf( stderr, "%s: Usage ticks\n", argv[0] );
+    return -1;
+  }
+
+  if ( rtems_string_to_unsigned_long( argv[1], &tmp, NULL, 0) ) {
+    fprintf( stderr, "Argument (%s) is not a number\n", argv[2] );
+    return 1;
+  }
+
+  ticks = (rtems_interval) tmp;
+
+  /*
+   *  Now delete the task
+   */
+  for ( t=1 ; t<=ticks ; t++ ) {
+    fprintf( stderr, "ClockTick (%d) ...\n", t );
+    status = rtems_clock_tick();
+    if ( status != RTEMS_SUCCESSFUL ) {
+      fprintf(
+        stderr,
+        "Clock Tick (%s) returned %s\n",
+        argv[1],
+        rtems_status_text( status )
+      );<span style="background-color: #FF0000"> </span>
+      return -1;
+    }
+  }
+
+  return 0;
+}
+
+rtems_shell_cmd_t rtems_shell_CLOCK_TICK_Command = {
+  "clock_tick",                  /* name */
+  "clock_tick ticks",            /* usage */
+  "rtems",                       /* topic */
+  rtems_shell_main_clock_tick,   /* command */
+  NULL,                          /* alias */
+  NULL                           /* next */
+};
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/shell/shared/main_echo.c:1.1
--- /dev/null   Fri Dec 17 09:11:00 2010
+++ rtems/tools/schedsim/shell/shared/main_echo.c       Fri Dec 17 08:49:39 2010
</font><font color='#997700'>@@ -0,0 +1,140 @@
</font><font color='#000088'>+/*  $NetBSD: echo.c,v 1.12 2005/02/06 04:43:43 perry Exp $  */
+
+/*-
+ * Copyright (c) 1991, 1993
+ *  The Regents of the University of California.  All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Kenneth Almquist.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *  @(#)echo.c  8.1 (Berkeley) 5/31/93
+ */
+
+/*
+ * Echo command.
+ *
+ * echo is steeped in tradition - several of them!
+ * netbsd has supported 'echo [-n | -e] args' in spite of -e not being
+ * documented anywhere.
+ * Posix requires that -n be supported, output from strings containing
+ * \ is implementation defined
+ * The Single Unix Spec requires that \ escapes be treated as if -e
+ * were set, but that -n not be treated as an option.
+ * (ksh supports 'echo [-eEn] args', but not -- so that it is actually
+ * impossible to actually output '-n')
+ *
+ * It is suggested that 'printf "%b" "string"' be used to get \ sequences
+ * expanded.  printf is now a builtin of netbsd's sh and csh.
+ */
+
+/*
+ *  $Id$
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <errno.h>
+
+#include "shell.h"
+
+
+
+int rtems_shell_main_echo(
+  int   argc,
+  char *argv[]
+)
+{
+  char **ap;
+  char *p;
+  char c;
+  int count;
+  int nflag = 0;
+  int eflag = 0;
+
+  ap = argv;
+  if (argc)
+    ap++;
+
+  if ((p = *ap) != NULL) {
+    if (!strcmp(p, "-n")) {
+      nflag = 1;
+      ap++;
+    } else if (!strcmp(p, "-e")) {
+      eflag = 1;
+      ap++;
+    }
+  }
+
+  while ((p = *ap++) != NULL) {
+    while ((c = *p++) != '\0') {
+      if (c == '\\' && eflag) {
+        switch (*p++) {
+        case 'a':  c = '\a';  break;  /* bell */
+        case 'b':  c = '\b';  break;
+        case 'c':  return 0;    /* exit */
+        case 'e':  c =  033;  break;  /* escape */
+        case 'f':  c = '\f';  break;
+        case 'n':  c = '\n';  break;
+        case 'r':  c = '\r';  break;
+        case 't':  c = '\t';  break;
+        case 'v':  c = '\v';  break;
+        case '\\':  break;    /* c = '\\' */
+        case '0':
+          c = 0;
+          count = 3;
+          while (--count >= 0 && (unsigned)(*p - '0') < 8)
+            c = (c << 3) + (*p++ - '0');
+          break;
+        default:
+          /* Output the '/' and char following */
+          p--;
+          break;
+        }
+      }
+      putchar(c);
+    }
+    if (*ap)
+      putchar(' ');
+  }
+  if (! nflag)
+    putchar('\n');
+  return 0;
+}
+
+rtems_shell_cmd_t rtems_shell_ECHO_Command = {
+  "echo",                        /* name */
+  "echo [args]",                 /* usage */
+  "misc",                        /* topic */
+  rtems_shell_main_echo,         /* command */
+  NULL,                          /* alias */
+  NULL                           /* next */
+};
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/shell/shared/main_executing.c:1.1
--- /dev/null   Fri Dec 17 09:11:00 2010
+++ rtems/tools/schedsim/shell/shared/main_executing.c  Fri Dec 17 08:49:39 2010
</font><font color='#997700'>@@ -0,0 +1,42 @@
</font><font color='#000088'>+/*
+ *  Thread Executing Shell Command Implmentation
+ *
+ *  COPYRIGHT (c) 1989-2010.
+ *  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 <stdio.h>
+
+#include <rtems.h>
+#include "shell.h"
+#include <rtems/stringto.h>
+#include <schedsim_shell.h>
+#include <rtems/error.h>
+
+int rtems_shell_main_executing(
+  int   argc,
+  char *argv[]
+)
+{
+  PRINT_EXECUTING();
+  return 0;
+}
+
+rtems_shell_cmd_t rtems_shell_TASK_EXECUTING_Command = {
+  "executing",                 /* name */
+  "executing",                 /* usage */
+  "rtems",                     /* topic */
+  rtems_shell_main_executing,  /* command */
+  NULL,                        /* alias */
+  NULL                         /* next */
+};
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/shell/shared/main_heir.c:1.1
--- /dev/null   Fri Dec 17 09:11:00 2010
+++ rtems/tools/schedsim/shell/shared/main_heir.c       Fri Dec 17 08:49:39 2010
</font><font color='#997700'>@@ -0,0 +1,42 @@
</font><font color='#000088'>+/*
+ *  Thread Heir Shell Command Implmentation
+ *
+ *  COPYRIGHT (c) 1989-2010.
+ *  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 <stdio.h>
+
+#include <rtems.h>
+#include "shell.h"
+#include <rtems/stringto.h>
+#include <schedsim_shell.h>
+#include <rtems/error.h>
+
+int rtems_shell_main_heir(
+  int   argc,
+  char *argv[]
+)
+{
+  PRINT_HEIR();
+  return 0;
+}
+
+rtems_shell_cmd_t rtems_shell_TASK_HEIR_Command = {
+  "heir",                 /* name */
+  "heir",                 /* usage */
+  "rtems",                /* topic */
+  rtems_shell_main_heir,  /* command */
+  NULL,                   /* alias */
+  NULL                    /* next */
+};
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/shell/shared/main_help.c:1.1
--- /dev/null   Fri Dec 17 09:11:00 2010
+++ rtems/tools/schedsim/shell/shared/main_help.c       Fri Dec 17 08:49:39 2010
</font><font color='#997700'>@@ -0,0 +1,150 @@
</font><font color='#000088'>+/*
+ *  Shell Help Command
+ *
+ *  COPYRIGHT (c) 1989-2010.
+ *  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 <stdio.h>
+#include <time.h>
+#include <string.h>
+
+#include "shell.h"
+#include <schedsim_shell.h>
+
+/*
+ * show the help for one command.
+ */
+int rtems_shell_help_cmd(
+  rtems_shell_cmd_t *shell_cmd
+)
+{
+  const char * pc;
+  int    col,line;
+
+  printf("%-20.20s - ",shell_cmd->name);
+  col = 14;
+  line = 1;
+  if (shell_cmd->alias) {
+    printf("is an <alias> for command '%s'",shell_cmd->alias->name);
+  } else if (shell_cmd->usage) {
+    pc = shell_cmd->usage;
+    while (*pc) {
+      switch(*pc) {
+        case '\r':
+          break;
+        case '\n':
+          putchar('\n');
+          col = 0;
+          break;
+        default:
+          putchar(*pc);
+          col++;
+          break;
+      }
+      pc++;
+      if (col>78) { /* What daring... 78?*/
+        if (*pc) {
+          putchar('\n');
+          col = 0;
+        }
+      }
+      if (!col && *pc) {
+        printf("            ");
+        col = 12;line++;
+      }
+    }
+  }
+  puts("");
+  return line;
+}
+
+/*
+ * show the help. The first command implemented.
+ * Can you see the header of routine? Known?
+ * The same with all the commands....
+ */
+int rtems_shell_help(
+  int argc,
+  char * argv[]
+)
+{
+  int col,line,arg;
+  rtems_shell_topic_t *topic;
+  rtems_shell_cmd_t * shell_cmd = rtems_shell_first_cmd;
+
+  if (argc<2) {
+    printf("help: ('r' repeat last cmd - 'e' edit last cmd)\n"
+           "  TOPIC? The topics are\n");
+    topic = rtems_shell_first_topic;
+    col = 0;
+    while (topic) {
+      if (!col){
+        col = printf("   %s",topic->topic);
+      } else {
+        if ((col+strlen(topic->topic)+2)>78){
+          printf("\n");
+          col = printf("   %s",topic->topic);
+        } else {
+          col+= printf(", %s",topic->topic);
+        }
+      }
+      topic = topic->next;
+    }
+    printf("\n");
+    return 1;
+  }
+  line = 0;
+  for (arg = 1;arg<argc;arg++) {
+    if (line>16) {
+      printf("Press any key to continue...");getchar();
+      printf("\n");
+      line = 0;
+    }
+    topic  =  rtems_shell_lookup_topic(argv[arg]);
+    if (!topic){
+      if ((shell_cmd = rtems_shell_lookup_cmd(argv[arg])) == NULL) {
+        printf("help: topic or cmd '%s' not found. Try <help> alone for a list\n",
+            argv[arg]);
+        line++;
+      } else {
+        line+= rtems_shell_help_cmd(shell_cmd);
+      }
+      continue;
+    }
+    printf("help: list for the topic '%s'\n",argv[arg]);
+    line++;
+    while (shell_cmd) {
+      if (!strcmp(topic->topic,shell_cmd->topic))
+        line+= rtems_shell_help_cmd(shell_cmd);
+      if (line>16) {
+        printf("Press any key to continue...");
+        getchar();
+        printf("\n");
+        line = 0;
+      }
+      shell_cmd = shell_cmd->next;
+    }
+  }
+  puts("");
+  return 0;
+}
+
+rtems_shell_cmd_t rtems_shell_HELP_Command  =  {
+  "help",                                       /* name  */
+   "help [topic] # list of usage of commands",  /* usage */
+  "help",                                       /* topic */
+  rtems_shell_help,                             /* command */
+  NULL,                                         /* alias */
+  NULL                                          /* next */
+};
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/shell/shared/main_rtemsinit.c:1.1
--- /dev/null   Fri Dec 17 09:11:00 2010
+++ rtems/tools/schedsim/shell/shared/main_rtemsinit.c  Fri Dec 17 08:49:39 2010
</font><font color='#997700'>@@ -0,0 +1,43 @@
</font><font color='#000088'>+/*
+ *  Initialize RTEMS Shell Command Implmentation
+ *
+ *  COPYRIGHT (c) 1989-2010.
+ *  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 <stdio.h>
+
+#include <rtems.h>
+#include "shell.h"
+#include <schedsim_shell.h>
+
+int rtems_shell_main_rtems_init(
+  int   argc,
+  char *argv[]
+)
+{
+  //
+  // Initialize RTEMS
+  //
+  rtems_initialize_data_structures();
+  return 0;
+}
+
+rtems_shell_cmd_t rtems_shell_RTEMS_INIT_Command = {
+  "rtems_init",                 /* name */
+  "rtems_init",                 /* usage */
+  "rtems",                      /* topic */
+  rtems_shell_main_rtems_init,  /* command */
+  NULL,                         /* alias */
+  NULL                          /* next */
+};
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/shell/shared/main_semcreate.c:1.1
--- /dev/null   Fri Dec 17 09:11:00 2010
+++ rtems/tools/schedsim/shell/shared/main_semcreate.c  Fri Dec 17 08:49:39 2010
</font><font color='#997700'>@@ -0,0 +1,122 @@
</font><font color='#000088'>+/*
+ *  Task Create Shell Command Implmentation
+ *
+ *  COPYRIGHT (c) 1989-2010.
+ *  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
+
+#define __need_getopt_newlib
+#include <newlib/getopt.h>
+
+#include <stdio.h>
+
+#include <rtems.h>
+#include "shell.h"
+#include <rtems/stringto.h>
+#include <schedsim_shell.h>
+#include <rtems/error.h>
+
+int rtems_shell_main_semaphore_create(
+  int   argc,
+  char *argv[]
+)
+{
+  char                 name[5];
+  rtems_id             id;
+  rtems_status_code    status;
+  long                 tmp;
+  rtems_task_priority  ceiling;
+  rtems_attribute      attr;
+  struct getopt_data   getopt_reent;
+  char                 option;
+  int                  value;
+
+  ceiling = 0;
+  attr    = RTEMS_DEFAULT_ATTRIBUTES;
+  value   = 0;
+
+  memset(&getopt_reent, 0, sizeof(getopt_data));
+  while ( (option = getopt_r( argc, argv, "bcsfpiC:V:", &getopt_reent)) != -1 ) {
+    switch (option) {
+       case 'b': attr |= RTEMS_BINARY_SEMAPHORE;   break;
+       case 'c': attr |= RTEMS_COUNTING_SEMAPHORE; break;
+       case 's': attr |= RTEMS_SIMPLE_BINARY_SEMAPHORE; break;
+
+       case 'f': attr |= RTEMS_FIFO; break;
+       case 'p': attr |= RTEMS_PRIORITY; break;
+
+       case 'i': attr |= RTEMS_INHERIT_PRIORITY; break;
+       case 'C':
+         attr |= RTEMS_PRIORITY_CEILING;
+         if ( rtems_string_to_long(getopt_reent.optarg, &tmp, NULL, 0) ) {
+           printf( "Ceiling argument (%s) is not a number\n", argv[1] );
+           return -1;
+         }
+         ceiling = tmp;
+         break;
+
+       case 'V':
+         if ( rtems_string_to_long(getopt_reent.optarg, &tmp, NULL, 0) ) {
+           printf( "Ceiling argument (%s) is not a number\n", argv[1] );
+           return -1;
+         }
+         value = tmp;
+         break;
+
+       default:
+         fprintf( stderr, "%s: Usage [-bcsfpiC:V:] name\n", argv[0] );
+         return -1;
+     }
+  }
+
+  if ( getopt_reent.optind >= argc ) {
+    fprintf( stderr, "No name specified\n" );
+    return -1;
+  }
+
+  /*
+   *  Now create the semaphore
+   */
+  memset( name, '\0', sizeof(name) );
+  strncpy( name, argv[getopt_reent.optind], 4 );
+
+  status = rtems_semaphore_create(
+    rtems_build_name( name[0], name[1], name[2], name[3] ),
+    value,
+    attr,
+    ceiling,
+    &id
+  );
+  if ( status ) {
+    fprintf(
+      stderr,
+      "Semaphore create(%s) returned %s\n",
+      argv[1],
+      rtems_status_text( status )
+    );<span style="background-color: #FF0000"> </span>
+    return -1;
+  }
+
+  printf( "Semaphore (%s) created: id=0x%08x\n", argv[1], id );
+<span style="background-color: #FF0000">  </span>
+  return 0;
+}
+
+rtems_shell_cmd_t rtems_shell_SEMAPHORE_CREATE_Command = {
+  "semaphore_create",                 /* name */
+  "semaphore_create name priority",   /* usage */
+  "rtems",                            /* topic */
+  rtems_shell_main_semaphore_create,  /* command */
+  NULL,                               /* alias */
+  NULL                                /* next */
+};
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/shell/shared/main_semdelete.c:1.1
--- /dev/null   Fri Dec 17 09:11:00 2010
+++ rtems/tools/schedsim/shell/shared/main_semdelete.c  Fri Dec 17 08:49:39 2010
</font><font color='#997700'>@@ -0,0 +1,68 @@
</font><font color='#000088'>+/*
+ *  Task Delete Shell Command Implmentation
+ *
+ *  COPYRIGHT (c) 1989-2010.
+ *  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 <stdio.h>
+
+#include <rtems.h>
+#include "shell.h"
+#include <rtems/stringto.h>
+#include <schedsim_shell.h>
+#include <rtems/error.h>
+
+int rtems_shell_main_semaphore_delete(
+  int   argc,
+  char *argv[]
+)
+{
+  rtems_id           id;
+  rtems_status_code  status;
+<span style="background-color: #FF0000"> </span>
+  if (argc != 2) {
+    fprintf( stderr, "%s: Usage [name|id]\n", argv[0] );
+    return -1;
+  }
+
+  if ( lookup_semaphore( argv[1], &id ) )
+    return -1;
+
+  /*
+   *  Now delete the semaphore
+   */
+  printf("Deleting semaphore (0x%08x)\n", id );
+<span style="background-color: #FF0000">  </span>
+  status = rtems_semaphore_delete( id );
+  if ( status != RTEMS_SUCCESSFUL ) {
+    fprintf(
+      stderr,
+      "Semaphore Delete(%s) returned %s\n",
+      argv[1],
+      rtems_status_text( status )
+    );<span style="background-color: #FF0000"> </span>
+    return -1;
+  }
+
+  return 0;
+}
+
+rtems_shell_cmd_t rtems_shell_SEMAPHORE_DELETE_Command = {
+  "semaphore_delete",                 /* name */
+  "semaphore_delete name priority",   /* usage */
+  "rtems",                            /* topic */
+  rtems_shell_main_semaphore_delete,  /* command */
+  NULL,                               /* alias */
+  NULL                                /* next */
+};
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/shell/shared/main_semflush.c:1.1
--- /dev/null   Fri Dec 17 09:11:00 2010
+++ rtems/tools/schedsim/shell/shared/main_semflush.c   Fri Dec 17 08:49:39 2010
</font><font color='#997700'>@@ -0,0 +1,67 @@
</font><font color='#000088'>+/*
+ *  Task Delete Shell Command Implmentation
+ *
+ *  COPYRIGHT (c) 1989-2010.
+ *  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 <stdio.h>
+
+#include <rtems.h>
+#include "shell.h"
+#include <rtems/stringto.h>
+#include <schedsim_shell.h>
+#include <rtems/error.h>
+
+int rtems_shell_main_semaphore_flush(
+  int   argc,
+  char *argv[]
+)
+{
+  rtems_id           id;
+  rtems_status_code  status;
+<span style="background-color: #FF0000"> </span>
+  if (argc != 2) {
+    fprintf( stderr, "%s: Usage [name|id]\n", argv[0] );
+    return -1;
+  }
+
+  if ( lookup_semaphore( argv[1], &id ) )
+    return -1;
+
+  /*
+   *  Now flush the semaphore
+   */
+  printf("Flushing semaphore (0x%08x)\n", id );
+  status = rtems_semaphore_flush( id );
+  if ( status != RTEMS_SUCCESSFUL ) {
+    fprintf(
+      stderr,
+      "Semaphore flush(%s) returned %s\n",
+      argv[1],
+      rtems_status_text( status )
+    );<span style="background-color: #FF0000"> </span>
+    return -1;
+  }
+
+  return 0;
+}
+
+rtems_shell_cmd_t rtems_shell_SEMAPHORE_FLUSH_Command = {
+  "semaphore_flush",                 /* name */
+  "semaphore_flush name",            /* usage */
+  "rtems",                           /* topic */
+  rtems_shell_main_semaphore_flush,  /* command */
+  NULL,                              /* alias */
+  NULL                               /* next */
+};
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/shell/shared/main_semobtain.c:1.1
--- /dev/null   Fri Dec 17 09:11:00 2010
+++ rtems/tools/schedsim/shell/shared/main_semobtain.c  Fri Dec 17 08:49:39 2010
</font><font color='#997700'>@@ -0,0 +1,85 @@
</font><font color='#000088'>+/*
+ *  Task Delete Shell Command Implmentation
+ *
+ *  COPYRIGHT (c) 1989-2010.
+ *  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 <stdio.h>
+
+#include <rtems.h>
+#include "shell.h"
+#include <rtems/stringto.h>
+#include <schedsim_shell.h>
+#include <rtems/error.h>
+
+int rtems_shell_main_semaphore_obtain(
+  int   argc,
+  char *argv[]
+)
+{
+  rtems_id           id;
+  rtems_status_code  status;
+  long               tmp;
+  rtems_interval     ticks;
+  Thread_Control    *caller;
+<span style="background-color: #FF0000"> </span>
+  /* XXX for now, do not support polling */
+
+  if (argc != 3) {
+    fprintf( stderr, "%s: Usage name|id timeout\n", argv[0] );
+    return -1;
+  }
+
+  if ( lookup_semaphore( argv[1], &id ) )
+    return -1;
+
+  if ( rtems_string_to_long(argv[2], &tmp, NULL, 0) ) {
+    printf( "Ceiling argument (%s) is not a number\n", argv[1] );
+    return -1;
+  }
+  ticks = tmp;
+
+  /*
+   *  Now obtain the semaphore
+   *
+   *  If the calling thread blocks, we will return as another thread
+   *  but with a "unsatisfied" return code.  So we check that we did
+   *  a thread switch inside the semaphore obtain.  If we did, then
+   *  just return successfully.
+   */
+  caller = _Thread_Executing;
+  printf("Obtain semaphore (0x%08x) with timeout %d\n", id, ticks );
+  status = rtems_semaphore_obtain( id, RTEMS_DEFAULT_OPTIONS, ticks );
+  if ( caller == _Thread_Executing ) {
+    if ( status != RTEMS_SUCCESSFUL ) {
+      fprintf(
+        stderr,
+        "Semaphore obtain(%s) returned %s\n",
+        argv[1],
+        rtems_status_text( status )
+      );<span style="background-color: #FF0000"> </span>
+      return -1;
+    }
+  }
+  return 0;
+}
+
+rtems_shell_cmd_t rtems_shell_SEMAPHORE_OBTAIN_Command = {
+  "semaphore_obtain",                /* name */
+  "semaphore_obtain name ticks",     /* usage */
+  "rtems",                           /* topic */
+  rtems_shell_main_semaphore_obtain, /* command */
+  NULL,                              /* alias */
+  NULL                               /* next */
+};
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/shell/shared/main_semrelease.c:1.1
--- /dev/null   Fri Dec 17 09:11:01 2010
+++ rtems/tools/schedsim/shell/shared/main_semrelease.c Fri Dec 17 08:49:39 2010
</font><font color='#997700'>@@ -0,0 +1,67 @@
</font><font color='#000088'>+/*
+ *  Task Delete Shell Command Implmentation
+ *
+ *  COPYRIGHT (c) 1989-2010.
+ *  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 <stdio.h>
+
+#include <rtems.h>
+#include "shell.h"
+#include <rtems/stringto.h>
+#include <schedsim_shell.h>
+#include <rtems/error.h>
+
+int rtems_shell_main_semaphore_release(
+  int   argc,
+  char *argv[]
+)
+{
+  rtems_id           id;
+  rtems_status_code  status;
+<span style="background-color: #FF0000"> </span>
+  if (argc != 2) {
+    fprintf( stderr, "%s: Usage [name|id]\n", argv[0] );
+    return -1;
+  }
+
+  if ( lookup_semaphore( argv[1], &id ) )
+    return -1;
+
+  /*
+   *  Now release the semaphore
+   */
+  printf("Releasing semaphore (0x%08x)\n", id );
+  status = rtems_semaphore_release( id );
+  if ( status != RTEMS_SUCCESSFUL ) {
+    fprintf(
+      stderr,
+      "Semaphore release(%s) returned %s\n",
+      argv[1],
+      rtems_status_text( status )
+    );<span style="background-color: #FF0000"> </span>
+    return -1;
+  }
+
+  return 0;
+}
+
+rtems_shell_cmd_t rtems_shell_SEMAPHORE_RELEASE_Command = {
+  "semaphore_release",                 /* name */
+  "semaphore_release name",            /* usage */
+  "rtems",                             /* topic */
+  rtems_shell_main_semaphore_release,  /* command */
+  NULL,                                /* alias */
+  NULL                                 /* next */
+};
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/shell/shared/main_taskcreate.c:1.1
--- /dev/null   Fri Dec 17 09:11:01 2010
+++ rtems/tools/schedsim/shell/shared/main_taskcreate.c Fri Dec 17 08:49:39 2010
</font><font color='#997700'>@@ -0,0 +1,111 @@
</font><font color='#000088'>+/*
+ *  Task Create Shell Command Implmentation
+ *
+ *  COPYRIGHT (c) 1989-2010.
+ *  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 <stdio.h>
+
+#include <rtems.h>
+#include "shell.h"
+#include <rtems/stringto.h>
+#include <schedsim_shell.h>
+#include <rtems/error.h>
+
+rtems_task dummy_task(
+  rtems_task_argument arg
+)
+{
+}
+
+int rtems_shell_main_task_create(
+  int   argc,
+  char *argv[]
+)
+{
+  char               name[5];
+  rtems_id           id;
+  rtems_status_code  status;
+  long               priority;
+<span style="background-color: #FF0000"> </span>
+  if (argc != 3) {
+    fprintf( stderr, "%s: Usage name priority\n", argv[0] );
+    return -1;
+  }
+
+  if ( rtems_string_to_long(argv[2], &priority, NULL, 0) ) {
+    printf( "Seconds argument (%s) is not a number\n", argv[1] );
+    return -1;
+  }
+
+  /*
+   *  Now create the task
+   */
+  memset( name, '\0', sizeof(name) );
+  strncpy( name, argv[1], 4 );
+
+  status = rtems_task_create(
+    rtems_build_name( name[0], name[1], name[2], name[3] ),
+    (rtems_task_priority) priority,
+    RTEMS_MINIMUM_STACK_SIZE,
+    RTEMS_DEFAULT_MODES,
+    RTEMS_DEFAULT_ATTRIBUTES,
+    &id
+  );
+  if ( status ) {
+    fprintf(
+      stderr,
+      "Task Create(%s) returned %s\n",
+      argv[1],
+      rtems_status_text( status )
+    );<span style="background-color: #FF0000"> </span>
+    return -1;
+  }
+
+  printf(
+    "Task (%s) created: id=0x%08x, priority=%ld\n",
+    argv[1],
+    id,
+    priority
+  );
+<span style="background-color: #FF0000">  </span>
+  printf(
+    "Task (%s) starting: id=0x%08x, priority=%ld\n",
+    argv[1],
+    id,
+    priority
+  );
+
+  status = rtems_task_start( id, dummy_task, 1 );
+  if ( status ) {
+    fprintf(
+      stderr,
+      "Task Start(%s) returned %s\n",
+      argv[1],
+      rtems_status_text( status )
+    );<span style="background-color: #FF0000"> </span>
+    return -1;
+  }
+
+  return 0;
+}
+
+rtems_shell_cmd_t rtems_shell_TASK_CREATE_Command = {
+  "task_create",                 /* name */
+  "task_create name priority",   /* usage */
+  "rtems",                       /* topic */
+  rtems_shell_main_task_create,  /* command */
+  NULL,                          /* alias */
+  NULL                           /* next */
+};
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/shell/shared/main_taskdelete.c:1.1
--- /dev/null   Fri Dec 17 09:11:01 2010
+++ rtems/tools/schedsim/shell/shared/main_taskdelete.c Fri Dec 17 08:49:39 2010
</font><font color='#997700'>@@ -0,0 +1,68 @@
</font><font color='#000088'>+/*
+ *  Task Delete Shell Command Implmentation
+ *
+ *  COPYRIGHT (c) 1989-2010.
+ *  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 <stdio.h>
+
+#include <rtems.h>
+#include "shell.h"
+#include <rtems/stringto.h>
+#include <schedsim_shell.h>
+#include <rtems/error.h>
+
+int rtems_shell_main_task_delete(
+  int   argc,
+  char *argv[]
+)
+{
+  rtems_id           id;
+  rtems_status_code  status;
+<span style="background-color: #FF0000"> </span>
+  if (argc != 2) {
+    fprintf( stderr, "%s: Usage [name|id]\n", argv[0] );
+    return -1;
+  }
+
+  if ( lookup_task( argv[1], &id ) )
+    return -1;
+
+  /*
+   *  Now delete the task
+   */
+  status = rtems_task_delete( id );
+  if ( status != RTEMS_SUCCESSFUL ) {
+    fprintf(
+      stderr,
+      "Task Delete(%s) returned %s\n",
+      argv[1],
+      rtems_status_text( status )
+    );<span style="background-color: #FF0000"> </span>
+    return -1;
+  }
+
+  printf("Task (0x%08x) deleted\n", id );
+<span style="background-color: #FF0000">  </span>
+  return 0;
+}
+
+rtems_shell_cmd_t rtems_shell_TASK_DELETE_Command = {
+  "task_delete",                 /* name */
+  "task_delete name priority",   /* usage */
+  "rtems",                       /* topic */
+  rtems_shell_main_task_delete,  /* command */
+  NULL,                          /* alias */
+  NULL                           /* next */
+};
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/shell/shared/main_taskmode.c:1.1
--- /dev/null   Fri Dec 17 09:11:01 2010
+++ rtems/tools/schedsim/shell/shared/main_taskmode.c   Fri Dec 17 08:49:39 2010
</font><font color='#997700'>@@ -0,0 +1,111 @@
</font><font color='#000088'>+/*
+ *  Task Delete Shell Command Implmentation
+ *
+ *  COPYRIGHT (c) 1989-2010.
+ *  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
+
+#define __need_getopt_newlib
+#include <newlib/getopt.h>
+
+#include <stdio.h>
+
+#include <rtems.h>
+#include "shell.h"
+#include <rtems/stringto.h>
+#include <schedsim_shell.h>
+#include <rtems/error.h>
+
+void print_mode(
+  const char *prefix,
+  rtems_mode  mode
+)
+{
+  fprintf(
+    stderr,
+    "%sPreemption: %s Timeslicing: %s\n",
+    prefix,
+    ((mode & RTEMS_NO_PREEMPT) ? "no" : "yes"),
+    ((mode & RTEMS_TIMESLICE) ? "yes" : "no")
+  );
+}
+
+int rtems_shell_main_task_mode(
+  int   argc,
+  char *argv[]
+)
+{
+  rtems_status_code  status;
+  rtems_mode         mode;
+  rtems_mode         mask;
+  rtems_mode         old;
+  struct getopt_data getopt_reent;
+  char               option;
+
+  mode = 0;
+  mask = 0;
+  memset(&getopt_reent, 0, sizeof(getopt_data));
+  while ( (option = getopt_r( argc, argv, "tTpP", &getopt_reent)) != -1 ) {
+    switch (option) {
+      case 't':
+        mask |= RTEMS_TIMESLICE_MASK;
+        mode  = (mode & ~RTEMS_TIMESLICE_MASK) | RTEMS_NO_TIMESLICE;
+        break;
+      case 'T':
+        mask |= RTEMS_TIMESLICE_MASK;
+        mode  = (mode & ~RTEMS_TIMESLICE_MASK) | RTEMS_TIMESLICE;
+        break;
+      case 'p':
+        mask |= RTEMS_PREEMPT_MASK;
+        mode  = (mode & ~RTEMS_PREEMPT_MASK) | RTEMS_NO_PREEMPT;
+        break;
+      case 'P':
+        mask |= RTEMS_PREEMPT_MASK;
+        mode  = (mode & ~RTEMS_PREEMPT_MASK) | RTEMS_PREEMPT;
+        break;
+      default:
+        fprintf( stderr, "%s: Usage [-tTpP]\n", argv[0] );
+        return -1;
+    }
+  }
+
+  /*
+   *  Now change the task mode
+   */
+  status = rtems_task_mode( mode, mask, &old );
+  if ( status != RTEMS_SUCCESSFUL ) {
+    fprintf(
+      stderr,
+      "Task Mode returned %s\n",
+      rtems_status_text( status )
+    );<span style="background-color: #FF0000"> </span>
+    return -1;
+  }
+
+  print_mode( "Previous Mode: ", old );
+  if ( mask ) {
+    (void) rtems_task_mode( RTEMS_CURRENT_MODE ,  RTEMS_CURRENT_MODE, &old );
+    print_mode( "Current Mode:  ", mode );
+  }
+<span style="background-color: #FF0000">  </span>
+  return 0;
+}
+
+rtems_shell_cmd_t rtems_shell_TASK_MODE_Command = {
+  "task_mode",                     /* name */
+  "task_mode [-tTpP]",             /* usage */
+  "rtems",                         /* topic */
+  rtems_shell_main_task_mode,      /* command */
+  NULL,                            /* alias */
+  NULL                             /* next */
+};
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/shell/shared/main_taskpriority.c:1.1
--- /dev/null   Fri Dec 17 09:11:01 2010
+++ rtems/tools/schedsim/shell/shared/main_taskpriority.c       Fri Dec 17 08:49:39 2010
</font><font color='#997700'>@@ -0,0 +1,78 @@
</font><font color='#000088'>+/*
+ *  Task Delete Shell Command Implmentation
+ *
+ *  COPYRIGHT (c) 1989-2010.
+ *  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 <stdio.h>
+
+#include <rtems.h>
+#include "shell.h"
+#include <rtems/stringto.h>
+#include <schedsim_shell.h>
+#include <rtems/error.h>
+
+int rtems_shell_main_task_priority(
+  int   argc,
+  char *argv[]
+)
+{
+  rtems_id             id;
+  rtems_status_code    status;
+  unsigned long        tmp;
+  rtems_task_priority  old;
+  rtems_task_priority  new;
+<span style="background-color: #FF0000"> </span>
+  if (argc != 3) {
+    fprintf( stderr, "%s: Usage [name|id] priority\n", argv[0] );
+    return -1;
+  }
+
+  if ( lookup_task( argv[1], &id ) )
+    return -1;
+
+  if ( rtems_string_to_unsigned_long( argv[1], &tmp, NULL, 0) ) {
+    fprintf( stderr, "Argument (%s) is not a number\n", argv[2] );
+    return 1;
+  }
+
+  new = (rtems_task_priority) tmp;
+
+  /*
+   *  Now priority the task
+   */
+  status = rtems_task_set_priority( id, new, &old );
+  if ( status != RTEMS_SUCCESSFUL ) {
+    fprintf(
+      stderr,
+      "Task Set Priority(%s) returned %s\n",
+      argv[1],
+      rtems_status_text( status )
+    );<span style="background-color: #FF0000"> </span>
+    return -1;
+  }
+
+  printf("Task (0x%08x) Chain Priority from %d to %d\n", id, old, new );
+<span style="background-color: #FF0000">  </span>
+  return 0;
+}
+
+rtems_shell_cmd_t rtems_shell_TASK_PRIORITY_Command = {
+  "task_priority",                 /* name */
+  "task_priority name priority",   /* usage */
+  "rtems",                         /* topic */
+  rtems_shell_main_task_priority,  /* command */
+  NULL,                            /* alias */
+  NULL                             /* next */
+};
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/shell/shared/main_taskresume.c:1.1
--- /dev/null   Fri Dec 17 09:11:01 2010
+++ rtems/tools/schedsim/shell/shared/main_taskresume.c Fri Dec 17 08:49:39 2010
</font><font color='#997700'>@@ -0,0 +1,68 @@
</font><font color='#000088'>+/*
+ *  Task Delete Shell Command Implmentation
+ *
+ *  COPYRIGHT (c) 1989-2010.
+ *  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 <stdio.h>
+
+#include <rtems.h>
+#include "shell.h"
+#include <rtems/stringto.h>
+#include <schedsim_shell.h>
+#include <rtems/error.h>
+
+int rtems_shell_main_task_resume(
+  int   argc,
+  char *argv[]
+)
+{
+  rtems_id           id;
+  rtems_status_code  status;
+<span style="background-color: #FF0000"> </span>
+  if (argc != 2) {
+    fprintf( stderr, "%s: Usage [name|id]\n", argv[0] );
+    return -1;
+  }
+
+  if ( lookup_task( argv[1], &id ) )
+    return -1;
+
+  /*
+   *  Now resume the task
+   */
+  printf("Resuming task (0x%08x)\n", id );
+<span style="background-color: #FF0000">  </span>
+  status = rtems_task_resume( id );
+  if ( status != RTEMS_SUCCESSFUL ) {
+    fprintf(
+      stderr,
+      "Task resume(%s) returned %s\n",
+      argv[1],
+      rtems_status_text( status )
+    );<span style="background-color: #FF0000"> </span>
+    return -1;
+  }
+
+  return 0;
+}
+
+rtems_shell_cmd_t rtems_shell_TASK_RESUME_Command = {
+  "task_resume",                 /* name */
+  "task_resume name priority",   /* usage */
+  "rtems",                       /* topic */
+  rtems_shell_main_task_resume,  /* command */
+  NULL,                          /* alias */
+  NULL                           /* next */
+};
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/shell/shared/main_tasksuspend.c:1.1
--- /dev/null   Fri Dec 17 09:11:01 2010
+++ rtems/tools/schedsim/shell/shared/main_tasksuspend.c        Fri Dec 17 08:49:39 2010
</font><font color='#997700'>@@ -0,0 +1,67 @@
</font><font color='#000088'>+/*
+ *  Task Delete Shell Command Implmentation
+ *
+ *  COPYRIGHT (c) 1989-2010.
+ *  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 <stdio.h>
+
+#include <rtems.h>
+#include "shell.h"
+#include <rtems/stringto.h>
+#include <schedsim_shell.h>
+#include <rtems/error.h>
+
+int rtems_shell_main_task_suspend(
+  int   argc,
+  char *argv[]
+)
+{
+  rtems_id           id;
+  rtems_status_code  status;
+<span style="background-color: #FF0000"> </span>
+  if (argc != 2) {
+    fprintf( stderr, "%s: Usage [name|id]\n", argv[0] );
+    return -1;
+  }
+
+  if ( lookup_task( argv[1], &id ) )
+    return -1;
+
+  /*
+   *  Now suspend the task
+   */
+  printf("Suspending task (0x%08x)\n", id );
+  status = rtems_task_suspend( id );
+  if ( status != RTEMS_SUCCESSFUL ) {
+    fprintf(
+      stderr,
+      "Task suspend(%s) returned %s\n",
+      argv[1],
+      rtems_status_text( status )
+    );<span style="background-color: #FF0000"> </span>
+    return -1;
+  }
+
+  return 0;
+}
+
+rtems_shell_cmd_t rtems_shell_TASK_SUSPEND_Command = {
+  "task_suspend",                 /* name */
+  "task_suspend name priority",   /* usage */
+  "rtems",                       /* topic */
+  rtems_shell_main_task_suspend,  /* command */
+  NULL,                          /* alias */
+  NULL                           /* next */
+};
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/shell/shared/main_taskwakeafter.c:1.1
--- /dev/null   Fri Dec 17 09:11:01 2010
+++ rtems/tools/schedsim/shell/shared/main_taskwakeafter.c      Fri Dec 17 08:49:39 2010
</font><font color='#997700'>@@ -0,0 +1,75 @@
</font><font color='#000088'>+/*
+ *  Task Priority Shell Command Implmentation
+ *
+ *  COPYRIGHT (c) 1989-2010.
+ *  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 <stdio.h>
+
+#include <rtems.h>
+#include "shell.h"
+#include <rtems/stringto.h>
+#include <schedsim_shell.h>
+#include <rtems/error.h>
+
+int rtems_shell_main_task_wake_after(
+  int   argc,
+  char *argv[]
+)
+{
+  rtems_status_code    status;
+  rtems_interval       ticks;
+  unsigned long        tmp;
+  rtems_id             self;
+<span style="background-color: #FF0000"> </span>
+  if (argc != 2) {
+    fprintf( stderr, "%s: Usage ticks\n", argv[0] );
+    return -1;
+  }
+
+  if ( rtems_string_to_unsigned_long( argv[1], &tmp, NULL, 0) ) {
+    fprintf( stderr, "Argument (%s) is not a number\n", argv[2] );
+    return 1;
+  }
+
+  ticks = (rtems_interval) tmp;
+  self = _Thread_Executing->Object.id,
+
+  /*
+   *  Now sleep
+   */
+  printf( "Task (0x%08x) sleeping for %d ticks\n", self, ticks );
+<span style="background-color: #FF0000">  </span>
+  status = rtems_task_wake_after( ticks );
+  if ( status != RTEMS_SUCCESSFUL ) {
+    fprintf(
+      stderr,
+      "Task Wake After (%s) returned %s\n",
+      argv[1],
+      rtems_status_text( status )
+    );<span style="background-color: #FF0000"> </span>
+    return -1;
+  }
+
+  return 0;
+}
+
+rtems_shell_cmd_t rtems_shell_TASK_WAKE_AFTER_Command = {
+  "task_wake_after",                  /* name */
+  "task_wake_after ticks",            /* usage */
+  "rtems",                            /* topic */
+  rtems_shell_main_task_wake_after,   /* command */
+  NULL,                               /* alias */
+  NULL                                /* next */
+};
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/shell/shared/schedsim_shell.h:1.1
--- /dev/null   Fri Dec 17 09:11:01 2010
+++ rtems/tools/schedsim/shell/shared/schedsim_shell.h  Fri Dec 17 08:49:39 2010
</font><font color='#997700'>@@ -0,0 +1,56 @@
</font><font color='#000088'>+/*
+ *  BASED UPON SOURCE IN RTEMS, MODIFIED FOR SIMULATOR
+ *
+ *  COPYRIGHT (c) 1989-2010.
+ *  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$
+ */
+
+#ifndef __SCHEDSIM_SHELL_h
+#define __SCHEDSIM_SHELL_h
+
+#include <rtems.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void PRINT_EXECUTING(void);
+void PRINT_HEIR(void);
+
+struct rtems_shell_topic_tt;
+typedef struct rtems_shell_topic_tt rtems_shell_topic_t;
+
+struct rtems_shell_topic_tt {
+  const char          *topic;
+  rtems_shell_topic_t *next;
+};
+
+extern rtems_shell_cmd_t   * rtems_shell_first_cmd;
+extern rtems_shell_topic_t * rtems_shell_first_topic;
+
+rtems_shell_topic_t * rtems_shell_lookup_topic(const char *topic);
+
+extern rtems_shell_cmd_t *rtems_shell_Initial_commands[];
+extern rtems_shell_alias_t *rtems_shell_Initial_aliases[];
+
+int lookup_task(
+  const char *string,
+  rtems_id   *id
+);
+
+int lookup_semaphore(
+  const char *string,
+  rtems_id   *id
+);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/shell/shared/shell_cmdset.c:1.1
--- /dev/null   Fri Dec 17 09:11:01 2010
+++ rtems/tools/schedsim/shell/shared/shell_cmdset.c    Fri Dec 17 08:49:39 2010
</font><font color='#997700'>@@ -0,0 +1,229 @@
</font><font color='#000088'>+/*
+ *  Shell Command Set Management
+ *
+ *  Author:
+ *   WORK: fernando.ruiz@ctv.es
+ *   HOME: correo@fernando-ruiz.com
+ *
+ *  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 <stdio.h>
+#include <time.h>
+#include <termios.h>
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <errno.h>
+
+
+#include "shell.h"
+#include <schedsim_shell.h>
+
+/*
+ * Common linked list of shell commands.
+ *
+ * Because the help report is very long, there is a topic for each command.
+ *
+ * Help list the topics
+ *   help [topic] list the commands for the topic
+ *   help [command] help for the command
+ *
+ */
+
+rtems_shell_cmd_t   * rtems_shell_first_cmd;
+rtems_shell_topic_t * rtems_shell_first_topic;
+
+/*
+ *  Find the topic from the set of topics registered.
+ */
+rtems_shell_topic_t * rtems_shell_lookup_topic(const char * topic) {
+  rtems_shell_topic_t * shell_topic;
+  shell_topic=rtems_shell_first_topic;
+
+  while (shell_topic) {
+    if (!strcmp(shell_topic->topic,topic))
+      return shell_topic;
+    shell_topic=shell_topic->next;
+  }
+  return (rtems_shell_topic_t *) NULL;
+}
+
+/*
+ *  Add a new topic to the list of topics
+ */
+rtems_shell_topic_t * rtems_shell_add_topic(const char * topic) {
+  rtems_shell_topic_t * current,*aux;
+
+  if (!rtems_shell_first_topic) {
+    aux = malloc(sizeof(rtems_shell_topic_t));
+    aux->topic = topic;
+    aux->next  = (rtems_shell_topic_t*)NULL;
+    return rtems_shell_first_topic = aux;
+  }
+  current=rtems_shell_first_topic;
+  if (!strcmp(topic,current->topic))
+    return current;
+
+  while (current->next) {
+    if (!strcmp(topic,current->next->topic))
+      return current->next;
+    current=current->next;
+  }
+  aux = malloc(sizeof(rtems_shell_topic_t));
+  aux->topic = topic;
+  aux->next = (rtems_shell_topic_t*)NULL;
+  current->next = aux;
+  return aux;
+}
+
+/*
+ *  Find the command in the set
+ */
+rtems_shell_cmd_t * rtems_shell_lookup_cmd(const char * cmd) {
+  rtems_shell_cmd_t * shell_cmd;
+  shell_cmd=rtems_shell_first_cmd;
+  while (shell_cmd) {
+   if (!strcmp(shell_cmd->name,cmd)) return shell_cmd;
+   shell_cmd=shell_cmd->next;
+  };
+  return (rtems_shell_cmd_t *) NULL;
+}
+
+/*
+ *  Add a command structure to the set of known commands
+ */
+rtems_shell_cmd_t *rtems_shell_add_cmd_struct(
+  rtems_shell_cmd_t *shell_cmd
+)
+{
+  rtems_shell_cmd_t *shell_pvt;
+
+  shell_pvt = rtems_shell_first_cmd;
+  while (shell_pvt) {
+    if (strcmp(shell_pvt->name, shell_cmd->name) == 0)
+      return NULL;
+    shell_pvt = shell_pvt->next;
+  }
+
+  if ( !rtems_shell_first_cmd ) {
+    rtems_shell_first_cmd = shell_cmd;
+  } else {
+    shell_pvt = rtems_shell_first_cmd;
+    while (shell_pvt->next)
+      shell_pvt = shell_pvt->next;
+    shell_pvt->next = shell_cmd;
+  }
+  rtems_shell_add_topic( shell_cmd->topic );
+  return shell_cmd;
+}
+
+/*
+ *  Add a command as a set of arguments to the set and
+ *  allocate the command structure on the fly.
+ */
+rtems_shell_cmd_t * rtems_shell_add_cmd(
+  const char            *name,
+  const char            *topic,
+  const char            *usage,
+  rtems_shell_command_t  command
+)
+{
+  rtems_shell_cmd_t *shell_cmd = NULL;
+  char *my_name = NULL;
+  char *my_topic = NULL;
+  char *my_usage = NULL;
+
+  /* Reject empty commands */
+  if (name == NULL || command == NULL) {
+    return NULL;
+  }
+
+  /* Allocate command stucture */
+  shell_cmd = (rtems_shell_cmd_t *) malloc(sizeof(rtems_shell_cmd_t));
+  if (shell_cmd == NULL) {
+    return NULL;
+  }
+
+  /* Allocate strings */
+  my_name  = strdup(name);
+  my_topic = strdup(topic);
+  my_usage = strdup(usage);
+
+  /* Assign values */
+  shell_cmd->name    = my_name;
+  shell_cmd->topic   = my_topic;
+  shell_cmd->usage   = my_usage;
+  shell_cmd->command = command;
+  shell_cmd->alias   = NULL;
+  shell_cmd->next    = NULL;
+
+  if (rtems_shell_add_cmd_struct(shell_cmd) == NULL) {
+    /* Something is wrong, free allocated resources */
+    free(my_usage);
+    free(my_topic);
+    free(my_name);
+    free(shell_cmd);
+
+    return NULL;
+  }
+
+  return shell_cmd;
+}
+
+
+void rtems_shell_initialize_command_set(void)
+{
+  rtems_shell_cmd_t **c;
+  rtems_shell_alias_t **a;
+
+  for ( c = rtems_shell_Initial_commands ; *c  ; c++ ) {
+    rtems_shell_add_cmd_struct( *c );
+  }
+
+  for ( a = rtems_shell_Initial_aliases ; *a  ; a++ ) {
+    rtems_shell_alias_cmd( (*a)->name, (*a)->alias );
+  }
+}
+
+/* ----------------------------------------------- *
+ * you can make an alias for every command.
+ * ----------------------------------------------- */
+rtems_shell_cmd_t *rtems_shell_alias_cmd(
+  const char *cmd,
+  const char *alias
+)
+{
+  rtems_shell_cmd_t *shell_cmd, *shell_aux;
+
+  shell_aux = (rtems_shell_cmd_t *) NULL;
+
+  if (alias) {
+    shell_aux = rtems_shell_lookup_cmd(alias);
+    if (shell_aux != NULL) {
+      return NULL;
+    }
+    shell_cmd = rtems_shell_lookup_cmd(cmd);
+    if (shell_cmd != NULL) {
+      shell_aux = rtems_shell_add_cmd(
+         alias,
+         shell_cmd->topic,
+         shell_cmd->usage,
+         shell_cmd->command
+      );
+      if (shell_aux)
+        shell_aux->alias = shell_cmd;
+    }
+  }
+  return shell_aux;
+}
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/shell/shared/shell_makeargs.c:1.1
--- /dev/null   Fri Dec 17 09:11:01 2010
+++ rtems/tools/schedsim/shell/shared/shell_makeargs.c  Fri Dec 17 08:49:40 2010
</font><font color='#997700'>@@ -0,0 +1,68 @@
</font><font color='#000088'>+/*
+ *  Split string into argc/argv style argument list
+ *
+ *  COPYRIGHT (c) 1989-2010.
+ *  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$
+ */
+
+#if HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <string.h>
+#include <ctype.h>
+
+int rtems_shell_make_args(
+  char  *commandLine,
+  int   *argc_p,
+  char **argv_p,
+  int    max_args
+)
+{
+  int   argc;
+  char *ch;
+  int   status = 0;
+<span style="background-color: #FF0000"> </span>
+  argc = 0;
+  ch = commandLine;
+
+  while ( *ch ) {
+
+    while ( isspace((unsigned char)*ch) ) ch++;
+
+    if ( *ch == '\0' )
+      break;
+
+    if ( *ch == '"' ) {
+      argv_p[ argc ] = ++ch;
+      while ( ( *ch != '\0' ) && ( *ch != '"' ) ) ch++;
+    } else {
+      argv_p[ argc ] = ch;
+      while ( ( *ch != '\0' ) && ( !isspace((unsigned char)*ch) ) ) ch++;
+    }
+
+    argc++;
+
+    if ( *ch == '\0' )
+      break;
+
+    *ch++ = '\0';
+
+    if ( argc == (max_args-1) ) {
+        status = -1;
+        break;
+    }
+
+
+  }
+  argv_p[ argc ] = NULL;
+  *argc_p = argc;
+  return status;
+}
+
</font></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>
</td></tr>
<tr><td colspan='3' bgcolor='#dddddd'><pre>2010-12-17 Joel Sherrill <joel.sherrill@oarcorp.com>
                Jennifer Averett <jennifer.averett@oarcorp.com>

        Add RTEMS Scheduler Simulator.  This is the RTEMS "port" to and
        adapter code to run on GNU/Linux with a fake context switch.
        * ChangeLog, Makefile.am, interr.c, rtems_init.c, rtems_sched.h,
        wkspace.c, sched_cpu/cpu.c, sched_cpu/cpu_asm.c,
        sched_cpu/rtems/asm.h, sched_cpu/rtems/stringto.h,
        sched_cpu/rtems/score/cpu.h, sched_cpu/rtems/score/cpu_asm.h,
        sched_cpu/rtems/score/cpuopts.h, sched_cpu/rtems/score/no_cpu.h,
        sched_cpu/rtems/score/types.h: New files.
</pre></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/rtems/ChangeLog?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">tools/schedsim/rtems/ChangeLog</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/rtems/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">tools/schedsim/rtems/Makefile.am</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/rtems/interr.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">tools/schedsim/rtems/interr.c</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/rtems/rtems_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">tools/schedsim/rtems/rtems_init.c</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/rtems/rtems_sched.h?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">tools/schedsim/rtems/rtems_sched.h</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/rtems/sched_cpu/cpu.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">tools/schedsim/rtems/sched_cpu/cpu.c</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/rtems/sched_cpu/cpu_asm.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">tools/schedsim/rtems/sched_cpu/cpu_asm.c</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/rtems/sched_cpu/rtems/asm.h?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">tools/schedsim/rtems/sched_cpu/rtems/asm.h</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/rtems/sched_cpu/rtems/score/cpu.h?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">tools/schedsim/rtems/sched_cpu/rtems/score/cpu.h</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/rtems/sched_cpu/rtems/score/cpu_asm.h?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">tools/schedsim/rtems/sched_cpu/rtems/score/cpu_asm.h</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/rtems/sched_cpu/rtems/score/cpuopts.h?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">tools/schedsim/rtems/sched_cpu/rtems/score/cpuopts.h</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/rtems/sched_cpu/rtems/score/no_cpu.h?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">tools/schedsim/rtems/sched_cpu/rtems/score/no_cpu.h</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/rtems/sched_cpu/rtems/score/types.h?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">tools/schedsim/rtems/sched_cpu/rtems/score/types.h</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/rtems/sched_cpu/rtems/stringto.h?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">tools/schedsim/rtems/sched_cpu/rtems/stringto.h</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/rtems/wkspace.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">tools/schedsim/rtems/wkspace.c</font></td></tr>
</table>
<pre>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/rtems/ChangeLog:1.1
--- /dev/null   Fri Dec 17 09:11:02 2010
+++ rtems/tools/schedsim/rtems/ChangeLog        Fri Dec 17 08:51:56 2010
</font><font color='#997700'>@@ -0,0 +1,12 @@
</font><font color='#000088'>+2010-12-17    Joel Sherrill <joel.sherrill@oarcorp.com>
+               Jennifer Averett <jennifer.averett@oarcorp.com>
+
+       Add RTEMS Scheduler Simulator.  This is the RTEMS "port" to and
+       adapter code to run on GNU/Linux with a fake context switch.
+       * ChangeLog, Makefile.am, interr.c, rtems_init.c, rtems_sched.h,
+       wkspace.c, sched_cpu/cpu.c, sched_cpu/cpu_asm.c,
+       sched_cpu/rtems/asm.h, sched_cpu/rtems/stringto.h,
+       sched_cpu/rtems/score/cpu.h, sched_cpu/rtems/score/cpu_asm.h,
+       sched_cpu/rtems/score/cpuopts.h, sched_cpu/rtems/score/no_cpu.h,
+       sched_cpu/rtems/score/types.h: New files.
+
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/rtems/Makefile.am:1.1
--- /dev/null   Fri Dec 17 09:11:02 2010
+++ rtems/tools/schedsim/rtems/Makefile.am      Fri Dec 17 08:51:56 2010
</font><font color='#997700'>@@ -0,0 +1,382 @@
</font><font color='#000088'>+##
+##  $Id$
+##
+
+ACLOCAL_AMFLAGS = -I ../../../aclocal
+
+lib_LIBRARIES = librtems.a
+
+cpukitdir=$(srcdir)/../../../cpukit
+librtems_a_CPPFLAGS  = -D__RTEMS_VIOLATE_KERNEL_VISIBILITY__
+librtems_a_CPPFLAGS += -I$(srcdir)/sched_cpu
+librtems_a_CPPFLAGS += -I$(cpukitdir)/include
+librtems_a_CPPFLAGS += -I$(cpukitdir)/score/include
+librtems_a_CPPFLAGS += -I$(cpukitdir)/score/inline
+librtems_a_CPPFLAGS += -I$(cpukitdir)/rtems/include
+librtems_a_CPPFLAGS += -I$(cpukitdir)/rtems/inline
+librtems_a_CPPFLAGS += -I$(cpukitdir)/sapi/include
+librtems_a_CPPFLAGS += -I$(cpukitdir)/sapi/inline
+librtems_a_CPPFLAGS += -I$(cpukitdir)/libcsupport/include
+librtems_a_CPPFLAGS += -I$(cpukitdir)/libmisc/stringto
+
+## Have own version of these
+librtems_a_SOURCES = rtems_init.c wkspace.c
+librtems_a_SOURCES += sched_cpu/cpu_asm.c
+librtems_a_SOURCES += sched_cpu/cpu.c
+
+## CPUKIT/SCORE/SRC
+librtems_a_SOURCES += $(cpukitdir)/score/src/interr.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/percpu.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/apiext.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/apimutexallocate.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/apimutex.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/apimutexlock.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/apimutexunlock.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/chainappend.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/chain.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/chainextract.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/chainget.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/chaininsert.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/coremutex.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/coremutexflush.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/coremutexseize.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/coremutexseizeintr.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/coremutexsurrender.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/coresem.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/coresemflush.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/coresemseize.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/coresemsurrender.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/coretod.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/coretodget.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/coretodgetuptime.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/coretodgetuptimetimespec.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/coretodmsecstoticks.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/coretodset.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/coretodtickle.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/coretodtickspersec.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/coretodusectoticks.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/objectallocate.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/objectapimaximumclass.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/objectclose.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/objectextendinformation.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/objectfree.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/objectget.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/objectgetinfo.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/objectgetinfoid.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/objectgetisr.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/objectgetnameasstring.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/objectgetnext.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/objectgetnoprotection.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/objectidtoname.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/objectinitializeinformation.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/objectnamespaceremove.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/objectnametoid.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/objectnametoidstring.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/objectsetname.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/objectshrinkinformation.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/scheduler.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/schedulerpriority.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/schedulerpriorityblock.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/schedulerprioritythreadschedulerallocate.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/schedulerprioritythreadschedulerfree.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/schedulerprioritythreadschedulerupdate.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/schedulerpriorityschedule.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/schedulerpriorityunblock.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/schedulerpriorityyield.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/thread.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/threadchangepriority.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/threadclearstate.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/threadclose.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/threadcreateidle.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/threaddelayended.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/threaddispatch.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/threadget.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/threadhandler.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/threadinitialize.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/threadloadenv.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/threadready.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/threadreset.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/threadrestart.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/threadresume.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/threadsetpriority.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/threadsetstate.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/threadsettransient.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/threadstackallocate.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/threadstackfree.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/threadstart.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/threadstartmultitasking.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/threadsuspend.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/threadtickletimeslice.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/iterateoverthreads.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/threadq.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/threadblockingoperationcancel.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/threadqdequeue.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/threadqdequeuefifo.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/threadqdequeuepriority.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/threadqenqueue.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/threadqenqueuefifo.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/threadqenqueuepriority.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/threadqextract.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/threadqextractfifo.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/threadqextractpriority.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/threadqextractwithproxy.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/threadqfirst.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/threadqfirstfifo.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/threadqfirstpriority.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/threadqflush.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/threadqprocesstimeout.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/threadqrequeue.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/threadqtimeout.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/timespecaddto.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/timespecdividebyinteger.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/timespecdivide.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/timespecfromticks.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/timespecgreaterthan.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/timespecisvalid.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/timespeclessthan.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/timespecsubtract.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/timespectoticks.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/userextaddset.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/userext.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/userextremoveset.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/userextthreadbegin.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/userextthreadcreate.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/userextthreaddelete.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/userextthreadrestart.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/userextthreadstart.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/userextthreadswitch.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/watchdogadjust.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/watchdogadjusttochain.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/watchdog.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/watchdoginsert.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/watchdognanoseconds.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/watchdogremove.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/watchdogreport.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/watchdogreportchain.c
+librtems_a_SOURCES += $(cpukitdir)/score/src/watchdogtickle.c
+librtems_a_SOURCES += $(cpukitdir)/sapi/src/debug.c
+librtems_a_SOURCES += $(cpukitdir)/rtems/src/clockgetsecondssinceepoch.c
+librtems_a_SOURCES += $(cpukitdir)/rtems/src/clockgettickspersecond.c
+librtems_a_SOURCES += $(cpukitdir)/rtems/src/clockgettickssinceboot.c
+librtems_a_SOURCES += $(cpukitdir)/rtems/src/clockgettod.c
+librtems_a_SOURCES += $(cpukitdir)/rtems/src/clockgettodtimeval.c
+librtems_a_SOURCES += $(cpukitdir)/rtems/src/clockgetuptime.c
+librtems_a_SOURCES += $(cpukitdir)/rtems/src/clockset.c
+librtems_a_SOURCES += $(cpukitdir)/rtems/src/clocksetnsecshandler.c
+librtems_a_SOURCES += $(cpukitdir)/rtems/src/clocktick.c
+librtems_a_SOURCES += $(cpukitdir)/rtems/src/clocktodtoseconds.c
+librtems_a_SOURCES += $(cpukitdir)/rtems/src/clocktodvalidate.c
+librtems_a_SOURCES += $(cpukitdir)/rtems/src/sem.c
+librtems_a_SOURCES += $(cpukitdir)/rtems/src/semcreate.c
+librtems_a_SOURCES += $(cpukitdir)/rtems/src/semdata.c
+librtems_a_SOURCES += $(cpukitdir)/rtems/src/semdelete.c
+librtems_a_SOURCES += $(cpukitdir)/rtems/src/semflush.c
+librtems_a_SOURCES += $(cpukitdir)/rtems/src/semident.c
+librtems_a_SOURCES += $(cpukitdir)/rtems/src/semobtain.c
+librtems_a_SOURCES += $(cpukitdir)/rtems/src/semrelease.c
+librtems_a_SOURCES += $(cpukitdir)/rtems/src/semtranslatereturncode.c
+librtems_a_SOURCES += $(cpukitdir)/rtems/src/tasks.c
+librtems_a_SOURCES += $(cpukitdir)/rtems/src/taskdata.c
+librtems_a_SOURCES += $(cpukitdir)/rtems/src/taskmode.c
+librtems_a_SOURCES += $(cpukitdir)/rtems/src/taskvariable_invoke_dtor.c
+librtems_a_SOURCES += $(cpukitdir)/rtems/src/taskcreate.c
+librtems_a_SOURCES += $(cpukitdir)/rtems/src/taskstart.c
+librtems_a_SOURCES += $(cpukitdir)/rtems/src/taskident.c
+librtems_a_SOURCES += $(cpukitdir)/rtems/src/taskdelete.c
+librtems_a_SOURCES += $(cpukitdir)/rtems/src/taskresume.c
+librtems_a_SOURCES += $(cpukitdir)/rtems/src/tasksuspend.c
+librtems_a_SOURCES += $(cpukitdir)/rtems/src/tasksetpriority.c
+librtems_a_SOURCES += $(cpukitdir)/rtems/src/taskmode.c
+librtems_a_SOURCES += $(cpukitdir)/rtems/src/taskwakeafter.c
+librtems_a_SOURCES += $(cpukitdir)/libcsupport/src/assoclocalbyname.c
+librtems_a_SOURCES += $(cpukitdir)/libcsupport/src/assoclocalbyremotebitfield.c
+librtems_a_SOURCES += $(cpukitdir)/libcsupport/src/assoclocalbyremote.c
+librtems_a_SOURCES += $(cpukitdir)/libcsupport/src/assocnamebad.c
+librtems_a_SOURCES += $(cpukitdir)/libcsupport/src/assocnamebylocalbitfield.c
+librtems_a_SOURCES += $(cpukitdir)/libcsupport/src/assocnamebylocal.c
+librtems_a_SOURCES += $(cpukitdir)/libcsupport/src/assocnamebyremotebitfield.c
+librtems_a_SOURCES += $(cpukitdir)/libcsupport/src/assocnamebyremote.c
+librtems_a_SOURCES += $(cpukitdir)/libcsupport/src/assocptrbylocal.c
+librtems_a_SOURCES += $(cpukitdir)/libcsupport/src/assocptrbyname.c
+librtems_a_SOURCES += $(cpukitdir)/libcsupport/src/assocptrbyremote.c
+librtems_a_SOURCES += $(cpukitdir)/libcsupport/src/assocremotebylocalbitfield.c
+librtems_a_SOURCES += $(cpukitdir)/libcsupport/src/assocremotebylocal.c
+librtems_a_SOURCES += $(cpukitdir)/libcsupport/src/assocremotebyname.c
+librtems_a_SOURCES += $(cpukitdir)/libcsupport/src/error.c
+librtems_a_SOURCES += $(cpukitdir)/libmisc/stringto/stringtodouble.c
+librtems_a_SOURCES += $(cpukitdir)/libmisc/stringto/stringtofloat.c
+librtems_a_SOURCES += $(cpukitdir)/libmisc/stringto/stringtoint.c
+librtems_a_SOURCES += $(cpukitdir)/libmisc/stringto/stringtolong.c
+librtems_a_SOURCES += $(cpukitdir)/libmisc/stringto/stringtopointer.c
+librtems_a_SOURCES += $(cpukitdir)/libmisc/stringto/stringtounsignedchar.c
+librtems_a_SOURCES += $(cpukitdir)/libmisc/stringto/stringtounsignedint.c
+librtems_a_SOURCES += $(cpukitdir)/libmisc/stringto/stringtounsignedlong.c
+
+schedsim_includedir = $(includedir)/schedsim
+schedsim_rtems_includedir = $(includedir)/schedsim/rtems
+schedsim_rtems_score_includedir = $(includedir)/schedsim/rtems/score
+schedsim_rtems_rtems_includedir = $(includedir)/schedsim/rtems/rtems
+
+schedsim_include_HEADERS  = \
+ ${cpukitdir}/rtems/include/rtems.h
+
+schedsim_rtems_include_HEADERS  = \
+  ${cpukitdir}/score/include//rtems/seterr.h \
+  ${cpukitdir}/score/include/rtems/system.h \
+  ${cpukitdir}/score/include/rtems/debug.h \
+  ${cpukitdir}/include/rtems/bspIo.h \
+  $(cpukitdir)/sapi/include/rtems/fatal.h \
+  $(cpukitdir)/sapi/include/rtems/init.h \
+  $(cpukitdir)/sapi/include/rtems/config.h \
+  $(cpukitdir)/sapi/include/rtems/sptables.h \
+  $(cpukitdir)/sapi/include/rtems/io.h \
+  $(cpukitdir)/sapi/include/rtems/mptables.h \
+  $(cpukitdir)/sapi/include/rtems/extension.h \
+  $(cpukitdir)/sapi/include/rtems/chain.h \
+  $(cpukitdir)/sapi/include/confdefs.h \
+  $(cpukitdir)/libcsupport/include/rtems/libio_.h \
+  $(cpukitdir)/libcsupport/include/rtems/watchdogdrv.h \
+  $(cpukitdir)/libcsupport/include/rtems/error.h \
+  $(cpukitdir)/libcsupport/include/rtems/framebuffer.h \
+  $(cpukitdir)/libcsupport/include/rtems/assoc.h \
+  $(cpukitdir)/libcsupport/include/rtems/libio.h \
+  $(cpukitdir)/libcsupport/include/rtems/gxx_wrappers.h \
+  $(cpukitdir)/libcsupport/include/rtems/libcsupport.h \
+  $(cpukitdir)/libcsupport/include/rtems/termiostypes.h \
+  $(cpukitdir)/libcsupport/include/rtems/malloc.h \
+  sched_cpu/rtems/stringto.h \
+  sched_cpu/rtems/asm.h<span style="background-color: #FF0000"> </span>
+
+schedsim_rtems_score_include_HEADERS = \
+  ${cpukitdir}/score/include/rtems/score/address.h \
+  ${cpukitdir}/score/include/rtems/score/coremutex.h \
+  ${cpukitdir}/score/include/rtems/score/corerwlock.h \
+  ${cpukitdir}/score/include/rtems/score/threadsync.h \
+  ${cpukitdir}/score/include/rtems/score/priority.h \
+  ${cpukitdir}/score/include/rtems/score/sysstate.h \
+  ${cpukitdir}/score/include/rtems/score/threadmp.h \
+  ${cpukitdir}/score/include/rtems/score/mppkt.h \
+  ${cpukitdir}/score/include/rtems/score/stack.h \
+  ${cpukitdir}/score/include/rtems/score/context.h \
+  ${cpukitdir}/score/include/rtems/score/heap.h \
+  ${cpukitdir}/score/include/rtems/score/coresem.h \
+  ${cpukitdir}/score/include/rtems/score/corebarrier.h \
+  ${cpukitdir}/score/include/rtems/score/corespinlock.h \
+  ${cpukitdir}/score/include/rtems/score/prioritybitmap.h \
+  ${cpukitdir}/score/include/rtems/score/timestamp.h \
+  ${cpukitdir}/score/include/rtems/score/basedefs.h \
+  ${cpukitdir}/score/include/rtems/score/wkspace.h \
+  ${cpukitdir}/score/include/rtems/score/percpu.h \
+  ${cpukitdir}/score/include/rtems/score/watchdog.h \
+  ${cpukitdir}/score/include/rtems/score/tod.h \
+  ${cpukitdir}/score/include/rtems/score/protectedheap.h \
+  ${cpukitdir}/score/include/rtems/score/timestamp64.h \
+  ${cpukitdir}/score/include/rtems/score/chain.h \
+  ${cpukitdir}/score/include/rtems/score/apiext.h \
+  ${cpukitdir}/score/include/rtems/score/userext.h \
+  ${cpukitdir}/score/include/rtems/score/threadq.h \
+  ${cpukitdir}/score/include/rtems/score/apimutex.h \
+  ${cpukitdir}/score/include/rtems/score/scheduler.h \
+  ${cpukitdir}/score/include/rtems/score/isr.h \
+  ${cpukitdir}/score/include/rtems/score/mpci.h \
+  ${cpukitdir}/score/include/rtems/score/object.h \
+  ${cpukitdir}/score/include/rtems/score/copyrt.h \
+  ${cpukitdir}/score/include/rtems/score/states.h \
+  ${cpukitdir}/score/include/rtems/score/objectmp.h \
+  ${cpukitdir}/score/include/rtems/score/thread.h \
+  ${cpukitdir}/score/include/rtems/score/coremsg.h \
+  ${cpukitdir}/score/include/rtems/score/schedulerpriority.h \
+  ${cpukitdir}/score/include/rtems/score/timespec.h \
+  ${cpukitdir}/score/include/rtems/score/tqdata.h \
+  ${cpukitdir}/score/include/rtems/score/bitfield.h \
+  ${cpukitdir}/score/include/rtems/score/interr.h \
+  $(cpukitdir)/score/inline/rtems/score/address.inl \
+  $(cpukitdir)/score/inline/rtems/score/corespinlock.inl \
+  $(cpukitdir)/score/inline/rtems/score/priority.inl \
+  $(cpukitdir)/score/inline/rtems/score/threadmp.inl \
+  $(cpukitdir)/score/inline/rtems/score/chain.inl \
+  $(cpukitdir)/score/inline/rtems/score/heap.inl \
+  $(cpukitdir)/score/inline/rtems/score/scheduler.inl \
+  $(cpukitdir)/score/inline/rtems/score/threadq.inl \
+  $(cpukitdir)/score/inline/rtems/score/corebarrier.inl \
+  $(cpukitdir)/score/inline/rtems/score/isr.inl \
+  $(cpukitdir)/score/inline/rtems/score/schedulerpriority.inl \
+  $(cpukitdir)/score/inline/rtems/score/tod.inl \
+  $(cpukitdir)/score/inline/rtems/score/coremsg.inl \
+  $(cpukitdir)/score/inline/rtems/score/mppkt.inl \
+  $(cpukitdir)/score/inline/rtems/score/stack.inl \
+  $(cpukitdir)/score/inline/rtems/score/tqdata.inl \
+  $(cpukitdir)/score/inline/rtems/score/coremutex.inl \
+  $(cpukitdir)/score/inline/rtems/score/object.inl \
+  $(cpukitdir)/score/inline/rtems/score/states.inl \
+  $(cpukitdir)/score/inline/rtems/score/watchdog.inl \
+  $(cpukitdir)/score/inline/rtems/score/corerwlock.inl \
+  $(cpukitdir)/score/inline/rtems/score/objectmp.inl \
+  $(cpukitdir)/score/inline/rtems/score/sysstate.inl \
+  $(cpukitdir)/score/inline/rtems/score/wkspace.inl \
+  $(cpukitdir)/score/inline/rtems/score/coresem.inl \
+  $(cpukitdir)/score/inline/rtems/score/prioritybitmap.inl \
+  $(cpukitdir)/score/inline/rtems/score/thread.inl \
+  sched_cpu/rtems/score/cpu_asm.h \
+  sched_cpu/rtems/score/cpuopts.h \
+  sched_cpu/rtems/score/cpu.h \
+  sched_cpu/rtems/score/types.h \
+  sched_cpu/rtems/score/no_cpu.h<span style="background-color: #FF0000"> </span>
+
+
+schedsim_rtems_rtems_include_HEADERS = \
+  ${cpukitdir}/rtems/include/rtems/rtems/event.h \
+  ${cpukitdir}/rtems/include/rtems/rtems/cache.h \
+  ${cpukitdir}/rtems/include/rtems/rtems/timer.h \
+  ${cpukitdir}/rtems/include/rtems/rtems/regionmp.h \
+  ${cpukitdir}/rtems/include/rtems/rtems/config.h \
+  ${cpukitdir}/rtems/include/rtems/rtems/ratemon.h \
+  ${cpukitdir}/rtems/include/rtems/rtems/rtemsapi.h \
+  ${cpukitdir}/rtems/include/rtems/rtems/eventset.h \
+  ${cpukitdir}/rtems/include/rtems/rtems/mp.h \
+  ${cpukitdir}/rtems/include/rtems/rtems/dpmem.h \
+  ${cpukitdir}/rtems/include/rtems/rtems/status.h \
+  ${cpukitdir}/rtems/include/rtems/rtems/sem.h \
+  ${cpukitdir}/rtems/include/rtems/rtems/barriermp.h \
+  ${cpukitdir}/rtems/include/rtems/rtems/types.h \
+  ${cpukitdir}/rtems/include/rtems/rtems/intr.h \
+  ${cpukitdir}/rtems/include/rtems/rtems/signalmp.h \
+  ${cpukitdir}/rtems/include/rtems/rtems/eventmp.h \
+  ${cpukitdir}/rtems/include/rtems/rtems/part.h \
+  ${cpukitdir}/rtems/include/rtems/rtems/message.h \
+  ${cpukitdir}/rtems/include/rtems/rtems/region.h \
+  ${cpukitdir}/rtems/include/rtems/rtems/object.h \
+  ${cpukitdir}/rtems/include/rtems/rtems/partmp.h \
+  ${cpukitdir}/rtems/include/rtems/rtems/msgmp.h \
+  ${cpukitdir}/rtems/include/rtems/rtems/clock.h \
+  ${cpukitdir}/rtems/include/rtems/rtems/modes.h \
+  ${cpukitdir}/rtems/include/rtems/rtems/taskmp.h \
+  ${cpukitdir}/rtems/include/rtems/rtems/asr.h \
+  ${cpukitdir}/rtems/include/rtems/rtems/semmp.h \
+  ${cpukitdir}/rtems/include/rtems/rtems/options.h \
+  ${cpukitdir}/rtems/include/rtems/rtems/attr.h \
+  ${cpukitdir}/rtems/include/rtems/rtems/support.h \
+  ${cpukitdir}/rtems/include/rtems/rtems/signal.h \
+  ${cpukitdir}/rtems/include/rtems/rtems/barrier.h \
+  ${cpukitdir}/rtems/include/rtems/rtems/tasks.h \
+  $(cpukitdir)/rtems/inline/rtems/rtems/asr.inl  \
+  $(cpukitdir)/rtems/inline/rtems/rtems/eventset.inl \
+  $(cpukitdir)/rtems/inline/rtems/rtems/ratemon.inl \
+  $(cpukitdir)/rtems/inline/rtems/rtems/tasks.inl \
+  $(cpukitdir)/rtems/inline/rtems/rtems/attr.inl \
+  $(cpukitdir)/rtems/inline/rtems/rtems/message.inl \
+  $(cpukitdir)/rtems/inline/rtems/rtems/region.inl \
+  $(cpukitdir)/rtems/inline/rtems/rtems/timer.inl \
+  $(cpukitdir)/rtems/inline/rtems/rtems/barrier.inl \
+  $(cpukitdir)/rtems/inline/rtems/rtems/modes.inl \
+  $(cpukitdir)/rtems/inline/rtems/rtems/sem.inl \
+  $(cpukitdir)/rtems/inline/rtems/rtems/dpmem.inl \
+  $(cpukitdir)/rtems/inline/rtems/rtems/options.inl \
+  $(cpukitdir)/rtems/inline/rtems/rtems/status.inl \
+  $(cpukitdir)/rtems/inline/rtems/rtems/event.inl \
+  $(cpukitdir)/rtems/inline/rtems/rtems/part.inl \
+  $(cpukitdir)/rtems/inline/rtems/rtems/support.inl
+
+schedsim_include_HEADERS += rtems_sched.h
+
+include $(top_srcdir)/../../automake/host.am
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/rtems/interr.c:1.1
--- /dev/null   Fri Dec 17 09:11:02 2010
+++ rtems/tools/schedsim/rtems/interr.c Fri Dec 17 08:51:56 2010
</font><font color='#997700'>@@ -0,0 +1,71 @@
</font><font color='#000088'>+/*
+ *  BASED UPON SOURCE IN RTEMS, MODIFIED FOR SIMULATOR
+ *
+ *  Internal Error Handler
+ *
+ *  COPYRIGHT (c) 1989-2010.
+ *  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$
+ */
+
+#if HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <rtems/system.h>
+#include <rtems/score/interr.h>
+#include <rtems/score/sysstate.h>
+#include <rtems/score/userext.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+
+/*PAGE
+ *
+ *  _Internal_error_Occurred
+ *
+ *  This routine will invoke the fatal error handler supplied by the user
+ *  followed by the the default one provided by the executive.  The default
+ *  error handler assumes no hardware is present to help inform the user
+ *  of the problem.  Halt stores the error code in a known register,
+ *  disables interrupts, and halts the CPU.  If the CPU does not have a
+ *  halt instruction, it will loop to itself.
+ *
+ *  Input parameters:
+ *    the_source  - what subsystem the error originated in
+ *    is_internal - if the error was internally generated
+ *    the_error   - fatal error status code
+ *
+ *  Output parameters:
+ *    As much information as possible is stored in a CPU dependent fashion.
+ *    See the CPU dependent code for more information.
+ *
+ *  NOTE: The the_error is not necessarily a directive status code.
+ */
+
+void _Internal_error_Occurred(
+  Internal_errors_Source  the_source,
+  bool                    is_internal,
+  Internal_errors_t       the_error
+)
+{
+
+  _Internal_errors_What_happened.the_source  = the_source;
+  _Internal_errors_What_happened.is_internal = is_internal;
+  _Internal_errors_What_happened.the_error   = the_error;
+
+  // _User_extensions_Fatal( the_source, is_internal, the_error );
+
+  _System_state_Set( SYSTEM_STATE_FAILED );
+
+  fprintf( stderr, "FATAL ERROR!!\n" );
+  exit( -1 );
+
+  /* will not return from this routine */
+  while (true);
+}
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/rtems/rtems_init.c:1.1
--- /dev/null   Fri Dec 17 09:11:02 2010
+++ rtems/tools/schedsim/rtems/rtems_init.c     Fri Dec 17 08:51:56 2010
</font><font color='#997700'>@@ -0,0 +1,110 @@
</font><font color='#000088'>+/*
+ *  BASED UPON SOURCE IN RTEMS, MODIFIED FOR SIMULATOR
+ *
+ *  COPYRIGHT (c) 1989-2010.
+ *  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$
+ */
+
+
+#define SAPI_INIT
+#define SCORE_INIT
+#define RTEMS_API_INIT
+
+#include <rtems.h><span style="background-color: #FF0000"> </span>
+#include <rtems/score/apiext.h>
+#include <rtems/score/bitfield.h>
+#include <rtems/score/apimutex.h>
+#include <rtems/score/wkspace.h>
+
+Objects_Information *_Internal_Objects[ OBJECTS_INTERNAL_CLASSES_LAST + 1 ];
+
+Objects_Information *_RTEMS_Objects[ OBJECTS_RTEMS_CLASSES_LAST + 1 ];
+
+extern void check_heir_and_executing(void);
+
+void rtems_initialize_data_structures(void)
+{
+  _System_state_Handler_initialization( FALSE );
+
+  /*
+   *  Do this as early as possible to ensure no debugging output
+   *  is even attempted to be printed.
+   */
+  _Debug_Manager_initialization();
+
+  _API_extensions_Initialization();
+
+  _Thread_Dispatch_initialization();
+
+  /*
+   *  Before this is called, we are not allowed to allocate memory
+   *  from the Workspace because it is not initialized.
+   */
+  _Workspace_Handler_initialization();
+
+  _User_extensions_Handler_initialization();
+
+  // _ISR_Handler_initialization();
+
+  /*
+   * Initialize the internal support API and allocator Mutex
+   */
+  _Objects_Information_table[OBJECTS_INTERNAL_API] = _Internal_Objects;
+
+  _API_Mutex_Initialization( 1 );
+  _API_Mutex_Allocate( &_RTEMS_Allocator_Mutex );
+
+  _Priority_bit_map_Handler_initialization();
+  _Watchdog_Handler_initialization();
+  _TOD_Handler_initialization();
+
+  _Thread_Handler_initialization();
+
+  _Scheduler_Handler_initialization();
+
+
+/* MANAGERS */
+  /*
+   * Install our API Object Management Table and initialize the
+   * various managers.
+   */
+  _Objects_Information_table[OBJECTS_CLASSIC_API] = _RTEMS_Objects;
+
+  _RTEMS_tasks_Manager_initialization();
+  _Semaphore_Manager_initialization();
+
+  _System_state_Set( SYSTEM_STATE_BEFORE_MULTITASKING );
+
+  /*
+   *  No threads should be created before this point!!!
+   *  _Thread_Executing and _Thread_Heir are not set.
+   *
+   *  At this point all API extensions are in place.  After the call to
+   *  _Thread_Create_idle() _Thread_Executing and _Thread_Heir will be set.
+   */
+  _Thread_Create_idle();
+
+  /*
+   *  Scheduling can properly occur now as long as we avoid dispatching.
+   */
+
+  _System_state_Set( SYSTEM_STATE_BEGIN_MULTITASKING );
+
+  _Thread_Start_multitasking();
+
+  /*
+   *  Now we are back in a non-dispatching critical section
+   */
+  _Thread_Dispatch_disable_level = 0;
+
+  /*
+   * Print an initial message
+   */
+  check_heir_and_executing();
+}
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/rtems/rtems_sched.h:1.1
--- /dev/null   Fri Dec 17 09:11:02 2010
+++ rtems/tools/schedsim/rtems/rtems_sched.h    Fri Dec 17 08:51:56 2010
</font><font color='#997700'>@@ -0,0 +1,27 @@
</font><font color='#000088'>+/*
+ *  RTEMS Scheduler Simulator Interface
+ *
+ *  COPYRIGHT (c) 1989-2010.
+ *  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$
+ */
+
+#ifndef __RTEMS_SCHEDULER_SIMULATOR_h
+#define __RTEMS_SCHEDULER_SIMULATOR_h
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void rtems_initialize_data_structures(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/rtems/sched_cpu/cpu.c:1.1
--- /dev/null   Fri Dec 17 09:11:02 2010
+++ rtems/tools/schedsim/rtems/sched_cpu/cpu.c  Fri Dec 17 08:51:56 2010
</font><font color='#997700'>@@ -0,0 +1,169 @@
</font><font color='#000088'>+/*
+ *  XXX CPU Dependent Source
+ *
+ *  BASED UPON SOURCE IN RTEMS, MODIFIED FOR SIMULATOR
+ *
+ *  COPYRIGHT (c) 1989-2010.
+ *  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 <rtems/system.h>
+#include <rtems/score/isr.h>
+#include <rtems/score/wkspace.h>
+
+/*  _CPU_Initialize
+ *
+ *  This routine performs processor dependent initialization.
+ *
+ *  INPUT PARAMETERS: NONE
+ *
+ *  NO_CPU Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+
+void _CPU_Initialize(void)
+{
+  /*
+   *  If there is not an easy way to initialize the FP context
+   *  during Context_Initialize, then it is usually easier to
+   *  save an "uninitialized" FP context here and copy it to
+   *  the task's during Context_Initialize.
+   */
+
+  /* FP context initialization support goes here */
+}
+
+/*PAGE
+ *
+ *  _CPU_ISR_Get_level
+ *
+ *  NO_CPU Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+
+uint32_t   _CPU_ISR_Get_level( void )
+{
+  /*
+   *  This routine returns the current interrupt level.
+   */
+
+  return 0;
+}
+
+/*PAGE
+ *
+ *  _CPU_ISR_install_raw_handler
+ *
+ *  NO_CPU Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+
+void _CPU_ISR_install_raw_handler(
+  uint32_t    vector,
+  proc_ptr    new_handler,
+  proc_ptr   *old_handler
+)
+{
+  /*
+   *  This is where we install the interrupt handler into the "raw" interrupt
+   *  table used by the CPU to dispatch interrupt handlers.
+   */
+}
+
+/*PAGE
+ *
+ *  _CPU_ISR_install_vector
+ *
+ *  This kernel routine installs the RTEMS handler for the
+ *  specified vector.
+ *
+ *  Input parameters:
+ *    vector      - interrupt vector number
+ *    old_handler - former ISR for this vector number
+ *    new_handler - replacement ISR for this vector number
+ *
+ *  Output parameters:  NONE
+ *
+ *
+ *  NO_CPU Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+
+void _CPU_ISR_install_vector(
+  uint32_t    vector,
+  proc_ptr    new_handler,
+  proc_ptr   *old_handler
+)
+{
+   *old_handler = _ISR_Vector_table[ vector ];
+
+   /*
+    *  If the interrupt vector table is a table of pointer to isr entry
+    *  points, then we need to install the appropriate RTEMS interrupt
+    *  handler for this vector number.
+    */
+
+   _CPU_ISR_install_raw_handler( vector, new_handler, old_handler );
+
+   /*
+    *  We put the actual user ISR address in '_ISR_vector_table'.  This will
+    *  be used by the _ISR_Handler so the user gets control.
+    */
+
+    _ISR_Vector_table[ vector ] = new_handler;
+}
+
+/*PAGE
+ *
+ *  _CPU_Install_interrupt_stack
+ *
+ *  NO_CPU Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+
+void _CPU_Install_interrupt_stack( void )
+{
+}
+
+/*PAGE
+ *
+ *  _CPU_Thread_Idle_body
+ *
+ *  NOTES:
+ *
+ *  1. This is the same as the regular CPU independent algorithm.
+ *
+ *  2. If you implement this using a "halt", "idle", or "shutdown"
+ *     instruction, then don't forget to put it in an infinite loop.
+ *
+ *  3. Be warned. Some processors with onboard DMA have been known
+ *     to stop the DMA if the CPU were put in IDLE mode.  This might
+ *     also be a problem with other on-chip peripherals.  So use this
+ *     hook with caution.
+ *
+ *  NO_CPU Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+
+void *_CPU_Thread_Idle_body( uintptr_t ignored )
+{
+
+  for( ; ; )
+    /* insert your "halt" instruction here */ ;
+}
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/rtems/sched_cpu/cpu_asm.c:1.1
--- /dev/null   Fri Dec 17 09:11:02 2010
+++ rtems/tools/schedsim/rtems/sched_cpu/cpu_asm.c      Fri Dec 17 08:51:56 2010
</font><font color='#997700'>@@ -0,0 +1,188 @@
</font><font color='#000088'>+/*  cpu_asm.c  ===> cpu_asm.S or cpu_asm.s
+ *  BASED UPON SOURCE IN RTEMS, MODIFIED FOR SIMULATOR
+ *
+ *
+ *  This file contains the basic algorithms for all assembly code used
+ *  in an specific CPU port of RTEMS.  These algorithms must be implemented
+ *  in assembly language
+ *
+ *  NOTE:  This is supposed to be a .S or .s file NOT a C file.
+ *
+ *  COPYRIGHT (c) 1989-2010.
+ *  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$
+ */
+
+/*
+ *  This is supposed to be an assembly file.  This means that system.h
+ *  and cpu.h should not be included in a "real" cpu_asm file.  An
+ *  implementation in assembly should include "cpu_asm.h>
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <rtems/system.h>
+#include <rtems/score/cpu.h>
+/* #include "cpu_asm.h> */
+
+/*
+ *  _CPU_Context_save_fp_context
+ *
+ *  This routine is responsible for saving the FP context
+ *  at *fp_context_ptr.  If the point to load the FP context
+ *  from is changed then the pointer is modified by this routine.
+ *
+ *  Sometimes a macro implementation of this is in cpu.h which dereferences
+ *  the ** and a similarly named routine in this file is passed something
+ *  like a (Context_Control_fp *).  The general rule on making this decision
+ *  is to avoid writing assembly language.
+ *
+ *  NO_CPU Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+
+void _CPU_Context_save_fp(
+  Context_Control_fp **fp_context_ptr
+)
+{
+}
+
+/*
+ *  _CPU_Context_restore_fp_context
+ *
+ *  This routine is responsible for restoring the FP context
+ *  at *fp_context_ptr.  If the point to load the FP context
+ *  from is changed then the pointer is modified by this routine.
+ *
+ *  Sometimes a macro implementation of this is in cpu.h which dereferences
+ *  the ** and a similarly named routine in this file is passed something
+ *  like a (Context_Control_fp *).  The general rule on making this decision
+ *  is to avoid writing assembly language.
+ *
+ *  NO_CPU Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+
+void _CPU_Context_restore_fp(
+  Context_Control_fp **fp_context_ptr
+)
+{
+}
+
+/*  _CPU_Context_switch
+ *
+ *  This routine performs a normal non-FP context switch.
+ *
+ *  NO_CPU Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+
+void _CPU_Context_switch(
+  Context_Control  *run,
+  Context_Control  *heir
+)
+{
+}
+
+/*
+ *  _CPU_Context_restore
+ *
+ *  This routine is generally used only to restart self in an
+ *  efficient manner.  It may simply be a label in _CPU_Context_switch.
+ *
+ *  NOTE: May be unnecessary to reload some registers.
+ *
+ *  NO_CPU Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+
+void _CPU_Context_restore(
+  Context_Control *new_context
+)
+{
+}
+
+/*  void __ISR_Handler()
+ *
+ *  This routine provides the RTEMS interrupt management.
+ *
+ *  NO_CPU Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+
+void _ISR_Handler(void)
+{
+   /*
+    *  This discussion ignores a lot of the ugly details in a real
+    *  implementation such as saving enough registers/state to be
+    *  able to do something real.  Keep in mind that the goal is
+    *  to invoke a user's ISR handler which is written in C and
+    *  uses a certain set of registers.
+    *
+    *  Also note that the exact order is to a large extent flexible.
+    *  Hardware will dictate a sequence for a certain subset of
+    *  _ISR_Handler while requirements for setting
+    */
+
+  /*
+   *  At entry to "common" _ISR_Handler, the vector number must be
+   *  available.  On some CPUs the hardware puts either the vector
+   *  number or the offset into the vector table for this ISR in a
+   *  known place.  If the hardware does not give us this information,
+   *  then the assembly portion of RTEMS for this port will contain
+   *  a set of distinct interrupt entry points which somehow place
+   *  the vector number in a known place (which is safe if another
+   *  interrupt nests this one) and branches to _ISR_Handler.
+   *
+   *  save some or all context on stack
+   *  may need to save some special interrupt information for exit
+   *
+   *  #if ( CPU_HAS_SOFTWARE_INTERRUPT_STACK == TRUE )
+   *    if ( _ISR_Nest_level == 0 )
+   *      switch to software interrupt stack
+   *  #endif
+   *
+   *  _ISR_Nest_level++;
+   *
+   *  _Thread_Dispatch_disable_level++;
+   *
+   *  (*_ISR_Vector_table[ vector ])( vector );
+   *
+   *  _Thread_Dispatch_disable_level--;
+   *
+   *  --_ISR_Nest_level;
+   *
+   *  if ( _ISR_Nest_level )
+   *    goto the label "exit interrupt (simple case)"
+   *
+   *  if ( _Thread_Dispatch_disable_level )
+   *    _ISR_Signals_to_thread_executing = FALSE;
+   *    goto the label "exit interrupt (simple case)"
+   *
+   *  if ( _Context_Switch_necessary || _ISR_Signals_to_thread_executing ) {
+   *    _ISR_Signals_to_thread_executing = FALSE;
+   *    call _Thread_Dispatch() or prepare to return to _ISR_Dispatch
+   *    prepare to get out of interrupt
+   *    return from interrupt  (maybe to _ISR_Dispatch)
+   *
+   *  LABEL "exit interrupt (simple case):
+   *  #if ( CPU_HAS_SOFTWARE_INTERRUPT_STACK == TRUE )
+   *    if outermost interrupt
+   *      restore stack
+   *  #endif
+   *  prepare to get out of interrupt
+   *  return from interrupt
+   */
+}
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/rtems/sched_cpu/rtems/asm.h:1.1
--- /dev/null   Fri Dec 17 09:11:02 2010
+++ rtems/tools/schedsim/rtems/sched_cpu/rtems/asm.h    Fri Dec 17 08:51:56 2010
</font><font color='#997700'>@@ -0,0 +1,127 @@
</font><font color='#000088'>+/**
+ * @file rtems/asm.h
+ *
+ *  BASED UPON SOURCE IN RTEMS, MODIFIED FOR SIMULATOR
+ *
+ *  This include file attempts to address the problems
+ *  caused by incompatible flavors of assemblers and
+ *  toolsets.  It primarily addresses variations in the
+ *  use of leading underscores on symbols and the requirement
+ *  that register names be preceded by a %.
+ */
+
+/*
+ *  NOTE: The spacing in the use of these macros
+ *        is critical to them working as advertised.
+ *
+ *  COPYRIGHT:
+ *
+ *  This file is based on similar code found in newlib available
+ *  from ftp.cygnus.com.  The file which was used had no copyright
+ *  notice.  This file is freely distributable as long as the source
+ *  of the file is noted.  This file is:
+ *
+ *  COPYRIGHT (c) 1994-2010.
+ *  On-Line Applications Research Corporation (OAR).
+ *
+ *  $Id$
+ */
+
+#ifndef _RTEMS_ASM_H
+#define _RTEMS_ASM_H
+
+/*
+ *  Indicate we are in an assembly file and get the basic CPU definitions.
+ */
+
+#ifndef ASM
+#define ASM
+#endif
+#include <rtems/score/cpuopts.h>
+#include <rtems/score/no_cpu.h>
+
+#ifndef __USER_LABEL_PREFIX__
+/**
+ *  Recent versions of GNU cpp define variables which indicate the
+ *  need for underscores and percents.  If not using GNU cpp or
+ *  the version does not support this, then you will obviously
+ *  have to define these as appropriate.
+ *
+ *  This symbol is prefixed to all C program symbols.
+ */
+#define __USER_LABEL_PREFIX__ _
+#endif
+
+#ifndef __REGISTER_PREFIX__
+/**
+ *  Recent versions of GNU cpp define variables which indicate the
+ *  need for underscores and percents.  If not using GNU cpp or
+ *  the version does not support this, then you will obviously
+ *  have to define these as appropriate.
+ *
+ *  This symbol is prefixed to all register names.
+ */
+#define __REGISTER_PREFIX__
+#endif
+
+#include <rtems/concat.h>
+
+/** Use the right prefix for global labels.  */
+#define SYM(x) CONCAT1 (__USER_LABEL_PREFIX__, x)
+
+/** Use the right prefix for registers.  */
+#define REG(x) CONCAT1 (__REGISTER_PREFIX__, x)
+
+/*
+ *  define macros for all of the registers on this CPU
+ *
+ *  EXAMPLE:     #define d0 REG (d0)
+ */
+
+/*
+ *  Define macros to handle section beginning and ends.
+ */
+
+
+/** This macro is used to denote the beginning of a code declaration. */
+#define BEGIN_CODE_DCL .text
+/** This macro is used to denote the end of a code declaration. */
+#define END_CODE_DCL
+/** This macro is used to denote the beginning of a data declaration section. */
+#define BEGIN_DATA_DCL .data
+/** This macro is used to denote the end of a data declaration section. */
+#define END_DATA_DCL
+/** This macro is used to denote the beginning of a code section. */
+#define BEGIN_CODE .text
+/** This macro is used to denote the end of a code section. */
+#define END_CODE
+/** This macro is used to denote the beginning of a data section. */
+#define BEGIN_DATA
+/** This macro is used to denote the end of a data section. */
+#define END_DATA
+/** This macro is used to denote the beginning of the
+ *  unitialized data section.
+ */
+#define BEGIN_BSS
+/** This macro is used to denote the end of the unitialized data section.  */
+#define END_BSS
+/** This macro is used to denote the end of the assembly file.  */
+#define END
+
+/**
+ *  This macro is used to declare a public global symbol.
+ *
+ *  @note This must be tailored for a particular flavor of the C compiler.
+ *  They may need to put underscores in front of the symbols.
+ */
+#define PUBLIC(sym) .globl SYM (sym)
+
+/**
+ *  This macro is used to prototype a public global symbol.
+ *
+ *  @note This must be tailored for a particular flavor of the C compiler.
+ *  They may need to put underscores in front of the symbols.
+ */
+#define EXTERN(sym) .globl SYM (sym)
+
+#endif
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/rtems/sched_cpu/rtems/score/cpu.h:1.1
--- /dev/null   Fri Dec 17 09:11:02 2010
+++ rtems/tools/schedsim/rtems/sched_cpu/rtems/score/cpu.h      Fri Dec 17 08:51:56 2010
</font><font color='#997700'>@@ -0,0 +1,1264 @@
</font><font color='#000088'>+/**
+ * @file rtems/score/cpu.h
+ */
+
+/*
+ *  BASED UPON SOURCE IN RTEMS, MODIFIED FOR SIMULATOR
+ *
+ *  This include file contains information pertaining to the XXX
+ *  processor.
+ *
+ *  @note This file is part of a porting template that is intended
+ *  to be used as the starting point when porting RTEMS to a new
+ *  CPU family.  The following needs to be done when using this as
+ *  the starting point for a new port:
+ *
+ *  + Anywhere there is an XXX, it should be replaced
+ *    with information about the CPU family being ported to.
+ *
+ *  + At the end of each comment section, there is a heading which
+ *    says "Port Specific Information:".  When porting to RTEMS,
+ *    add CPU family specific information in this section
+ */
+
+/*
+ *  COPYRIGHT (c) 1989-2010.
+ *  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$
+ */
+
+#ifndef _RTEMS_SCORE_CPU_H
+#define _RTEMS_SCORE_CPU_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <rtems/score/no_cpu.h>            /* pick up machine definitions */
+#ifndef ASM
+#include <rtems/score/types.h>
+#endif
+
+/* conditional compilation parameters */
+
+/**
+ *  Should the calls to @ref _Thread_Enable_dispatch be inlined?
+ *
+ *  If TRUE, then they are inlined.
+ *  If FALSE, then a subroutine call is made.
+ *
+ *  This conditional is an example of the classic trade-off of size
+ *  versus speed.  Inlining the call (TRUE) typically increases the
+ *  size of RTEMS while speeding up the enabling of dispatching.
+ *
+ *  @note In general, the @ref _Thread_Dispatch_disable_level will
+ *  only be 0 or 1 unless you are in an interrupt handler and that
+ *  interrupt handler invokes the executive.]  When not inlined
+ *  something calls @ref _Thread_Enable_dispatch which in turns calls
+ *  @ref _Thread_Dispatch.  If the enable dispatch is inlined, then
+ *  one subroutine call is avoided entirely.
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+#define CPU_INLINE_ENABLE_DISPATCH       TRUE
+
+/**
+ *  Should the body of the search loops in _Thread_queue_Enqueue_priority
+ *  be unrolled one time?  In unrolled each iteration of the loop examines
+ *  two "nodes" on the chain being searched.  Otherwise, only one node
+ *  is examined per iteration.
+ *
+ *  If TRUE, then the loops are unrolled.
+ *  If FALSE, then the loops are not unrolled.
+ *
+ *  The primary factor in making this decision is the cost of disabling
+ *  and enabling interrupts (_ISR_Flash) versus the cost of rest of the
+ *  body of the loop.  On some CPUs, the flash is more expensive than
+ *  one iteration of the loop body.  In this case, it might be desirable
+ *  to unroll the loop.  It is important to note that on some CPUs, this
+ *  code is the longest interrupt disable period in RTEMS.  So it is
+ *  necessary to strike a balance when setting this parameter.
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+#define CPU_UNROLL_ENQUEUE_PRIORITY      TRUE
+
+/**
+ *  Does RTEMS manage a dedicated interrupt stack in software?
+ *
+ *  If TRUE, then a stack is allocated in @ref _ISR_Handler_initialization.
+ *  If FALSE, nothing is done.
+ *
+ *  If the CPU supports a dedicated interrupt stack in hardware,
+ *  then it is generally the responsibility of the BSP to allocate it
+ *  and set it up.
+ *
+ *  If the CPU does not support a dedicated interrupt stack, then
+ *  the porter has two options: (1) execute interrupts on the
+ *  stack of the interrupted task, and (2) have RTEMS manage a dedicated
+ *  interrupt stack.
+ *
+ *  If this is TRUE, @ref CPU_ALLOCATE_INTERRUPT_STACK should also be TRUE.
+ *
+ *  Only one of @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK and
+ *  @ref CPU_HAS_HARDWARE_INTERRUPT_STACK should be set to TRUE.  It is
+ *  possible that both are FALSE for a particular CPU.  Although it
+ *  is unclear what that would imply about the interrupt processing
+ *  procedure on that CPU.
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+#define CPU_HAS_SOFTWARE_INTERRUPT_STACK FALSE
+
+/**
+ *  Does the CPU follow the simple vectored interrupt model?
+ *
+ *  If TRUE, then RTEMS allocates the vector table it internally manages.
+ *  If FALSE, then the BSP is assumed to allocate and manage the vector
+ *  table
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+#define CPU_SIMPLE_VECTORED_INTERRUPTS TRUE
+
+/**
+ *  Does this CPU have hardware support for a dedicated interrupt stack?
+ *
+ *  If TRUE, then it must be installed during initialization.
+ *  If FALSE, then no installation is performed.
+ *
+ *  If this is TRUE, @ref CPU_ALLOCATE_INTERRUPT_STACK should also be TRUE.
+ *
+ *  Only one of @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK and
+ *  @ref CPU_HAS_HARDWARE_INTERRUPT_STACK should be set to TRUE.  It is
+ *  possible that both are FALSE for a particular CPU.  Although it
+ *  is unclear what that would imply about the interrupt processing
+ *  procedure on that CPU.
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+#define CPU_HAS_HARDWARE_INTERRUPT_STACK TRUE
+
+/**
+ *  Does RTEMS allocate a dedicated interrupt stack in the Interrupt Manager?
+ *
+ *  If TRUE, then the memory is allocated during initialization.
+ *  If FALSE, then the memory is allocated during initialization.
+ *
+ *  This should be TRUE is CPU_HAS_SOFTWARE_INTERRUPT_STACK is TRUE.
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+#define CPU_ALLOCATE_INTERRUPT_STACK TRUE
+
+/**
+ *  Does the RTEMS invoke the user's ISR with the vector number and
+ *  a pointer to the saved interrupt frame (1) or just the vector
+ *  number (0)?
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+#define CPU_ISR_PASSES_FRAME_POINTER 0
+
+/**
+ *  @def CPU_HARDWARE_FP
+ *
+ *  Does the CPU have hardware floating point?
+ *
+ *  If TRUE, then the RTEMS_FLOATING_POINT task attribute is supported.
+ *  If FALSE, then the RTEMS_FLOATING_POINT task attribute is ignored.
+ *
+ *  If there is a FP coprocessor such as the i387 or mc68881, then
+ *  the answer is TRUE.
+ *
+ *  The macro name "NO_CPU_HAS_FPU" should be made CPU specific.
+ *  It indicates whether or not this CPU model has FP support.  For
+ *  example, it would be possible to have an i386_nofp CPU model
+ *  which set this to false to indicate that you have an i386 without
+ *  an i387 and wish to leave floating point support out of RTEMS.
+ */
+
+/**
+ *  @def CPU_SOFTWARE_FP
+ *
+ *  Does the CPU have no hardware floating point and GCC provides a
+ *  software floating point implementation which must be context
+ *  switched?
+ *
+ *  This feature conditional is used to indicate whether or not there
+ *  is software implemented floating point that must be context
+ *  switched.  The determination of whether or not this applies
+ *  is very tool specific and the state saved/restored is also
+ *  compiler specific.
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+#if ( NO_CPU_HAS_FPU == 1 )
+#define CPU_HARDWARE_FP     TRUE
+#else
+#define CPU_HARDWARE_FP     FALSE
+#endif
+#define CPU_SOFTWARE_FP     FALSE
+
+/**
+ *  Are all tasks RTEMS_FLOATING_POINT tasks implicitly?
+ *
+ *  If TRUE, then the RTEMS_FLOATING_POINT task attribute is assumed.
+ *  If FALSE, then the RTEMS_FLOATING_POINT task attribute is followed.
+ *
+ *  So far, the only CPUs in which this option has been used are the
+ *  HP PA-RISC and PowerPC.  On the PA-RISC, The HP C compiler and
+ *  gcc both implicitly used the floating point registers to perform
+ *  integer multiplies.  Similarly, the PowerPC port of gcc has been
+ *  seen to allocate floating point local variables and touch the FPU
+ *  even when the flow through a subroutine (like vfprintf()) might
+ *  not use floating point formats.
+ *
+ *  If a function which you would not think utilize the FP unit DOES,
+ *  then one can not easily predict which tasks will use the FP hardware.
+ *  In this case, this option should be TRUE.
+ *
+ *  If @ref CPU_HARDWARE_FP is FALSE, then this should be FALSE as well.
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+#define CPU_ALL_TASKS_ARE_FP     TRUE
+
+/**
+ *  Should the IDLE task have a floating point context?
+ *
+ *  If TRUE, then the IDLE task is created as a RTEMS_FLOATING_POINT task
+ *  and it has a floating point context which is switched in and out.
+ *  If FALSE, then the IDLE task does not have a floating point context.
+ *
+ *  Setting this to TRUE negatively impacts the time required to preempt
+ *  the IDLE task from an interrupt because the floating point context
+ *  must be saved as part of the preemption.
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+#define CPU_IDLE_TASK_IS_FP      FALSE
+
+/**
+ *  Should the saving of the floating point registers be deferred
+ *  until a context switch is made to another different floating point
+ *  task?
+ *
+ *  If TRUE, then the floating point context will not be stored until
+ *  necessary.  It will remain in the floating point registers and not
+ *  disturned until another floating point task is switched to.
+ *
+ *  If FALSE, then the floating point context is saved when a floating
+ *  point task is switched out and restored when the next floating point
+ *  task is restored.  The state of the floating point registers between
+ *  those two operations is not specified.
+ *
+ *  If the floating point context does NOT have to be saved as part of
+ *  interrupt dispatching, then it should be safe to set this to TRUE.
+ *
+ *  Setting this flag to TRUE results in using a different algorithm
+ *  for deciding when to save and restore the floating point context.
+ *  The deferred FP switch algorithm minimizes the number of times
+ *  the FP context is saved and restored.  The FP context is not saved
+ *  until a context switch is made to another, different FP task.
+ *  Thus in a system with only one FP task, the FP context will never
+ *  be saved or restored.
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+#define CPU_USE_DEFERRED_FP_SWITCH       TRUE
+
+/**
+ *  Does this port provide a CPU dependent IDLE task implementation?
+ *
+ *  If TRUE, then the routine @ref _CPU_Thread_Idle_body
+ *  must be provided and is the default IDLE thread body instead of
+ *  @ref _CPU_Thread_Idle_body.
+ *
+ *  If FALSE, then use the generic IDLE thread body if the BSP does
+ *  not provide one.
+ *
+ *  This is intended to allow for supporting processors which have
+ *  a low power or idle mode.  When the IDLE thread is executed, then
+ *  the CPU can be powered down.
+ *
+ *  The order of precedence for selecting the IDLE thread body is:
+ *
+ *    -#  BSP provided
+ *    -#  CPU dependent (if provided)
+ *    -#  generic (if no BSP and no CPU dependent)
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+#define CPU_PROVIDES_IDLE_THREAD_BODY    TRUE
+
+/**
+ *  Does the stack grow up (toward higher addresses) or down
+ *  (toward lower addresses)?
+ *
+ *  If TRUE, then the grows upward.
+ *  If FALSE, then the grows toward smaller addresses.
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+#define CPU_STACK_GROWS_UP               TRUE
+
+/**
+ *  The following is the variable attribute used to force alignment
+ *  of critical RTEMS structures.  On some processors it may make
+ *  sense to have these aligned on tighter boundaries than
+ *  the minimum requirements of the compiler in order to have as
+ *  much of the critical data area as possible in a cache line.
+ *
+ *  The placement of this macro in the declaration of the variables
+ *  is based on the syntactically requirements of the GNU C
+ *  "__attribute__" extension.  For example with GNU C, use
+ *  the following to force a structures to a 32 byte boundary.
+ *
+ *      __attribute__ ((aligned (32)))
+ *
+ *  @note Currently only the Priority Bit Map table uses this feature.
+ *        To benefit from using this, the data must be heavily
+ *        used so it will stay in the cache and used frequently enough
+ *        in the executive to justify turning this on.
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+#define CPU_STRUCTURE_ALIGNMENT
+
+/**
+ *  @defgroup CPUEndian Processor Dependent Endianness Support
+ *
+ *  This group assists in issues related to processor endianness.
+ */
+
+/**
+ *  @ingroup CPUEndian
+ *  Define what is required to specify how the network to host conversion
+ *  routines are handled.
+ *
+ *  @note @a CPU_BIG_ENDIAN and @a CPU_LITTLE_ENDIAN should NOT have the
+ *  same values.
+ *
+ *  @see CPU_LITTLE_ENDIAN
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+#define CPU_BIG_ENDIAN                           TRUE
+
+/**
+ *  @ingroup CPUEndian
+ *  Define what is required to specify how the network to host conversion
+ *  routines are handled.
+ *
+ *  @note @ref CPU_BIG_ENDIAN and @ref CPU_LITTLE_ENDIAN should NOT have the
+ *  same values.
+ *
+ *  @see CPU_BIG_ENDIAN
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+#define CPU_LITTLE_ENDIAN                        FALSE
+
+/**
+ *  @ingroup CPUInterrupt
+ *  The following defines the number of bits actually used in the
+ *  interrupt field of the task mode.  How those bits map to the
+ *  CPU interrupt levels is defined by the routine @ref _CPU_ISR_Set_level.
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+#define CPU_MODES_INTERRUPT_MASK   0x00000001
+
+/*
+ *  Processor defined structures required for cpukit/score.
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+
+/* may need to put some structures here.  */
+
+/**
+ * @defgroup CPUContext Processor Dependent Context Management
+ *
+ *  From the highest level viewpoint, there are 2 types of context to save.
+ *
+ *     -# Interrupt registers to save
+ *     -# Task level registers to save
+ *
+ *  Since RTEMS handles integer and floating point contexts separately, this
+ *  means we have the following 3 context items:
+ *
+ *     -# task level context stuff::  Context_Control
+ *     -# floating point task stuff:: Context_Control_fp
+ *     -# special interrupt level context :: CPU_Interrupt_frame
+ *
+ *  On some processors, it is cost-effective to save only the callee
+ *  preserved registers during a task context switch.  This means
+ *  that the ISR code needs to save those registers which do not
+ *  persist across function calls.  It is not mandatory to make this
+ *  distinctions between the caller/callee saves registers for the
+ *  purpose of minimizing context saved during task switch and on interrupts.
+ *  If the cost of saving extra registers is minimal, simplicity is the
+ *  choice.  Save the same context on interrupt entry as for tasks in
+ *  this case.
+ *
+ *  Additionally, if gdb is to be made aware of RTEMS tasks for this CPU, then
+ *  care should be used in designing the context area.
+ *
+ *  On some CPUs with hardware floating point support, the Context_Control_fp
+ *  structure will not be used or it simply consist of an array of a
+ *  fixed number of bytes.   This is done when the floating point context
+ *  is dumped by a "FP save context" type instruction and the format
+ *  is not really defined by the CPU.  In this case, there is no need
+ *  to figure out the exact format -- only the size.  Of course, although
+ *  this is enough information for RTEMS, it is probably not enough for
+ *  a debugger such as gdb.  But that is another problem.
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+
+/**
+ *  @ingroup CPUContext Management
+ *  This defines the minimal set of integer and processor state registers
+ *  that must be saved during a voluntary context switch from one thread
+ *  to another.
+ */
+typedef struct {
+    /** This field is a hint that a port will have a number of integer
+     *  registers that need to be saved at a context switch.
+     */
+    uint32_t   some_integer_register;
+    /** This field is a hint that a port will have a number of system
+     *  registers that need to be saved at a context switch.
+     */
+    uint32_t   some_system_register;
+
+    /** This field is a hint that a port will have a register that
+     *  is the stack pointer.
+     */
+    uint32_t   stack_pointer;
+} Context_Control;
+
+/**
+ *  @ingroup CPUContext Management
+ *
+ *  This macro returns the stack pointer associated with @a _context.
+ *
+ *  @param[in] _context is the thread context area to access
+ *
+ *  @return This method returns the stack pointer.
+ */
+#define _CPU_Context_Get_SP( _context ) \
+  (_context)->stack_pointer
+
+/**
+ *  @ingroup CPUContext Management
+ *  This defines the complete set of floating point registers that must
+ *  be saved during any context switch from one thread to another.
+ */
+typedef struct {
+    /** FPU registers are listed here */
+    double      some_float_register;
+} Context_Control_fp;
+
+/**
+ *  @ingroup CPUContext Management
+ *  This defines the set of integer and processor state registers that must
+ *  be saved during an interrupt.  This set does not include any which are
+ *  in @ref Context_Control.
+ */
+typedef struct {
+    /** This field is a hint that a port will have a number of integer
+     *  registers that need to be saved when an interrupt occurs or
+     *  when a context switch occurs at the end of an ISR.
+     */
+    uint32_t   special_interrupt_register;
+} CPU_Interrupt_frame;
+
+/**
+ *  This variable is optional.  It is used on CPUs on which it is difficult
+ *  to generate an "uninitialized" FP context.  It is filled in by
+ *  @ref _CPU_Initialize and copied into the task's FP context area during
+ *  @ref _CPU_Context_Initialize.
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+SCORE_EXTERN Context_Control_fp  _CPU_Null_fp_context;
+
+/**
+ *  @defgroup CPUInterrupt Processor Dependent Interrupt Management
+ *
+ *  On some CPUs, RTEMS supports a software managed interrupt stack.
+ *  This stack is allocated by the Interrupt Manager and the switch
+ *  is performed in @ref _ISR_Handler.  These variables contain pointers
+ *  to the lowest and highest addresses in the chunk of memory allocated
+ *  for the interrupt stack.  Since it is unknown whether the stack
+ *  grows up or down (in general), this give the CPU dependent
+ *  code the option of picking the version it wants to use.
+ *
+ *  @note These two variables are required if the macro
+ *        @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK is defined as TRUE.
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+
+/**
+ *  @ingroup CPUInterrupt
+ *  This variable points to the lowest physical address of the interrupt
+ *  stack.
+ */
+SCORE_EXTERN void               *_CPU_Interrupt_stack_low;
+
+/**
+ *  @ingroup CPUInterrupt
+ *  This variable points to the lowest physical address of the interrupt
+ *  stack.
+ */
+SCORE_EXTERN void               *_CPU_Interrupt_stack_high;
+
+/*
+ *  Nothing prevents the porter from declaring more CPU specific variables.
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+
+/* XXX: if needed, put more variables here */
+
+/**
+ *  @ingroup CPUContext
+ *  The size of the floating point context area.  On some CPUs this
+ *  will not be a "sizeof" because the format of the floating point
+ *  area is not defined -- only the size is.  This is usually on
+ *  CPUs with a "floating point save context" instruction.
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+#define CPU_CONTEXT_FP_SIZE sizeof( Context_Control_fp )
+
+/**
+ *  Amount of extra stack (above minimum stack size) required by
+ *  MPCI receive server thread.  Remember that in a multiprocessor
+ *  system this thread must exist and be able to process all directives.
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+#define CPU_MPCI_RECEIVE_SERVER_EXTRA_STACK 0
+
+/**
+ *  @ingroup CPUInterrupt
+ *  This defines the number of entries in the @ref _ISR_Vector_table managed
+ *  by RTEMS.
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+#define CPU_INTERRUPT_NUMBER_OF_VECTORS      32
+
+/**
+ *  @ingroup CPUInterrupt
+ *  This defines the highest interrupt vector number for this port.
+ */
+#define CPU_INTERRUPT_MAXIMUM_VECTOR_NUMBER  (CPU_INTERRUPT_NUMBER_OF_VECTORS - 1)
+
+/**
+ *  @ingroup CPUInterrupt
+ *  This is defined if the port has a special way to report the ISR nesting
+ *  level.  Most ports maintain the variable @a _ISR_Nest_level.
+ */
+#define CPU_PROVIDES_ISR_IS_IN_PROGRESS FALSE
+
+/**
+ *  @ingroup CPUContext
+ *  Should be large enough to run all RTEMS tests.  This ensures
+ *  that a "reasonable" small application should not have any problems.
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+#define CPU_STACK_MINIMUM_SIZE          (1024*4)
+
+/**
+ *  CPU's worst alignment requirement for data types on a byte boundary.  This
+ *  alignment does not take into account the requirements for the stack.
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+#define CPU_ALIGNMENT              8
+
+/**
+ *  This number corresponds to the byte alignment requirement for the
+ *  heap handler.  This alignment requirement may be stricter than that
+ *  for the data types alignment specified by @ref CPU_ALIGNMENT.  It is
+ *  common for the heap to follow the same alignment requirement as
+ *  @ref CPU_ALIGNMENT.  If the @ref CPU_ALIGNMENT is strict enough for
+ *  the heap, then this should be set to @ref CPU_ALIGNMENT.
+ *
+ *  @note  This does not have to be a power of 2 although it should be
+ *         a multiple of 2 greater than or equal to 2.  The requirement
+ *         to be a multiple of 2 is because the heap uses the least
+ *         significant field of the front and back flags to indicate
+ *         that a block is in use or free.  So you do not want any odd
+ *         length blocks really putting length data in that bit.
+ *
+ *         On byte oriented architectures, @ref CPU_HEAP_ALIGNMENT normally will
+ *         have to be greater or equal to than @ref CPU_ALIGNMENT to ensure that
+ *         elements allocated from the heap meet all restrictions.
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+#define CPU_HEAP_ALIGNMENT         CPU_ALIGNMENT
+
+/**
+ *  This number corresponds to the byte alignment requirement for memory
+ *  buffers allocated by the partition manager.  This alignment requirement
+ *  may be stricter than that for the data types alignment specified by
+ *  @ref CPU_ALIGNMENT.  It is common for the partition to follow the same
+ *  alignment requirement as @ref CPU_ALIGNMENT.  If the @ref CPU_ALIGNMENT is
+ *  strict enough for the partition, then this should be set to
+ *  @ref CPU_ALIGNMENT.
+ *
+ *  @note  This does not have to be a power of 2.  It does have to
+ *         be greater or equal to than @ref CPU_ALIGNMENT.
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+#define CPU_PARTITION_ALIGNMENT    CPU_ALIGNMENT
+
+/**
+ *  This number corresponds to the byte alignment requirement for the
+ *  stack.  This alignment requirement may be stricter than that for the
+ *  data types alignment specified by @ref CPU_ALIGNMENT.  If the
+ *  @ref CPU_ALIGNMENT is strict enough for the stack, then this should be
+ *  set to 0.
+ *
+ *  @note This must be a power of 2 either 0 or greater than @ref CPU_ALIGNMENT.
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+#define CPU_STACK_ALIGNMENT        0
+
+/*
+ *  ISR handler macros
+ */
+
+/**
+ *  @ingroup CPUInterrupt
+ *  Support routine to initialize the RTEMS vector table after it is allocated.
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+#define _CPU_Initialize_vectors()
+
+/**
+ *  @ingroup CPUInterrupt
+ *  Disable all interrupts for an RTEMS critical section.  The previous
+ *  level is returned in @a _isr_cookie.
+ *
+ *  @param[out] _isr_cookie will contain the previous level cookie
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+#define _CPU_ISR_Disable( _isr_cookie ) \
+  { \
+    (_isr_cookie) = 0;   /* do something to prevent warnings */ \
+  }
+
+/**
+ *  @ingroup CPUInterrupt
+ *  Enable interrupts to the previous level (returned by _CPU_ISR_Disable).
+ *  This indicates the end of an RTEMS critical section.  The parameter
+ *  @a _isr_cookie is not modified.
+ *
+ *  @param[in] _isr_cookie contain the previous level cookie
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+#define _CPU_ISR_Enable( _isr_cookie )  \
+  { \
+  }
+
+/**
+ *  @ingroup CPUInterrupt
+ *  This temporarily restores the interrupt to @a _isr_cookie before immediately
+ *  disabling them again.  This is used to divide long RTEMS critical
+ *  sections into two or more parts.  The parameter @a _isr_cookie is not
+ *  modified.
+ *
+ *  @param[in] _isr_cookie contain the previous level cookie
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+#define _CPU_ISR_Flash( _isr_cookie ) \
+  { \
+  }
+
+/**
+ *  @ingroup CPUInterrupt
+ *
+ *  This routine and @ref _CPU_ISR_Get_level
+ *  Map the interrupt level in task mode onto the hardware that the CPU
+ *  actually provides.  Currently, interrupt levels which do not
+ *  map onto the CPU in a generic fashion are undefined.  Someday,
+ *  it would be nice if these were "mapped" by the application
+ *  via a callout.  For example, m68k has 8 levels 0 - 7, levels
+ *  8 - 255 would be available for bsp/application specific meaning.
+ *  This could be used to manage a programmable interrupt controller
+ *  via the rtems_task_mode directive.
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+#define _CPU_ISR_Set_level( new_level ) \
+  { \
+  }
+
+/**
+ *  @ingroup CPUInterrupt
+ *  Return the current interrupt disable level for this task in
+ *  the format used by the interrupt level portion of the task mode.
+ *
+ *  @note This routine usually must be implemented as a subroutine.
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+uint32_t   _CPU_ISR_Get_level( void );
+
+/* end of ISR handler macros */
+
+/* Context handler macros */
+
+/**
+ *  @ingroup CPUContext
+ *  Initialize the context to a state suitable for starting a
+ *  task after a context restore operation.  Generally, this
+ *  involves:
+ *
+ *     - setting a starting address
+ *     - preparing the stack
+ *     - preparing the stack and frame pointers
+ *     - setting the proper interrupt level in the context
+ *     - initializing the floating point context
+ *
+ *  This routine generally does not set any unnecessary register
+ *  in the context.  The state of the "general data" registers is
+ *  undefined at task start time.
+ *
+ *  @param[in] _the_context is the context structure to be initialized
+ *  @param[in] _stack_base is the lowest physical address of this task's stack
+ *  @param[in] _size is the size of this task's stack
+ *  @param[in] _isr is the interrupt disable level
+ *  @param[in] _entry_point is the thread's entry point.  This is
+ *         always @a _Thread_Handler
+ *  @param[in] _is_fp is TRUE if the thread is to be a floating
+ *        point thread.  This is typically only used on CPUs where the
+ *        FPU may be easily disabled by software such as on the SPARC
+ *        where the PSR contains an enable FPU bit.
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+#define _CPU_Context_Initialize( _the_context, _stack_base, _size, \
+                                 _isr, _entry_point, _is_fp ) \
+  { \
+  }
+
+/**
+ *  This routine is responsible for somehow restarting the currently
+ *  executing task.  If you are lucky, then all that is necessary
+ *  is restoring the context.  Otherwise, there will need to be
+ *  a special assembly routine which does something special in this
+ *  case.  For many ports, simply adding a label to the restore path
+ *  of @ref _CPU_Context_switch will work.  On other ports, it may be
+ *  possibly to load a few arguments and jump to the restore path. It will
+ *  not work if restarting self conflicts with the stack frame
+ *  assumptions of restoring a context.
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+#define _CPU_Context_Restart_self( _the_context ) \
+   _CPU_Context_restore( (_the_context) );
+
+/**
+ *  @ingroup CPUContext
+ *  The purpose of this macro is to allow the initial pointer into
+ *  a floating point context area (used to save the floating point
+ *  context) to be at an arbitrary place in the floating point
+ *  context area.
+ *
+ *  This is necessary because some FP units are designed to have
+ *  their context saved as a stack which grows into lower addresses.
+ *  Other FP units can be saved by simply moving registers into offsets
+ *  from the base of the context area.  Finally some FP units provide
+ *  a "dump context" instruction which could fill in from high to low
+ *  or low to high based on the whim of the CPU designers.
+ *
+ *  @param[in] _base is the lowest physical address of the floating point
+ *         context area
+ *  @param[in] _offset is the offset into the floating point area
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+#define _CPU_Context_Fp_start( _base, _offset ) \
+   ( (void *) _Addresses_Add_offset( (_base), (_offset) ) )
+
+/**
+ *  This routine initializes the FP context area passed to it to.
+ *  There are a few standard ways in which to initialize the
+ *  floating point context.  The code included for this macro assumes
+ *  that this is a CPU in which a "initial" FP context was saved into
+ *  @a _CPU_Null_fp_context and it simply copies it to the destination
+ *  context passed to it.
+ *
+ *  Other floating point context save/restore models include:
+ *    -# not doing anything, and
+ *    -# putting a "null FP status word" in the correct place in the FP context.
+ *
+ *  @param[in] _destination is the floating point context area
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+#define _CPU_Context_Initialize_fp( _destination ) \
+  { \
+   *(*(_destination)) = _CPU_Null_fp_context; \
+  }
+
+/* end of Context handler macros */
+
+/* Fatal Error manager macros */
+
+/**
+ *  This routine copies _error into a known place -- typically a stack
+ *  location or a register, optionally disables interrupts, and
+ *  halts/stops the CPU.
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+#define _CPU_Fatal_halt( _error ) \
+  { \
+  }
+
+/* end of Fatal Error manager macros */
+
+/* Bitfield handler macros */
+
+/**
+ *  @defgroup CPUBitfield Processor Dependent Bitfield Manipulation
+ *
+ *  This set of routines are used to implement fast searches for
+ *  the most important ready task.
+ */
+
+/**
+ *  @ingroup CPUBitfield
+ *  This definition is set to TRUE if the port uses the generic bitfield
+ *  manipulation implementation.
+ */
+#define CPU_USE_GENERIC_BITFIELD_CODE TRUE
+
+/**
+ *  @ingroup CPUBitfield
+ *  This definition is set to TRUE if the port uses the data tables provided
+ *  by the generic bitfield manipulation implementation.
+ *  This can occur when actually using the generic bitfield manipulation
+ *  implementation or when implementing the same algorithm in assembly
+ *  language for improved performance.  It is unlikely that a port will use
+ *  the data if it has a bitfield scan instruction.
+ */
+#define CPU_USE_GENERIC_BITFIELD_DATA TRUE
+
+/**
+ *  @ingroup CPUBitfield
+ *  This routine sets @a _output to the bit number of the first bit
+ *  set in @a _value.  @a _value is of CPU dependent type
+ *  @a Priority_Bit_map_control.  This type may be either 16 or 32 bits
+ *  wide although only the 16 least significant bits will be used.
+ *
+ *  There are a number of variables in using a "find first bit" type
+ *  instruction.
+ *
+ *    -# What happens when run on a value of zero?
+ *    -# Bits may be numbered from MSB to LSB or vice-versa.
+ *    -# The numbering may be zero or one based.
+ *    -# The "find first bit" instruction may search from MSB or LSB.
+ *
+ *  RTEMS guarantees that (1) will never happen so it is not a concern.
+ *  (2),(3), (4) are handled by the macros @ref _CPU_Priority_Mask and
+ *  @ref _CPU_Priority_bits_index.  These three form a set of routines
+ *  which must logically operate together.  Bits in the _value are
+ *  set and cleared based on masks built by @ref _CPU_Priority_Mask.
+ *  The basic major and minor values calculated by @ref _Priority_Major
+ *  and @ref _Priority_Minor are "massaged" by @ref _CPU_Priority_bits_index
+ *  to properly range between the values returned by the "find first bit"
+ *  instruction.  This makes it possible for @ref _Priority_Get_highest to
+ *  calculate the major and directly index into the minor table.
+ *  This mapping is necessary to ensure that 0 (a high priority major/minor)
+ *  is the first bit found.
+ *
+ *  This entire "find first bit" and mapping process depends heavily
+ *  on the manner in which a priority is broken into a major and minor
+ *  components with the major being the 4 MSB of a priority and minor
+ *  the 4 LSB.  Thus (0 << 4) + 0 corresponds to priority 0 -- the highest
+ *  priority.  And (15 << 4) + 14 corresponds to priority 254 -- the next
+ *  to the lowest priority.
+ *
+ *  If your CPU does not have a "find first bit" instruction, then
+ *  there are ways to make do without it.  Here are a handful of ways
+ *  to implement this in software:
+ *
+@verbatim
+      - a series of 16 bit test instructions
+      - a "binary search using if's"
+      - _number = 0
+        if _value > 0x00ff
+          _value >>=8
+          _number = 8;
+
+        if _value > 0x0000f
+          _value >=8
+          _number += 4
+
+        _number += bit_set_table[ _value ]
+@endverbatim
+
+ *    where bit_set_table[ 16 ] has values which indicate the first
+ *      bit set
+ *
+ *  @param[in] _value is the value to be scanned
+ *  @param[in] _output is the first bit set
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+
+#if (CPU_USE_GENERIC_BITFIELD_CODE == FALSE)
+#define _CPU_Bitfield_Find_first_bit( _value, _output ) \
+  { \
+    (_output) = 0;   /* do something to prevent warnings */ \
+  }
+#endif
+
+/* end of Bitfield handler macros */
+
+/**
+ *  This routine builds the mask which corresponds to the bit fields
+ *  as searched by @ref _CPU_Bitfield_Find_first_bit.  See the discussion
+ *  for that routine.
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+#if (CPU_USE_GENERIC_BITFIELD_CODE == FALSE)
+
+#define _CPU_Priority_Mask( _bit_number ) \
+  ( 1 << (_bit_number) )
+
+#endif
+
+/**
+ *  @ingroup CPUBitfield
+ *  This routine translates the bit numbers returned by
+ *  @ref _CPU_Bitfield_Find_first_bit into something suitable for use as
+ *  a major or minor component of a priority.  See the discussion
+ *  for that routine.
+ *
+ *  @param[in] _priority is the major or minor number to translate
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+#if (CPU_USE_GENERIC_BITFIELD_CODE == FALSE)
+
+#define _CPU_Priority_bits_index( _priority ) \
+  (_priority)
+
+#endif
+
+/* end of Priority handler macros */
+
+/* functions */
+
+/**
+ *  This routine performs CPU dependent initialization.
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+void _CPU_Initialize(void);
+
+/**
+ *  @ingroup CPUInterrupt
+ *  This routine installs a "raw" interrupt handler directly into the
+ *  processor's vector table.
+ *
+ *  @param[in] vector is the vector number
+ *  @param[in] new_handler is the raw ISR handler to install
+ *  @param[in] old_handler is the previously installed ISR Handler
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+void _CPU_ISR_install_raw_handler(
+  uint32_t    vector,
+  proc_ptr    new_handler,
+  proc_ptr   *old_handler
+);
+
+/**
+ *  @ingroup CPUInterrupt
+ *  This routine installs an interrupt vector.
+ *
+ *  @param[in] vector is the vector number
+ *  @param[in] new_handler is the RTEMS ISR handler to install
+ *  @param[in] old_handler is the previously installed ISR Handler
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+void _CPU_ISR_install_vector(
+  uint32_t    vector,
+  proc_ptr    new_handler,
+  proc_ptr   *old_handler
+);
+
+/**
+ *  @ingroup CPUInterrupt
+ *  This routine installs the hardware interrupt stack pointer.
+ *
+ *  @note  It need only be provided if @ref CPU_HAS_HARDWARE_INTERRUPT_STACK
+ *         is TRUE.
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+void _CPU_Install_interrupt_stack( void );
+
+/**
+ *  This routine is the CPU dependent IDLE thread body.
+ *
+ *  @note  It need only be provided if @ref CPU_PROVIDES_IDLE_THREAD_BODY
+ *         is TRUE.
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+void *_CPU_Thread_Idle_body( uintptr_t ignored );
+
+/**
+ *  @ingroup CPUContext
+ *  This routine switches from the run context to the heir context.
+ *
+ *  @param[in] run points to the context of the currently executing task
+ *  @param[in] heir points to the context of the heir task
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+void _CPU_Context_switch(
+  Context_Control  *run,
+  Context_Control  *heir
+);
+
+/**
+ *  @ingroup CPUContext
+ *  This routine is generally used only to restart self in an
+ *  efficient manner.  It may simply be a label in @ref _CPU_Context_switch.
+ *
+ *  @param[in] new_context points to the context to be restored.
+ *
+ *  @note May be unnecessary to reload some registers.
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+void _CPU_Context_restore(
+  Context_Control *new_context
+);
+
+/**
+ *  @ingroup CPUContext
+ *  This routine saves the floating point context passed to it.
+ *
+ *  @param[in] fp_context_ptr is a pointer to a pointer to a floating
+ *  point context area
+ *
+ *  @return on output @a *fp_context_ptr will contain the address that
+ *  should be used with @ref _CPU_Context_restore_fp to restore this context.
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+void _CPU_Context_save_fp(
+  Context_Control_fp **fp_context_ptr
+);
+
+/**
+ *  @ingroup CPUContext
+ *  This routine restores the floating point context passed to it.
+ *
+ *  @param[in] fp_context_ptr is a pointer to a pointer to a floating
+ *  point context area to restore
+ *
+ *  @return on output @a *fp_context_ptr will contain the address that
+ *  should be used with @ref _CPU_Context_save_fp to save this context.
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+void _CPU_Context_restore_fp(
+  Context_Control_fp **fp_context_ptr
+);
+
+/**
+ *  @ingroup CPUEndian
+ *  The following routine swaps the endian format of an unsigned int.
+ *  It must be static because it is referenced indirectly.
+ *
+ *  This version will work on any processor, but if there is a better
+ *  way for your CPU PLEASE use it.  The most common way to do this is to:
+ *
+ *     swap least significant two bytes with 16-bit rotate
+ *     swap upper and lower 16-bits
+ *     swap most significant two bytes with 16-bit rotate
+ *
+ *  Some CPUs have special instructions which swap a 32-bit quantity in
+ *  a single instruction (e.g. i486).  It is probably best to avoid
+ *  an "endian swapping control bit" in the CPU.  One good reason is
+ *  that interrupts would probably have to be disabled to ensure that
+ *  an interrupt does not try to access the same "chunk" with the wrong
+ *  endian.  Another good reason is that on some CPUs, the endian bit
+ *  endianness for ALL fetches -- both code and data -- so the code
+ *  will be fetched incorrectly.
+ *
+ *  @param[in] value is the value to be swapped
+ *  @return the value after being endian swapped
+ *
+ *  Port Specific Information:
+ *
+ *  XXX document implementation including references if appropriate
+ */
+static inline uint32_t CPU_swap_u32(
+  uint32_t value
+)
+{
+  uint32_t byte1, byte2, byte3, byte4, swapped;
+
+  byte4 = (value >> 24) & 0xff;
+  byte3 = (value >> 16) & 0xff;
+  byte2 = (value >> 8)  & 0xff;
+  byte1 =  value        & 0xff;
+
+  swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;
+  return swapped;
+}
+
+/**
+ *  @ingroup CPUEndian
+ *  This routine swaps a 16 bir quantity.
+ *
+ *  @param[in] value is the value to be swapped
+ *  @return the value after being endian swapped
+ */
+#define CPU_swap_u16( value ) \
+  (((value&0xff) << 8) | ((value >> 8)&0xff))
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/rtems/sched_cpu/rtems/score/cpu_asm.h:1.1
--- /dev/null   Fri Dec 17 09:11:02 2010
+++ rtems/tools/schedsim/rtems/sched_cpu/rtems/score/cpu_asm.h  Fri Dec 17 08:51:56 2010
</font><font color='#997700'>@@ -0,0 +1,74 @@
</font><font color='#000088'>+/**
+ * @file rtems/score/cpu_asm.h
+ */
+
+/*
+ *  BASED UPON SOURCE IN RTEMS, MODIFIED FOR SIMULATOR
+ *
+ *  Very loose template for an include file for the cpu_asm.? file
+ *  if it is implemented as a ".S" file (preprocessed by cpp) instead
+ *  of a ".s" file (preprocessed by gm4 or gasp).
+ *
+ *  COPYRIGHT (c) 1989-2010.
+ *  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$
+ *
+ */
+
+#ifndef _RTEMS_SCORE_CPU_ASM_H
+#define _RTEMS_SCORE_CPU_ASM_H
+
+/* pull in the generated offsets */
+
+#include <rtems/score/offsets.h>
+
+/*
+ * Hardware General Registers
+ */
+
+/* put something here */
+
+/*
+ * Hardware Floating Point Registers
+ */
+
+/* put something here */
+
+/*
+ * Hardware Control Registers
+ */
+
+/* put something here */
+
+/*
+ * Calling Convention
+ */
+
+/* put something here */
+
+/*
+ * Temporary registers
+ */
+
+/* put something here */
+
+/*
+ * Floating Point Registers - SW Conventions
+ */
+
+/* put something here */
+
+/*
+ * Temporary floating point registers
+ */
+
+/* put something here */
+
+#endif
+
+/* end of file */
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/rtems/sched_cpu/rtems/score/cpuopts.h:1.1
--- /dev/null   Fri Dec 17 09:11:02 2010
+++ rtems/tools/schedsim/rtems/sched_cpu/rtems/score/cpuopts.h  Fri Dec 17 08:51:56 2010
</font><font color='#997700'>@@ -0,0 +1,72 @@
</font><font color='#000088'>+/**
+ * @file rtems/score/cpuopts.h
+ */
+
+/*  BASED UPON SOURCE IN RTEMS, MODIFIED FOR SIMULATOR */
+
+/* target cpu dependent options file */
+/* automatically generated -- DO NOT EDIT!! */
+#ifndef _RTEMS_SCORE_CPUOPTS_H
+#define _RTEMS_SCORE_CPUOPTS_H
+
+/* This is added by hand to indicate we are on the RTEMS Scheduler Simulator */
+#define RTEMS_SCHEDSIM
+
+/* if RTEMS_DEBUG is enabled */
+/* #undef RTEMS_DEBUG */
+
+/* if itron api is supported */
+/* #undef RTEMS_ITRON_API */
+
+/* if multiprocessing is enabled */
+/* #undef RTEMS_MULTIPROCESSING */
+
+/* if using newlib */
+#define RTEMS_NEWLIB 1
+
+/* if posix api is supported */
+/* #undef RTEMS_POSIX_API */
+
+/* if networking is enabled */
+#define RTEMS_NETWORKING 1
+
+/* if RTEMS uses tar.h */
+#define RTEMS_USES_TAR_H 1
+
+/* RTEMS version string */
+#define RTEMS_VERSION "4.9.99.0"
+
+/* disable nanosecond granularity for statistics */
+/* #undef __RTEMS_USE_TICKS_FOR_STATISTICS__ */
+
+/* disable nanosecond granularity for cpu usage statistics */
+/* #undef __RTEMS_USE_TICKS_CPU_USAGE_STATISTICS__ */
+
+/* disable nanosecond granularity for period statistics */
+/* #undef __RTEMS_USE_TICKS_RATE_MONOTONIC_STATISTICS__ */
+
+/* disable inlining _Thread_Enable_dispatch */
+/* #undef __RTEMS_DO_NOT_INLINE_THREAD_ENABLE_DISPATCH__ */
+
+/* disable inlining _Thread_Enable_dispatch */
+/* #undef __RTEMS_DO_NOT_INLINE_CORE_MUTEX_SEIZE__ */
+
+/* disable inlining _Thread_queue_Enqueue_priority */
+/* #undef __RTEMS_DO_NOT_UNROLL_THREADQ_ENQUEUE_PRIORITY__ */
+
+/* disable strict order mutex */
+/* #undef __RTEMS_STRICT_ORDER_MUTEX__ */
+
+/* Define to 1 if ada/gnat bindings are built-in */
+#define __RTEMS_ADA__ 1
+
+/* major version portion of an RTEMS release */
+#define __RTEMS_MAJOR__ 4
+
+/* minor version portion of an RTEMS release */
+#define __RTEMS_MINOR__ 9
+
+/* revision version portion of an RTEMS release */
+#define __RTEMS_REVISION__ 99
+
+#endif /* _RTEMS_SCORE_CPUOPTS_H */
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/rtems/sched_cpu/rtems/score/no_cpu.h:1.1
--- /dev/null   Fri Dec 17 09:11:03 2010
+++ rtems/tools/schedsim/rtems/sched_cpu/rtems/score/no_cpu.h   Fri Dec 17 08:51:56 2010
</font><font color='#997700'>@@ -0,0 +1,59 @@
</font><font color='#000088'>+/*  no_cpu.h
+ *
+ *  BASED UPON SOURCE IN RTEMS, MODIFIED FOR SIMULATOR
+ *
+ *  This file sets up basic CPU dependency settings based on
+ *  compiler settings.  For example, it can determine if
+ *  floating point is available.  This particular implementation
+ *  is specified to the NO CPU port.
+ *
+ *
+ *  COPYRIGHT (c) 1989-2010.
+ *  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$
+ *
+ */
+
+#ifndef _RTEMS_SCORE_NO_CPU_H
+#define _RTEMS_SCORE_NO_CPU_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ *  This file contains the information required to build
+ *  RTEMS for a particular member of the NO CPU family.
+ *  It does this by setting variables to indicate which
+ *  implementation dependent features are present in a particular
+ *  member of the family.
+ *
+ *  This is a good place to list all the known CPU models
+ *  that this port supports and which RTEMS CPU model they correspond
+ *  to.
+ */
+
+/*
+ *  Figure out all CPU Model Feature Flags based upon compiler
+ *  predefines.
+ */
+
+#define CPU_MODEL_NAME  ""
+#define NOCPU_HAS_FPU   1
+
+/*
+ *  Define the name of the CPU family.
+ */
+
+#define CPU_NAME "RTEMS Sheduler Simulator"
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RTEMS_SCORE_NO_CPU_H */
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/rtems/sched_cpu/rtems/score/types.h:1.1
--- /dev/null   Fri Dec 17 09:11:03 2010
+++ rtems/tools/schedsim/rtems/sched_cpu/rtems/score/types.h    Fri Dec 17 08:51:56 2010
</font><font color='#997700'>@@ -0,0 +1,51 @@
</font><font color='#000088'>+/**
+ * @file rtems/score/types.h
+ */
+
+/*
+ *  BASED UPON SOURCE IN RTEMS, MODIFIED FOR SIMULATOR
+ *
+ *  This include file contains type definitions pertaining to the Intel
+ *  no_cpu processor family.
+ *
+ *  COPYRIGHT (c) 1989-2010.
+ *  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$
+ */
+
+#ifndef _RTEMS_SCORE_TYPES_H
+#define _RTEMS_SCORE_TYPES_H
+
+#include <rtems/score/basedefs.h>
+
+#ifndef ASM
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ *  This section defines the basic types for this processor.
+ */
+
+/** This defines the type for a priority bit map entry. */
+typedef uint16_t Priority_bit_map_Control;
+
+/** This defines the return type for an ISR entry point. */
+typedef void no_cpu_isr;
+
+/** This defines the prototype for an ISR entry point. */
+typedef no_cpu_isr ( *no_cpu_isr_entry )( void );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  /* !ASM */
+
+#endif
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/rtems/sched_cpu/rtems/stringto.h:1.1
--- /dev/null   Fri Dec 17 09:11:03 2010
+++ rtems/tools/schedsim/rtems/sched_cpu/rtems/stringto.h       Fri Dec 17 08:51:56 2010
</font><font color='#997700'>@@ -0,0 +1 @@
</font><font color='#000088'>+#include <stringto.h>
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/rtems/wkspace.c:1.1
--- /dev/null   Fri Dec 17 09:11:03 2010
+++ rtems/tools/schedsim/rtems/wkspace.c        Fri Dec 17 08:51:56 2010
</font><font color='#997700'>@@ -0,0 +1,101 @@
</font><font color='#000088'>+/*
+ *  BASED UPON SOURCE IN RTEMS, MODIFIED FOR SIMULATOR
+ *
+ *  Workspace Handler
+ *
+ *  COPYRIGHT (c) 1989-2010.
+ *  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$
+ */
+
+#if HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <rtems/system.h>
+#include <rtems/score/wkspace.h>
+#include <rtems/score/interr.h>
+
+#include <stdlib.h>
+
+#if defined(DEBUG_WORKSPACE)
+  #include <stdio.h>
+#endif
+
+/*
+ *  _Workspace_Handler_initialization
+ */
+void _Workspace_Handler_initialization(void)
+{
+}
+
+/*
+ *  _Workspace_Allocate
+ */
+void *_Workspace_Allocate(
+  size_t   size
+)
+{
+  void *memory;
+
+  memory = calloc( 1, size );
+  #if defined(DEBUG_WORKSPACE)
+    fprintf(
+      stderr,
+      "Workspace_Allocate(%d) from %p/%p -> %p\n",
+      size,
+      __builtin_return_address( 0 ),
+      __builtin_return_address( 1 ),
+      memory
+    );
+  #endif
+  return memory;
+}
+
+/*
+ *  _Workspace_Free
+ */
+bool _Workspace_Free(
+  void *block
+)
+{
+  #if defined(DEBUG_WORKSPACE)
+    fprintf(
+      stderr,
+      block,
+      __builtin_return_address( 0 ),
+      __builtin_return_address( 1 )
+    );
+  #endif
+  free( block );
+  return true;
+}
+
+/*
+ *  _Workspace_Allocate_or_fatal_error
+ */
+void *_Workspace_Allocate_or_fatal_error(
+  size_t      size
+)
+{
+  void *memory;
+
+  memory = calloc( 1, size );
+  #if defined(DEBUG_WORKSPACE)
+    fprintf(
+      stderr,
+      "Workspace_Allocate_or_fatal_error(%d) from %p/%p -> %p\n",
+      size,
+      __builtin_return_address( 0 ),
+      __builtin_return_address( 1 ),
+      memory
+    );
+  #endif
+
+  return memory;
+}
</font></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>2010-12-17 Joel Sherrill <joel.sherrill@oarcorp.com>

        * .cvsignore: New file.
</pre></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/rtems/.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">tools/schedsim/rtems/.cvsignore</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/rtems/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%'>tools/schedsim/rtems/ChangeLog</td></tr>
</table>
<pre>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/rtems/.cvsignore:1.1
--- /dev/null   Fri Dec 17 09:11:03 2010
+++ rtems/tools/schedsim/rtems/.cvsignore       Fri Dec 17 08:53:04 2010
</font><font color='#997700'>@@ -0,0 +1,2 @@
</font><font color='#000088'>+Makefile
+Makefile.in
</font>
<font color='#006600'>diff -u rtems/tools/schedsim/rtems/ChangeLog:1.1 rtems/tools/schedsim/rtems/ChangeLog:1.2
--- rtems/tools/schedsim/rtems/ChangeLog:1.1    Fri Dec 17 08:51:56 2010
+++ rtems/tools/schedsim/rtems/ChangeLog        Fri Dec 17 08:53:04 2010
</font><font color='#997700'>@@ -1,4 +1,8 @@
</font> 2010-12-17        Joel Sherrill <joel.sherrill@oarcorp.com>
<font color='#000088'>+
+       * .cvsignore: New file.
+
+2010-12-17     Joel Sherrill <joel.sherrill@oarcorp.com>
</font>           Jennifer Averett <jennifer.averett@oarcorp.com>
 
        Add RTEMS Scheduler Simulator.  This is the RTEMS "port" to and
</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>2010-12-17 Joel Sherrill <joel.sherrill@oarcorp.com>
                Jennifer Averett <jennifer.averett@oarcorp.com>

        Add RTEMS Scheduler Simulator.  This is the top level of the tree.
        * .cvsignore, ChangeLog, Makefile.am, configure.ac: New files.
</pre></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/.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">tools/schedsim/.cvsignore</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/ChangeLog?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">tools/schedsim/ChangeLog</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/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">tools/schedsim/Makefile.am</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/tools/schedsim/configure.ac?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">tools/schedsim/configure.ac</font></td></tr>
</table>
<pre>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/.cvsignore:1.1
--- /dev/null   Fri Dec 17 09:11:03 2010
+++ rtems/tools/schedsim/.cvsignore     Fri Dec 17 08:53:29 2010
</font><font color='#997700'>@@ -0,0 +1,16 @@
</font><font color='#000088'>+aclocal.m4
+autom4te*.cache
+config.cache
+config.guess
+config.h.in
+config.log
+config.status
+config.sub
+configure
+depcomp
+install-sh
+Makefile
+Makefile.in
+missing
+mkinstalldirs
+stamp-h.in
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/ChangeLog:1.1
--- /dev/null   Fri Dec 17 09:11:03 2010
+++ rtems/tools/schedsim/ChangeLog      Fri Dec 17 08:53:29 2010
</font><font color='#997700'>@@ -0,0 +1,6 @@
</font><font color='#000088'>+2010-12-17    Joel Sherrill <joel.sherrill@oarcorp.com>
+               Jennifer Averett <jennifer.averett@oarcorp.com>
+
+       Add RTEMS Scheduler Simulator.  This is the top level of the tree.
+       * .cvsignore, ChangeLog, Makefile.am, configure.ac: New files.
+
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/Makefile.am:1.1
--- /dev/null   Fri Dec 17 09:11:03 2010
+++ rtems/tools/schedsim/Makefile.am    Fri Dec 17 08:53:29 2010
</font><font color='#997700'>@@ -0,0 +1,12 @@
</font><font color='#000088'>+##
+## $Id$
+##
+
+ACLOCAL_AMFLAGS = -I ../../aclocal
+
+SUBDIRS = rtems shell<span style="background-color: #FF0000"> </span>
+
+DIST_SUBDIRS = rtems shell
+
+include $(top_srcdir)/../../automake/subdirs.am
+include $(top_srcdir)/../../automake/host.am
</font>
<font color='#006600'>diff -u /dev/null rtems/tools/schedsim/configure.ac:1.1
--- /dev/null   Fri Dec 17 09:11:04 2010
+++ rtems/tools/schedsim/configure.ac   Fri Dec 17 08:53:29 2010
</font><font color='#997700'>@@ -0,0 +1,32 @@
</font><font color='#000088'>+## Process this file with autoconf to produce a configure script.
+##<span style="background-color: #FF0000"> </span>
+## $Id$
+
+AC_PREREQ(2.60)
+AC_INIT([rtems-tools-schedsim],[_RTEMS_VERSION],[http://www.rtems.org/bugzilla])
+AC_CONFIG_SRCDIR([rtems])
+RTEMS_TOP(../..)
+
+RTEMS_CANONICAL_TARGET_CPU
+
+AM_INIT_AUTOMAKE([no-define foreign 1.10])
+AM_MAINTAINER_MODE
+
+RTEMS_PATH_KSH
+
+AC_PROG_RANLIB
+AC_PROG_CC
+AC_PROG_CXX
+
+RTEMS_TOOLPATHS
+AC_SUBST(program_prefix)
+
+# Explicitly list all Makefiles here
+AC_CONFIG_FILES([
+Makefile
+rtems/Makefile
+shell/Makefile
+shell/shared/Makefile
+shell/schedsim_priority/Makefile
+])
+AC_OUTPUT
</font></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>2010-12-17 Joel Sherrill <joel.sherrill@oarcorp.com>
                Jennifer Averett <jennifer.averett@oarcorp.com>

        Add RTEMS Scheduler Simulator.
        * sapi/include/confdefs.h: This adds some simple conditional
        logic to disable portions of the configuration that are NOT supported
        when configuring an RTEMS instance for use with a Scheduler Simulator
        instance.
</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.2665&r2=text&tr2=1.2666&diff_format=h">M</a></td><td width='1%'>1.2666</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/confdefs.h.diff?r1=text&tr1=1.152&r2=text&tr2=1.153&diff_format=h">M</a></td><td width='1%'>1.153</td><td width='100%'>cpukit/sapi/include/confdefs.h</td></tr>
</table>
<pre>
<font color='#006600'>diff -u rtems/cpukit/ChangeLog:1.2665 rtems/cpukit/ChangeLog:1.2666
--- rtems/cpukit/ChangeLog:1.2665       Thu Dec 16 09:46:34 2010
+++ rtems/cpukit/ChangeLog      Fri Dec 17 08:56:05 2010
</font><font color='#997700'>@@ -1,3 +1,12 @@
</font><font color='#000088'>+2010-12-17    Joel Sherrill <joel.sherrill@oarcorp.com>
+               Jennifer Averett <jennifer.averett@oarcorp.com>
+
+       Add RTEMS Scheduler Simulator.
+       * sapi/include/confdefs.h: This adds some simple conditional
+       logic to disable portions of the configuration that are NOT supported
+       when configuring an RTEMS instance for use with a Scheduler Simulator
+       instance.<span style="background-color: #FF0000"> </span>
+
</font> 2010-12-16        Sebastian Huber <sebastian.huber@embedded-brains.de>
 
        * libmisc/cpuuse/cpuusagereport.c: We have to take the time since the

<font color='#006600'>diff -u rtems/cpukit/sapi/include/confdefs.h:1.152 rtems/cpukit/sapi/include/confdefs.h:1.153
--- rtems/cpukit/sapi/include/confdefs.h:1.152  Thu Nov 25 07:24:25 2010
+++ rtems/cpukit/sapi/include/confdefs.h        Fri Dec 17 08:56:06 2010
</font><font color='#997700'>@@ -63,12 +63,17 @@
</font>  *  This macro determines whether the RTEMS reentrancy support for
  *  the Newlib C Library is enabled.
  */
<font color='#000088'>+#ifdef RTEMS_SCHEDSIM
+  #undef RTEMS_NEWLIB
+#endif
+
</font> #if (defined(RTEMS_NEWLIB) && !defined(CONFIGURE_DISABLE_NEWLIB_REENTRANCY))
   #define CONFIGURE_NEWLIB_EXTENSION 1
 #else
   #define CONFIGURE_NEWLIB_EXTENSION 0
 #endif
 
<font color='#000088'>+#ifndef RTEMS_SCHEDSIM
</font> #include <rtems/libio.h>
 
 #ifdef CONFIGURE_INIT
<font color='#997700'>@@ -93,7 +98,7 @@
</font>     rtems_filesystem_initialize;
     #endif
 #endif
<font color='#880000'>-
</font><font color='#000088'>+#endif
</font> 
 /*
  *  If the application disables the filesystem, they will not need
<font color='#997700'>@@ -262,6 +267,7 @@
</font> 
 #endif
 
<font color='#000088'>+#ifndef RTEMS_SCHEDSIM
</font> /**
  * IMFS
  */
<font color='#997700'>@@ -286,6 +292,7 @@
</font>   #define CONFIGURE_FILESYSTEM_ENTRY_miniIMFS \
     { RTEMS_FILESYSTEM_TYPE_MINIIMFS, miniIMFS_initialize }
 #endif
<font color='#000088'>+#endif
</font> 
 /**
  *  Internall it is called FIFOs not pipes
<font color='#997700'>@@ -294,6 +301,7 @@
</font>   #define CONFIGURE_FIFOS_ENABLED
 #endif
 
<font color='#000088'>+#ifndef RTEMS_SCHEDSIM
</font> /**
  *  This defines the IMFS file system table entry.
  */<span style="background-color: #FF0000"> </span>
<font color='#997700'>@@ -307,6 +315,7 @@
</font>       { RTEMS_FILESYSTEM_TYPE_IMFS, IMFS_initialize }
   #endif
 #endif
<font color='#000088'>+#endif
</font> 
 /**
  *  This sets up the resources for the PIPES/FIFOs
<font color='#997700'>@@ -412,16 +421,19 @@
</font>     #define CONFIGURE_MEMORY_FOR_DEVFS  0
   #endif
 
<font color='#000088'>+#ifndef RTEMS_SCHEDSIM
</font>   #if defined(CONFIGURE_FILESYSTEM_IMFS) || \
       defined(CONFIGURE_FILESYSTEM_MINIIMFS)
     int imfs_rq_memfile_bytes_per_block = CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK;
   #endif
<font color='#000088'>+#endif
</font> 
   /**
    * Table termination record.
    */
   #define CONFIGURE_FILESYSTEM_NULL { NULL, NULL }
 
<font color='#000088'>+#ifndef RTEMS_SCHEDSIM
</font>   /**
    * The default file system table. Must be terminated with the NULL entry if
    * you provide your own.
<font color='#997700'>@@ -484,6 +496,7 @@
</font>   #endif
 
 #endif
<font color='#000088'>+#endif
</font> 
 /*
  *  STACK_CHECER_ON was still available in 4.9 so give a warning for now.
<font color='#997700'>@@ -1683,6 +1696,8 @@
</font>   #define CONFIGURE_GOROUTINES_TASK_VARIABLES   0
   #define CONFIGURE_MAXIMUM_GO_CHANNELS         0
 #endif
<font color='#000088'>+
+#ifndef RTEMS_SCHEDSIM
</font> /**
  *  This macro specifies the amount of memory to be reserved for the
  *  Newlib C Library reentrancy structure -- if we are using newlib.
<font color='#997700'>@@ -1697,6 +1712,11 @@
</font>   #define CONFIGURE_MEMORY_PER_TASK_FOR_NEWLIB 0
 #endif
 
<font color='#000088'>+#else
+  #define CONFIGURE_MEMORY_PER_TASK_FOR_NEWLIB 0
+#endif
+
+
</font> /*
  *  Calculate the RAM size based on the maximum number of objects configured.
  */
<font color='#997700'>@@ -2191,6 +2211,7 @@
</font>   #endif
 #endif
 
<font color='#000088'>+#ifndef RTEMS_SCHEDSIM
</font> /*
  *  Make sure at least one of the initialization task/thread
  *  tables was defined.
<font color='#997700'>@@ -2200,6 +2221,7 @@
</font>     !defined(CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION)
 #error "CONFIGURATION ERROR: No initialization tasks or threads configured!!"
 #endif
<font color='#000088'>+#endif
</font> 
 /*
  *  If the user is trying to configure a multiprocessing application and
<font color='#997700'>@@ -2232,6 +2254,7 @@
</font>   #endif
 #endif
 
<font color='#000088'>+#ifndef RTEMS_SCHEDSIM
</font> /*
  *  You must either explicity include or exclude the clock driver.
  *  It is such a common newbie error to leave it out.  Maybe this
<font color='#997700'>@@ -2249,6 +2272,7 @@
</font>     #error "CONFIGURATION ERROR: Do you want the clock driver or not?!?"
    #endif
 #endif
<font color='#000088'>+#endif
</font> 
 /*
  *  These names have been obsoleted so make the user application stop compiling
</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>