No, it's the kernel that writes the info out. The player opens /dev/empeg_state and can store up to 126 bytes of info (well, it has a 128 byte block but there's a CRC-16 at the end). In case of a power fail, the kernel dumps the latest complete /dev/empeg_state 128 byte block to flash.

On power up, the kernel finds the latest valid block in flash and makes it available in /dev/empeg_state.

The kernel has to do it as there are, well, hard real-time constraints on the task - like running out of power to the CPU and flash :)

Hugo