Sim, o código C moderno para Linux x86_64 usa a instrução syscall, veja por exemplo o comando glibc sysdeps / unix / sysv / linux / x86_64 / syscall.S. Não, isso não significa que as interrupções de chamadas do sistema desaparecem devido à compatibilidade.
https://www.kernel.org/doc/Documentation/x86/entry_64.txt
The x86 architecture has quite a few different ways to jump into kernel code. Most of these entry points are registered in arch/x86/kernel/traps.c and implemented in arch/x86/entry/entry_64.S for 64-bit, arch/x86/entry/entry_32.S for 32-bit and finally arch/x86/entry/entry_64_compat.S which implements the 32-bit compatibility syscall entry points and thus provides for 32-bit processes the ability to execute syscalls when running on 64-bit kernels.
The IDT vector assignments are listed in arch/x86/include/asm/irq_vectors.h.
Some of these entries are:
system_call: syscall instruction from 64-bit code.
entry_INT80_compat: int 0x80 from 32-bit or 64-bit code; compat syscall either way.
entry_INT80_compat, ia32_sysenter: syscall and sysenter from 32-bit code
E para syscalls somente leitura (gettimeofday) existe vDSO que não entra no modo kernel.
as chamadas do sistema podem ser perfiladas de algumas maneiras, como ftrace ou eBPF. Além de ser obsoleto no modo de 64 bits, as interrupções acontecem por outras razões que não as chamadas do sistema.