Scroll to navigation

SYSCALL_HELPER_REGISTER(9) Kernel Developer's Manual SYSCALL_HELPER_REGISTER(9)

NAME

syscall_helper_register, syscall_helper_unregisterkernel syscall registration routines

SYNOPSIS

#include <sys/sysent.h>

int
syscall_helper_register(struct syscall_helper_data *sd, int flags);

int
syscall_helper_unregister(struct syscall_helper_data *sd);

INITIALIZER MACROS

struct syscall_helper_data
SYSCALL_INIT_HELPER(syscallname);

struct syscall_helper_data
SYSCALL_INIT_HELPER_F(syscallname, int flags);

COMPATIBILITY INITIALIZER MACROS

struct syscall_helper_data
SYSCALL_INIT_HELPER_COMPAT(syscallname);

struct syscall_helper_data
SYSCALL_INIT_HELPER_COMPAT_F(syscallname, int flags);

DESCRIPTION

The () registers a system call. This function takes the structure struct syscall_helper_data sd, which specifies the parameters for syscall registration:

struct syscall_helper_data {
	struct sysent	new_sysent;
	struct sysent	old_sysent;
	int		syscall_no;
	int		registered;
};

The only valid flag for the flags argument to () is SY_THR_STATIC. This flag prevents the syscall from being unregistered.

Before use, the structure must be initialized with one of the () macros. In new code, syscall implementation functions shall be named () and the regular macros shall be used.

For legacy syscall functions named without "sys_" prefixes, the "COMPAT" versions of the macros may be used.

The only valid flag for the flags argument to the "F" variants of the initializer macros is SYF_CAPENABLED. This flag indicates that the syscall is allowed in capability mode.

The () unregisters a system call. This function takes the same structure struct syscall_helper_data sd that was previously initialized in the manner described above and used in a successful invocation of syscall_helper_register().

RETURN VALUES

If successful, syscall_helper_register() and syscall_helper_unregister() will return 0. Otherwise, they will return an error.

ERRORS

The syscall_helper_register() call will fail and the syscall will not be registered if:

[]
The flags argument contained a value other than SY_THR_STATIC.
[]
The specified syscall number, sd.syscall_no (SYS_syscallname), was outside of the valid range of system call numbers (zero through SYS_MAXSYSCALL).
[]
The system call table does not have any available slots.
[]
The specified syscall number, sd.syscall_no (SYS_syscallname), was already in use.

SEE ALSO

SYSCALL_MODULE(9)

February 10, 2018 Debian