Movatterモバイル変換


[0]ホーム

URL:


man7.org > Linux >man-pages

Linux/UNIX system programming training


_syscall(2) — Linux manual page

NAME |SYNOPSIS |DESCRIPTION |FILES |STANDARDS |HISTORY |NOTES |EXAMPLES |SEE ALSO |COLOPHON

_syscall(2)                System Calls Manual_syscall(2)

NAME        top

       _syscall - invoking a system call without library support       (OBSOLETE)

SYNOPSIS        top

#include <linux/unistd.h>       A _syscall macro       desired system call

DESCRIPTION        top

       The important thing to know about a system call is its prototype.       You need to know how many arguments, their types, and the function       return type.  There are seven macros that make the actual call       into the system easier.  They have the form:           _syscallX(type,name,type1,arg1,type2,arg2,...)       whereX is 0–6, which are the number of arguments taken by the              system calltype is the return type of the system callname is the name of the system calltypeN is the Nth argument's typeargN is the name of the Nth argument       These macros create a function calledname with the arguments you       specify.  Once you include the _syscall() in your source file, you       call the system call byname.

FILES        top

/usr/include/linux/unistd.h

STANDARDS        top

       Linux.

HISTORY        top

       Starting around Linux 2.6.18, the _syscall macros were removed       from header files supplied to user space.  Usesyscall(2) instead.       (Some architectures, notably ia64, never provided the _syscall       macros; on those architectures,syscall(2) was always required.)

NOTES        top

       The _syscall() macrosdo not produce a prototype.  You may have to       create one, especially for C++ users.       System calls are not required to return only positive or negative       error codes.  You need to read the source to be sure how it will       return errors.  Usually, it is the negative of a standard error       code, for example, -EPERM.  The _syscall() macros will return the       resultr of the system call whenr is nonnegative, but will return       -1 and set the variableerrno to -r whenr is negative.  For the       error codes, seeerrno(3).       When defining a system call, the argument typesmust be passed by-       value or by-pointer (for aggregates like structs).

EXAMPLES        top

       #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);       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);       }Sample output       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

SEE ALSO        top

intro(2),syscall(2),errno(3)

COLOPHON        top

       This page is part of theman-pages (Linux kernel and C library       user-space interface documentation) project.  Information about       the project can be found at        ⟨https://www.kernel.org/doc/man-pages/⟩.  If you have a bug report       for this manual page, see       ⟨https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/CONTRIBUTING⟩.       This page was obtained from the tarball man-pages-6.15.tar.gz       fetched from       ⟨https://mirrors.edge.kernel.org/pub/linux/docs/man-pages/⟩ on       2025-08-11.  If you discover any rendering problems in this HTML       version of the page, or you believe there is a better or more up-       to-date source for the page, or you have corrections or       improvements to the information in this COLOPHON (which isnot       part of the original manual page), send a mail to       man-pages@man7.orgLinux man-pages 6.15            2025-05-17_syscall(2)

Pages that refer to this page:intro(2)syscall(2)



HTML rendering created 2025-09-06 byMichael Kerrisk, author ofThe Linux Programming Interface.

For details of in-depthLinux/UNIX system programming training courses that I teach, lookhere.

Hosting byjambit GmbH.

Cover of TLPI


[8]ページ先頭

©2009-2025 Movatter.jp