Gabriel Krisman Bertazi krisman@collabora.com writes:
Introduce a mechanism to quickly disable/enable syscall handling for a specific process and redirect to userspace via SIGSYS. This is useful for processes with parts that require syscall redirection and parts that don't, but who need to perform this boundary crossing really fast, without paying the cost of a system call to reconfigure syscall handling on each boundary transition. This is particularly important for Windows games running over Wine.
I raised a discussion about this on libc-alpha, as requested by Florian. At the moment, there was some back and forth on why the use-case is not done by seccomp, but a more interesting point about user_notif was raised by Rich Felker (cc'ed).
SIGSYS, as a signal handler, is limited in what can be done inside it. Rich suggested the user_notif design is a better solution. I understand that from a Wine perspective, SIGSYS suffices for their work, but would it make sense to extend SUD interface to support a user_notif-like interface? Would this be acceptable as future work to be added when/if needed, or should we design it from the start?
The existing interface could be extended with a flags field as part of the opcode passed in argument 2, which is currently reserved, and then return a FD, just like seccomp(2) does. So it is not like the current patches couldn't be extended in the future if needed, unless I'm mistaken.