summaryrefslogtreecommitdiffstats
path: root/cpukit/include/rtems/score/smpimpl.h (follow)
Commit message (Collapse)AuthorAgeFilesLines
* score: Improve C/C++ standard compatibilitySebastian Huber2024-04-091-1/+1
| | | | | | The processor mask implementation uses flsl() from <strings.h> which is only BSD visible. Move the implementation to a separate header file to hide it from the API level. This fixes build errors with GCC 14.
* score: Remove unused return valueSebastian Huber2023-01-241-11/+4
| | | | | | | Several SMP message processing functions returned a value. This value was always unused. Close #4822.
* Do not use RTEMS_INLINE_ROUTINESebastian Huber2022-09-191-2/+2
| | | | | | | Directly use "static inline" which is available in C99 and later. This brings the RTEMS implementation closer to standard C. Close #3935.
* smp: Add fatal errorSebastian Huber2022-03-241-1/+2
| | | | | | | Add SMP-specifc SMP_FATAL_MULTITASKING_START_ON_NOT_ONLINE_PROCESSOR fatal error. This fatal error helps to diagnose a broken SMP startup sequence. Without this error a context switch using the NULL pointer for the thread control block happens which may be difficult to debug.
* cpukit/include/rtems/score/[s-z]*.h: Change license to BSD-2Joel Sherrill2022-02-281-3/+22
| | | | Updates #3053.
* score: Ensure only one CPU if requiredSebastian Huber2021-09-211-1/+2
| | | | | | | Issue the new fatal SMP error SMP_FATAL_SCHEDULER_REQUIRES_EXACTLY_ONE_PROCESSOR if the system starts with not exactly one processor and an uniprocessor scheduler is configured.
* score: Change _SMP_Send_message() parameter typeSebastian Huber2021-07-291-4/+5
| | | | | Use the processor control to specify the target processor since this is what the callers have available.
* score: Remove SMP message multicast/broadcastSebastian Huber2021-07-281-22/+0
| | | | | Remove the unused _SMP_Send_message_multicast() and _SMP_Send_message_broadcast().
* score: Simplify SMP processor state handlingSebastian Huber2021-07-281-11/+50
| | | | | | | | The per-CPU states which control the SMP system initialization were added quite early during the SMP support development. Replace this initial implementation with a simplified one. There is no longer a global SMP lock required which serialized the state changes of all processors. The new implementation better integrates with the per-CPU jobs.
* score: Remove superfluous type qualifierSebastian Huber2021-02-011-1/+1
| | | | | This fix relates to a Coverity issue (PW.USELESS_TYPE_QUALIFIER_ON_RETURN_TYPE).
* score: Canonicalize Doxygen @file commentsSebastian Huber2020-12-021-1/+2
| | | | | | Use common phrases for the file brief descriptions. Update #3706.
* score: Canonicalize Doxygen groupsSebastian Huber2020-12-021-1/+1
| | | | | | | Adjust group identifier and names to be in line with a common pattern. Use common phrases for the group brief descriptions. Update #3706.
* rtems: Improve RTEMS_NO_RETURN attributeSebastian Huber2020-10-101-2/+2
| | | | | | | | | | | Provide RTEMS_NO_RETURN also in case RTEMS_DEBUG is defined to prevent errors like this: error: no return statement in function returning non-void [-Werror=return-type] Use C11 and C++11 standard means to declare a no-return function. Close #4122.
* score: Add _SMP_Need_inter_processor_interrupts()Sebastian Huber2020-02-251-0/+15
| | | | | | | Test for the proper system condition instead of using the rtems_configuration_is_smp_enabled() workaround. Update #3876.
* score: Add _SMP_Unicast_action()Sebastian Huber2019-05-201-0/+15
|
* score: Remove superfluous includeSebastian Huber2019-05-201-1/+0
|
* score: Add _SMP_Synchronize()Sebastian Huber2019-05-201-0/+8
|
* score: Remove unused SMP_MESSAGE_TESTSebastian Huber2019-05-201-31/+1
| | | | All uses were replaced by per-processor jobs.
* score: Remove SMP_MESSAGE_CLOCK_TICKSebastian Huber2019-05-201-10/+0
| | | | Use _SMP_Multicast_action() instead.
* score: Simplify _SMP_Multicast_action()Sebastian Huber2019-05-201-3/+5
| | | | | | Move resposibility to disable thread dispatching to the caller of _SMP_Multicast_action(). Using an interrupt disable for this purpose is questionable.
* score: Add _SMP_Othercast_action()Sebastian Huber2019-05-201-0/+15
|
* score: Add _SMP_Broadcast_action()Sebastian Huber2019-05-201-4/+20
|
* doxygen: score: adjust doc in smpimpl.h to doxygen guidelinesAndreas Dachsberger2019-05-131-19/+32
| | | | Update #3706.
* score: Remove _SMP_Before_multitasking_action()Sebastian Huber2019-04-121-44/+0
| | | | Use _SMP_Multicast_action() instead.
* score: Improve _SMP_Multicast_action()Sebastian Huber2019-04-121-1/+2
| | | | Let it work during system initialization.
* score: Rework SMP multicast actionSebastian Huber2019-04-121-9/+4
| | | | | Use a FIFO list of jobs per processor to carry out the SMP multicast action. Use a done indicator per job to reduce the bus traffic a bit.
* score: Use processor mask in _SMP_Multicast_actionSebastian Huber2019-04-121-10/+9
| | | | Processor_mask is the internal data type to deal with processor sets.
* doxygen: Rename Score* groups in RTEMSScore*Sebastian Huber2019-04-041-2/+2
| | | | Update #3706
* doxygen: Reviewed cpukit/include/rtems/scoreAndreas Dachsberger2019-04-021-3/+1
| | | | Update #3706.
* score: Add thread pin/unpin supportSebastian Huber2018-09-101-1/+2
| | | | | | | | | 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.
* score: _SMP_Inter_processor_interrupt_handler()Sebastian Huber2018-07-251-1/+1
| | | | | | Optimize _SMP_Inter_processor_interrupt_handler() for the common case in which the inter-processor interrupt is only used to trigger a thread dispatch.
* _SMP_Start_multitasking_on_secondary_processor()Sebastian Huber2018-07-251-2/+5
| | | | | Pass current processor control as first parameter to make dependency more explicit.
* score: _SMP_Inter_processor_interrupt_handler()Sebastian Huber2018-07-251-5/+4
| | | | | Pass current processor control via parameter since it may be already available at the caller side.
* Remove make preinstallChris Johns2018-01-251-0/+354
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.