Зачем glibc нужны заголовки ядра?

Tomando prestado --unified=0de la respuesta de kaiko llegué a:

git diff HEAD^ HEAD --unified=0 | tail +6 | sed -e 's/^\+//'
3
07.07.2019, 20:09
1 ответ

Системные вызовы не отличаются от обычных вызовов функций, за исключением механизма вызова. Как и в случае обычных вызовов функций C, вам необходимо знать, какие параметры и какого типа ожидает вызываемая функция, а также какое возвращаемое значение. В качестве примера рассмотрим системный вызов stat, который принимает в качестве параметра указатель на struct stat. Ядро и код пользовательского пространства должны согласовать структуру данных, и окончательным источником для определения типа этого является ядро.

Теперь, поскольку API ядра поставляется с гарантией стабильности, эти типы данных редко меняются. Поэтому разработчики Musl сочли, что проще поддерживать отредактированные вручную копии определений, чем полагаться на заголовки ядра. Исходный код Musl содержит, например, собственный список номеров системных вызовов в файле arch/x86_64/bits/syscall.h.in.

4
27.01.2020, 21:24

Теги

Похожие вопросы