---
name: "SYSCALL_MODULE"
section: "9"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["linux", "freebsd"]
url: "https://new.carta.tech/SYSCALL_MODULE"
---

# SYSCALL\_MODULE(9)

syscall kernel module declaration macro

## NAME

**SYSCALL\_MODULE** – syscall kernel module declaration macro

## SYNOPSIS

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

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

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

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

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

**SYSCALL\_MODULE**(*name*, *int \*offset*, *struct sysent \*new\_sysent*, *modeventhand\_t evh*, *void \*arg*);

## DESCRIPTION

The **SYSCALL\_MODULE**() macro declares a new syscall. **SYSCALL\_MODULE**() expands into a kernel module declaration with name ‘sys/*name*’.

The rest of the arguments expected by this macro are:

- *offset*

  A pointer to an *int* which saves the offset in *struct sysent* where the syscall is allocated. If the location pointed to by *offset* holds a non 0 number it will be used if possible. If it holds 0 then one will be assigned.

- *new\_sysent*

  is a pointer to a structure that specifies the function implementing the syscall and the number of arguments this function needs (see ⟨sys/sysent.h⟩).

- *evh*

  A pointer to the kernel module event handler function with the argument *arg*. Please refer to [module(9)](/module/9.md) for more information.

- *arg*

  The argument passed to the callback functions of the *evh* event handler when it is called.

The syscall number assigned to the module can be retrieved using the [modstat(2)](/modstat/2.md) and [modfind(2)](/modfind/2.md) system calls. The MACRO **SYSCALL\_MODULE\_HELPER**() includes **SYSCALL\_MODULE**() and much of its boilerplate code.

## EXAMPLES

A minimal example for a syscall module can be found in */usr/share/examples/kld/syscall/module/syscall.c*.

## SEE ALSO

[module(9)](/module/9.md)

*/usr/share/examples/kld/syscall/module/syscall.c*

## AUTHORS

This manual page was written by Alexander Langer ⟨*alex@FreeBSD.org*⟩.
