On Fri, May 14, 2021 at 08:03:20PM +0200, Volker RĂ¼melin wrote:
The comment above the yield() function suggests that yield() allows interrupts for a short time. Currently this is only true if seabios was built without CONFIG_THREADS or if yield() is called from the main thread. Change the code to always call check_irqs() in yield().
I'm confused about the failure scenario you describe here, as yield() really should always allow irqs to run prior to returning. When called from a "background thread" it will not directly enable irqs, but it will always cycle through all "threads" before returning. Thus the "main thread" should always be reached and when it runs yield() it will permit irqs to run.
Am I missing something?
-Kevin