About is_non_preempt_mode_supported

Sebastian Huber sebastian.huber at embedded-brains.de
Fri Mar 19 14:36:31 UTC 2021


On 19/03/2021 14:36, Jan.Sommer at 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.huber at 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/



More information about the devel mailing list