arch_prctl(2) System Calls Manual arch_prctl(2) arch_prctl - (libc -lc) #include /* ARCH_* */ #include /* SYS_* */ #include int syscall(SYS_arch_prctl, int op, unsigned long addr); int syscall(SYS_arch_prctl, int op, unsigned long *addr); : glibc arch_prctl() syscall(2). arch_prctl() . op addr addr unsigned long "" unsigned long * "". x86 x86-64 : ARCH_SET_CPUID ( 4.12) (addr != 0) (addr == 0) cpuid . . cpuid SIGSEGV. cpuid ( ). ARCH_SET_CPUID fork(2) clone(2) ( cpuid ) execve(2). ARCH_GET_CPUID ( 4.12) ARCH_SET_CPUID (1 0 ). addr. x86-64 : ARCH_SET_FS 64- FS addr. ARCH_GET_FS 64- FS unsigned long addr. ARCH_SET_GS 64- GS addr. ARCH_GET_GS 64- GS unsigned long addr. arch_prctl() 0 -1 errno . EFAULT addr . EINVAL op . ENODEV ARCH_SET_CPUID CPUID. EPERM addr . /x86-64. arch_prctl() /x86-64 64- . 64- 32- . ARCH_SET_GS . 64- . TLS 32- arch_prctl() TLS set_thread_area(2) . 2 mmap(2) MAP_32BIT. arch_prctl() set_thread_area(2) TLS . FS . ARCH_SET_FS . mmap(2) modify_ldt(2) prctl(2) set_thread_area(2) AMD X86-64 3 . . : . 6.18 8 2026 arch_prctl(2)