Provided by: manpages-dev_2.17-1_all bug

NAME

       arch_prctl - set architecture specific thread state

SYNOPSIS

       #include <asm/prctl.h>

       #include <sys/prctl.h>

       int arch_prctl(int code, unsigned long addr)

DESCRIPTION

       The  arch_prctl() function sets architecture specific process or thread
       state.  code selects a subfunction and passes argument addr to it.

       Sub functions for x86-64 are:

       ARCH_SET_FS
              Set the 64bit base for the FS register to addr.

       ARCH_GET_FS
              Return the 64bit base value for the FS register of  the  current
              thread in the unsigned long pointed to by the address parameter

       ARCH_SET_GS
              Set the 64bit base for the GS register to addr.

       ARCH_GET_GS
              Return  the  64bit base value for the GS register of the current
              thread in the unsigned long pointed to by the address parameter.

NOTES

       arch_prctl()  is  only  supported  on  Linux/x86-64  for 64bit programs
       currently.

       The 64bit base changes when a new 32bit segment selector is loaded.

       ARCH_SET_GS is disabled in some kernels.

       Context switches for 64bit segment bases are rather expensive.  It  may
       be a faster alternative to set a 32bit base using a segment selector by
       setting up an LDT with modify_ldt(2) or  using  the  set_thread_area(2)
       system call in a 2.5 kernel.  arch_prctl() is only needed when you want
       to set bases that are larger than 4GB.  Memory  in  the  first  2GB  of
       address  space  can  be  allocated  by using mmap(2) with the MAP_32BIT
       flag.

       As of version 2.3.5, glibc provides no prototype for arch_prctl().  You
       have to declare it yourself for now.  This may be fixed in future glibc
       versions.

       FS may be already used by the threading library.

ERRORS

       EFAULT addr points to an unmapped address or  is  outside  the  process
              address space.

       EINVAL code is not a valid subcommand.

       EPERM  addr is outside the process address space.

AUTHOR

       Man page written by Andi Kleen.

CONFORMANCE

       arch_prctl()  is  a  Linux/x86-64  extension  and should not be used in
       programs intended to be portable.

SEE ALSO

       mmap(2), modify_ldt(2), prctl(2), set_thread_area(2)

       AMD X86-64 Programmer’s manual