2009-09-09 5 views
1

Je me demandais, quelle est la raison pour laquelle _syscall0 à _syscall6 sous Linux pour gérer un nombre différent de paramètres. Y a-t-il des problèmes de sécurité/performance avec le fait d'avoir simplement _syscall6 seul et de laisser le code d'appel passer des valeurs nulles pour les paramètres inutilisés?Raison du multivoie syscall sous Linux

Répondre

1

Il est nécessaire de réduire le nombre de copies de registre nécessaires et d'améliorer les performances.

Chaque paramètre doit être déplacé de l'ABI de l'utilisateur dans la convention de passage de paramètre à l'intérieur du noyau.

En outre, certains de ces syscalls se comportent différemment avec les paramètres d'adresse. Mais une telle conversion est nécessaire sur un petit nombre d'arcs.