[riot-notifications] [RIOT-OS/RIOT] core/*: many important system functions illegal inside ISRs (#10488)

Gunar Schorcht notifications at github.com
Fri Nov 30 12:39:29 CET 2018


> With a slight queue lookup overhead, a numerical priority could be added to lessen this problem. I assume that anything needing a really fast response would be executed directly in the ISR, so the overhead might not be much of an issue.

The overhead is probably not a problem, just the latency caused by the sequential handling of interrupt events. While there are certainly no special latency requirements for data-ready interrupts of a gas sensor that only provides data once every second, the interrupt events in GPIO expanders must be handled immediately. So they should be prioritized.

> Wouldn't one get blocked no matter how you executed it on a single-core system, just because you can't be simultaneously executing code to use each bus? I suppose in principle you could run a little bit of another thread while waiting for a response, but SPI and I2C aren't set up that way in RIOT. Something at some point must decide the order of events.

If the `periph/i2c` and `periph/spi` implementations use hardware implementations for SPI and I2C, they could use`xtimer_usleep` to be blocked for a certain time before they polls the status of a transfer. In that case another thread could use another serial interfaces also on single core system. I don't exactly, but I would guess most implementations are simply busy waiting to poll the status.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/RIOT-OS/RIOT/issues/10488#issuecomment-443178418
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.riot-os.org/pipermail/notifications/attachments/20181130/e6f2fd50/attachment-0001.html>


More information about the notifications mailing list