/ / Aké sú dôvody na použitie funkcie "syscall" namiesto volania funkcie priamo? - c, linux, operačný systém

Aké sú dôvody na použitie funkcie "syscall" namiesto toho, aby sa funkcia priamo volala? - c, linux, operačný systém

Tam "s syscall ktorý umožňuje nepriame systémové volania v systéme Linux. Aké sú dôvody na jeho použitie - a prečo je to lepšie ako priame volanie funkcie?

odpovede:

11 pre odpoveď č. 1

Niekedy jadro pridáva systémové volania a chvíľu trvá knižnica C, ktorá ich podporuje.

Alebo možno kompilujete na starú linuxovú distribúciu, ale chcete spustiť novšiu.

Príklad kód:

// syscall 277 is sync_file_range() on x86_64 Linux.  The header
// files lack it on scc-suse10 where we compile, but the
// performance benefits are substantial, so we just call it
// directly.  FIXME someday.
#define SYNC_FILE_RANGE_WRITE 2
syscall(277, fd, done, n, SYNC_FILE_RANGE_WRITE);

Vo všeobecnosti však nie je výhoda používania syscall ak má knižnica C v kompilačnom prostredí to, čo potrebujete. (Jedna vec je dokonca menej prenosná ako používanie rozhrania špecifického pre systém Linux, pretože čísla systémových volaní sa líšia podľa procesora.)