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 devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel