---
name: "syscall"
section: "2"
platform: "macos"
package: "xnu"
version: "12377.121.6"
release: "macOS 26.5"
platforms: ["linux", "freebsd", "macos"]
url: "https://new.carta.tech/syscall"
---

# syscall(2)

indirect system call

## NAME

**syscall** – indirect system call

## SYNOPSIS

**#include \<sys/syscall.h\>**

**#include \<unistd.h\>**

*int*\

**syscall**(*int number*, *...*);

## DESCRIPTION

**syscall**() performs the system call whose assembly language interface has the specified *number* with the specified arguments. Symbolic constants for system calls can be found in the header file ⟨*sys/syscall.h*⟩. This function is useful for testing new system calls that do not have entries in the C library.

## RETURN VALUES

The return values are defined by the system call being invoked. In general, a 0 return value indicates success. A -1 return value indicates an error, and an error code is stored in *errno*.

## BUGS

There is no way to simulate system calls that have multiple return values such as [pipe(2)](/pipe/2.md).

## HISTORY

The **syscall**() function call appeared in 4.0BSD.
