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.

Unix...best if used before: Tue Jan 19 03:14:08 GMT 2038