table of contents
SYSCALL_HELPER_REGISTER(9) | Kernel Developer's Manual | SYSCALL_HELPER_REGISTER(9) |
NAME¶
syscall_helper_register
,
syscall_helper_unregister
—
kernel 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
syscall_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¶
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 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¶
February 10, 2018 | Debian |