.\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)syscall.2 4.1 (Berkeley) %G% .\" .TH SYSCALL 2 .UC 4 .SH NAME syscall \- indirect system call .SH SYNOPSIS .nf .BR "syscall(number, r0, r1, arg ...)" \ \ (PDP-11) .BR "syscall(number, arg, ...)" \ \ (VAX-11) .fi .SH DESCRIPTION .I Syscall performs the system call whose assembly language interface has the specified .I number, register arguments .I r0 and .I r1 (on the PDP-11, regardless of whether the entry point really uses them) and further arguments .IR arg . .PP The r0 value of the system call is returned. .SH DIAGNOSTICS When the C-bit is set, .I syscall returns \-1 and sets the external variable .I errno (see .IR intro (2)). .SH BUGS There is no way to simulate system calls such as .IR pipe (2), which return values in register r1. .SH "ASSEMBLER (PDP-11)" (indir = 0.) .br .B sys indir; call .PP The system call at the location .I call is executed. Execution resumes after the .I indir call. .PP On the PDP-11, the main purpose of .I indir is to allow a program to store arguments in system calls and execute them out of line in the data segment. This preserves the purity of the text segment. .PP If .I indir is executed indirectly, it is a no-op. If the instruction at the indirect location is not a system call, .I indir returns error code EINVAL; see .IR intro (2).