arch_prctl - Linux


arch_prctl is a system call used to control architecture specific behavior. It is mainly used to enable or disable certain kernel features, register signal handlers, and perform other architecture specific tasks.


arch_prctl(command, ...) -> int

The following commands are supported:

  • ARCH_GET_GS: Get the GS base register value.
  • ARCH_SET_GS: Set the GS base register value.
  • ARCH_GET_FS: Get the FS base register value.
  • ARCH_SET_FS: Set the FS base register value.
  • ARCH_GET_CPUID: Get the CPUID flags.
  • ARCH_SET_CPUID: Set the CPUID flags.
  • ARCH_GET_TSC: Get the TSC (time stamp counter) value.
  • ARCH_SET_TSC: Set the TSC value.
  • ARCH_GET_SYSRQ: Get the SysRq request code.
  • ARCH_SET_SYSRQ: Set the SysRq request code.
  • ARCH_GET_KERN_IGS: Get the kernel’s IGS base register value.
  • ARCH_SET_KERN_IGS: Set the kernel’s IGS base register value.


No options or flags are available.


#include <arch/prctl.h>

arch_prctl(ARCH_GET_GS, &gs_base);
arch_prctl(ARCH_SET_GS, gs_base);

Common Issues



arch_prctl can be combined with other system calls to perform various tasks. For example, it can be used to set the signal handler for a specific signal.

Related Commands

  • syscall – execute a system call
  • getuid – get the current user ID
  • getpid – get the current process ID