La herramienta syscall.sh ofrece una referencia técnica exhaustiva de las tablas de llamadas al sistema (syscalls) de Linux, organizada por arquitectura de hardware. Este recurso permite a desarrolladores y ingenieros de sistemas consultar la historia completa de cada syscall, incluyendo la fecha de su introducción y su posible eliminación en versiones posteriores del kernel. La información se almacena en archivos JSON específicos para cada arquitectura, como x64, arm64 o riscv64, facilitando la integración en herramientas de desarrollo y análisis de código.
El proyecto detalla las convenciones de llamada (calling conventions) para cada procesador, especificando la instrucción que invoca al kernel, el número de syscall (NR) y la dirección de memoria donde se almacenan los argumentos y el resultado. Por ejemplo, en x64 se utiliza la instrucción syscall con el registro rax para el número y rdi para el primer argumento, mientras que en arm64 se emplea svc #0 con el registro x8. Esta precisión es crítica para el desarrollo de drivers, sistemas de archivos y herramientas de bajo nivel que interactúan directamente con el kernel.
La fuente de datos es el código fuente oficial de Linux. El sitio genera estas tablas recorriendo la tabla de syscalls y los macros SYSCALL_DEFINE de cada versión principal del kernel. Esto garantiza que los números de syscall reflejen exactamente lo que el kernel dispatcha en la práctica. Además, el proyecto incluye descripciones cortas basadas en las man pages de Linux y detalles adicionales de io_uring desde liburing. La herramienta permite filtrar entradas eliminadas para ver su historial completo, marcando claramente en qué versión se retiró cada syscall, lo cual es vital para la compatibilidad y el mantenimiento de software a largo plazo.
