_syscall | Début | Suivant | Sommaire | Préc.page.lue | Accueil |
NOM | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
SYNOPSIS | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
DESCRIPTION | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
où
Ces macros créent une fonction name avec les arguments que vous avez spécifiés. Une fois que vous avez inclus votre _syscall() dans votre fichier source, vous pouvez appeler l'appel système par name.
FICHIERS | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
CONFORMITÉ | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
NOTES | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Les macros _syscall() ne fournissent pas de prototype. Vous devez en créer un, particulièrement les utilisateurs de C++.
Il n'est pas obligatoire que les appels système retournent un code d'erreur seulement positif ou négatif. Vous devez lire les sources pour savoir comment les erreurs sont retournées. Généralement, il s'agit de la valeur opposée d'un code d'erreur standard, par exemple, -EPERM. Les macros _syscall() retourneront le résultat r de l'appel système lorsque r n'est pas négatif, mais retournera -1 et écrira la variable errno avec -r lorsque r est négatif. Pour ces codes d'erreurs, voir errno(3).
Lors de la définition d'un appel système, les types d'arguments doivent être passés par valeur ou par pointeur (pour les types aggrégés comme les structures).
EXEMPLE | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
#include <stdio.h> #include <stdlib.h> #include <errno.h> #include <linux/unistd.h> /* for _syscallX macros/related stuff */ #include <linux/kernel.h> /* for struct sysinfo */ _syscall1(int, sysinfo, struct sysinfo *, info); /* Note : si vous copiez directement à partir du fichier source nroff de la page, n'oubliez pas de SUPPRIMER les contre obliques supplémentaires dans l'instruction printf. */ int main(void) { struct sysinfo s_info; int error; error = sysinfo(&s_info); printf("code error = %d\n", error); printf("Uptime = %lds\nLoad: 1 min %lu / 5 min %lu / 15 min %lu\n" "RAM: total %lu / free %lu / shared %lu\n" "Memory in buffers = %lu\nSwap: total %lu / free %lu\n" "Number of processes = %d\n", s_info.uptime, s_info.loads[0], s_info.loads[1], s_info.loads[2], s_info.totalram, s_info.freeram, s_info.sharedram, s_info.bufferram, s_info.totalswap, s_info.freeswap, s_info.procs); exit(EXIT_SUCCESS); }
Échantillon de sortie | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
code error = 0 uptime = 502034s Load: 1 min 13376 / 5 min 5504 / 15 min 1152 RAM: total 15343616 / free 827392 / shared 8237056 Memory in buffers = 5066752 Swap: total 27881472 / free 24698880 Number of processes = 40
VOIR AUSSI | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
TRADUCTION | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Ce document est une traduction réalisée par Alain Portal <aportal AT univ-montp2 DOT fr> le 23 décembre 2007 et révisée le 8 janvier 2008.
L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 2 _syscall ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.
Sommaire | Début | Suivant | Sommaire | Préc.page.lue | Accueil |