Où puis-je trouver de l'appel système du code source?
Dans linux, où puis-je trouver le code source pour tous les appels système étant donné que j'ai la source de l'arbre? Aussi, si je veux regarder le code source et à l'assemblée pour un système particulier d'appel est-il quelque chose que je peux taper dans le terminal comme -my_system_call?
Vous devez vous connecter pour publier un commentaire.
Vous aurez besoin des sources du noyau Linux, afin de voir la source de l'appel système. Les pages de manuel, s'il est installé sur votre système local, ne contiennent que de la documentation de l'appel et ne pas leur source même.
Malheureusement pour vous, les appels système ne sont pas stockées en un seul endroit particulier dans l'ensemble de l'arborescence du noyau. Ce est parce que les divers appels système peut se référer à différentes parties du système (processus de gestion, système de fichiers de gestion, etc.) et par conséquent, il serait impossible de les stocker en dehors de la partie de l'arbre liés à cette partie du système.
La meilleure chose que vous pouvez faire est de regarder pour les
SYSCALL_DEFINE[0-6]
macro. Il est utilisé (évidemment) pour définir le bloc de code comme un appel système. Par exemple,fs/ioctl.c
a le code suivant :Cette définition signifie que la
ioctl
syscall est déclarée et prend trois arguments. Le nombre à côté de laSYSCALL_DEFINE
signifie que le nombre d'arguments. Par exemple, dans le cas degetpid(void)
, a déclaré danskernel/timer.c
, nous avons le code suivant :Espoir qui efface les choses un peu.
À partir d'une application de point de vue, un l'appel système est une école élémentaire et d'opération atomique fait par le noyau.
La Assemblée Howto explique ce qui se passe, en termes d'instructions machine.
Bien sûr, le noyau est de faire beaucoup de choses lors de la manipulation d'un syscall.
Effectivement, on pouvait presque croire que l'ensemble du code est consacré à gérer tous les appels système (ce n'est pas tout à fait vrai, mais presque; à partir d'applications point de vue, le noyau est visible uniquement thru appels système). Les autres réponse par Daniel Kamil Kozar, c'est d'expliquer ce que le noyau de la fonction est à partir de la manipulation de certains appels système (mais très souvent, de nombreuses autres parties du noyau de participer indirectement à des appels système; par exemple, le planificateur participe indirectement dans la mise en œuvre de
fork
parce qu'il gère le processus de l'enfant créé par un succèsfork
syscall).Je sais que c'est vieux, mais j'étais à la recherche de la source pour
_system_call()
trop et trouvé cette friandiseJe suppose que c'est daté, parce que je n'ai pas ce fichier. Cependant, grep trouvé
ENTRY(system_call)
dans arch/x86/kernel/entry_64.S et semble être la chose que les appels de l'individu, les appels système. Je ne suis pas sur mon intel-syntaxe asm x86 dès maintenant, de sorte que vous aurez à regarder et à voir si c'est ce que tu voulais.entry_64.S
n'existe plus dans la canalisation principale 4.8.