I'm super excited for this! But it makes me curious.
What's the process like for getting such a low-level primitive added to Linux? Especially a low-level primitive that 1) exist basically just to emulate behavior of a completely different kernel, and 2) is only needed for a subset of users to play games?
I'm not complaining, just curious. I would assume a patch to add the above would be heavily scrutinized. Is it because the popularity of the Steam Deck / proton?
Technically this is not a low-level primitive. NTSYNC isn't added as a, say, system call like futex2[0] was. It's instead added as a character devivce - which you can build your kernel without, and functions via ioctls.
I don’t know if this answers your question directly: but the article points out that this is a module, not a primitive that’s in the kernel itself.
The idea here is that wine/proton can interact with this module directly if it’s loaded, or continue to use their wrappers around existing fsync if not.
I expect that means a little less scrutiny since if it segs the user can choose to not load it and achieve a stable OS.
What's the process like for getting such a low-level primitive added to Linux? Especially a low-level primitive that 1) exist basically just to emulate behavior of a completely different kernel, and 2) is only needed for a subset of users to play games?
I'm not complaining, just curious. I would assume a patch to add the above would be heavily scrutinized. Is it because the popularity of the Steam Deck / proton?