summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* bsps/cache: Optimize smp_cache_broadcast()Sebastian Huber2021-07-291-1/+2
| | | | | Directly call the handler on the executing processor instead of doing this indirectly via a per-CPU job.
* score: Change _SMP_Send_message() parameter typeSebastian Huber2021-07-295-14/+19
| | | | | Use the processor control to specify the target processor since this is what the callers have available.
* score: Assert job properties in _Per_CPU_Add_job()Sebastian Huber2021-07-291-0/+2
|
* score: Add _Per_CPU_Submit_job()Sebastian Huber2021-07-297-22/+30
|
* score: Split SMP multicast action moduleSebastian Huber2021-07-296-32/+160
| | | | | Split up the SMP multicast action module since the use of the SMP multicast action variants depend on the architecture and BSP.
* score: Return value in _SMP_Process_message()Sebastian Huber2021-07-281-0/+2
|
* score: Canonicalize _CPU_Fatal_halt()Sebastian Huber2021-07-2856-322/+250
| | | | | | | | Move _CPU_Fatal_halt() declaration to <rtems/score/cpuimpl.h> and make sure it is a proper declaration of a function which does not return. Fix the type of the error code. If necessary, add the implementation to cpu.c. Implementing _CPU_Fatal_halt() as a function makes it possible to wrap this function for example to fully test _Terminate().
* score: Move per-CPU jobs supportSebastian Huber2021-07-284-88/+130
| | | | Add percpujobs.c to contain the per-CPU jobs implementation.
* score: Remove SMP message multicast/broadcastSebastian Huber2021-07-282-61/+1
| | | | | Remove the unused _SMP_Send_message_multicast() and _SMP_Send_message_broadcast().
* score: Simplify SMP processor state handlingSebastian Huber2021-07-2810-250/+270
| | | | | | | | 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 processor event broadcast/receiveSebastian Huber2021-07-2817-137/+61
| | | | | | Remove _CPU_SMP_Processor_event_broadcast() and _CPU_SMP_Processor_event_receive(). These functions are hard to use since they are subject to the lost wake up problem.
* libcsupport: Consistent rtems_putc() outputSebastian Huber2021-07-281-16/+34
| | | | | | | | | Use the same function to output the '\r\n' combination produced by rtems_putc(). Fix the format. Change licence according to file history. Update #3053.
* libcsupport: Fix TOCTOU in getchark()Sebastian Huber2021-07-281-8/+13
| | | | | | | Use the same function pointer value to check against NULL and call the function (if non-NULL). Fix format, add Doxygen comments, and reduce includes.
* score: Remove _Internal_errors_What_happenedSebastian Huber2021-07-283-29/+2
| | | | | | | | | | Users have access to the fatal error source and code though the fatal error extension. The user-specific fatal error handling should be done in statically initialized fatal error handlers. The _Internal_errors_What_happened was updated after the fatal error extension. In addition, there was no API to get the information stored in _Internal_errors_What_happened. In SMP configurations, this object could contain a mix of different fatal errors. Remove this object to save some bytes of storage.
* bsps/irq: bsp_interrupt_facility_initialize()Sebastian Huber2021-07-2736-148/+90
| | | | | | Do not return a status code in bsp_interrupt_facility_initialize() since this leads to unreachable code in bsp_interrupt_initialize(). Use RTEMS_DEBUG assertions in bsp_interrupt_facility_initialize() if necessary.
* validation: Test rtems_interrupt_handler_iterate()Sebastian Huber2021-07-262-0/+637
| | | | Update #3269.
* validation: Test rtems_interrupt_set_affinity()Sebastian Huber2021-07-262-0/+671
| | | | Update #3269.
* validation: Test rtems_interrupt_get_affinity()Sebastian Huber2021-07-262-0/+684
| | | | Update #3269.
* validation: Test rtems_interrupt_raise_on()Sebastian Huber2021-07-264-2/+722
| | | | Update #3269.
* validation: Test rtems_interrupt_is_pending()Sebastian Huber2021-07-262-0/+630
| | | | Update #3269.
* validation: Test rtems_interrupt_clear()Sebastian Huber2021-07-262-0/+587
| | | | Update #3269.
* validation: Test rtems_interrupt_raise()Sebastian Huber2021-07-262-0/+577
| | | | Update #3269.
* validation: Test rtems_interrupt_entry_remove()Sebastian Huber2021-07-262-0/+1433
| | | | Update #3269.
* validation: Test rtems_interrupt_entry_install()Sebastian Huber2021-07-262-0/+1365
| | | | Update #3269.
* validation: Test rtems_interrupt_vector_disable()Sebastian Huber2021-07-262-0/+633
| | | | Update #3269.
* validation: Test rtems_interrupt_vector_enable()Sebastian Huber2021-07-262-0/+639
| | | | Update #3269.
* validation: rtems_interrupt_vector_is_enabled()Sebastian Huber2021-07-262-0/+628
| | | | Update #3269.
* validation: Test rtems_interrupt_get_attributes()Sebastian Huber2021-07-262-0/+441
| | | | Update #3269.
* validation: GetTestableInterruptVector()Sebastian Huber2021-07-262-0/+49
| | | | Update #3269.
* validation: GetValidInterruptVectorNumber()Sebastian Huber2021-07-262-0/+31
| | | | Update #3269.
* validation: HasInterruptVectorEntriesInstalled()Sebastian Huber2021-07-263-0/+82
| | | | Update #3269.
* validation: Add CallWithinISR()Sebastian Huber2021-07-263-0/+149
| | | | Update #3269.
* bsp/raspberrypi: Add interrupt get/set affinitySebastian Huber2021-07-261-0/+26
| | | | | | | | Add default implementations for bsp_interrupt_get_affinity() and bsp_interrupt_set_affinity() which are required to link all tests in SMP configurations. Update #3269.
* bsps/irq: Add rtems_interrupt_entry_install()Sebastian Huber2021-07-2617-541/+681
| | | | | | | | | | | | | | | | | | | Add rtems_interrupt_entry_remove(). Split up irq-generic.c into several files. In particular, place all functions which use dynamic memory into their own file. Add optional macros to let the BSP customize the vector installation after installing the first entry and the vector removal before removing the last entry: * bsp_interrupt_vector_install() * bsp_interrupt_vector_remove() Use these new customization options in the m68k/genmcf548x BSP so re-use the generic interrupt controller support. Update #3269.
* bsps/irq: Move bsp_interrupt_handler_is_empty()Sebastian Huber2021-07-263-30/+11
| | | | | | This function is only used by one BSP. Update #3269.
* bsps/irq: Add bsp_interrupt_check_and_lock()Sebastian Huber2021-07-263-63/+86
| | | | | | | | Return RTEMS_INCORRECT_STATE instead of RTEMS_INTERNAL_ERROR in case the interrupt support is not initialized. This is similar to rtems_timer_server_fire_after() for example. Update #3269.
* bsps/irq: Use rtems_interrupt_entrySebastian Huber2021-07-263-25/+16
| | | | Update #3269.
* rtems: Add rtems_interrupt_entry_install()Sebastian Huber2021-07-261-0/+237
| | | | | | | | | | Add RTEMS_INTERRUPT_ENTRY_INITIALIZER(), rtems_interrupt_entry_initialize(), and rtems_interrupt_entry_remove(). This allows to install interrupt handlers using user-provided storage as an alternative to rtems_interrupt_handler_install() which has to allocate memory. Update #3269.
* sparc/irq: Implement new interrupt directivesSebastian Huber2021-07-266-22/+162
| | | | Update #3269.
* bsps/irq: Implement new directives for GICv2/3Sebastian Huber2021-07-264-32/+189
| | | | Update #3269.
* bsps/irq: bsp_interrupt_set_affinity()Sebastian Huber2021-07-2614-18/+30
| | | | | | Return a status code for bsp_interrupt_set_affinity(). Update #3269.
* bsps/irq: bsp_interrupt_get_affinity()Sebastian Huber2021-07-2615-23/+38
| | | | | | Return a status code for bsp_interrupt_get_affinity(). Update #3269.
* bsps/irq: bsp_interrupt_vector_disable()Sebastian Huber2021-07-2637-45/+94
| | | | | | Return a status code for bsp_interrupt_vector_disable(). Update #3269.
* bsps/irq: bsp_interrupt_vector_enable()Sebastian Huber2021-07-2637-45/+94
| | | | | | Return a status code for bsp_interrupt_vector_enable(). Update #3269.
* bsps/irq: Add rtems_interrupt_is_pending()Sebastian Huber2021-07-2637-1/+438
| | | | | | Add a default implementation which just returns RTEMS_UNSATISFIED. Update #3269.
* bsps/irq: Add rtems_interrupt_get_attributes()Sebastian Huber2021-07-2637-2/+337
| | | | | | | Add a default implementation which clears the attributes to zero and just returns RTEMS_SUCCESSFUL for valid parameters. Update #3269.
* bsps/irq: Add rtems_interrupt_raise()Sebastian Huber2021-07-2644-0/+669
| | | | | | | | | Add rtems_interrupt_raise_on() and rtems_interrupt_clear(). Add a default implementation which just returns RTEMS_UNSATISFIED for valid parameters. Update #3269.
* bsps/irq: Add rtems_interrupt_vector_is_enabled()Sebastian Huber2021-07-2637-1/+437
| | | | | | | Add a default implementation which just returns RTEMS_UNSATISFIED for valid parameters. Update #3269.
* rtems: Add RTEMS_FATAL_SOURCE_SPURIOUS_INTERRUPTSebastian Huber2021-07-264-9/+15
| | | | | | | | Add RTEMS_FATAL_SOURCE_SPURIOUS_INTERRUPT as the fatal source for spurious interrupts. Use the interrupt vector number of the spurious interrupt for the fatal code. Update #3269.
* rtems: Add rtems_interrupt_is_pending()Sebastian Huber2021-07-261-0/+54
| | | | Update #3269.