diff options
Diffstat (limited to '')
66 files changed, 0 insertions, 6230 deletions
diff --git a/tools/schedsim/.cvsignore b/tools/schedsim/.cvsignore deleted file mode 100644 index 5c181fbb08..0000000000 --- a/tools/schedsim/.cvsignore +++ /dev/null @@ -1,16 +0,0 @@ -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 diff --git a/tools/schedsim/ChangeLog b/tools/schedsim/ChangeLog deleted file mode 100644 index 6e046b05e9..0000000000 --- a/tools/schedsim/ChangeLog +++ /dev/null @@ -1,27 +0,0 @@ -2011-05-13 Ralf Corsépius <ralf.corsepius@rtems.org> - - * rtems/interr.c: Minimize diffs to cpukit/score/src/interr.c. - * rtems/sched_cpu/rtems/score/cpu.h: - Incorporate parts of former posix BSP. - -2011-04-07 Joel Sherrill <joel.sherrill@oarcorp.com> - - * README: New file. - -2011-02-02 Ralf Corsépius <ralf.corsepius@rtems.org> - - * configure.ac: Require autoconf-2.68, automake-1.11.1. - -2011-01-28 Ralf Corsépius <ralf.corsepius@rtems.org> - - * configure.ac: Remove RTEMS_PATH_KSH (Unused). - Require autoconf >= 2.68, automake >= 1.11.1. - Add AC_PROG_CC_C99 to enforce c99 hoping this will suffice to make - this stuff compilable with older GCCs (works on some hosts). - -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. - diff --git a/tools/schedsim/Makefile.am b/tools/schedsim/Makefile.am deleted file mode 100644 index 5f66acc40e..0000000000 --- a/tools/schedsim/Makefile.am +++ /dev/null @@ -1,12 +0,0 @@ -## -## $Id$ -## - -ACLOCAL_AMFLAGS = -I ../../aclocal - -SUBDIRS = rtems shell - -DIST_SUBDIRS = rtems shell - -include $(top_srcdir)/../../automake/subdirs.am -include $(top_srcdir)/../../automake/host.am diff --git a/tools/schedsim/README b/tools/schedsim/README deleted file mode 100644 index 0d8275e99e..0000000000 --- a/tools/schedsim/README +++ /dev/null @@ -1,100 +0,0 @@ -# -# $Id$ -# - -This is a simulation shell which wraps parts of the RTEMS SuperCore -and provides a way to test scheduler implementations. - -The following commands are currently available - -echo -help -exit - -rtems_init - -task_create name priority -task_delete name|id -task_mode [-tTpP] - -t - disable timeslicing - -T - enable timeslicing - -t - disable preemption - -T - enable enable -task_priority name|id priority -task_resume name|id -task_suspend name|id -task_wake_after ticks - -clock_tick ticks - -@ - - -1.6 -log -@2010-04-08 Joel Sherrill <joel.sherrill@@oarcorp.com> - - * README: Add task suspend and resume. -@ -text -@d2 1 -a2 1 -# $Id$ -d17 1 -a17 1 -task_delete [name|id] -d23 3 -a25 3 -task_set_priority [name|id] priority -task_resume [name|id] -task_suspend [name|id] -d30 15 -@ - - -1.5 -log -@2010-04-08 Joel Sherrill <joel.sherrill@@oarcorp.com> - - * README: Added task_mode command. -@ -text -@d2 1 -a2 1 -# $Id$ -d17 1 -d24 2 -a26 1 -task_delete [name|id] -@ - - -1.4 -log -@2010-04-08 Joel Sherrill <joel.sherrill@@oarcorp.com> - - * README: Add task set priority, task wake after, and clock tick. -@ -text -@d2 1 -semaphore_create [-bcsfpiC:V:] name - -b - binary mutex - -c - counting semaphore - -s - simple binary semaphore - -f - FIFO Blocking - -p - Priority Blocking - -i - Priority Inheritance - -C priority - Priority Ceiling and priority - -V initial - Initial value (default=0) -semaphore_delete name|id -semaphore_obtain name|id ticks - NOTE: no polling supported yet -semaphore_release name|id -semaphore_flush name|id - -executing -heir - -The task names are of Classic API form. They can be up to four characters. -They should not start with "0" since that is the test used to determine if -it is a hexadecimal task id. diff --git a/tools/schedsim/configure.ac b/tools/schedsim/configure.ac deleted file mode 100644 index 244ee5ad0d..0000000000 --- a/tools/schedsim/configure.ac +++ /dev/null @@ -1,34 +0,0 @@ -## Process this file with autoconf to produce a configure script. -## -## $Id$ - -AC_PREREQ([2.68]) -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.11.1]) -AM_MAINTAINER_MODE - -AC_PROG_RANLIB -# FIXME: Hack to enforce gnu99 on systems with GCC which do not default to gnu99 -AC_PROG_CC_C99 -AC_PROG_CXX -# FIXME: Should abort if c99 or c++ are not available. -# FIXME: Should abort on systems without GCC. - -# FIXME: This package is not a tool, it's a separate, hacked up RTEMS port -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 diff --git a/tools/schedsim/rtems/.cvsignore b/tools/schedsim/rtems/.cvsignore deleted file mode 100644 index 282522db03..0000000000 --- a/tools/schedsim/rtems/.cvsignore +++ /dev/null @@ -1,2 +0,0 @@ -Makefile -Makefile.in diff --git a/tools/schedsim/rtems/ChangeLog b/tools/schedsim/rtems/ChangeLog deleted file mode 100644 index 22d4c315ca..0000000000 --- a/tools/schedsim/rtems/ChangeLog +++ /dev/null @@ -1,29 +0,0 @@ -2011-04-11 Joel Sherrill <joel.sherrill@oarcorp.com> - - * Makefile.am: Add schedulersimple.h - -2011-04-07 Joel Sherrill <joel.sherrill@oarcorp.com> - - * Makefile.am, wkspace.c: Compiles now and do not core dump when RTEMS - is not initialized. - -2011-02-28 Joel Sherrill <joel.sherrill@oarcorp.com> - - * sched_cpu/rtems/score/cpuopts.h: Bump to 4.10.99.0 - -2010-12-17 Joel Sherrill <joel.sherrill@oarcorp.com> - - * .cvsignore: New file. - -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. - diff --git a/tools/schedsim/rtems/Makefile.am b/tools/schedsim/rtems/Makefile.am deleted file mode 100644 index a143ee3172..0000000000 --- a/tools/schedsim/rtems/Makefile.am +++ /dev/null @@ -1,395 +0,0 @@ -## -## $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/schedulerpriorityallocate.c -librtems_a_SOURCES += $(cpukitdir)/score/src/schedulerpriorityblock.c -librtems_a_SOURCES += $(cpukitdir)/score/src/schedulerpriority.c -librtems_a_SOURCES += $(cpukitdir)/score/src/schedulerpriorityenqueue.c -librtems_a_SOURCES += $(cpukitdir)/score/src/schedulerpriorityenqueuefirst.c -librtems_a_SOURCES += $(cpukitdir)/score/src/schedulerpriorityextract.c -librtems_a_SOURCES += $(cpukitdir)/score/src/schedulerpriorityfree.c -librtems_a_SOURCES += $(cpukitdir)/score/src/schedulerpriorityschedule.c -librtems_a_SOURCES += $(cpukitdir)/score/src/schedulerpriorityunblock.c -librtems_a_SOURCES += $(cpukitdir)/score/src/schedulerpriorityupdate.c -librtems_a_SOURCES += $(cpukitdir)/score/src/schedulerpriorityyield.c -librtems_a_SOURCES += $(cpukitdir)/score/src/schedulersimpleblock.c -librtems_a_SOURCES += $(cpukitdir)/score/src/schedulersimple.c -librtems_a_SOURCES += $(cpukitdir)/score/src/schedulersimpleenqueue.c -librtems_a_SOURCES += $(cpukitdir)/score/src/schedulersimpleenqueuefirst.c -librtems_a_SOURCES += $(cpukitdir)/score/src/schedulersimpleextract.c -librtems_a_SOURCES += $(cpukitdir)/score/src/schedulersimplereadyqueueenqueue.c -librtems_a_SOURCES += $(cpukitdir)/score/src/schedulersimplereadyqueueenqueuefirst.c -librtems_a_SOURCES += $(cpukitdir)/score/src/schedulersimpleschedule.c -librtems_a_SOURCES += $(cpukitdir)/score/src/schedulersimpleunblock.c -librtems_a_SOURCES += $(cpukitdir)/score/src/schedulersimpleyield.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/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/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}/score/include/rtems/bspsmp.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 - -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/schedulersimple.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 - - -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 diff --git a/tools/schedsim/rtems/interr.c b/tools/schedsim/rtems/interr.c deleted file mode 100644 index 526dbe033c..0000000000 --- a/tools/schedsim/rtems/interr.c +++ /dev/null @@ -1,67 +0,0 @@ -/* - * 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> - -/*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 ); - - _CPU_Fatal_halt( the_error ); - - /* will not return from this routine */ - while (true); -} diff --git a/tools/schedsim/rtems/rtems_init.c b/tools/schedsim/rtems/rtems_init.c deleted file mode 100644 index 4e7ab0d353..0000000000 --- a/tools/schedsim/rtems/rtems_init.c +++ /dev/null @@ -1,110 +0,0 @@ -/* - * 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> -#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_set_disable_level(0); - - /* - * Print an initial message - */ - check_heir_and_executing(); -} diff --git a/tools/schedsim/rtems/rtems_sched.h b/tools/schedsim/rtems/rtems_sched.h deleted file mode 100644 index f399f0c1fb..0000000000 --- a/tools/schedsim/rtems/rtems_sched.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - * 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 diff --git a/tools/schedsim/rtems/sched_cpu/cpu.c b/tools/schedsim/rtems/sched_cpu/cpu.c deleted file mode 100644 index 0d2e6f6206..0000000000 --- a/tools/schedsim/rtems/sched_cpu/cpu.c +++ /dev/null @@ -1,169 +0,0 @@ -/* - * 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 */ ; -} diff --git a/tools/schedsim/rtems/sched_cpu/cpu_asm.c b/tools/schedsim/rtems/sched_cpu/cpu_asm.c deleted file mode 100644 index e31c980a25..0000000000 --- a/tools/schedsim/rtems/sched_cpu/cpu_asm.c +++ /dev/null @@ -1,188 +0,0 @@ -/* 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 - */ -} diff --git a/tools/schedsim/rtems/sched_cpu/rtems/asm.h b/tools/schedsim/rtems/sched_cpu/rtems/asm.h deleted file mode 100644 index 8ad1d57032..0000000000 --- a/tools/schedsim/rtems/sched_cpu/rtems/asm.h +++ /dev/null @@ -1,127 +0,0 @@ -/** - * @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 diff --git a/tools/schedsim/rtems/sched_cpu/rtems/score/cpu.h b/tools/schedsim/rtems/sched_cpu/rtems/score/cpu.h deleted file mode 100644 index f47c8c3005..0000000000 --- a/tools/schedsim/rtems/sched_cpu/rtems/score/cpu.h +++ /dev/null @@ -1,1269 +0,0 @@ -/** - * @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 <stdio.h> /* fprintf */ -#include <stdlib.h> /* exit */ - -#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 ) \ - { \ - fprintf( stderr, "FATAL ERROR!!\n" ); \ - exit( -1 ); \ - } - -/* 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 diff --git a/tools/schedsim/rtems/sched_cpu/rtems/score/cpu_asm.h b/tools/schedsim/rtems/sched_cpu/rtems/score/cpu_asm.h deleted file mode 100644 index 7c80adbfd8..0000000000 --- a/tools/schedsim/rtems/sched_cpu/rtems/score/cpu_asm.h +++ /dev/null @@ -1,74 +0,0 @@ -/** - * @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 */ diff --git a/tools/schedsim/rtems/sched_cpu/rtems/score/cpuopts.h b/tools/schedsim/rtems/sched_cpu/rtems/score/cpuopts.h deleted file mode 100644 index 1db8d43ff5..0000000000 --- a/tools/schedsim/rtems/sched_cpu/rtems/score/cpuopts.h +++ /dev/null @@ -1,72 +0,0 @@ -/** - * @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.10.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__ 10 - -/* revision version portion of an RTEMS release */ -#define __RTEMS_REVISION__ 99 - -#endif /* _RTEMS_SCORE_CPUOPTS_H */ diff --git a/tools/schedsim/rtems/sched_cpu/rtems/score/no_cpu.h b/tools/schedsim/rtems/sched_cpu/rtems/score/no_cpu.h deleted file mode 100644 index bb0706fd76..0000000000 --- a/tools/schedsim/rtems/sched_cpu/rtems/score/no_cpu.h +++ /dev/null @@ -1,59 +0,0 @@ -/* 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 */ diff --git a/tools/schedsim/rtems/sched_cpu/rtems/score/types.h b/tools/schedsim/rtems/sched_cpu/rtems/score/types.h deleted file mode 100644 index 10e4f03e70..0000000000 --- a/tools/schedsim/rtems/sched_cpu/rtems/score/types.h +++ /dev/null @@ -1,51 +0,0 @@ -/** - * @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 diff --git a/tools/schedsim/rtems/sched_cpu/rtems/stringto.h b/tools/schedsim/rtems/sched_cpu/rtems/stringto.h deleted file mode 100644 index 9201f5bc0d..0000000000 --- a/tools/schedsim/rtems/sched_cpu/rtems/stringto.h +++ /dev/null @@ -1 +0,0 @@ -#include <stringto.h> diff --git a/tools/schedsim/rtems/wkspace.c b/tools/schedsim/rtems/wkspace.c deleted file mode 100644 index f4209d5f73..0000000000 --- a/tools/schedsim/rtems/wkspace.c +++ /dev/null @@ -1,100 +0,0 @@ -/* - * 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 - */ -void _Workspace_Free( - void *block -) -{ - #if defined(DEBUG_WORKSPACE) - fprintf( - stderr, - block, - __builtin_return_address( 0 ), - __builtin_return_address( 1 ) - ); - #endif - free( block ); -} - -/* - * _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; -} diff --git a/tools/schedsim/shell/.cvsignore b/tools/schedsim/shell/.cvsignore deleted file mode 100644 index 282522db03..0000000000 --- a/tools/schedsim/shell/.cvsignore +++ /dev/null @@ -1,2 +0,0 @@ -Makefile -Makefile.in diff --git a/tools/schedsim/shell/ChangeLog b/tools/schedsim/shell/ChangeLog deleted file mode 100644 index ca335db1a1..0000000000 --- a/tools/schedsim/shell/ChangeLog +++ /dev/null @@ -1,37 +0,0 @@ -2011-04-07 Joel Sherrill <joel.sherrill@oarcorp.com> - - * shared/main_clocktick.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: Compiles now - and do not core dump when RTEMS is not initialized. - -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. - diff --git a/tools/schedsim/shell/Makefile.am b/tools/schedsim/shell/Makefile.am deleted file mode 100644 index 0ed7f0b3b9..0000000000 --- a/tools/schedsim/shell/Makefile.am +++ /dev/null @@ -1,12 +0,0 @@ -## -## $Id$ -## - -ACLOCAL_AMFLAGS = -I ../../aclocal - -SUBDIRS = shared schedsim_priority - -DIST_SUBDIRS = shared schedsim_priority - -include $(top_srcdir)/../../automake/subdirs.am -include $(top_srcdir)/../../automake/host.am diff --git a/tools/schedsim/shell/schedsim_priority/.cvsignore b/tools/schedsim/shell/schedsim_priority/.cvsignore deleted file mode 100644 index 282522db03..0000000000 --- a/tools/schedsim/shell/schedsim_priority/.cvsignore +++ /dev/null @@ -1,2 +0,0 @@ -Makefile -Makefile.in diff --git a/tools/schedsim/shell/schedsim_priority/Makefile.am b/tools/schedsim/shell/schedsim_priority/Makefile.am deleted file mode 100644 index 597cbefb16..0000000000 --- a/tools/schedsim/shell/schedsim_priority/Makefile.am +++ /dev/null @@ -1,32 +0,0 @@ -## -## $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 diff --git a/tools/schedsim/shell/schedsim_priority/config.c b/tools/schedsim/shell/schedsim_priority/config.c deleted file mode 100644 index 227f912389..0000000000 --- a/tools/schedsim/shell/schedsim_priority/config.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <rtems.h> - -#define CONFIGURE_INIT -#define CONFIGURE_MAXIMUM_TASKS 1000 -#define CONFIGURE_MAXIMUM_SEMAPHORES 1000 -#include <confdefs.h> - diff --git a/tools/schedsim/shell/schedsim_priority/printheir_executing.c b/tools/schedsim/shell/schedsim_priority/printheir_executing.c deleted file mode 100644 index b0855d3fc4..0000000000 --- a/tools/schedsim/shell/schedsim_priority/printheir_executing.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * 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( - " Thread Heir: 0x%08x priority=%ld\n", - _Thread_Heir->Object.id, - (long) _Thread_Heir->current_priority - ); -} diff --git a/tools/schedsim/shell/schedsim_priority/schedsim.cc b/tools/schedsim/shell/schedsim_priority/schedsim.cc deleted file mode 100644 index b70dd718ec..0000000000 --- a/tools/schedsim/shell/schedsim_priority/schedsim.cc +++ /dev/null @@ -1,169 +0,0 @@ -/* - * 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; - - - 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; - } - - 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]; - - 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 - // - 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 - // - (void) fclose( Script ); - - // - // Just in case something throws - // - try { - } catch (...) { - exit(-1); - } - - return 0; -} diff --git a/tools/schedsim/shell/schedsim_priority/wrap_thread_dispatch.c b/tools/schedsim/shell/schedsim_priority/wrap_thread_dispatch.c deleted file mode 100644 index 3432188072..0000000000 --- a/tools/schedsim/shell/schedsim_priority/wrap_thread_dispatch.c +++ /dev/null @@ -1,42 +0,0 @@ -/* - * 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 ) - 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(); -} diff --git a/tools/schedsim/shell/scripts/script01 b/tools/schedsim/shell/scripts/script01 deleted file mode 100644 index 9a40dc35bb..0000000000 --- a/tools/schedsim/shell/scripts/script01 +++ /dev/null @@ -1,11 +0,0 @@ -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 diff --git a/tools/schedsim/shell/scripts/script02 b/tools/schedsim/shell/scripts/script02 deleted file mode 100644 index 294956c372..0000000000 --- a/tools/schedsim/shell/scripts/script02 +++ /dev/null @@ -1,9 +0,0 @@ -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 diff --git a/tools/schedsim/shell/scripts/script03 b/tools/schedsim/shell/scripts/script03 deleted file mode 100644 index a05ab26777..0000000000 --- a/tools/schedsim/shell/scripts/script03 +++ /dev/null @@ -1,19 +0,0 @@ -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 diff --git a/tools/schedsim/shell/scripts/script04 b/tools/schedsim/shell/scripts/script04 deleted file mode 100644 index 4eebcd70eb..0000000000 --- a/tools/schedsim/shell/scripts/script04 +++ /dev/null @@ -1,10 +0,0 @@ -echo "*** TEST 04 ***" -rtems_init -echo Create 0x0a010001 -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 diff --git a/tools/schedsim/shell/scripts/script05 b/tools/schedsim/shell/scripts/script05 deleted file mode 100644 index c57ea4c791..0000000000 --- a/tools/schedsim/shell/scripts/script05 +++ /dev/null @@ -1,22 +0,0 @@ -echo "*** TEST 05 ***" -rtems_init -echo Create 0x0a010001 -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 diff --git a/tools/schedsim/shell/scripts/script06 b/tools/schedsim/shell/scripts/script06 deleted file mode 100644 index 962568d338..0000000000 --- a/tools/schedsim/shell/scripts/script06 +++ /dev/null @@ -1,14 +0,0 @@ -echo "*** TEST 06 ***" -rtems_init -echo Create 0x0a010001 -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 diff --git a/tools/schedsim/shell/shared/.cvsignore b/tools/schedsim/shell/shared/.cvsignore deleted file mode 100644 index 282522db03..0000000000 --- a/tools/schedsim/shell/shared/.cvsignore +++ /dev/null @@ -1,2 +0,0 @@ -Makefile -Makefile.in diff --git a/tools/schedsim/shell/shared/Makefile.am b/tools/schedsim/shell/shared/Makefile.am deleted file mode 100644 index cfa1f3a46a..0000000000 --- a/tools/schedsim/shell/shared/Makefile.am +++ /dev/null @@ -1,61 +0,0 @@ -## -## $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 - -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 - -include $(top_srcdir)/../../automake/host.am diff --git a/tools/schedsim/shell/shared/commands.c b/tools/schedsim/shell/shared/commands.c deleted file mode 100644 index c872c2ec38..0000000000 --- a/tools/schedsim/shell/shared/commands.c +++ /dev/null @@ -1,73 +0,0 @@ -/* - * 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 -}; - diff --git a/tools/schedsim/shell/shared/getopt.c b/tools/schedsim/shell/shared/getopt.c deleted file mode 100644 index df7d27aab5..0000000000 --- a/tools/schedsim/shell/shared/getopt.c +++ /dev/null @@ -1,477 +0,0 @@ -/**************************************************************************** - -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 -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 0 -#define REQUIRED_ARG 1 -#define OPTIONAL_ARG 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 - 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 */ diff --git a/tools/schedsim/shell/shared/include/newlib/_ansi.h b/tools/schedsim/shell/shared/include/newlib/_ansi.h deleted file mode 100644 index c52ba606d9..0000000000 --- a/tools/schedsim/shell/shared/include/newlib/_ansi.h +++ /dev/null @@ -1,99 +0,0 @@ -/* 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 -#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_ */ diff --git a/tools/schedsim/shell/shared/include/newlib/getopt.h b/tools/schedsim/shell/shared/include/newlib/getopt.h deleted file mode 100644 index 2d397eb185..0000000000 --- a/tools/schedsim/shell/shared/include/newlib/getopt.h +++ /dev/null @@ -1,167 +0,0 @@ -/**************************************************************************** - -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 -placed in the 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 -****************************************************************************/ - -/* 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 */ diff --git a/tools/schedsim/shell/shared/include/shell.h b/tools/schedsim/shell/shared/include/shell.h deleted file mode 100644 index d5209f6cd7..0000000000 --- a/tools/schedsim/shell/shared/include/shell.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * 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 diff --git a/tools/schedsim/shell/shared/lookup_semaphore.c b/tools/schedsim/shell/shared/lookup_semaphore.c deleted file mode 100644 index 70b08879a6..0000000000 --- a/tools/schedsim/shell/shared/lookup_semaphore.c +++ /dev/null @@ -1,15 +0,0 @@ -/* - * 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" diff --git a/tools/schedsim/shell/shared/lookup_task.c b/tools/schedsim/shell/shared/lookup_task.c deleted file mode 100644 index 0180886bd9..0000000000 --- a/tools/schedsim/shell/shared/lookup_task.c +++ /dev/null @@ -1,58 +0,0 @@ -/* - * 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( - 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; -} diff --git a/tools/schedsim/shell/shared/main_clocktick.c b/tools/schedsim/shell/shared/main_clocktick.c deleted file mode 100644 index ab6918aa51..0000000000 --- a/tools/schedsim/shell/shared/main_clocktick.c +++ /dev/null @@ -1,77 +0,0 @@ -/* - * 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; - - CHECK_RTEMS_IS_UP(); - - 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 ) - ); - 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 */ -}; diff --git a/tools/schedsim/shell/shared/main_echo.c b/tools/schedsim/shell/shared/main_echo.c deleted file mode 100644 index f3c9013c88..0000000000 --- a/tools/schedsim/shell/shared/main_echo.c +++ /dev/null @@ -1,140 +0,0 @@ -/* $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 */ -}; diff --git a/tools/schedsim/shell/shared/main_executing.c b/tools/schedsim/shell/shared/main_executing.c deleted file mode 100644 index 31b94026b3..0000000000 --- a/tools/schedsim/shell/shared/main_executing.c +++ /dev/null @@ -1,42 +0,0 @@ -/* - * 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 */ -}; diff --git a/tools/schedsim/shell/shared/main_heir.c b/tools/schedsim/shell/shared/main_heir.c deleted file mode 100644 index a2a6e198ce..0000000000 --- a/tools/schedsim/shell/shared/main_heir.c +++ /dev/null @@ -1,42 +0,0 @@ -/* - * 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 */ -}; diff --git a/tools/schedsim/shell/shared/main_help.c b/tools/schedsim/shell/shared/main_help.c deleted file mode 100644 index 1938b1c58e..0000000000 --- a/tools/schedsim/shell/shared/main_help.c +++ /dev/null @@ -1,150 +0,0 @@ -/* - * 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 */ -}; diff --git a/tools/schedsim/shell/shared/main_rtemsinit.c b/tools/schedsim/shell/shared/main_rtemsinit.c deleted file mode 100644 index 906aa26663..0000000000 --- a/tools/schedsim/shell/shared/main_rtemsinit.c +++ /dev/null @@ -1,43 +0,0 @@ -/* - * 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 */ -}; diff --git a/tools/schedsim/shell/shared/main_semcreate.c b/tools/schedsim/shell/shared/main_semcreate.c deleted file mode 100644 index ad2c9f8464..0000000000 --- a/tools/schedsim/shell/shared/main_semcreate.c +++ /dev/null @@ -1,124 +0,0 @@ -/* - * 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; - - CHECK_RTEMS_IS_UP(); - - 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 ) - ); - return -1; - } - - printf( "Semaphore (%s) created: id=0x%08x\n", argv[1], id ); - - 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 */ -}; diff --git a/tools/schedsim/shell/shared/main_semdelete.c b/tools/schedsim/shell/shared/main_semdelete.c deleted file mode 100644 index a3e93b7776..0000000000 --- a/tools/schedsim/shell/shared/main_semdelete.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * 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; - - CHECK_RTEMS_IS_UP(); - - 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 ); - - status = rtems_semaphore_delete( id ); - if ( status != RTEMS_SUCCESSFUL ) { - fprintf( - stderr, - "Semaphore Delete(%s) returned %s\n", - argv[1], - rtems_status_text( status ) - ); - 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 */ -}; diff --git a/tools/schedsim/shell/shared/main_semflush.c b/tools/schedsim/shell/shared/main_semflush.c deleted file mode 100644 index 17638e8c25..0000000000 --- a/tools/schedsim/shell/shared/main_semflush.c +++ /dev/null @@ -1,69 +0,0 @@ -/* - * 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; - - CHECK_RTEMS_IS_UP(); - - 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 ) - ); - 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 */ -}; diff --git a/tools/schedsim/shell/shared/main_semobtain.c b/tools/schedsim/shell/shared/main_semobtain.c deleted file mode 100644 index 83ac8d31cd..0000000000 --- a/tools/schedsim/shell/shared/main_semobtain.c +++ /dev/null @@ -1,87 +0,0 @@ -/* - * 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; - - /* XXX for now, do not support polling */ - - CHECK_RTEMS_IS_UP(); - - 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 ) - ); - 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 */ -}; diff --git a/tools/schedsim/shell/shared/main_semrelease.c b/tools/schedsim/shell/shared/main_semrelease.c deleted file mode 100644 index 1cfd632bd6..0000000000 --- a/tools/schedsim/shell/shared/main_semrelease.c +++ /dev/null @@ -1,69 +0,0 @@ -/* - * 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; - - CHECK_RTEMS_IS_UP(); - - 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 ) - ); - 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 */ -}; diff --git a/tools/schedsim/shell/shared/main_taskcreate.c b/tools/schedsim/shell/shared/main_taskcreate.c deleted file mode 100644 index b4fb505ff9..0000000000 --- a/tools/schedsim/shell/shared/main_taskcreate.c +++ /dev/null @@ -1,113 +0,0 @@ -/* - * 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; - - CHECK_RTEMS_IS_UP(); - - 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 ) - ); - return -1; - } - - printf( - "Task (%s) created: id=0x%08x, priority=%ld\n", - argv[1], - id, - priority - ); - - 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 ) - ); - 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 */ -}; diff --git a/tools/schedsim/shell/shared/main_taskdelete.c b/tools/schedsim/shell/shared/main_taskdelete.c deleted file mode 100644 index 8ba68cced4..0000000000 --- a/tools/schedsim/shell/shared/main_taskdelete.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * 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; - - CHECK_RTEMS_IS_UP(); - - 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 ) - ); - return -1; - } - - printf("Task (0x%08x) deleted\n", id ); - - 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 */ -}; diff --git a/tools/schedsim/shell/shared/main_taskmode.c b/tools/schedsim/shell/shared/main_taskmode.c deleted file mode 100644 index 7b9c2638d8..0000000000 --- a/tools/schedsim/shell/shared/main_taskmode.c +++ /dev/null @@ -1,113 +0,0 @@ -/* - * 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; - - CHECK_RTEMS_IS_UP(); - - 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 ) - ); - 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 ); - } - - 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 */ -}; diff --git a/tools/schedsim/shell/shared/main_taskpriority.c b/tools/schedsim/shell/shared/main_taskpriority.c deleted file mode 100644 index fd481242c0..0000000000 --- a/tools/schedsim/shell/shared/main_taskpriority.c +++ /dev/null @@ -1,83 +0,0 @@ -/* - * 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; - - CHECK_RTEMS_IS_UP(); - - 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[2], &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 ) - ); - return -1; - } - - if ( new != 0 ) - printf("Task (0x%08x) Change Priority from %d to %d\n", id, old, new ); - else - printf("Task (0x%08x) Current Priority is %d\n", id, new ); - - 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 */ -}; diff --git a/tools/schedsim/shell/shared/main_taskresume.c b/tools/schedsim/shell/shared/main_taskresume.c deleted file mode 100644 index a155896a85..0000000000 --- a/tools/schedsim/shell/shared/main_taskresume.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * 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; - - CHECK_RTEMS_IS_UP(); - - 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 ); - - status = rtems_task_resume( id ); - if ( status != RTEMS_SUCCESSFUL ) { - fprintf( - stderr, - "Task resume(%s) returned %s\n", - argv[1], - rtems_status_text( status ) - ); - 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 */ -}; diff --git a/tools/schedsim/shell/shared/main_tasksuspend.c b/tools/schedsim/shell/shared/main_tasksuspend.c deleted file mode 100644 index 16496394b2..0000000000 --- a/tools/schedsim/shell/shared/main_tasksuspend.c +++ /dev/null @@ -1,69 +0,0 @@ -/* - * 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; - - CHECK_RTEMS_IS_UP(); - - 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 ) - ); - 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 */ -}; diff --git a/tools/schedsim/shell/shared/main_taskwakeafter.c b/tools/schedsim/shell/shared/main_taskwakeafter.c deleted file mode 100644 index 9ed343c230..0000000000 --- a/tools/schedsim/shell/shared/main_taskwakeafter.c +++ /dev/null @@ -1,77 +0,0 @@ -/* - * 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; - - CHECK_RTEMS_IS_UP(); - - 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 ); - - 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 ) - ); - 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 */ -}; diff --git a/tools/schedsim/shell/shared/schedsim_shell.h b/tools/schedsim/shell/shared/schedsim_shell.h deleted file mode 100644 index f9fc0b1b0d..0000000000 --- a/tools/schedsim/shell/shared/schedsim_shell.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * 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 - -#define CHECK_RTEMS_IS_UP() \ - do { \ - if ( _System_state_Current != SYSTEM_STATE_UP ) { \ - fprintf( stderr, "RTEMS is not initialized yet\n" ); \ - return -1; \ - } \ - } while (0) - -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 diff --git a/tools/schedsim/shell/shared/shell_cmdset.c b/tools/schedsim/shell/shared/shell_cmdset.c deleted file mode 100644 index 83330b088a..0000000000 --- a/tools/schedsim/shell/shared/shell_cmdset.c +++ /dev/null @@ -1,229 +0,0 @@ -/* - * 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; -} diff --git a/tools/schedsim/shell/shared/shell_makeargs.c b/tools/schedsim/shell/shared/shell_makeargs.c deleted file mode 100644 index e959138249..0000000000 --- a/tools/schedsim/shell/shared/shell_makeargs.c +++ /dev/null @@ -1,68 +0,0 @@ -/* - * 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; - - 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; -} - |