Using Python to investigate EFI and ACPI
Using Python to investigate EFI and ACPI
Posted Sep 3, 2015 17:13 UTC (Thu) by marcH (subscriber, #57642)In reply to: Using Python to investigate EFI and ACPI by aleXXX
Parent article: Using Python to investigate EFI and ACPI
"Very simple cases" is all I had in mind. Hardware has become so cheap that dealing with the complexity and unpredictability of a scheduler and preemption is not always worth it. See Arduino as a good and successful example.
For reacting to different events something like select()/poll() / or any kind of non-blocking event loop does the job. Even Java can do stuff like this (not for real-time but for scalability)
This reminds me of this (also successful) product I used to work on. It permanently hogs/hogged (some) CPU cores thanks to Linux' SCHED_FIFO and implements its own event loop with incredibly good real-time properties. This worked surprisingly well considering the kernel was not designed for this and caused almost no problem. I found only this one at the time: https://bugzilla.kernel.org/show_bug.cgi?id=16011
More worrying from a "bare-metal" perspective is Josh's comment about background tasks in EFI, I did not expect that.
Posted Sep 3, 2015 18:36 UTC (Thu)
by josh (subscriber, #17465)
[Link]
EFI has some interrupt processing, including timers. It uses that for things like USB keyboards and drives, or networking support. Also take a look at the calls related to Task Priority Level (TPL).
In theory, all of those should stop when you ExitBootServices(); theoretically EFI drivers could keep doing things as part of runtime services, but they shouldn't, and I haven't seen that in practice.
Using Python to investigate EFI and ACPI