| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
Move implementation specific parts of watchdog.h and watchdog.inl into
new header file watchdogimpl.h. The watchdog.h contains now only the
application visible API.
|
|
|
|
|
|
|
| |
A common use case for disabled preemption was to ensure mutual exclusion
on single-processor configurations. On SMP this does not work.
To abandon non-preemptible tasks simplifies the scheduler.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The new Simple SMP Scheduler allocates a processor for the processor
count highest priority ready threads. The thread priority and position
in the ready chain are the only information to determine the scheduling
decision. Threads with an allocated processor are in the scheduled
chain. After initialization the scheduled chain has exactly processor
count nodes. Each processor has exactly one allocated thread after
initialization. All enqueue and extract operations may exchange threads
with the scheduled chain. One thread will be added and another will be
removed. The scheduled and ready chain is ordered according to the
thread priority order. The chain insert operations are O(count of ready
threads), thus this scheduler is unsuitable for most real-time
applications.
The thread preempt mode will be ignored.
|
|
|
|
|
|
|
| |
This patch is a task from GCI 2012 which improves the Doxygen
comments in the RTEMS source.
http://www.google-melange.com/gci/task/view/google/gci2012/8013204
|
|
|
|
|
| |
This file contains the parts of <rtems/score/userext.h> that are only
necessary for the RTEMS implementation.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Script does what is expected and tries to do it as
smartly as possible.
+ remove occurrences of two blank comment lines
next to each other after Id string line removed.
+ remove entire comment blocks which only exited to
contain CVS Ids
+ If the processing left a blank line at the top of
a file, it was removed.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* ftpd/ftpd.c, libcsupport/src/geteuid.c, libcsupport/src/getgroups.c,
libcsupport/src/getpgrp.c, libcsupport/src/getpid.c,
libcsupport/src/getppid.c, libcsupport/src/setpgid.c,
libcsupport/src/setsid.c, libcsupport/src/utsname.c,
libmisc/stackchk/check.c, posix/include/rtems/posix/mqueue.h,
posix/inline/rtems/posix/cond.inl,
posix/inline/rtems/posix/mqueue.inl,
posix/inline/rtems/posix/mutex.inl,
posix/inline/rtems/posix/pthread.inl,
posix/inline/rtems/posix/semaphore.inl,
posix/inline/rtems/posix/timer.inl, posix/src/alarm.c,
posix/src/barrierattrdestroy.c, posix/src/barrierattrgetpshared.c,
posix/src/barrierattrinit.c, posix/src/barrierattrsetpshared.c,
posix/src/cleanuppop.c, posix/src/cleanuppush.c,
posix/src/clockgetcpuclockid.c, posix/src/clockgetenableattr.c,
posix/src/clockgetres.c, posix/src/clockgettime.c,
posix/src/clocksetenableattr.c, posix/src/clocksettime.c,
posix/src/cond.c, posix/src/condattrdestroy.c,
posix/src/condattrgetpshared.c, posix/src/condattrinit.c,
posix/src/condattrsetpshared.c, posix/src/condbroadcast.c,
posix/src/conddefaultattributes.c, posix/src/conddestroy.c,
posix/src/condinit.c, posix/src/condsignal.c,
posix/src/condsignalsupp.c, posix/src/condtimedwait.c,
posix/src/condwait.c, posix/src/condwaitsupp.c,
posix/src/keygetspecific.c, posix/src/keyrundestructors.c,
posix/src/keysetspecific.c, posix/src/mprotect.c, posix/src/mqueue.c,
posix/src/mqueuecreatesupp.c, posix/src/mqueuedeletesupp.c,
posix/src/mqueuegetattr.c, posix/src/mqueuenotify.c,
posix/src/mqueuereceive.c, posix/src/mqueuesend.c,
posix/src/mqueuesendsupp.c, posix/src/mqueuesetattr.c,
posix/src/mqueuetimedreceive.c, posix/src/mqueuetimedsend.c,
posix/src/mqueuetranslatereturncode.c, posix/src/mqueueunlink.c,
posix/src/mutex.c, posix/src/mutexattrdestroy.c,
posix/src/mutexattrgetprioceiling.c,
posix/src/mutexattrgetprotocol.c, posix/src/mutexattrgetpshared.c,
posix/src/mutexattrinit.c, posix/src/mutexattrsetprioceiling.c,
posix/src/mutexattrsetprotocol.c, posix/src/mutexattrsetpshared.c,
posix/src/mutexdestroy.c, posix/src/mutexgetprioceiling.c,
posix/src/mutexinit.c, posix/src/mutexlock.c,
posix/src/mutexlocksupp.c, posix/src/mutexsetprioceiling.c,
posix/src/mutextimedlock.c, posix/src/mutextrylock.c,
posix/src/mutexunlock.c, posix/src/nanosleep.c, posix/src/psignal.c,
posix/src/psignalchecksignal.c,
posix/src/psignalclearprocesssignals.c,
posix/src/psignalclearsignals.c,
posix/src/psignalsetprocesssignals.c,
posix/src/psignalunblockthread.c, posix/src/pthreadinitthreads.c,
posix/src/rwlockattrdestroy.c, posix/src/rwlockattrgetpshared.c,
posix/src/rwlockattrinit.c, posix/src/rwlockattrsetpshared.c,
posix/src/semaphore.c, posix/src/semaphoredeletesupp.c,
posix/src/semaphorenametoid.c, posix/src/semaphorewaitsupp.c,
posix/src/semclose.c, posix/src/semdestroy.c,
posix/src/semgetvalue.c, posix/src/seminit.c, posix/src/semopen.c,
posix/src/sempost.c, posix/src/semtimedwait.c,
posix/src/semtrywait.c, posix/src/semunlink.c, posix/src/semwait.c,
posix/src/sysconf.c, posix/src/testcancel.c, posix/src/ualarm.c,
rtems/src/clockgetuptime.c, rtems/src/clockset.c,
rtems/src/clocksetnsecshandler.c, rtems/src/clocktick.c,
rtems/src/clocktodtoseconds.c, rtems/src/clocktodvalidate.c,
rtems/src/dpmem.c, rtems/src/dpmemcreate.c, rtems/src/dpmemdelete.c,
rtems/src/dpmemexternal2internal.c, rtems/src/dpmemident.c,
rtems/src/dpmeminternal2external.c, rtems/src/event.c,
rtems/src/eventmp.c, rtems/src/eventreceive.c,
rtems/src/eventseize.c, rtems/src/eventsend.c,
rtems/src/eventsurrender.c, rtems/src/eventtimeout.c, rtems/src/mp.c,
rtems/src/msg.c, rtems/src/msgmp.c, rtems/src/msgqallocate.c,
rtems/src/msgqbroadcast.c, rtems/src/msgqcreate.c,
rtems/src/msgqdelete.c, rtems/src/msgqflush.c,
rtems/src/msgqgetnumberpending.c, rtems/src/msgqident.c,
rtems/src/msgqreceive.c, rtems/src/msgqtranslatereturncode.c,
rtems/src/msgqurgent.c, rtems/src/part.c, rtems/src/partcreate.c,
rtems/src/partdelete.c, rtems/src/partgetbuffer.c,
rtems/src/partident.c, rtems/src/partmp.c,
rtems/src/partreturnbuffer.c, rtems/src/ratemon.c,
rtems/src/ratemoncancel.c, rtems/src/ratemoncreate.c,
rtems/src/ratemondelete.c, rtems/src/ratemongetstatistics.c,
rtems/src/ratemongetstatus.c, rtems/src/ratemonident.c,
rtems/src/ratemonperiod.c, rtems/src/ratemonresetstatistics.c,
rtems/src/ratemontimeout.c, rtems/src/region.c,
rtems/src/regioncreate.c, rtems/src/regiondelete.c,
rtems/src/regionextend.c, rtems/src/regiongetfreeinfo.c,
rtems/src/regiongetinfo.c, rtems/src/regiongetsegment.c,
rtems/src/regiongetsegmentsize.c, rtems/src/regionident.c,
rtems/src/regionmp.c, rtems/src/regionprocessqueue.c,
rtems/src/regionresizesegment.c, rtems/src/regionreturnsegment.c,
rtems/src/rtemsobjectgetclassicname.c, rtems/src/rtemstimer.c,
rtems/src/sem.c, rtems/src/semcreate.c, rtems/src/semdelete.c,
rtems/src/semflush.c, rtems/src/semident.c, rtems/src/semmp.c,
rtems/src/semobtain.c, rtems/src/semrelease.c,
rtems/src/semtranslatereturncode.c, rtems/src/signal.c,
rtems/src/signalcatch.c, rtems/src/signalmp.c,
rtems/src/signalsend.c, rtems/src/taskcreate.c,
rtems/src/taskdelete.c, rtems/src/taskgetnote.c,
rtems/src/taskident.c, rtems/src/taskinitusers.c,
rtems/src/taskissuspended.c, rtems/src/taskmp.c,
rtems/src/taskrestart.c, rtems/src/taskresume.c, rtems/src/tasks.c,
rtems/src/tasksetnote.c, rtems/src/tasksetpriority.c,
rtems/src/taskstart.c, rtems/src/tasksuspend.c,
rtems/src/taskwakeafter.c, rtems/src/taskwakewhen.c,
rtems/src/timercancel.c, rtems/src/timercreate.c,
rtems/src/timerdelete.c, rtems/src/timerfireafter.c,
rtems/src/timerfirewhen.c, rtems/src/timergetinfo.c,
rtems/src/timerident.c, rtems/src/timerreset.c,
rtems/src/timerserverfireafter.c, rtems/src/timerserverfirewhen.c,
sapi/src/debug.c, sapi/src/extension.c, sapi/src/posixapi.c,
sapi/src/rtemsapi.c, score/src/apiext.c, score/src/chain.c,
score/src/corebarrier.c, score/src/corebarrierrelease.c,
score/src/corebarrierwait.c, score/src/coremsgbroadcast.c,
score/src/coremsgclose.c, score/src/coremsgflush.c,
score/src/coremsgflushsupp.c, score/src/coremsgflushwait.c,
score/src/coremsginsert.c, score/src/coremsgseize.c,
score/src/coremsgsubmit.c, score/src/coremutex.c,
score/src/coremutexflush.c, score/src/coremutexseize.c,
score/src/corerwlock.c, score/src/corerwlockobtainread.c,
score/src/corerwlockobtainwrite.c, score/src/corerwlockrelease.c,
score/src/coresem.c, score/src/coresemflush.c,
score/src/coresemsurrender.c, score/src/corespinlock.c,
score/src/corespinlockrelease.c, score/src/corespinlockwait.c,
score/src/coretod.c, score/src/coretodset.c,
score/src/coretodtickle.c, score/src/heap.c, score/src/interr.c,
score/src/mpci.c, score/src/objectallocate.c,
score/src/objectextendinformation.c, score/src/objectfree.c,
score/src/objectget.c, score/src/objectgetisr.c,
score/src/objectgetnext.c, score/src/objectgetnoprotection.c,
score/src/objectinitializeinformation.c, score/src/objectmp.c,
score/src/objectnametoid.c, score/src/objectnametoidstring.c,
score/src/objectshrinkinformation.c, score/src/rbtree.c,
score/src/threaddelayended.c, score/src/threadhandler.c,
score/src/threadinitialize.c, score/src/threadloadenv.c,
score/src/threadmp.c, score/src/threadq.c,
score/src/threadqdequeue.c, score/src/threadqdequeuefifo.c,
score/src/threadqdequeuepriority.c, score/src/threadqenqueue.c,
score/src/threadqenqueuefifo.c, score/src/threadqenqueuepriority.c,
score/src/threadqextract.c, score/src/threadqextractfifo.c,
score/src/threadqextractpriority.c,
score/src/threadqextractwithproxy.c, score/src/threadqfirst.c,
score/src/threadqfirstfifo.c, score/src/threadqfirstpriority.c,
score/src/threadqflush.c, score/src/threadqrequeue.c,
score/src/threadstackallocate.c, score/src/threadstartmultitasking.c,
score/src/watchdog.c, score/src/watchdogadjust.c,
score/src/watchdoginsert.c, score/src/watchdogremove.c,
score/src/watchdogtickle.c: Remove /*PAGE markers which were
interpreted by a long dead print script.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* sapi/include/confdefs.h, score/Makefile.am,
score/include/rtems/score/scheduler.h,
score/include/rtems/score/schedulerpriority.h,
score/include/rtems/score/thread.h,
score/inline/rtems/score/scheduler.inl,
score/inline/rtems/score/schedulerpriority.inl,
score/src/scheduler.c, score/src/schedulerpriority.c,
score/src/schedulerpriorityblock.c,
score/src/schedulerpriorityschedule.c,
score/src/schedulerpriorityunblock.c,
score/src/schedulerpriorityyield.c, score/src/threadchangepriority.c,
score/src/threadclose.c, score/src/threadinitialize.c,
score/src/threadsetpriority.c, score/src/threadsettransient.c:
Significant clean up on Scheduler Plugin Interface. Names were
shortened. Missing operations added. Many scheduler files had
unneeded includes removed. Made pointer to scheduler information in
Thread_Control and Scheduler_Control a void * pointer because the
thread and scheduler wrapper should be unaware of scheduler types AND
this is broken for user provided schedulers.
* score/src/schedulerpriorityallocate.c,
score/src/schedulerpriorityenqueue.c,
score/src/schedulerpriorityenqueuefirst.c,
score/src/schedulerpriorityextract.c,
score/src/schedulerpriorityfree.c,
score/src/schedulerpriorityupdate.c: New files.
* score/src/schedulerprioritythreadschedulerallocate.c,
score/src/schedulerprioritythreadschedulerfree.c,
score/src/schedulerprioritythreadschedulerupdate.c: Removed.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* sapi/include/confdefs.h, sapi/include/rtems/config.h,
score/include/rtems/score/scheduler.h,
score/include/rtems/score/schedulerpriority.h,
score/inline/rtems/score/scheduler.inl,
score/inline/rtems/score/schedulerpriority.inl,
score/src/scheduler.c, score/src/schedulerpriority.c,
score/src/schedulerpriorityblock.c,
score/src/schedulerpriorityschedule.c,
score/src/schedulerprioritythreadschedulerallocate.c,
score/src/schedulerprioritythreadschedulerfree.c,
score/src/schedulerprioritythreadschedulerupdate.c,
score/src/schedulerpriorityunblock.c,
score/src/schedulerpriorityyield.c, score/src/threadchangepriority.c,
score/src/threadclearstate.c, score/src/threadclose.c,
score/src/threadinitialize.c, score/src/threadready.c,
score/src/threadresume.c, score/src/threadsetpriority.c,
score/src/threadsetstate.c, score/src/threadsuspend.c: Simplify the
pluggable scheduler interface. Its configuration made a table
of available schedulers and set a pointer to one of the.
This was heavy handed since you can only use one scheduler
in an application. This configuration mechanism resulted in a
scheduler pointer being passed around when you could put all
scheduler configuration in an initialized structure.
|
|
|
|
|
|
|
|
|
|
|
|
| |
* libmisc/capture/capture.c, posix/src/keyfreememory.c,
posix/src/pthread.c, score/include/rtems/score/wkspace.h,
score/src/objectextendinformation.c,
score/src/objectnamespaceremove.c, score/src/objectsetname.c,
score/src/threadclose.c, score/src/threadinitialize.c,
score/src/wkspace.c: Many places were checking for a NULL pointer
before calling _Workspace_Free. By moving the check into
_Workspace_Free, we eliminate a number of conditional paths and make
it harder to return a NULL pointer.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* include/rtems/bspIo.h, include/rtems/concat.h, include/rtems/irq.h,
score/cpu/i386/rtems/score/idtr.h,
score/cpu/powerpc/rtems/powerpc/registers.h,
score/src/objectidtoname.c, score/src/schedulerpriorityblock.c,
score/src/schedulerpriorityschedule.c,
score/src/schedulerpriorityunblock.c,
score/src/schedulerpriorityyield.c, score/src/thread.c,
score/src/threadchangepriority.c, score/src/threadclearstate.c,
score/src/threadclose.c, score/src/threadcreateidle.c,
score/src/threaddelayended.c, score/src/threaddispatch.c,
score/src/threadget.c, score/src/threadhandler.c,
score/src/threadinitialize.c, score/src/threadloadenv.c,
score/src/threadready.c, score/src/threadreset.c,
score/src/threadrestart.c, score/src/threadresume.c,
score/src/threadsetpriority.c, score/src/threadsetstate.c,
score/src/threadsettransient.c, score/src/threadstackallocate.c,
score/src/threadstackfree.c, score/src/threadstart.c,
score/src/threadstartmultitasking.c, score/src/threadsuspend.c,
score/src/threadtickletimeslice.c, score/src/threadyieldprocessor.c:
Fix typo where license said found in found in.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
PR 1647/cpukit
* posix/src/nanosleep.c, posix/src/sched_yield.c,
rtems/src/taskwakeafter.c, sapi/include/confdefs.h,
sapi/include/rtems/config.h, sapi/src/exinit.c, score/Makefile.am,
score/preinstall.am, score/include/rtems/score/prioritybitmap.h,
score/include/rtems/score/thread.h,
score/inline/rtems/score/thread.inl, score/src/thread.c,
score/src/threadchangepriority.c, score/src/threadclearstate.c,
score/src/threadclose.c, score/src/threadinitialize.c,
score/src/threadready.c, score/src/threadresume.c,
score/src/threadsetpriority.c, score/src/threadsetstate.c,
score/src/threadsettransient.c, score/src/threadsuspend.c,
score/src/threadtickletimeslice.c: Refactor scheduler out of thread
handler to facilitate alternate scheduler implementations.
* score/src/threadyieldprocessor.c: Removed.
* score/src/schedulerprioritythreadschedulerupdate.c,
score/src/schedulerprioritythreadschedulerfree.c,
score/src/schedulerpriorityblock.c, score/src/scheduler.c,
score/src/schedulerprioritythreadschedulerallocate.c,
score/src/schedulerpriorityunblock.c,
score/src/schedulerpriority.c, score/src/schedulerpriorityyield.c,
score/include/rtems/score/schedulerpriority.h,
score/include/rtems/score/scheduler.h,
score/inline/rtems/score/scheduler.inl,
score/inline/rtems/score/schedulerpriority.inl: New files.
|
| |
|
|
|
|
|
|
|
|
|
| |
* libcsupport/src/__times.c, libmisc/cpuuse/cpuusagedata.c,
libmisc/cpuuse/cpuusagereport.c, libmisc/cpuuse/cpuusagereset.c,
rtems/include/rtems/rtems/types.h, rtems/src/ratemongetstatistics.c,
rtems/src/ratemonreportstatistics.c, score/src/threaddispatch.c,
score/src/threadinitialize.c, score/src/threadtickletimeslice.c:
Updated copyright line.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* configure.ac, libcsupport/src/__times.c,
libmisc/cpuuse/cpuusagedata.c, libmisc/cpuuse/cpuusagereport.c,
libmisc/cpuuse/cpuusagereset.c, rtems/include/rtems/rtems/ratemon.h,
rtems/include/rtems/rtems/types.h, rtems/src/ratemongetstatistics.c,
rtems/src/ratemongetstatus.c, rtems/src/ratemonperiod.c,
rtems/src/ratemonreportstatistics.c,
score/include/rtems/score/thread.h, score/src/threaddispatch.c,
score/src/threadinitialize.c, score/src/threadtickletimeslice.c:
Changed the configuration of statistics granularity to use just one
define.
|
| |
|
|
|
|
|
|
| |
* score/include/rtems/score/thread.h, score/src/threadinitialize.c,
score/src/threadstackfree.c: Disable capability for API to let user
provide thread stack when no API configured includes this capability.
|
|
|
|
|
|
|
| |
* score/include/rtems/score/thread.h, score/src/threadhandler.c,
score/src/threadinitialize.c, score/src/threadtickletimeslice.c:
Disable thread protocol and scheduling capabilities not exercised
when POSIX or ITRON API is disabled.
|
|
|
|
|
|
|
| |
* score/src/threadinitialize.c: Rework so there is only one error exit
path. This required setting every variable that contains memory
allocated from the workspace to NULL early and using that assumption
in the one failed exit path.
|
|
|
|
|
|
|
| |
* score/include/rtems/score/thread.h, score/src/threadinitialize.c,
score/src/threadreset.c, score/src/threadresume.c,
score/src/threadsuspend.c: Nesting count on thread suspension is only
supported from ITRON API so disable if ITRON is disabled.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* libcsupport/src/__times.c, libmisc/cpuuse/cpuusagereport.c,
libmisc/cpuuse/cpuusagereset.c, posix/src/clockgettime.c,
posix/src/pthread.c, posix/src/timersettime.c,
rtems/include/rtems/rtems/ratemon.h,
rtems/src/clockgetsecondssinceepoch.c, rtems/src/clockgetuptime.c,
rtems/src/ratemongetstatus.c, rtems/src/ratemonperiod.c,
rtems/src/ratemonreportstatistics.c, rtems/src/taskwakewhen.c,
rtems/src/timerfirewhen.c, rtems/src/timerserver.c,
rtems/src/timerserverfirewhen.c, score/Makefile.am,
score/preinstall.am, score/include/rtems/score/thread.h,
score/include/rtems/score/tod.h, score/src/coretod.c,
score/src/coretodget.c, score/src/coretodgetuptime.c,
score/src/coretodset.c, score/src/coretodtickle.c,
score/src/threaddispatch.c, score/src/threadinitialize.c: Add
SuperCore handler Timestamp to provide an opaque class for the
representation and manipulation of uptime, time of day, and the
difference between two timestamps. By using SuperCore Timestamp, it
is clear which methods and APIs really have to be struct timespec and
which can be in an optimized native format.
* score/include/rtems/score/timestamp.h,
score/src/coretodgetuptimetimespec.c: New files.
|
|
|
|
|
| |
* score/src/threadinitialize.c: _Stack_Ensure_minimum was being called
here and in _Thread_Stack_Allocate.
|
| |
|
|
|
|
|
| |
* libmisc/dummy/dummy.c: Add missing initializers.
* score/src/threadinitialize.c: Change type of loop counter.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* posix/include/rtems/posix/pthread.h, posix/src/pthread.c,
posix/src/pthreadcreate.c, rtems/include/rtems.h, rtems/src/attr.c,
sapi/include/confdefs.h, sapi/include/rtems/config.h,
score/inline/rtems/score/stack.inl, score/src/isr.c,
score/src/mpci.c, score/src/threadcreateidle.c,
score/src/threadinitialize.c, score/src/threadstackallocate.c: Add
ability for application to configure minimum stack size. Add
RTEMS_CONFIGURED_MINIMUM_STACK_SIZE constant so user can clearly
indicate they want the configured as opposed to the recommended
minimum stack size.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* libcsupport/src/__times.c, libmisc/cpuuse/cpuusagereport.c,
libmisc/cpuuse/cpuusagereset.c, libmisc/monitor/mon-task.c,
rtems/include/rtems/rtems/ratemon.h, rtems/src/ratemongetstatus.c,
rtems/src/ratemonperiod.c, score/include/rtems/score/thread.h,
score/src/threaddispatch.c, score/src/threadinitialize.c,
score/src/threadtickletimeslice.c: Add typedefs for cpu usage and
period timing statistics. Also renamed related variables and
structure members so they are the same whether you are using
nanosecond (e.g. struct timespec) or ticks (e.g. uint32_t)
granularity. This lays the groundwork for future cleanup.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* itron/include/rtems/itron/task.h, itron/src/cre_tsk.c,
posix/src/pthreadcreate.c, rtems/src/taskcreate.c,
rtems/src/taskdelete.c, rtems/src/timerserver.c,
score/src/threadclose.c, score/src/threadcreateidle.c,
score/src/threadinitialize.c: Switch task create and delete
operations to using API Allocator Mutex. This moves almost all uses
of the RTEMS Workspace from dispatching disabled to mutex protected
which should improve deterministic behavior. The implementation was
carefully done to allow task create and delete extensions to invoke
more services. In particular, a task delete extension should be able
to do mutex and file operations.
|
|
|
|
|
|
|
|
|
| |
* configure.ac, score/include/rtems/score/coremutex.h,
score/include/rtems/score/thread.h,
score/inline/rtems/score/coremutex.inl,
score/src/coremutexsurrender.c, score/src/threadinitialize.c: Add
support for proper stacking of priority inheritance on mutexes as
well as enforce proper order of release.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* ChangeLog, configure.ac, libcsupport/src/__times.c,
libmisc/cpuuse/cpuuse.c, libmisc/stackchk/check.c,
rtems/include/rtems/rtems/ratemon.h, rtems/src/ratemongetstatus.c,
rtems/src/ratemonperiod.c, rtems/src/ratemonreportstatistics.c,
rtems/src/ratemonresetall.c, rtems/src/ratemontimeout.c,
score/Makefile.am, score/include/rtems/score/thread.h,
score/include/rtems/score/timespec.h, score/src/threaddispatch.c,
score/src/threadinitialize.c, score/src/threadtickletimeslice.c,
score/src/timespecdivide.c: Add nanoseconds granularity to the rate
monotonic period statistics and CPU usage statistics. This capability
is enabled by default although may be conditionally disabled by the
user. It could be too much overhead on small targets but it does not
appear to be bad in early testing. Its impact on code size has not
been evaluated either. It is possible that both forms of statistics
gathering could be disabled with further tweaking of the conditional
compilation.
* score/src/timespecdividebyinteger.c: New file.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
PR 1222/cpukit
* score/Makefile.am, score/include/rtems/score/coremutex.h,
score/include/rtems/score/threadq.h,
score/inline/rtems/score/coremutex.inl, score/src/coremsgsubmit.c,
score/src/coremutexsurrender.c, score/src/threadchangepriority.c,
score/src/threadclearstate.c, score/src/threadhandler.c,
score/src/threadinitialize.c, score/src/threadqdequeuefifo.c,
score/src/threadqdequeuepriority.c, score/src/threadqenqueue.c,
score/src/threadqenqueuefifo.c, score/src/threadqenqueuepriority.c,
score/src/threadqextractfifo.c, score/src/threadqextractpriority.c,
score/src/threadsetstate.c: Enhance so that when the prioirity of a
thread that is blocked on a priority based thread queue is changed,
that its placement in the queue is reevaluated based upon the new
priority. This enhancement includes modifications to the SuperCore as
well as new test cases.
* score/src/threadqrequeue.c: New file.
|
| |
|
|
|
|
|
|
|
| |
PR 654/rtems
* score/src/threadinitialize.c: Initialize the per thread watchdog
timer. When the thread control block is reused, we cannot depend on
it being zeroed.
|
|
|
|
|
|
|
| |
PR 660/rtems
* score/cpu/m68k/rtems/score/m68k.h, score/cpu/mips/cpu_asm.S,
score/src/threadinitialize.c, score/src/threadstackallocate.c: Check
for overflow when allocating stack.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* score/src/Unlimited.txt, score/src/chain.c, score/src/coremsg.c,
score/src/coremsgbroadcast.c, score/src/coremsgclose.c,
score/src/coremsgflush.c, score/src/coremsgflushsupp.c,
score/src/coremsgseize.c, score/src/coremsgsubmit.c,
score/src/coremutex.c, score/src/coremutexflush.c,
score/src/coresem.c, score/src/coresemflush.c, score/src/coretod.c,
score/src/coretodtickle.c, score/src/coretodtoseconds.c,
score/src/coretodvalidate.c, score/src/heap.c,
score/src/heapallocate.c, score/src/heapextend.c,
score/src/heapfree.c, score/src/heapsizeofuserarea.c,
score/src/interr.c, score/src/iterateoverthreads.c,
score/src/mpci.c, score/src/object.c, score/src/objectallocate.c,
score/src/objectallocatebyindex.c, score/src/objectclearname.c,
score/src/objectcomparenameraw.c,
score/src/objectcomparenamestring.c, score/src/objectcopynameraw.c,
score/src/objectcopynamestring.c,
score/src/objectextendinformation.c, score/src/objectfree.c,
score/src/objectget.c, score/src/objectgetbyindex.c,
score/src/objectgetisr.c, score/src/objectgetnoprotection.c,
score/src/objectidtoname.c, score/src/objectinitializeinformation.c,
score/src/objectmp.c, score/src/objectnametoid.c,
score/src/objectshrinkinformation.c, score/src/thread.c,
score/src/threadcreateidle.c, score/src/threadget.c,
score/src/threadidlebody.c, score/src/threadinitialize.c,
score/src/threadmp.c, score/src/threadq.c,
score/src/threadqdequeuepriority.c,
score/src/threadqenqueuepriority.c,
score/src/threadqfirstpriority.c, score/src/threadqflush.c,
score/src/threadreset.c, score/src/threadrestart.c,
score/src/threadsettransient.c, score/src/threadstackallocate.c,
score/src/threadstart.c, score/src/userext.c,
score/src/watchdoginsert.c, score/src/wkspace.c: Convert to using
c99 fixed size types.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* include/rtems/debug.h, include/rtems/seterr.h,
include/rtems/system.h, include/rtems/score/address.h,
include/rtems/score/apiext.h, include/rtems/score/apimutex.h,
include/rtems/score/bitfield.h, include/rtems/score/chain.h,
include/rtems/score/context.h, include/rtems/score/copyrt.h,
include/rtems/score/coremsg.h, include/rtems/score/coremutex.h,
include/rtems/score/coresem.h, include/rtems/score/heap.h,
include/rtems/score/interr.h, include/rtems/score/isr.h,
include/rtems/score/mpci.h, include/rtems/score/mppkt.h,
include/rtems/score/object.h, include/rtems/score/objectmp.h,
include/rtems/score/priority.h, include/rtems/score/stack.h,
include/rtems/score/states.h, include/rtems/score/sysstate.h,
include/rtems/score/thread.h, include/rtems/score/threadmp.h,
include/rtems/score/threadq.h, include/rtems/score/tod.h,
include/rtems/score/tqdata.h, include/rtems/score/userext.h,
include/rtems/score/watchdog.h, include/rtems/score/wkspace.h,
inline/rtems/score/address.inl, inline/rtems/score/chain.inl,
inline/rtems/score/coremsg.inl, inline/rtems/score/coremutex.inl,
inline/rtems/score/coresem.inl, inline/rtems/score/heap.inl,
inline/rtems/score/isr.inl, inline/rtems/score/mppkt.inl,
inline/rtems/score/object.inl, inline/rtems/score/objectmp.inl,
inline/rtems/score/priority.inl, inline/rtems/score/stack.inl,
inline/rtems/score/states.inl, inline/rtems/score/sysstate.inl,
inline/rtems/score/thread.inl, inline/rtems/score/threadmp.inl,
inline/rtems/score/tod.inl, inline/rtems/score/tqdata.inl,
inline/rtems/score/userext.inl, inline/rtems/score/watchdog.inl,
inline/rtems/score/wkspace.inl, macros/rtems/score/address.inl,
macros/rtems/score/chain.inl, macros/rtems/score/coremsg.inl,
macros/rtems/score/coremutex.inl, macros/rtems/score/coresem.inl,
macros/rtems/score/heap.inl, macros/rtems/score/isr.inl,
macros/rtems/score/mppkt.inl, macros/rtems/score/object.inl,
macros/rtems/score/objectmp.inl, macros/rtems/score/priority.inl,
macros/rtems/score/stack.inl, macros/rtems/score/states.inl,
macros/rtems/score/sysstate.inl, macros/rtems/score/thread.inl,
macros/rtems/score/threadmp.inl, macros/rtems/score/tod.inl,
macros/rtems/score/tqdata.inl, macros/rtems/score/userext.inl,
macros/rtems/score/watchdog.inl, macros/rtems/score/wkspace.inl,
src/apiext.c, src/chain.c, src/coremsg.c, src/coremsgbroadcast.c,
src/coremsgclose.c, src/coremsgflush.c, src/coremsgflushsupp.c,
src/coremsgflushwait.c, src/coremsginsert.c, src/coremsgseize.c,
src/coremsgsubmit.c, src/coremutex.c, src/coremutexflush.c,
src/coremutexseize.c, src/coremutexsurrender.c, src/coresem.c,
src/coresemflush.c, src/coresemseize.c, src/coresemsurrender.c,
src/coretod.c, src/coretodset.c, src/coretodtickle.c,
src/coretodtoseconds.c, src/coretodvalidate.c, src/heap.c,
src/heapallocate.c, src/heapextend.c, src/heapfree.c,
src/heapgetinfo.c, src/heapsizeofuserarea.c, src/heapwalk.c,
src/interr.c, src/isr.c, src/iterateoverthreads.c, src/mpci.c,
src/object.c, src/objectallocate.c, src/objectallocatebyindex.c,
src/objectclearname.c, src/objectcomparenameraw.c,
src/objectcomparenamestring.c, src/objectcopynameraw.c,
src/objectcopynamestring.c, src/objectextendinformation.c,
src/objectfree.c, src/objectget.c, src/objectgetbyindex.c,
src/objectgetisr.c, src/objectgetnext.c, src/objectgetnoprotection.c,
src/objectidtoname.c, src/objectinitializeinformation.c,
src/objectmp.c, src/objectnametoid.c, src/objectshrinkinformation.c,
src/thread.c, src/threadchangepriority.c, src/threadclearstate.c,
src/threadclose.c, src/threadcreateidle.c, src/threaddelayended.c,
src/threaddispatch.c, src/threadevaluatemode.c, src/threadget.c,
src/threadhandler.c, src/threadidlebody.c, src/threadinitialize.c,
src/threadloadenv.c, src/threadmp.c, src/threadq.c,
src/threadqdequeue.c, src/threadqdequeuefifo.c,
src/threadqdequeuepriority.c, src/threadqenqueue.c,
src/threadqenqueuefifo.c, src/threadqenqueuepriority.c,
src/threadqextract.c, src/threadqextractfifo.c,
src/threadqextractpriority.c, src/threadqextractwithproxy.c,
src/threadqfirst.c, src/threadqfirstfifo.c,
src/threadqfirstpriority.c, src/threadqflush.c, src/threadqtimeout.c,
src/threadready.c, src/threadreset.c, src/threadresettimeslice.c,
src/threadrestart.c, src/threadresume.c, src/threadrotatequeue.c,
src/threadsetpriority.c, src/threadsetstate.c,
src/threadsettransient.c, src/threadstackallocate.c,
src/threadstackfree.c, src/threadstart.c,
src/threadstartmultitasking.c, src/threadsuspend.c,
src/threadtickletimeslice.c, src/threadyieldprocessor.c,
src/userext.c, src/watchdog.c, src/watchdogadjust.c,
src/watchdoginsert.c, src/watchdogremove.c, src/watchdogtickle.c,
src/wkspace.c: URL for license changed.
|
|
|
|
|
|
|
|
|
| |
* include/rtems/score/thread.h, inline/rtems/score/thread.inl,
src/threaddispatch.c, src/threadinitialize.c:
Move the C library re-enterrant support directly into
the thread dispatch code. RTEMS needs libc and so requiring
libc to use a user extension with its overhead is not the best
solution. This patch lowers the overhead to 2 pointer moves.
|
|
|
|
|
|
|
| |
* src/threadinitialize.c: Per PR181, clear the array of user extension
pointers. This lets user extensions that have hooked the switch handler
know if a task has been processed by the user extension before. If a
user extension is created after a task is started it may not know it.
|
|
|
|
|
| |
* src/threadinitialize.c: Fix my bad hack of Ralf's fp_area
warning removal patch. :(
|
|
|
|
| |
* src/threadinitialize.c: Removed warning.
|
|
|
|
|
|
|
|
|
|
|
| |
a BSP (c4xsim) supporting the simulator included with gdb. This port
was done by Joel Sherrill and Jennifer Averett of OAR Corporation.
Also included with this port is a space/time optimization to eliminate
FP context switch management on CPUs without hardware or software FP.
An issue with this port was that sizeof(unsigned32) = sizeof(unsigned8)
on this CPU. This required addressing alignment checks and assumptions
as well as fixing code that assumed sizeof(unsigned32) == 4.
|
| |
|
| |
|
|
|
|
| |
Working Group. Included are tests.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Problem: a posix thread which is created by
pthread_attr_init(&tattr);
pthread_attr_setinheritsched(&tattr, PTHREAD_EXPLICIT_SCHED);
pthread_attr_setschedpolicy(&tattr, SCHED_RR);
pthread_create(&th, &tattr, func, arg);
has a first timeslice of 2^32 ticks (changing a running thread to
SCHED_RR id ok).
I use RTEMS-4.0.0. I am not sure if the problem exists in the current CVS
head revision. If it's not fixed, the patch at the end should do it.
Peter
--- pthreadcreate.c.orig Wed Jul 28 14:45:58 1999
+++ pthreadcreate.c Wed Jul 28 15:06:09 1999
@@ -199,6 +199,10 @@
api->schedpolicy = schedpolicy;
api->schedparam = schedparam;
+ if ( schedpolicy == SCHED_RR ) {
+ the_thread->cpu_time_budget = _Thread_Ticks_per_timeslice;
+ }
+
/*
* This insures we evaluate the process-wide signals pending when we
* first run.
|