Provided by: freebsd-manpages_12.2-2_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)

Debian                                          February 10, 2018                     SYSCALL_HELPER_REGISTER(9)