El proyecto syscall.sh sirve como un repositorio exhaustivo para las tablas de llamadas al sistema de Linux, consolidando datos para 27 arquitecturas de hardware diferentes. Para los desarrolladores e ingenieros de sistemas, comprender cómo el kernel maneja las solicitudes —específicamente los números únicos de llamadas al sistema, los argumentos requeridos y los registros utilizados para cada arquitectura— es una tarea compleja. La plataforma simplifica esto al proporcionar una vista unificada de estas tablas, cubriendo arquitecturas que van desde las comunes como x86_64 y arm64 hasta sistemas especializados como LoongArch, RISC-V e incluso arquitecturas heredadas como Alpha y M68K.

Una captura de pantalla de la página de manual Linux syscall(2) que muestra las definiciones de las llamadas al sistema.
La página de manual syscall(2) proporciona la documentación fundamental para las definiciones de llamadas al sistema en Linux.syscall.sh

El proyecto proporciona un repositorio derivado de fuentes de estas tablas de llamadas al sistema, que tradicionalmente se documentan en páginas de manual.

A diferencia de muchos recursos en línea que pueden depender de entradas manuales o documentación desactualizada, syscall.sh deriva sus datos directamente del código fuente del kernel de Linux. El proyecto utiliza un generador que recorre las tablas de llamadas al sistema del kernel y las macros `SYSCALL_DEFINE` a través de varias versiones principales. Esto garantiza que los números proporcionados sean los valores exactos que el kernel despacha. Además, el sitio captura las convenciones de llamada específicas para cada arquitectura, detallando las instrucciones precisas (como `syscall`, `int 0x80` o `svc #0`) y los registros específicos (como `rax`, `rdi` o `x0`) utilizados para pasar argumentos y recibir valores de retorno.

Una característica clave del proyecto es su capacidad para rastrear el ciclo de vida de una llamada al sistema. Cada entrada incluye una fecha 'since', que indica la versión del kernel donde apareció por primera vez la llamada, y una fecha 'removed_in' para aquellas que han sido depreciadas. Si bien el sitio ofrece una interfaz web para navegar por estas tablas, también ofrece una API JSON para el acceso programático. Esto permite a los desarrolladores consultar detalles específicos, como los parámetros para la llamada `read` en la arquitectura `x64`, directamente en sus propias herramientas o flujos de trabajo. Sin embargo, el proyecto señala una limitación específica: la fecha 'since' solo refleja la primera versión escaneada por el generador; si una llamada al sistema existía antes de la versión más antigua escaneada, su origen real permanece desconocido.