_syscall(2)

NAVN
_syscall - igangsætte et systemkald uden biblioteksunderstøttelse (FORÆLDET)

SYNOPSIS
#include <linux/unistd.h>

En _syscall-makro

ønsket systemkald

BESKRIVELSE
Den vigtige ting at vide om et systemkald er dets prototype. Du skal vide hvor mange argumenter der er, deres typer og funktionsreturtypen. Der er syv makroer, der gør det faktiske kald til systemet nemmere. De har formen:

    _syscallX(type,navn,type1,arg1,type2,arg2,...)

hvor

    X er 0–6, der er antallet af argumenter fra systemkaldet

    type er returtypen for systemkaldet

    navn er navnet på systemkaldet

    typeN er det N. arguments type

    argN er navnet på det N. argument

Disse makroer opretter en funktion kaldt navn med argumenterne du angiver. Når du inkluderer _syscall() i din kildefil så kalder du systemkaldet med navn.

FILER
/usr/include/linux/unistd.h

STANDARDER
Linux.

HISTORIK
Startende omkring Linux 2.6.18 blev _syscall-makroerne fjernet fra teksthovedfilerne leveret til brugerrummet. Brug syscall(2) i stedet for. (Nogle arkitekturer, specielt ia64, tilbød aldrig _syscall-makroer; på disse arkitekturer var syscall(2) altid krævet).

NOTER
_syscall()-makroerne laver ikke en prototype. Du skal måske oprette en, specielt for C++-brugere.

Systemkald er ikke krævet for kun at returnere positive eller negative fejlkoder. Du skal læse kilden for at være sikker på hvordan det vil returnere fejl. Normalt er det det negative for en standardfejlkode, for eksempel -EPERM. _syscall()-makroerne vil returnere resultatet r for systemkaldet når r ikke er negativt, men vil returnere -1 og angive variablen errno til -r når r er negativ. Se errno(3) for fejlkoderne.

Når definerende et systemkald skal argumenttyperne sendes efter-værdi eller efter-peger (for aggregater som strukturer).

EKSEMPLER
    #include <stdio.h>
    #include <stdlib.h>
    #include <errno.h>
    #include <linux/unistd.h>       /* for _syscallX-makroer/relat. ting */
    #include <linux/kernel.h>       /* for struct sysinfo */

    _syscall1(int, sysinfo, struct sysinfo *, info);

    int
    main(void)
    {
        struct sysinfo s_info;
        int error;

        error = sysinfo(&s_info);
        printf("Kodefejl = %d\n", fejl);
        printf("Oppetid = %lds\nBelastning: 1 min %lu / 5 min %lu / 15 min %lu\n"
               "RAM: samlet %lu / fri %lu / delt %lu\n"
               "Hukommelse i buffere = %lu\nSwap: samlet %lu / fri %lu\n"
               "Antal processer = %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);
    }

  Prøveresultat
    Kodefejl = 0
    Oppetid = 502034s
    Belastning: 1 min 13376 / 5 min 5504 / 15 min 1152
    RAM: samlet 15343616 / fri 827392 / delt 8237056
    Hukommelse i buffere = 5066752
    Swap: samlet 27881472 / fri 24698880
    Antal processer = 40

SE OGSÅ
intro(2), syscall(2), errno(3)

OVERSÆTTELSE
Oversættere af denne manual til dansk Joe Hansen <joedalton2@yahoo.dk>

Denne oversættelse er gratis dokumentation; læs GNU General Public License version 3 (https://www.gnu.org/licenses/gpl-3.0.html) eller nyere for ophavsretbetingelser. Der er INGEN ANSVAR.

Hvis du støder på fejl i oversættelsen af ​​denne vejledning, skal du sende en besked til debian-l10n-danish@lists.debian.org.