summaryrefslogtreecommitdiffstats
path: root/cpukit/include/rtems/score/scheduler.h (follow)
Commit message (Collapse)AuthorAgeFilesLines
* cpukit/include/rtems/score/[s-z]*.h: Change license to BSD-2Joel Sherrill2022-02-281-3/+22
| | | | Updates #3053.
* Avoid ISR_LOCK_MEMBER() since it confuses DoxygenSebastian Huber2021-12-091-2/+2
| | | | | If RTEMS_SMP is not defined, then Doxygen adds the comments intended for conditional the lock member to the next member.
* score: Add SMP scheduler make/clean stickySebastian Huber2021-11-231-0/+75
| | | | | | | | | | | | | | | | | | | | This patch fixes the following broken behaviour: While a thread is scheduled on a helping scheduler, while it does not own a MrsP semaphore, if it obtains a MrsP semaphore, then no scheduler node using an idle thread and the ceiling priority of the semaphore is unblocked for the home scheduler. This could lead to priority inversion issues and is not in line with the MrsP protocol. Introduce two new scheduler operations which are only enabled if RTEMS_SMP is defined. The operations are used to make the scheduler node of the home scheduler sticky and to clean the sticky property. This helps to keep the sticky handing out of the frequently used priority update operation. Close #4532.
* score: Introduce CPU budget operationsSebastian Huber2021-11-151-17/+0
| | | | | | | | | | | | | | This patch set replaces the CPU budget algorithm enumeration with a set of CPU budget operations which implement a particular CPU budget algorithm. This helps to hide the CPU budget algorithm implementation details from the general thread handling. The CPU budget callouts are turned into CPU budget operations. This slightly reduces the size of the thread control block. All schedulers used the default scheduler tick implementation. The tick scheduler operation is removed and the CPU budget operations are directly used in _Watchdog_Tick() if the executing thread uses a CPU budget algorithm. This is performance improvement for all threads which do not use a CPU budget algorithm (default behaviour).
* score: Remove unused default scheduler opsSebastian Huber2021-09-211-46/+13
| | | | | | | | | | If SMP support is enabled and the system has exactly one processor, then it may use an uniprocessor scheduler. The ask for help, reconsider help request, and withdraw node operations can be NULL in this case, since they are only used if a thread has at least one helping scheduler node. At least two schedulers are required to get a helping node and each scheduler involved must own at least one processor. This is not possible on a system with exactly one processor.
* score: Provide two thread pin/unpin defaultsSebastian Huber2021-09-211-3/+24
| | | | | | | | | | | | | | The uniprocessor schedulers do not support systems with more than more processors. So they rivially support thread pinning and thus the SMP_FATAL_SCHEDULER_PIN_OR_UNPIN_NOT_SUPPORTED cannot happen. Add a second default implementation for SMP schedulers which do not support thread pinning. Change license to BSD-2-Clause according to file history and re-licensing agreement. Update #3053.
* score: SCHEDULER_OPERATION_DEFAULT_GET_SET_AFFINITYSebastian Huber2021-09-211-2/+14
| | | | | Rename SCHEDULER_OPERATION_DEFAULT_GET_SET_AFFINITY in SCHEDULER_DEFAULT_SET_AFFINITY_OPERATION. Add Doxygen comment.
* score: SCHEDULER_OPERATION_DEFAULT_ASK_FOR_HELPSebastian Huber2021-09-211-2/+13
| | | | | Rename SCHEDULER_OPERATION_DEFAULT_ASK_FOR_HELP in SCHEDULER_DEFAULT_SMP_OPERATIONS. Add a Doxygen comment.
* Return status code for _Scheduler_Set_affinity()Sebastian Huber2021-04-271-4/+8
| | | | | This avoids having conditional statements to get the API-specific status code.
* score: Canonicalize Doxygen @file commentsSebastian Huber2020-12-021-4/+3
| | | | | | Use common phrases for the file brief descriptions. Update #3706.
* score: Improve Scheduler Handler documentationSebastian Huber2020-09-181-13/+10
|
* score: _Scheduler_Is_non_preempt_mode_supported()Sebastian Huber2020-02-251-0/+8
| | | | | | | | If the non-preempt mode for threads is supported depends on the scheduler implementation. Add _Scheduler_Is_non_preempt_mode_supported() to indicate this. Update #3876.
* doxygen: score: adjust doc in scheduler.h to doxygen guidelinesAndreas Dachsberger2019-05-131-60/+65
| | | | Update #3706.
* doxygen: Rename Score* groups in RTEMSScore*Sebastian Huber2019-04-041-2/+2
| | | | Update #3706
* Remove explicit file names from @fileSebastian Huber2019-02-281-1/+1
| | | | | | This makes the @file documentation independent of the actual file name. Update #3707.
* score: Add thread pin/unpin supportSebastian Huber2018-09-101-0/+48
| | | | | | | | | Add support to temporarily pin a thread to its current processor. This may be used to access per-processor data structures in critical sections with enabled thread dispatching, e.g. a pinned thread is allowed to block. Update #3508.
* Remove make preinstallChris Johns2018-01-251-0/+556
A speciality of the RTEMS build system was the make preinstall step. It copied header files from arbitrary locations into the build tree. The header files were included via the -Bsome/build/tree/path GCC command line option. This has at least seven problems: * The make preinstall step itself needs time and disk space. * Errors in header files show up in the build tree copy. This makes it hard for editors to open the right file to fix the error. * There is no clear relationship between source and build tree header files. This makes an audit of the build process difficult. * The visibility of all header files in the build tree makes it difficult to enforce API barriers. For example it is discouraged to use BSP-specifics in the cpukit. * An introduction of a new build system is difficult. * Include paths specified by the -B option are system headers. This may suppress warnings. * The parallel build had sporadic failures on some hosts. This patch removes the make preinstall step. All installed header files are moved to dedicated include directories in the source tree. Let @RTEMS_CPU@ be the target architecture, e.g. arm, powerpc, sparc, etc. Let @RTEMS_BSP_FAMILIY@ be a BSP family base directory, e.g. erc32, imx, qoriq, etc. The new cpukit include directories are: * cpukit/include * cpukit/score/cpu/@RTEMS_CPU@/include * cpukit/libnetworking The new BSP include directories are: * bsps/include * bsps/@RTEMS_CPU@/include * bsps/@RTEMS_CPU@/@RTEMS_BSP_FAMILIY@/include There are build tree include directories for generated files. The include directory order favours the most general header file, e.g. it is not possible to override general header files via the include path order. The "bootstrap -p" option was removed. The new "bootstrap -H" option should be used to regenerate the "headers.am" files. Update #3254.