forked from Imagelibrary/rtems
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.
This commit is contained in:
12
tools/schedsim/rtems/ChangeLog
Normal file
12
tools/schedsim/rtems/ChangeLog
Normal file
@@ -0,0 +1,12 @@
|
||||
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.
|
||||
|
||||
382
tools/schedsim/rtems/Makefile.am
Normal file
382
tools/schedsim/rtems/Makefile.am
Normal file
@@ -0,0 +1,382 @@
|
||||
##
|
||||
## $Id$
|
||||
##
|
||||
|
||||
ACLOCAL_AMFLAGS = -I ../../../aclocal
|
||||
|
||||
lib_LIBRARIES = librtems.a
|
||||
|
||||
cpukitdir=$(srcdir)/../../../cpukit
|
||||
librtems_a_CPPFLAGS = -D__RTEMS_VIOLATE_KERNEL_VISIBILITY__
|
||||
librtems_a_CPPFLAGS += -I$(srcdir)/sched_cpu
|
||||
librtems_a_CPPFLAGS += -I$(cpukitdir)/include
|
||||
librtems_a_CPPFLAGS += -I$(cpukitdir)/score/include
|
||||
librtems_a_CPPFLAGS += -I$(cpukitdir)/score/inline
|
||||
librtems_a_CPPFLAGS += -I$(cpukitdir)/rtems/include
|
||||
librtems_a_CPPFLAGS += -I$(cpukitdir)/rtems/inline
|
||||
librtems_a_CPPFLAGS += -I$(cpukitdir)/sapi/include
|
||||
librtems_a_CPPFLAGS += -I$(cpukitdir)/sapi/inline
|
||||
librtems_a_CPPFLAGS += -I$(cpukitdir)/libcsupport/include
|
||||
librtems_a_CPPFLAGS += -I$(cpukitdir)/libmisc/stringto
|
||||
|
||||
## Have own version of these
|
||||
librtems_a_SOURCES = rtems_init.c wkspace.c
|
||||
librtems_a_SOURCES += sched_cpu/cpu_asm.c
|
||||
librtems_a_SOURCES += sched_cpu/cpu.c
|
||||
|
||||
## CPUKIT/SCORE/SRC
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/interr.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/percpu.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/apiext.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/apimutexallocate.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/apimutex.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/apimutexlock.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/apimutexunlock.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/chainappend.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/chain.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/chainextract.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/chainget.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/chaininsert.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/coremutex.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/coremutexflush.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/coremutexseize.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/coremutexseizeintr.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/coremutexsurrender.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/coresem.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/coresemflush.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/coresemseize.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/coresemsurrender.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/coretod.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/coretodget.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/coretodgetuptime.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/coretodgetuptimetimespec.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/coretodmsecstoticks.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/coretodset.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/coretodtickle.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/coretodtickspersec.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/coretodusectoticks.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/objectallocate.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/objectapimaximumclass.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/objectclose.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/objectextendinformation.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/objectfree.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/objectget.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/objectgetinfo.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/objectgetinfoid.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/objectgetisr.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/objectgetnameasstring.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/objectgetnext.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/objectgetnoprotection.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/objectidtoname.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/objectinitializeinformation.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/objectnamespaceremove.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/objectnametoid.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/objectnametoidstring.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/objectsetname.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/objectshrinkinformation.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/scheduler.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/schedulerpriority.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/schedulerpriorityblock.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/schedulerprioritythreadschedulerallocate.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/schedulerprioritythreadschedulerfree.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/schedulerprioritythreadschedulerupdate.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/schedulerpriorityschedule.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/schedulerpriorityunblock.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/schedulerpriorityyield.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/thread.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/threadchangepriority.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/threadclearstate.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/threadclose.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/threadcreateidle.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/threaddelayended.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/threaddispatch.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/threadget.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/threadhandler.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/threadinitialize.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/threadloadenv.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/threadready.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/threadreset.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/threadrestart.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/threadresume.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/threadsetpriority.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/threadsetstate.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/threadsettransient.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/threadstackallocate.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/threadstackfree.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/threadstart.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/threadstartmultitasking.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/threadsuspend.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/threadtickletimeslice.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/iterateoverthreads.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/threadq.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/threadblockingoperationcancel.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/threadqdequeue.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/threadqdequeuefifo.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/threadqdequeuepriority.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/threadqenqueue.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/threadqenqueuefifo.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/threadqenqueuepriority.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/threadqextract.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/threadqextractfifo.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/threadqextractpriority.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/threadqextractwithproxy.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/threadqfirst.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/threadqfirstfifo.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/threadqfirstpriority.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/threadqflush.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/threadqprocesstimeout.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/threadqrequeue.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/threadqtimeout.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/timespecaddto.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/timespecdividebyinteger.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/timespecdivide.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/timespecfromticks.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/timespecgreaterthan.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/timespecisvalid.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/timespeclessthan.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/timespecsubtract.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/timespectoticks.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/userextaddset.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/userext.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/userextremoveset.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/userextthreadbegin.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/userextthreadcreate.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/userextthreaddelete.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/userextthreadrestart.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/userextthreadstart.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/userextthreadswitch.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/watchdogadjust.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/watchdogadjusttochain.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/watchdog.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/watchdoginsert.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/watchdognanoseconds.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/watchdogremove.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/watchdogreport.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/watchdogreportchain.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/score/src/watchdogtickle.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/sapi/src/debug.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/rtems/src/clockgetsecondssinceepoch.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/rtems/src/clockgettickspersecond.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/rtems/src/clockgettickssinceboot.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/rtems/src/clockgettod.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/rtems/src/clockgettodtimeval.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/rtems/src/clockgetuptime.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/rtems/src/clockset.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/rtems/src/clocksetnsecshandler.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/rtems/src/clocktick.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/rtems/src/clocktodtoseconds.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/rtems/src/clocktodvalidate.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/rtems/src/sem.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/rtems/src/semcreate.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/rtems/src/semdata.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/rtems/src/semdelete.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/rtems/src/semflush.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/rtems/src/semident.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/rtems/src/semobtain.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/rtems/src/semrelease.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/rtems/src/semtranslatereturncode.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/rtems/src/tasks.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/rtems/src/taskdata.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/rtems/src/taskmode.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/rtems/src/taskvariable_invoke_dtor.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/rtems/src/taskcreate.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/rtems/src/taskstart.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/rtems/src/taskident.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/rtems/src/taskdelete.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/rtems/src/taskresume.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/rtems/src/tasksuspend.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/rtems/src/tasksetpriority.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/rtems/src/taskmode.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/rtems/src/taskwakeafter.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/libcsupport/src/assoclocalbyname.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/libcsupport/src/assoclocalbyremotebitfield.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/libcsupport/src/assoclocalbyremote.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/libcsupport/src/assocnamebad.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/libcsupport/src/assocnamebylocalbitfield.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/libcsupport/src/assocnamebylocal.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/libcsupport/src/assocnamebyremotebitfield.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/libcsupport/src/assocnamebyremote.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/libcsupport/src/assocptrbylocal.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/libcsupport/src/assocptrbyname.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/libcsupport/src/assocptrbyremote.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/libcsupport/src/assocremotebylocalbitfield.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/libcsupport/src/assocremotebylocal.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/libcsupport/src/assocremotebyname.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/libcsupport/src/error.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/libmisc/stringto/stringtodouble.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/libmisc/stringto/stringtofloat.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/libmisc/stringto/stringtoint.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/libmisc/stringto/stringtolong.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/libmisc/stringto/stringtopointer.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/libmisc/stringto/stringtounsignedchar.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/libmisc/stringto/stringtounsignedint.c
|
||||
librtems_a_SOURCES += $(cpukitdir)/libmisc/stringto/stringtounsignedlong.c
|
||||
|
||||
schedsim_includedir = $(includedir)/schedsim
|
||||
schedsim_rtems_includedir = $(includedir)/schedsim/rtems
|
||||
schedsim_rtems_score_includedir = $(includedir)/schedsim/rtems/score
|
||||
schedsim_rtems_rtems_includedir = $(includedir)/schedsim/rtems/rtems
|
||||
|
||||
schedsim_include_HEADERS = \
|
||||
${cpukitdir}/rtems/include/rtems.h
|
||||
|
||||
schedsim_rtems_include_HEADERS = \
|
||||
${cpukitdir}/score/include//rtems/seterr.h \
|
||||
${cpukitdir}/score/include/rtems/system.h \
|
||||
${cpukitdir}/score/include/rtems/debug.h \
|
||||
${cpukitdir}/include/rtems/bspIo.h \
|
||||
$(cpukitdir)/sapi/include/rtems/fatal.h \
|
||||
$(cpukitdir)/sapi/include/rtems/init.h \
|
||||
$(cpukitdir)/sapi/include/rtems/config.h \
|
||||
$(cpukitdir)/sapi/include/rtems/sptables.h \
|
||||
$(cpukitdir)/sapi/include/rtems/io.h \
|
||||
$(cpukitdir)/sapi/include/rtems/mptables.h \
|
||||
$(cpukitdir)/sapi/include/rtems/extension.h \
|
||||
$(cpukitdir)/sapi/include/rtems/chain.h \
|
||||
$(cpukitdir)/sapi/include/confdefs.h \
|
||||
$(cpukitdir)/libcsupport/include/rtems/libio_.h \
|
||||
$(cpukitdir)/libcsupport/include/rtems/watchdogdrv.h \
|
||||
$(cpukitdir)/libcsupport/include/rtems/error.h \
|
||||
$(cpukitdir)/libcsupport/include/rtems/framebuffer.h \
|
||||
$(cpukitdir)/libcsupport/include/rtems/assoc.h \
|
||||
$(cpukitdir)/libcsupport/include/rtems/libio.h \
|
||||
$(cpukitdir)/libcsupport/include/rtems/gxx_wrappers.h \
|
||||
$(cpukitdir)/libcsupport/include/rtems/libcsupport.h \
|
||||
$(cpukitdir)/libcsupport/include/rtems/termiostypes.h \
|
||||
$(cpukitdir)/libcsupport/include/rtems/malloc.h \
|
||||
sched_cpu/rtems/stringto.h \
|
||||
sched_cpu/rtems/asm.h
|
||||
|
||||
schedsim_rtems_score_include_HEADERS = \
|
||||
${cpukitdir}/score/include/rtems/score/address.h \
|
||||
${cpukitdir}/score/include/rtems/score/coremutex.h \
|
||||
${cpukitdir}/score/include/rtems/score/corerwlock.h \
|
||||
${cpukitdir}/score/include/rtems/score/threadsync.h \
|
||||
${cpukitdir}/score/include/rtems/score/priority.h \
|
||||
${cpukitdir}/score/include/rtems/score/sysstate.h \
|
||||
${cpukitdir}/score/include/rtems/score/threadmp.h \
|
||||
${cpukitdir}/score/include/rtems/score/mppkt.h \
|
||||
${cpukitdir}/score/include/rtems/score/stack.h \
|
||||
${cpukitdir}/score/include/rtems/score/context.h \
|
||||
${cpukitdir}/score/include/rtems/score/heap.h \
|
||||
${cpukitdir}/score/include/rtems/score/coresem.h \
|
||||
${cpukitdir}/score/include/rtems/score/corebarrier.h \
|
||||
${cpukitdir}/score/include/rtems/score/corespinlock.h \
|
||||
${cpukitdir}/score/include/rtems/score/prioritybitmap.h \
|
||||
${cpukitdir}/score/include/rtems/score/timestamp.h \
|
||||
${cpukitdir}/score/include/rtems/score/basedefs.h \
|
||||
${cpukitdir}/score/include/rtems/score/wkspace.h \
|
||||
${cpukitdir}/score/include/rtems/score/percpu.h \
|
||||
${cpukitdir}/score/include/rtems/score/watchdog.h \
|
||||
${cpukitdir}/score/include/rtems/score/tod.h \
|
||||
${cpukitdir}/score/include/rtems/score/protectedheap.h \
|
||||
${cpukitdir}/score/include/rtems/score/timestamp64.h \
|
||||
${cpukitdir}/score/include/rtems/score/chain.h \
|
||||
${cpukitdir}/score/include/rtems/score/apiext.h \
|
||||
${cpukitdir}/score/include/rtems/score/userext.h \
|
||||
${cpukitdir}/score/include/rtems/score/threadq.h \
|
||||
${cpukitdir}/score/include/rtems/score/apimutex.h \
|
||||
${cpukitdir}/score/include/rtems/score/scheduler.h \
|
||||
${cpukitdir}/score/include/rtems/score/isr.h \
|
||||
${cpukitdir}/score/include/rtems/score/mpci.h \
|
||||
${cpukitdir}/score/include/rtems/score/object.h \
|
||||
${cpukitdir}/score/include/rtems/score/copyrt.h \
|
||||
${cpukitdir}/score/include/rtems/score/states.h \
|
||||
${cpukitdir}/score/include/rtems/score/objectmp.h \
|
||||
${cpukitdir}/score/include/rtems/score/thread.h \
|
||||
${cpukitdir}/score/include/rtems/score/coremsg.h \
|
||||
${cpukitdir}/score/include/rtems/score/schedulerpriority.h \
|
||||
${cpukitdir}/score/include/rtems/score/timespec.h \
|
||||
${cpukitdir}/score/include/rtems/score/tqdata.h \
|
||||
${cpukitdir}/score/include/rtems/score/bitfield.h \
|
||||
${cpukitdir}/score/include/rtems/score/interr.h \
|
||||
$(cpukitdir)/score/inline/rtems/score/address.inl \
|
||||
$(cpukitdir)/score/inline/rtems/score/corespinlock.inl \
|
||||
$(cpukitdir)/score/inline/rtems/score/priority.inl \
|
||||
$(cpukitdir)/score/inline/rtems/score/threadmp.inl \
|
||||
$(cpukitdir)/score/inline/rtems/score/chain.inl \
|
||||
$(cpukitdir)/score/inline/rtems/score/heap.inl \
|
||||
$(cpukitdir)/score/inline/rtems/score/scheduler.inl \
|
||||
$(cpukitdir)/score/inline/rtems/score/threadq.inl \
|
||||
$(cpukitdir)/score/inline/rtems/score/corebarrier.inl \
|
||||
$(cpukitdir)/score/inline/rtems/score/isr.inl \
|
||||
$(cpukitdir)/score/inline/rtems/score/schedulerpriority.inl \
|
||||
$(cpukitdir)/score/inline/rtems/score/tod.inl \
|
||||
$(cpukitdir)/score/inline/rtems/score/coremsg.inl \
|
||||
$(cpukitdir)/score/inline/rtems/score/mppkt.inl \
|
||||
$(cpukitdir)/score/inline/rtems/score/stack.inl \
|
||||
$(cpukitdir)/score/inline/rtems/score/tqdata.inl \
|
||||
$(cpukitdir)/score/inline/rtems/score/coremutex.inl \
|
||||
$(cpukitdir)/score/inline/rtems/score/object.inl \
|
||||
$(cpukitdir)/score/inline/rtems/score/states.inl \
|
||||
$(cpukitdir)/score/inline/rtems/score/watchdog.inl \
|
||||
$(cpukitdir)/score/inline/rtems/score/corerwlock.inl \
|
||||
$(cpukitdir)/score/inline/rtems/score/objectmp.inl \
|
||||
$(cpukitdir)/score/inline/rtems/score/sysstate.inl \
|
||||
$(cpukitdir)/score/inline/rtems/score/wkspace.inl \
|
||||
$(cpukitdir)/score/inline/rtems/score/coresem.inl \
|
||||
$(cpukitdir)/score/inline/rtems/score/prioritybitmap.inl \
|
||||
$(cpukitdir)/score/inline/rtems/score/thread.inl \
|
||||
sched_cpu/rtems/score/cpu_asm.h \
|
||||
sched_cpu/rtems/score/cpuopts.h \
|
||||
sched_cpu/rtems/score/cpu.h \
|
||||
sched_cpu/rtems/score/types.h \
|
||||
sched_cpu/rtems/score/no_cpu.h
|
||||
|
||||
|
||||
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
|
||||
71
tools/schedsim/rtems/interr.c
Normal file
71
tools/schedsim/rtems/interr.c
Normal file
@@ -0,0 +1,71 @@
|
||||
/*
|
||||
* BASED UPON SOURCE IN RTEMS, MODIFIED FOR SIMULATOR
|
||||
*
|
||||
* Internal Error Handler
|
||||
*
|
||||
* COPYRIGHT (c) 1989-2010.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.com/license/LICENSE.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#if HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include <rtems/system.h>
|
||||
#include <rtems/score/interr.h>
|
||||
#include <rtems/score/sysstate.h>
|
||||
#include <rtems/score/userext.h>
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
|
||||
/*PAGE
|
||||
*
|
||||
* _Internal_error_Occurred
|
||||
*
|
||||
* This routine will invoke the fatal error handler supplied by the user
|
||||
* followed by the the default one provided by the executive. The default
|
||||
* error handler assumes no hardware is present to help inform the user
|
||||
* of the problem. Halt stores the error code in a known register,
|
||||
* disables interrupts, and halts the CPU. If the CPU does not have a
|
||||
* halt instruction, it will loop to itself.
|
||||
*
|
||||
* Input parameters:
|
||||
* the_source - what subsystem the error originated in
|
||||
* is_internal - if the error was internally generated
|
||||
* the_error - fatal error status code
|
||||
*
|
||||
* Output parameters:
|
||||
* As much information as possible is stored in a CPU dependent fashion.
|
||||
* See the CPU dependent code for more information.
|
||||
*
|
||||
* NOTE: The the_error is not necessarily a directive status code.
|
||||
*/
|
||||
|
||||
void _Internal_error_Occurred(
|
||||
Internal_errors_Source the_source,
|
||||
bool is_internal,
|
||||
Internal_errors_t the_error
|
||||
)
|
||||
{
|
||||
|
||||
_Internal_errors_What_happened.the_source = the_source;
|
||||
_Internal_errors_What_happened.is_internal = is_internal;
|
||||
_Internal_errors_What_happened.the_error = the_error;
|
||||
|
||||
// _User_extensions_Fatal( the_source, is_internal, the_error );
|
||||
|
||||
_System_state_Set( SYSTEM_STATE_FAILED );
|
||||
|
||||
fprintf( stderr, "FATAL ERROR!!\n" );
|
||||
exit( -1 );
|
||||
|
||||
/* will not return from this routine */
|
||||
while (true);
|
||||
}
|
||||
110
tools/schedsim/rtems/rtems_init.c
Normal file
110
tools/schedsim/rtems/rtems_init.c
Normal file
@@ -0,0 +1,110 @@
|
||||
/*
|
||||
* 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_disable_level = 0;
|
||||
|
||||
/*
|
||||
* Print an initial message
|
||||
*/
|
||||
check_heir_and_executing();
|
||||
}
|
||||
27
tools/schedsim/rtems/rtems_sched.h
Normal file
27
tools/schedsim/rtems/rtems_sched.h
Normal file
@@ -0,0 +1,27 @@
|
||||
/*
|
||||
* 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
|
||||
169
tools/schedsim/rtems/sched_cpu/cpu.c
Normal file
169
tools/schedsim/rtems/sched_cpu/cpu.c
Normal file
@@ -0,0 +1,169 @@
|
||||
/*
|
||||
* 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 */ ;
|
||||
}
|
||||
188
tools/schedsim/rtems/sched_cpu/cpu_asm.c
Normal file
188
tools/schedsim/rtems/sched_cpu/cpu_asm.c
Normal file
@@ -0,0 +1,188 @@
|
||||
/* 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
|
||||
*/
|
||||
}
|
||||
127
tools/schedsim/rtems/sched_cpu/rtems/asm.h
Normal file
127
tools/schedsim/rtems/sched_cpu/rtems/asm.h
Normal file
@@ -0,0 +1,127 @@
|
||||
/**
|
||||
* @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
|
||||
1264
tools/schedsim/rtems/sched_cpu/rtems/score/cpu.h
Normal file
1264
tools/schedsim/rtems/sched_cpu/rtems/score/cpu.h
Normal file
File diff suppressed because it is too large
Load Diff
74
tools/schedsim/rtems/sched_cpu/rtems/score/cpu_asm.h
Normal file
74
tools/schedsim/rtems/sched_cpu/rtems/score/cpu_asm.h
Normal file
@@ -0,0 +1,74 @@
|
||||
/**
|
||||
* @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 */
|
||||
72
tools/schedsim/rtems/sched_cpu/rtems/score/cpuopts.h
Normal file
72
tools/schedsim/rtems/sched_cpu/rtems/score/cpuopts.h
Normal file
@@ -0,0 +1,72 @@
|
||||
/**
|
||||
* @file rtems/score/cpuopts.h
|
||||
*/
|
||||
|
||||
/* BASED UPON SOURCE IN RTEMS, MODIFIED FOR SIMULATOR */
|
||||
|
||||
/* target cpu dependent options file */
|
||||
/* automatically generated -- DO NOT EDIT!! */
|
||||
#ifndef _RTEMS_SCORE_CPUOPTS_H
|
||||
#define _RTEMS_SCORE_CPUOPTS_H
|
||||
|
||||
/* This is added by hand to indicate we are on the RTEMS Scheduler Simulator */
|
||||
#define RTEMS_SCHEDSIM
|
||||
|
||||
/* if RTEMS_DEBUG is enabled */
|
||||
/* #undef RTEMS_DEBUG */
|
||||
|
||||
/* if itron api is supported */
|
||||
/* #undef RTEMS_ITRON_API */
|
||||
|
||||
/* if multiprocessing is enabled */
|
||||
/* #undef RTEMS_MULTIPROCESSING */
|
||||
|
||||
/* if using newlib */
|
||||
#define RTEMS_NEWLIB 1
|
||||
|
||||
/* if posix api is supported */
|
||||
/* #undef RTEMS_POSIX_API */
|
||||
|
||||
/* if networking is enabled */
|
||||
#define RTEMS_NETWORKING 1
|
||||
|
||||
/* if RTEMS uses tar.h */
|
||||
#define RTEMS_USES_TAR_H 1
|
||||
|
||||
/* RTEMS version string */
|
||||
#define RTEMS_VERSION "4.9.99.0"
|
||||
|
||||
/* disable nanosecond granularity for statistics */
|
||||
/* #undef __RTEMS_USE_TICKS_FOR_STATISTICS__ */
|
||||
|
||||
/* disable nanosecond granularity for cpu usage statistics */
|
||||
/* #undef __RTEMS_USE_TICKS_CPU_USAGE_STATISTICS__ */
|
||||
|
||||
/* disable nanosecond granularity for period statistics */
|
||||
/* #undef __RTEMS_USE_TICKS_RATE_MONOTONIC_STATISTICS__ */
|
||||
|
||||
/* disable inlining _Thread_Enable_dispatch */
|
||||
/* #undef __RTEMS_DO_NOT_INLINE_THREAD_ENABLE_DISPATCH__ */
|
||||
|
||||
/* disable inlining _Thread_Enable_dispatch */
|
||||
/* #undef __RTEMS_DO_NOT_INLINE_CORE_MUTEX_SEIZE__ */
|
||||
|
||||
/* disable inlining _Thread_queue_Enqueue_priority */
|
||||
/* #undef __RTEMS_DO_NOT_UNROLL_THREADQ_ENQUEUE_PRIORITY__ */
|
||||
|
||||
/* disable strict order mutex */
|
||||
/* #undef __RTEMS_STRICT_ORDER_MUTEX__ */
|
||||
|
||||
/* Define to 1 if ada/gnat bindings are built-in */
|
||||
#define __RTEMS_ADA__ 1
|
||||
|
||||
/* major version portion of an RTEMS release */
|
||||
#define __RTEMS_MAJOR__ 4
|
||||
|
||||
/* minor version portion of an RTEMS release */
|
||||
#define __RTEMS_MINOR__ 9
|
||||
|
||||
/* revision version portion of an RTEMS release */
|
||||
#define __RTEMS_REVISION__ 99
|
||||
|
||||
#endif /* _RTEMS_SCORE_CPUOPTS_H */
|
||||
59
tools/schedsim/rtems/sched_cpu/rtems/score/no_cpu.h
Normal file
59
tools/schedsim/rtems/sched_cpu/rtems/score/no_cpu.h
Normal file
@@ -0,0 +1,59 @@
|
||||
/* 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 */
|
||||
51
tools/schedsim/rtems/sched_cpu/rtems/score/types.h
Normal file
51
tools/schedsim/rtems/sched_cpu/rtems/score/types.h
Normal file
@@ -0,0 +1,51 @@
|
||||
/**
|
||||
* @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
|
||||
1
tools/schedsim/rtems/sched_cpu/rtems/stringto.h
Normal file
1
tools/schedsim/rtems/sched_cpu/rtems/stringto.h
Normal file
@@ -0,0 +1 @@
|
||||
#include <stringto.h>
|
||||
101
tools/schedsim/rtems/wkspace.c
Normal file
101
tools/schedsim/rtems/wkspace.c
Normal file
@@ -0,0 +1,101 @@
|
||||
/*
|
||||
* BASED UPON SOURCE IN RTEMS, MODIFIED FOR SIMULATOR
|
||||
*
|
||||
* Workspace Handler
|
||||
*
|
||||
* COPYRIGHT (c) 1989-2010.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.com/license/LICENSE.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#if HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include <rtems/system.h>
|
||||
#include <rtems/score/wkspace.h>
|
||||
#include <rtems/score/interr.h>
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#if defined(DEBUG_WORKSPACE)
|
||||
#include <stdio.h>
|
||||
#endif
|
||||
|
||||
/*
|
||||
* _Workspace_Handler_initialization
|
||||
*/
|
||||
void _Workspace_Handler_initialization(void)
|
||||
{
|
||||
}
|
||||
|
||||
/*
|
||||
* _Workspace_Allocate
|
||||
*/
|
||||
void *_Workspace_Allocate(
|
||||
size_t size
|
||||
)
|
||||
{
|
||||
void *memory;
|
||||
|
||||
memory = calloc( 1, size );
|
||||
#if defined(DEBUG_WORKSPACE)
|
||||
fprintf(
|
||||
stderr,
|
||||
"Workspace_Allocate(%d) from %p/%p -> %p\n",
|
||||
size,
|
||||
__builtin_return_address( 0 ),
|
||||
__builtin_return_address( 1 ),
|
||||
memory
|
||||
);
|
||||
#endif
|
||||
return memory;
|
||||
}
|
||||
|
||||
/*
|
||||
* _Workspace_Free
|
||||
*/
|
||||
bool _Workspace_Free(
|
||||
void *block
|
||||
)
|
||||
{
|
||||
#if defined(DEBUG_WORKSPACE)
|
||||
fprintf(
|
||||
stderr,
|
||||
block,
|
||||
__builtin_return_address( 0 ),
|
||||
__builtin_return_address( 1 )
|
||||
);
|
||||
#endif
|
||||
free( block );
|
||||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
* _Workspace_Allocate_or_fatal_error
|
||||
*/
|
||||
void *_Workspace_Allocate_or_fatal_error(
|
||||
size_t size
|
||||
)
|
||||
{
|
||||
void *memory;
|
||||
|
||||
memory = calloc( 1, size );
|
||||
#if defined(DEBUG_WORKSPACE)
|
||||
fprintf(
|
||||
stderr,
|
||||
"Workspace_Allocate_or_fatal_error(%d) from %p/%p -> %p\n",
|
||||
size,
|
||||
__builtin_return_address( 0 ),
|
||||
__builtin_return_address( 1 ),
|
||||
memory
|
||||
);
|
||||
#endif
|
||||
|
||||
return memory;
|
||||
}
|
||||
Reference in New Issue
Block a user