В Redox появился системный вызов с шестью аргументами
16.12.2025В ядре Redox добавлен вызов syscall6 для системных вызовов с шестью аргументами. В тот же день появился unlinkat, а unlink и rmdir переписаны через него.
Зачем системному вызову шесть аргументов
Вызов ядра принимает фиксированное число аргументов. Там, где аргументов больше, применяют обходные пути: структуру, передаваемую по указателю; несколько вызовов подряд; кодирование нескольких значений в одно целое число.
Каждый обходной путь требует дополнительного кода на стороне библиотеки и на стороне ядра, а главное — ошибается. Шесть аргументов — это расширение формата, снимающее часть обходных решений. Особенно полезно для вызовов, работающих с расширенными структурами: там пять-шесть параметров естественны.
Контекст: работа над capability-безопасностью
Авторы указывают, что сделано это в рамках перехода на capability — модели, где право доступа передаётся как дескриптор, а не определяется по идентификатору пользователя. Свойства границ ОС с этим переходом связаны: работа со схемами и пространствами имён требует передавать дополнительные параметры.
Но и более широкое применение найдено, и это отмечено в сводке прямо.
Что ещё изменилось тем же днём
Добавлен вызов unlinkat — удаление файла относительно каталога-дескриптора, а не текущего. Вызовы unlink и rmdir переписаны через него, а из ядра убраны отдельные SYS_OPEN, SYS_UNLINK и SYS_RMDIR. Обёртка появилась в relibc, redox-scheme и в ramfs.
Это часть общего перехода на функции с суффиксом at, который шёл в Redox весь 2025 год и продолжился в 2026-м. Суть подхода: не зависеть от текущего каталога, а передавать каталог явно.
Что это даёт коду на Rust
Новый вызов доступен через крейты-обёртки системных вызовов, то есть это новая точка API. А переход на unlinkat вместо unlink — изменение поведения: код, полагавшийся на текущий каталог процесса, в новой схеме работает иначе, и это правильнее с точки зрения многопоточности.
Оригинал
Коммит Implement the syscall6 system call от 16 декабря 2025 года в репозитории redox-os/kernel, слияние в основную ветку 17 декабря; unlinkat добавлен в redox-os/redox-scheme 16 декабря и в relibc 17 декабря. Сводка «This Month in Redox — December 2025», раздел «Kernel Improvements»
Упоминаний: 1 · Просмотров: 9