Scroll to navigation

_syscall(2) System Calls Manual _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 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.

17. maj 2025 Linux man-pages (ej udgivet)