syscall.sh: справочник Linux system calls для 27 архитектур
Сайт syscall.sh обновлён: таблицы системных вызовов Linux для 27 архитектур, поддержка ядер 3.3–7.3 и REST API v2.
Обновлённый справочник системных вызовов Linux: 27 архитектур, REST API и история версий ядра
Проект syscall.sh — онлайн-справочник системных вызовов Linux — вернулся к активной поддержке в 2026 году после перерыва. Автор Guilherme (@guitmz) добавил таблицы для 27 архитектур, охватив путь от ядра 3.3 до 7.3, а также запустил обновлённый REST API (интерфейс программирования приложений). Для системных программистов и авторов инструментария это означает единую, актуальную и машиночитаемую точку проверки номеров вызовов, регистров и соглашений о вызовах.
Что такое syscall.sh
System call (системный вызов) — это фундаментальный интерфейс между приложением и ядром Linux. Каждая архитектура процессора использует свои регистры и инструкции для передачи управления ядру, а номера вызовов различаются от платформы к платформе. Именно это и делает единый справочник столь ценным.
Syscall.sh собирает все таблицы системных вызовов Linux в одном месте, группируя их по архитектурам: системные вызовы для 27 архитектур с номерами, аргументами и регистрами, начиная с Linux 3.3 и заканчивая 7.3.
Архитектуры и данные
Syscall.sh охватывает 27 архитектур — от x64 и arm64 до riscv64, LoongArch, PowerPC, IBM Z и Xtensa.
На странице каждой архитектуры перечислены все номера системных вызовов, их аргументы, регистры и инструкция соглашения о вызовах — например, syscall для x64 или svc #0 для arm64.
Сравнение числа системных вызовов по архитектурам
| Архитектура | Инструкция вызова | Количество syscalls |
|---|---|---|
| x86_64 (x64) | syscall | 369 |
| x86 (i386) | int 0x80 | 441 |
| arm64 | svc #0 | — |
| RISC-V 64 | ecall | — |
| LoongArch64 | syscall 0 | — |
| SuperH (sh) | trapa #31 | 433 |
x86_64 и x32 используют инструкцию syscall, тогда как x86 и режим совместимости IA-32 на x86_64 — int 0x80, а RISC-V 64-бит — ecall.
graph LR
A[Приложение] -->|системный вызов| B[Ядро Linux]
B --> C{Архитектура}
C -->|x64| D[syscall / rax]
C -->|arm64| E[svc #0 / x8]
C -->|RISC-V 64| F[ecall / a7]
C -->|x86| G[int 0x80 / eax]
Откуда берутся данные
Данные читаются непосредственно из исходного кода ядра, включая макросы SYSCALL_DEFINE, а каждая таблица также доступна для скачивания в формате JSON с информацией о том, когда системный вызов был добавлен или удалён.
Краткие описания вызовов взяты из проекта Linux man pages, а описания io_uring — из liburing.
REST API v2
API предоставляет JSON-доступ к таблице системных вызовов Linux: 27 архитектур и ABI, все выпуски ядра начиная с 3.3, с соглашениями о вызовах, флагами Kconfig и дифами между выпусками.
REST API позволяет запрашивать любой релиз ядра или сравнивать между выпусками. Пример запроса:
# Получить информацию о системном вызове read для архитектуры x64
curl https://api.syscall.sh/v2/syscalls/x64/read
# Посмотреть доступные архитектуры
curl https://api.syscall.sh/v2/archs
API v1 сохраняет прежний формат для существующих клиентов, однако считается устаревшим.
Почему это важно
Устаревшие таблицы системных вызовов заставляют разработчиков охотиться за багами, которые живут в справочнике, а не в коде.
Интерфейсы ядра меняются от релиза к релизу и от архитектуры к архитектуре, а устаревшие таблицы отправляют разработчиков на охоту за багами, которых нет в реальном коде. Поддерживаемый, машиночитаемый источник, охватывающий 27 архитектур с историей версий по каждому вызову, теперь снова доступен.
Для системных программистов и авторов инструментария такой ресурс даёт единое место для проверки номеров вызовов, регистров и доступности до релиза.
Для авторов компиляторов, фреймворков безопасности (seccomp-фильтры, sandboxing), эмуляторов и инструментов трассировки актуальные таблицы системных вызовов с машиночитаемым API — это не удобство, а необходимость. Теперь syscall.sh снова предоставляет именно это.