On 19/03/2021 14:36, jan.som...@dlr.de wrote:
How would I temporarily disable preemption for the current thread on its specific core only?
You can raise its priority to zero. This is also more effective in uniprocessor systems due to this bug:
http://devel.rtems.org/ticket/2365
For example, a thread sends several events to a set of other threads and this sending should not be interrupted in case the first event wakes up a sleeping thread of higher priority on the same CPU. If there are no other resource dependencies, would a simple rtems_interrupt_local_disable be the right thing to do?
You can use barriers, condition variables, or a message broadcast for this. Never call an operating system service in task context with interrupts disabled.
Disabled interrupts can be used with per-processor resources. We have some high performance infrastructure available in libbsd which use this. For example, the UMA and the epoch based reclamation support.
-- embedded brains GmbH Herr Sebastian HUBER Dornierstr. 4 82178 Puchheim Germany email: sebastian.hu...@embedded-brains.de phone: +49-89-18 94 741 - 16 fax: +49-89-18 94 741 - 08 Registergericht: Amtsgericht München Registernummer: HRB 157899 Vertretungsberechtigte Geschäftsführer: Peter Rasmussen, Thomas Dörfler Unsere Datenschutzerklärung finden Sie hier: https://embedded-brains.de/datenschutzerklaerung/ _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel