table of contents
| SYSCALL_HELPER_REGISTER(9) | Kernel Developer's Manual | SYSCALL_HELPER_REGISTER(9) |
NAME¶
syscall_helper_register,
syscall_helper_unregister —
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_dataSYSCALL_INIT_HELPER(syscallname);
struct syscall_helper_data
SYSCALL_INIT_HELPER_F(syscallname,
int flags);
COMPATIBILITY INITIALIZER MACROS¶
struct syscall_helper_dataSYSCALL_INIT_HELPER_COMPAT(syscallname);
struct syscall_helper_data
SYSCALL_INIT_HELPER_COMPAT_F(syscallname,
int flags);
DESCRIPTION¶
Thesyscall_helper_register() 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 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
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¶
Thesyscall_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 throughSYS_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.
SEE ALSO¶
SYSCALL_MODULE(9)| February 10, 2018 | Linux 4.19.0-10-amd64 |