Command Section

SYSCALL_HELPER_REGISTER(9)                   FreeBSD Kernel Developer's Manual

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)

FreeBSD 13.1-RELEASE-p6        February 10, 2018       FreeBSD 13.1-RELEASE-p6

Command Section

man2web Home...