Обновлённый справочник системных вызовов 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.

ℹ История проекта
Проект был впервые опубликован в 2020 году. В 2026 году автор возобновил его поддержку, добавив поддержку дополнительных архитектур, селектор версии ядра, описания вызовов и REST API v2.

Архитектуры и данные

Syscall.sh охватывает 27 архитектур — от x64 и arm64 до riscv64, LoongArch, PowerPC, IBM Z и Xtensa.

На странице каждой архитектуры перечислены все номера системных вызовов, их аргументы, регистры и инструкция соглашения о вызовах — например, syscall для x64 или svc #0 для arm64.

Сравнение числа системных вызовов по архитектурам

АрхитектураИнструкция вызоваКоличество syscalls
x86_64 (x64)syscall369
x86 (i386)int 0x80441
arm64svc #0—
RISC-V 64ecall—
LoongArch64syscall 0—
SuperH (sh)trapa #31433

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.

💡 Совет разработчику
Скачайте JSON-таблицу для нужной архитектуры прямо с сайта — это удобно для автоматической валидации в CI-пайплайнах или генерации биндингов в вашем проекте.

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 сохраняет прежний формат для существующих клиентов, однако считается устаревшим.

⚠ Внимание
Если вы используете API v1 в своих скриптах или инструментах, начните миграцию на v2: v1 помечен как deprecated и в будущем может быть отключён.

Почему это важно

Устаревшие таблицы системных вызовов заставляют разработчиков охотиться за багами, которые живут в справочнике, а не в коде.

Интерфейсы ядра меняются от релиза к релизу и от архитектуры к архитектуре, а устаревшие таблицы отправляют разработчиков на охоту за багами, которых нет в реальном коде. Поддерживаемый, машиночитаемый источник, охватывающий 27 архитектур с историей версий по каждому вызову, теперь снова доступен.

Для системных программистов и авторов инструментария такой ресурс даёт единое место для проверки номеров вызовов, регистров и доступности до релиза.

Для авторов компиляторов, фреймворков безопасности (seccomp-фильтры, sandboxing), эмуляторов и инструментов трассировки актуальные таблицы системных вызовов с машиночитаемым API — это не удобство, а необходимость. Теперь syscall.sh снова предоставляет именно это.