Hello everyone,
I've found what can be an issue in the function genirq_set_active(): under some
conditions it can return a value greater than 1.
This function is used by genirq_enable() and genirq_disable() and both of them
returns the value returned by genirq_set_active(). According to the
documentation in genirq.h, they should return -1, 0 or 1.
When this issue can happen? If there are 3 entries in the list of IRQ and 2 of
them are already enabled, the variable `enabled` would be 2, because of
`enabled += isrentry->enabled`.
As a possible solution, the value of `enabled` can changed to 1 if it's greater
than 1 (see the patch) or maybe improve the search.
Thanks in advance,
Gabriel Moyano
Moyano, Gabriel (1):
grlib/genirq: Taking into account that it could be more than one ISR
enabled/disabled
bsps/shared/grlib/irq/genirq.c | 5 +++++
1 file changed, 5 insertions(+)
--
2.17.1
_______________________________________________
devel mailing list
[email protected]
http://lists.rtems.org/mailman/listinfo/devel