Подтвердить что ты не робот

История системных вызовов, добавленных в Linux?

Есть ли где-нибудь я могу получить полный список минимальной версии Linux, необходимой для каждого syscall? Я ищу общий ответ на вопросы формы "Если я использую syscall X, какова минимальная версия Linux, на которой может работать мой код?"

4b9b3361

Ответ 1

Эта информация находится на странице руководства syscalls(2). Для тех системных вызовов, где не указана версия ядра, системный вызов появился в ядре 1.0 или ранее.

Ответ 2

Linus долго критиковал проверку пользователей для определенных версий ядра, чтобы узнать, доступна ли функция. Рекомендуемый подход - вместо этого проверить тестовую функцию (невыполненные syscalls возвращают ENOSYS).

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

Ответ 3

Это можно найти при использовании сайтов http://linux.die.net/ рядом с нижней частью страниц для вызовов API в разделе "Версия", раздел. Например, inotify был добавлен в Linux 2.6.13.

Для вызовов posix это не применяется, потому что они собраны в соответствии с параметрами Posix, например. read имеет раздел "Соответствие", в котором упоминается POSIX.1-2001.

Ответ 4

Существует список системных вызовов в файле include/asm-generic/unistd.h. Вы можете проверить историю этого файла по адресу:

http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=history;f=include/asm-generic/unistd.h;h=2292d1af9d705f129ae523ce00a6b7794fb1648c;hb=8df54d622a120058ee8bec38743c9b8f091c8e58

Я не уверен в syscalls для другой арки, чем x86. Могут быть детали.