6
votes

Où vérifiez-vous les prototypes de SysCalls sur des machines X86-64?

C'est-à-dire comment savez-vous

Combien de paramètres un syscall spécifique s'attend à,

qui enregistre chaque paramètre doit être dans,

et enfin ce que chaque paramètre signifie?

Y a-t-il une commande man pour vous dire que?


0 commentaires

3 Réponses :


1
votes

Il n'y a pas de manuel pour les appels de système que je connais, c'est quelque chose que vous devez creuser dans le code source pour.

Ce fichier d'en-tête est utile, car il y a de nombreux appels système prototypés avec des arguments:

inclure / linux / syscalls.h

Il contient des définitions, telles que: xxx

le syscalls arc Le fichier d'en-tête a le reste des appels système, celui qui dépend de l'arc dépendant:

arc / x86 / include / asm / syscalls.h

(Celles-ci Les fichiers sont à partir de 2.6.32 - Les versions antérieures / ultérieures des noyaux peuvent avoir différents noms de fichiers / répertoires).

Gardez à l'esprit que les internes du noyau Linux changent assez souvent, et il n'y a pas de Un grand nombre d'efforts mettent à maintenir un abi stable entre les principales versions du noyau. Donc, vous devrez examiner le code source du noyau du noyau que vous utilisez actuellement et ne vous attendez pas à ce qu'il compilait automatiquement sur une autre version du noyau.


3 commentaires

AFAIK SYSCALLS.H ne contient que des informations sur le numéro de chaque système SYSCALL, ce qui ne concerne pas les registres qui attendent les paramètres de.


Vous pensez à un fichier différent. J'ai mis à jour la réponse avec un exemple de ce qui est dans ce fichier.


Alors que les internes du noyau Linux peuvent changer souvent, l'API que le noyau fournit pour les utilisateursPace (Aka SysCalls) est vraiment stable.



3
votes

Voir aussi: Quelles sont les conventions d'appel pour les appels système Unix & Linux sur le X86-64

Ce que vous recherchez est le noyau abi, je ne trouve pas le site officiel, mais il y a Un blog avec des informations comme ceci.

En X64 avec un appel INT 80H, il s'agit de: xxx


0 commentaires

2
votes

Projet Linux MAN-Pages (bien sûr C-Centric)


0 commentaires