logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

syscall_helper_register, syscall_helper_unregister — kernel syscall registration routines

Description

       The  syscall_helper_register()  registers  a  system  call.   This  function  takes  the structure structsyscall_helper_datasd, 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 structsyscall_helper_datasd  that  was  previously  initialized  in  the manner described above and used in a
       successful invocation of syscall_helper_register().

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.

Name

       syscall_helper_register, syscall_helper_unregister — kernel syscall registration routines

Return Values

       If successful, syscall_helper_register() and syscall_helper_unregister() will return 0.  Otherwise,  they
       will return an error.

See Also

SYSCALL_MODULE(9)

Debian                                          February 10, 2018                     SYSCALL_HELPER_REGISTER(9)

Synopsis

#include<sys/sysent.h>intsyscall_helper_register(structsyscall_helper_data*sd, intflags);

       intsyscall_helper_unregister(structsyscall_helper_data*sd);

   INITIALIZERMACROSstructsyscall_helper_dataSYSCALL_INIT_HELPER(syscallname);

       structsyscall_helper_dataSYSCALL_INIT_HELPER_F(syscallname, intflags);

   COMPATIBILITYINITIALIZERMACROSstructsyscall_helper_dataSYSCALL_INIT_HELPER_COMPAT(syscallname);

       structsyscall_helper_dataSYSCALL_INIT_HELPER_COMPAT_F(syscallname, intflags);

See Also