tail head cat sleep
QR code linking to this page

Manual Pages  — SYSCALL_HELPER_REGISTER

NAME

syscall_helper_register, syscall_helper_unregister – kernel syscall registration routines

CONTENTS

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 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.

SEE ALSO

SYSCALL_MODULE(9)

SYSCALL_HELPER_REGISTER (9) February 10, 2018

tail head cat sleep
QR code linking to this page


Please direct any comments about this manual page service to Ben Bullock. Privacy policy.