summaryrefslogtreecommitdiffstats
path: root/man2/arch_prctl.2
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-24 04:52:22 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-24 04:52:22 +0000
commit3d08cd331c1adcf0d917392f7e527b3f00511748 (patch)
tree312f0d1e1632f48862f044b8bb87e602dcffb5f9 /man2/arch_prctl.2
parentAdding debian version 6.7-2. (diff)
downloadmanpages-3d08cd331c1adcf0d917392f7e527b3f00511748.tar.xz
manpages-3d08cd331c1adcf0d917392f7e527b3f00511748.zip
Merging upstream version 6.8.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'man2/arch_prctl.2')
-rw-r--r--man2/arch_prctl.2176
1 files changed, 0 insertions, 176 deletions
diff --git a/man2/arch_prctl.2 b/man2/arch_prctl.2
deleted file mode 100644
index 6981ec3..0000000
--- a/man2/arch_prctl.2
+++ /dev/null
@@ -1,176 +0,0 @@
-.\" Copyright (C) 2003 Andi Kleen
-.\"
-.\" SPDX-License-Identifier: Linux-man-pages-copyleft
-.\"
-.TH arch_prctl 2 2024-03-03 "Linux man-pages 6.7"
-.SH NAME
-arch_prctl \- set architecture-specific thread state
-.SH LIBRARY
-Standard C library
-.RI ( libc ", " \-lc )
-.SH SYNOPSIS
-.nf
-.BR "#include <asm/prctl.h>" " /* Definition of " ARCH_* " constants */"
-.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
-.B #include <unistd.h>
-.P
-.BI "int syscall(SYS_arch_prctl, int " op ", unsigned long " addr );
-.BI "int syscall(SYS_arch_prctl, int " op ", unsigned long *" addr );
-.fi
-.P
-.IR Note :
-glibc provides no wrapper for
-.BR arch_prctl (),
-necessitating the use of
-.BR syscall (2).
-.SH DESCRIPTION
-.BR arch_prctl ()
-sets architecture-specific process or thread state.
-.I op
-selects an operation
-and passes argument
-.I addr
-to it;
-.I addr
-is interpreted as either an
-.I "unsigned long"
-for the "set" operations, or as an
-.IR "unsigned long\ *" ,
-for the "get" operations.
-.P
-Subfunctions for both x86 and x86-64 are:
-.TP
-.BR ARCH_SET_CPUID " (since Linux 4.12)"
-.\" commit e9ea1e7f53b852147cbd568b0568c7ad97ec21a3
-Enable
-.RI ( "addr != 0" )
-or disable
-.RI ( "addr == 0" )
-the
-.I cpuid
-instruction for the calling thread.
-The instruction is enabled by default.
-If disabled, any execution of a
-.I cpuid
-instruction will instead generate a
-.B SIGSEGV
-signal.
-This feature can be used to emulate
-.I cpuid
-results that differ from what the underlying
-hardware would have produced (e.g., in a paravirtualization setting).
-.IP
-The
-.B ARCH_SET_CPUID
-setting is preserved across
-.BR fork (2)
-and
-.BR clone (2)
-but reset to the default (i.e.,
-.I cpuid
-enabled) on
-.BR execve (2).
-.TP
-.BR ARCH_GET_CPUID " (since Linux 4.12)"
-Return the setting of the flag manipulated by
-.B ARCH_SET_CPUID
-as the result of the system call (1 for enabled, 0 for disabled).
-.I addr
-is ignored.
-.TP
-Subfunctions for x86-64 only are:
-.TP
-.B ARCH_SET_FS
-Set the 64-bit base for the
-.I FS
-register to
-.IR addr .
-.TP
-.B ARCH_GET_FS
-Return the 64-bit base value for the
-.I FS
-register of the calling thread in the
-.I unsigned long
-pointed to by
-.IR addr .
-.TP
-.B ARCH_SET_GS
-Set the 64-bit base for the
-.I GS
-register to
-.IR addr .
-.TP
-.B ARCH_GET_GS
-Return the 64-bit base value for the
-.I GS
-register of the calling thread in the
-.I unsigned long
-pointed to by
-.IR addr .
-.SH RETURN VALUE
-On success,
-.BR arch_prctl ()
-returns 0; on error, \-1 is returned, and
-.I errno
-is set to indicate the error.
-.SH ERRORS
-.TP
-.B EFAULT
-.I addr
-points to an unmapped address or is outside the process address space.
-.TP
-.B EINVAL
-.I op
-is not a valid operation.
-.TP
-.B ENODEV
-.B ARCH_SET_CPUID
-was requested, but the underlying hardware does not support CPUID faulting.
-.TP
-.B EPERM
-.I addr
-is outside the process address space.
-.\" .SH AUTHOR
-.\" Man page written by Andi Kleen.
-.SH STANDARDS
-Linux/x86-64.
-.SH NOTES
-.BR arch_prctl ()
-is supported only on Linux/x86-64 for 64-bit programs currently.
-.P
-The 64-bit base changes when a new 32-bit segment selector is loaded.
-.P
-.B ARCH_SET_GS
-is disabled in some kernels.
-.P
-Context switches for 64-bit segment bases are rather expensive.
-As an optimization, if a 32-bit TLS base address is used,
-.BR arch_prctl ()
-may use a real TLS entry as if
-.BR set_thread_area (2)
-had been called, instead of manipulating the segment base register directly.
-Memory in the first 2\ GB of address space can be allocated by using
-.BR mmap (2)
-with the
-.B MAP_32BIT
-flag.
-.P
-Because of the aforementioned optimization, using
-.BR arch_prctl ()
-and
-.BR set_thread_area (2)
-in the same thread is dangerous, as they may overwrite each other's
-TLS entries.
-.P
-.I FS
-may be already used by the threading library.
-Programs that use
-.B ARCH_SET_FS
-directly are very likely to crash.
-.SH SEE ALSO
-.BR mmap (2),
-.BR modify_ldt (2),
-.BR prctl (2),
-.BR set_thread_area (2)
-.P
-AMD X86-64 Programmer's manual