On 28/09/2021 17:11, Johnson, Andrew N. wrote:
sc = rtems_semaphore_create (rtems_build_name ('B', c3, c2, c1),
initialState,
RTEMS_FIFO | RTEMS_SIMPLE_BINARY_SEMAPHORE |
RTEMS_NO_INHERIT_PRIORITY | RTEMS_NO_PRIORITY_CEILING |
RTEMS_LOCAL,
0,
&sid);
We will want to use the same code on both SMP and UP systems and from
earlier posts it sounds like they would need different flags. Does RTEMS
define a macro that tells us which we’re compiling for, or will we have
to add our own?
You don't need different flags. The earlier post mentioned a new locking
protocol (MrsP) which is specifically added for SMP systems. This is not
relevant for this event stuff here.
You can use the RTEMS_SMP define to figure out if RTEMS was built with
SMP support enabled:
https://docs.rtems.org/branches/master/c-user/symmetric_multiprocessing_services.html#application-configuration
Which RTEMS semaphore classes do you use in EPICS and in particular
which classes do you use in interrupt context?
An epicsEvent must be able to be triggered from interrupt context, and
in the above implementation epicsEventTrigger() calls
rtems_semaphore_release(). That’s the only routine we need AFAIK.
The RTEMS_SIMPLE_BINARY_SEMAPHORE semaphores can be used from within
interrupt context. An alternative are:
https://docs.rtems.org/branches/master/c-user/self_contained_objects.html#binary-semaphores
--
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/
_______________________________________________
users mailing list
users@rtems.org
http://lists.rtems.org/mailman/listinfo/users