/ / Historia systemów operacyjnych dodanych do systemu Linux? - c, linux, assembly, wywołania systemowe

Historia systemów operacyjnych dodanych do systemu Linux? - c, linux, assembly, wywołania systemowe

Czy jest gdziekolwiek mogę uzyskać pełną listęminimalna wersja Linuksa potrzebna dla każdej syscall? Szukam ogólnej odpowiedzi na pytania dotyczące formy "Jeśli używam syscall X, jaka jest minimalna wersja Linuksa, na której mój kod może działać?"

Odpowiedzi:

30 dla odpowiedzi nr 1

Te informacje można znaleźć w syscalls(2) strona podręcznika. W przypadku tych wywołań systemowych, w których nie wskazano żadnej wersji jądra, wywołanie systemowe pojawiło się w jądrze 1.0 lub wcześniejszym.


8 dla odpowiedzi № 2

Linus od dawna krytykuje sprawdzanie przestrzeni użytkownikakonkretne wersje jądra, aby wiedzieć, czy funkcja jest dostępna - zalecane jest zamiast tego testowanie pod kątem funkcji, którą chcesz (niezaimplementowane syscalls zwracają ENOSYS).

Jednym z powodów jest to, że numery wersjipo prostu nie znaczy tyle, ile wydaje się - jądro dystrybutora, które większość użytkowników faktycznie działa, często ma funkcje przeniesione z nowszych wersji jądra, a niektóre z nich są prawdziwymi potworami Frankensteina w tym zakresie.


4 dla odpowiedzi nr 3

Możesz znaleźć to podczas korzystania z witryn takich jak http://linux.die.net/ w pobliżu dna stron wywołań interfejsu API w sekcji "Wersja". Na przykład w Linuksie 2.6.13 dodano inotify.

W przypadku wywołań posix nie będzie to miało zastosowania, ponieważ są one gromadzone zgodnie ze specyfikacjami Posix, np. read ma sekcję "Conforming" zawierającą POSIX.1-2001.


2 dla odpowiedzi № 4

Istnieje lista syscalls w pliku include / asm-generic / unistd.h. Możesz sprawdzić historię tego pliku na:

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

Nie mam pewności co do syscalls dla innych łuków niż x86. Mogą to być szczegóły.