Gabriel Krisman Bertazi [off-list ref] 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.
--
Gabriel Krisman Bertazi