Provided by: freebsd-manpages_12.2-1_all bug

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