summaryrefslogtreecommitdiffstats
path: root/cpukit/score/src/thread.c (unfollow)
Commit message (Collapse)AuthorFilesLines
2022-02-28score/src/[t-z]*.c: Change license to BSD-2Joel Sherrill1-3/+22
Updates #3053.
2020-12-02score: Canonicalize Doxygen @file commentsSebastian Huber1-3/+6
Use common phrases for the file brief descriptions. Update #3706.
2020-08-31score: Add _Stack_Allocator_do_initialize()Sebastian Huber1-19/+3
Do the stack allocator initialization and sanity check only if a user-provided stack allocator was configured. This avoids a dependency of _Thread_Handler_initialization() on the stack allocator. Update #3959.
2020-08-31score: Add <rtems/score/freechainimpl.h>Sebastian Huber1-0/+1
Hide implementation details. Update #3959.
2020-04-16Canonicalize config.h includeSebastian Huber1-1/+1
Use the following variant which was already used by most source files: #ifdef HAVE_CONFIG_H #include "config.h" #endif
2019-12-13config: Add _MPCI_ConfigurationSebastian Huber1-1/+1
Replace the user MPCI configuration table with a system provided _MPCI_Configuration. Update #3735.
2019-04-04doxygen: Rename Score* groups in RTEMSScore*Sebastian Huber1-1/+1
Update #3706
2018-12-14score: Static Objects_Information initializationSebastian Huber1-28/+8
Statically allocate the objects information together with the initial set of objects either via <rtems/confdefs.h>. Provide default object informations with zero objects via librtemscpu.a. This greatly simplifies the workspace size estimate. RTEMS applications which do not use the unlimited objects option are easier to debug since all objects reside now in statically allocated objects of the right types. Close #3621.
2018-12-07score: Remove Objects_Information::is_stringSebastian Huber1-2/+1
Use Objects_Information::name_length to store this information. Update #3621.
2018-10-29score: Remove bogus thread object name supportSebastian Huber1-8/+4
Update #2514.
2016-12-12score: Introduce _Internal_error()Sebastian Huber1-1/+1
2016-12-09score: Remove fatal is internal indicatorSebastian Huber1-5/+1
The fatal is internal indicator is redundant since the fatal source and error code uniquely identify a fatal error. Keep the fatal user extension is internal parameter for backward compatibility and set it to false always. Update #2825.
2016-11-03score: Conditionally enable thread resource countSebastian Huber1-0/+2
Maintain the thread resource count only in debug configurations. This is a performance optimization for non-debug configurations.
2016-09-21score: Rework thread priority managementSebastian Huber1-3/+1
Add priority nodes which contribute to the overall thread priority. The actual priority of a thread is now an aggregation of priority nodes. The thread priority aggregation for the home scheduler instance of a thread consists of at least one priority node, which is normally the real priority of the thread. The locking protocols (e.g. priority ceiling and priority inheritance), rate-monotonic period objects and the POSIX sporadic server add, change and remove priority nodes. A thread changes its priority now immediately, e.g. priority changes are not deferred until the thread releases its last resource. Replace the _Thread_Change_priority() function with * _Thread_Priority_perform_actions(), * _Thread_Priority_add(), * _Thread_Priority_remove(), * _Thread_Priority_change(), and * _Thread_Priority_update(). Update #2412. Update #2556.
2016-09-08score: Move thread wait node to scheduler nodeSebastian Huber1-0/+1
Update #2556.
2016-06-22score: Add thread priority to scheduler nodesSebastian Huber1-1/+0
The thread priority is manifest in two independent areas. One area is the user visible thread priority along with a potential thread queue. The other is the scheduler. Currently, a thread priority update via _Thread_Change_priority() first updates the user visble thread priority and the thread queue, then the scheduler is notified if necessary. The priority is passed to the scheduler via a local variable. A generation counter ensures that the scheduler discards out-of-date priorities. This use of a local variable ties the update in these two areas close together. For later enhancements and the OMIP locking protocol implementation we need more flexibility. Add a thread priority information block to Scheduler_Node and synchronize priority value updates via a sequence lock on SMP configurations. Update #2556.
2016-05-12score: Introduce thread state lockSebastian Huber1-0/+1
Update #2556.
2016-04-21score: Simplify _Objects_Initialize_information()Sebastian Huber1-14/+2
Remove unused supports_global parameter. Convert _Objects_Initialize_information() to a macro to avoid use of RTEMS_MULTIPROCESSING define for each caller.
2016-02-17score: Avoid SCORE_EXTERNSebastian Huber1-0/+2
Delete SCORE_INIT. This finally removes the some.h: #ifndef SOME_XYZ_EXTERN #define SOME_XYZ_EXTERN extern #endif SOME_XYZ_EXTERN type xyz; some_xyz.c: #define SOME_XYZ_EXTERN #include <some.h> pattern in favour of some.h: extern type xyz; some_xyz.c #include <some.h> type xyz; Update #2559.
2015-09-04score: Implement SMP-specific priority queueSebastian Huber1-1/+2
2015-07-23score: Introduce Thread_queue_HeadsSebastian Huber1-4/+39
Move the storage for the thread queue heads to the threads. Each thread provides a set of thread queue heads allocated from a dedicated memory pool. In case a thread blocks on a queue, then it lends its heads to the queue. In case the thread unblocks, then it takes a free set of threads from the queue. Since a thread can block on at most one queue this works. This mechanism is used in FreeBSD. The motivation for this change is to reduce the memory demands of the synchronization objects. On a 32-bit uni-processor configuration the Thread_queue_Control size is now 8 bytes, compared to 64 bytes in RTEMS 4.10 (other changes reduced the size as well).
2015-05-19score: Rework _Thread_Change_priority()Sebastian Huber1-0/+1
Move the writes to Thread_Control::current_priority and Thread_Control::real_priority into _Thread_Change_priority() under the protection of the thread lock. Add a filter function to _Thread_Change_priority() to enable specialized variants. Avoid race conditions during a thread priority restore with the new Thread_Control::priority_restore_hint for an important average case optimizations used by priority inheritance mutexes. Update #2273.
2015-05-19score: More thread queue operationsSebastian Huber1-1/+0
Move thread queue discipline specific operations into Thread_queue_Operations. Use a separate node in the thread control block for the thread queue to make it independent of the scheduler data structures. Update #2273.
2015-05-19score: Add Thread_queue_OperationsSebastian Huber1-1/+1
Replace the Thread_Priority_control with more general Thread_queue_Operations which will be used for generic priority change, timeout, signal and wait queue operations in the future. Update #2273.
2015-05-06score: Fix Thread_Control and Thread_Proxy_controlSebastian Huber1-0/+19
Fix layout of the common block of Thread_Control and Thread_Proxy_control. Ensure that the offsets match.
2014-04-22score: Fix warningSebastian Huber1-2/+0
2014-04-22score: Delete superfluous assignmentsSebastian Huber1-7/+0
These values are already zero initialized by C run-time setup.
2014-04-15score: Simplify thread control initializationSebastian Huber1-2/+1
The thread control block contains fields that point to application configuration dependent memory areas, like the scheduler information, the API control blocks, the user extension context table, the RTEMS notepads and the Newlib re-entrancy support. Account for these areas in the configuration and avoid extra workspace allocations for these areas. This helps also to avoid heap fragementation and reduces the per thread memory due to a reduced heap allocation overhead.
2014-04-07score: Delete _Thread_Ticks_per_timesliceSebastian Huber1-2/+0
Use the Configuration instead.
2014-04-07score: Delete _Thread_Maximum_extensionsSebastian Huber1-4/+0
Use the Configuration instead.
2014-03-21Change all references of rtems.com to rtems.org.Chris Johns1-1/+1
2014-02-21score: Rename _Internal_error_Occurred()Sebastian Huber1-1/+1
Rename _Internal_error_Occurred() into _Terminate().
2014-02-04score: Add _Thread_Get_maximum_internal_threads()Sebastian Huber1-11/+1
2013-07-26score: Create thread implementation headerSebastian Huber1-21/+2
Move implementation specific parts of thread.h and thread.inl into new header file threadimpl.h. The thread.h contains now only the application visible API. Remove superfluous header file includes from various files.
2013-05-16smp: Add maximum_processors field to configSebastian Huber1-1/+1
Delete rtems_configuration_get_smp_maximum_processors(). Delete rtems_configuration_smp_maximum_processors variable. Add maximum_processors field to rtems_configuration_table if RTEMS_SMP is defined. Add rtems_configuration_get_maximum_processors().
2012-11-30score misc: Score misc: Clean up Doxygen #9 (GCI 2012)Alex Ivanov1-13/+7
This patch is a task from GCI 2012 which improves the Doxygen comments in the RTEMS source. https://google-melange.appspot.com/gci/task/view/google/gci2012/7977211
2012-11-22score: Add and use <rtems/score/userextimpl.h>Sebastian Huber1-1/+0
This file contains the parts of <rtems/score/userext.h> that are only necessary for the RTEMS implementation.
2012-05-11Remove All CVS Id Strings Possible Using a ScriptJoel Sherrill1-2/+0
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.
2011-12-142011-12-14 Sebastian Huber <sebastian.huber@embedded-brains.de>Sebastian Huber1-14/+13
PR 1924/cpukit * sapi/include/rtems/config.h: Added stack_allocate_init_hook to rtems_configuration_table. * sapi/include/confdefs.h: Added CONFIGURE_TASK_STACK_FROM_ALLOCATOR and CONFIGURE_TASK_STACK_ALLOCATOR_INIT defines. Set default stack allocator and free hook to _Workspace_Allocate() and _Workspace_Free() respectively. * score/src/thread.c, score/src/threadstackallocate.c, score/src/threadstackfree.c: Update due to API changes.
2011-04-042011-04-04 Joel Sherrill <joel.sherrilL@OARcorp.com>Joel Sherrill1-1/+1
PR 1773/cpukit * sapi/include/confdefs.h, sapi/src/exinit.c, score/include/rtems/bspsmp.h, score/src/percpu.c, score/src/thread.c: Rename rtems_smp_maximum_processor to rtems_configuration_smp_maximum_processor. Eliminate printk().
2011-03-162011-03-16 Jennifer Averett <jennifer.averett@OARcorp.com>Joel Sherrill1-17/+29
PR 1729/cpukit * configure.ac, sapi/include/confdefs.h, sapi/src/exinit.c, score/Makefile.am, score/preinstall.am, score/cpu/i386/rtems/score/cpu.h, score/cpu/sparc/cpu_asm.S, score/cpu/sparc/rtems/score/cpu.h, score/include/rtems/score/basedefs.h, score/include/rtems/score/context.h, score/include/rtems/score/percpu.h, score/src/percpu.c, score/src/thread.c, score/src/threadcreateidle.c: Add next step in SMP support. This adds an allocated array of the Per_CPU structures to support multiple cpus vs a single instance of the structure which is still used if SMP support is disabled. Configuration support is also added to explicitly enable or disable SMP. But SMP can only be enabled for the CPUs which will support it initially -- SPARC and i386. With the stub BSP support, a BSP can be run as a single core SMP system from an RTEMS data structure standpoint. * aclocal/check-smp.m4, aclocal/enable-smp.m4, score/include/rtems/bspsmp.h, score/include/rtems/score/smplock.h, score/src/smp.c, score/src/smplock.c: New files.
2011-01-282011-01-28 Joel Sherrill <joel.sherrilL@OARcorp.com>Joel Sherrill1-1/+1
* 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.
2010-11-242010-11-24 Gedare Bloom <giddyup44@yahoo.com>Joel Sherrill1-8/+1
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.
2010-07-302010-07-30 Gedare Bloom <giddyup44@yahoo.com>Joel Sherrill1-1/+1
PR 1599/cpukit * posix/src/psignalunblockthread.c, posix/src/pthreadkill.c, rtems/src/signalsend.c, score/include/rtems/score/percpu.h, score/inline/rtems/score/thread.inl, score/src/thread.c, score/src/threadchangepriority.c, score/src/threadclearstate.c, score/src/threaddispatch.c, score/src/threadready.c, score/src/threadresume.c, score/src/threadsetstate.c, score/src/threadstartmultitasking.c, score/src/threadsuspend.c, score/src/threadyieldprocessor.c: Rename _Context_Switch_necessary to _Thread_Dispatch_necessary to more properly reflect the intent.
2010-06-292010-06-28 Joel Sherrill <joel.sherrill@oarcorp.com>Joel Sherrill1-2/+0
PR 1573/cpukit * configure.ac, posix/src/killinfo.c, posix/src/psignalclearprocesssignals.c, posix/src/psignalsetprocesssignals.c, posix/src/psignalunblockthread.c, posix/src/pthreadcreate.c, posix/src/pthreadkill.c, posix/src/pthreadsigmask.c, rtems/src/signalsend.c, rtems/src/taskmode.c, score/Makefile.am, score/preinstall.am, score/include/rtems/system.h, score/include/rtems/score/context.h, score/include/rtems/score/isr.h, score/include/rtems/score/thread.h, score/src/isr.c, score/src/isrthreaddispatch.c, score/src/thread.c, score/src/threaddispatch.c, score/src/threadloadenv.c: Add a per cpu data structure which contains the information required by RTEMS for each CPU core. This encapsulates information such as thread executing, heir, idle and dispatch needed. * score/include/rtems/score/percpu.h, score/src/percpu.c: New files.
2009-09-112009-09-11 Joel Sherrill <joel.sherrill@OARcorp.com>Joel Sherrill1-1/+1
* score/include/rtems/score/object.h, score/inline/rtems/score/object.inl, score/src/objectgetnameasstring.c, score/src/objectidtoname.c, score/src/objectinitializeinformation.c, score/src/objectnamespaceremove.c, score/src/objectnametoidstring.c, score/src/objectsetname.c, score/src/thread.c, score/src/threadcreateidle.c: Disable object string name support when POSIX is not enabled.
2008-12-22Eliminate TRUE/FALSE.Ralf Corsepius1-4/+4
2008-12-172008-12-17 Joel Sherrill <joel.sherrill@oarcorp.com>Joel Sherrill1-12/+14
* sapi/include/rtems/extension.h, sapi/include/rtems/io.h, sapi/src/exinit.c, sapi/src/extension.c, sapi/src/io.c, score/include/rtems/score/mpci.h, score/include/rtems/score/object.h, score/include/rtems/score/thread.h, score/include/rtems/score/tod.h, score/include/rtems/score/userext.h, score/include/rtems/score/wkspace.h, score/src/coretod.c, score/src/mpci.c, score/src/object.c, score/src/thread.c, score/src/userext.c, score/src/wkspace.c: Convert SAPI manager and SuperCore Handler initialization routines to directly pull parameters from configuration table.
2008-12-152008-12-15 Joel Sherrill <joel.sherrill@oarcorp.com>Joel Sherrill1-3/+3
* itron/include/rtems/itron/itronapi.h, libmisc/capture/capture.c, libmisc/monitor/mon-config.c, libmisc/monitor/mon-driver.c, libmisc/monitor/mon-itask.c, libmisc/monitor/mon-mpci.c, posix/include/rtems/posix/config.h, posix/include/rtems/posix/posixapi.h, rtems/include/rtems/rtems/config.h, rtems/include/rtems/rtems/rtemsapi.h, rtems/src/taskinitusers.c, sapi/include/confdefs.h, sapi/include/rtems/config.h, sapi/include/rtems/init.h, sapi/src/exinit.c, sapi/src/itronapi.c, sapi/src/posixapi.c, sapi/src/rtemsapi.c, score/src/isr.c, score/src/thread.c, score/src/threadcreateidle.c, score/src/threadstackallocate.c, score/src/threadstackfree.c, score/src/wkspace.c: Eliminate pointers to API configuration tables in the main configuration table. Reference the main configuration table and the API configuration tables directly using the confdefs.h version rather than obtaining a pointer to it. This eliminated some variables, a potential fatal error, some unnecessary default configuration structures. Overall, about a 4.5% reduction in the code size for minimum and hello on the SPARC.
2008-08-072008-08-07 Joel Sherrill <joel.sherrill@OARcorp.com>Joel Sherrill1-0/+4
* score/include/rtems/score/sysstate.h, score/inline/rtems/score/sysstate.inl, score/src/thread.c: Make _System_state_Is_multiprocessing unused when multiprocessing is not enabled. Saves one more variable from single processor configuration.