mirror of
https://git.planet-casio.com/Lephenixnoir/gint.git
synced 2025-01-01 06:23:35 +01:00
7aa86235a3
The function was designed with multi-threaded concurrency in mind, where threads can take over while the lock is held and simply block trying to acquire it, which allows the lock holder to proceed. However interrupt handlers are different; they have priority, so once they start they must complete immediately. The cannot afford to block on the lock as the program would simply freeze. In exchange, they clean up before they leave, so there are some guarantees on the execution state even when interrupted. The correct protection is therefore not a lock but a temporary block on interrupts. There is no data race on the value of the saved IMASK because it is preserved during interrupt handling. |
||
---|---|---|
.. | ||
3rdparty | ||
cpg | ||
cpu | ||
dma | ||
gray | ||
intc | ||
kernel | ||
keysc | ||
kmalloc | ||
kprint | ||
mmu | ||
r61524 | ||
render | ||
render-cg | ||
render-fx | ||
rtc | ||
spu | ||
std | ||
t6k11 | ||
tmu | ||
usb | ||
font5x7.png | ||
font8x9.png | ||
fxconv-metadata.txt |