syscall_helper_register, syscall_helper_unregister — kernel syscall registration routines
Contents
Description
The syscall_helper_register() registers a system call. This function takes the structure structsyscall_helper_datasd, 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 syscall_helper_register() is SY_THR_STATIC. This flag
prevents the syscall from being unregistered.
Before use, the structure must be initialized with one of the SYSCALL_INIT_HELPER*() macros. In new
code, syscall implementation functions shall be named sys_syscallname() 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 syscall_helper_unregister() unregisters a system call. This function takes the same structure structsyscall_helper_datasd that was previously initialized in the manner described above and used in a
successful invocation of syscall_helper_register().
Errors
The syscall_helper_register() call will fail and the syscall will not be registered if:
[EINVAL] The flags argument contained a value other than SY_THR_STATIC.
[EINVAL] The specified syscall number, sd.syscall_no (SYS_syscallname), was outside of the
valid range of system call numbers (zero through SYS_MAXSYSCALL).
[ENFILE] The system call table does not have any available slots.
[EEXIST] The specified syscall number, sd.syscall_no (SYS_syscallname), was already in use.
Name
syscall_helper_register, syscall_helper_unregister — kernel syscall registration routines
Return Values
If successful, syscall_helper_register() and syscall_helper_unregister() will return 0. Otherwise, they
will return an error.
See Also
SYSCALL_MODULE(9) Debian February 10, 2018 SYSCALL_HELPER_REGISTER(9)
Synopsis
#include<sys/sysent.h>intsyscall_helper_register(structsyscall_helper_data*sd, intflags);
intsyscall_helper_unregister(structsyscall_helper_data*sd);
INITIALIZERMACROSstructsyscall_helper_dataSYSCALL_INIT_HELPER(syscallname);
structsyscall_helper_dataSYSCALL_INIT_HELPER_F(syscallname, intflags);
COMPATIBILITYINITIALIZERMACROSstructsyscall_helper_dataSYSCALL_INIT_HELPER_COMPAT(syscallname);
structsyscall_helper_dataSYSCALL_INIT_HELPER_COMPAT_F(syscallname, intflags);
