A multi-call is a mechanism that allows multiple system calls to be performed on a single kernel crossing, thereby reducing the overall execution overhead. Multi-calls can be implemented as a kernel level stub that executes a sequence of system calls. At the application level, the multi-call interface resembles a standard system call and uses the same mechanism to perform the kernel boundary crossing, thereby retaining the desirable features of the system call abstraction. An ordered list of system calls to be executed is passed as a parameter to the multi-call. Each system call in the list is described by its system call number and parameters. Error behavior is preserved by generating the stub so that it returns control to the application level if an error is detected during execution of any of the constituent calls. Also, since the multi-call stub uses the original system call handlers, permissions and parameters are checked as in the original system call.
Modifications to a program to replace a sequence of system calls by a multi-call are conceptually simple and can be done using a compiler without requiring changes to any other system component (e.g. the linker).