mirror of
https://github.com/torvalds/linux.git
synced 2024-11-21 19:41:42 +00:00
ff61f0791c
Move the x86 documentation under Documentation/arch/ as a way of cleaning up the top-level directory and making the structure of our docs more closely match the structure of the source directories it describes. All in-kernel references to the old paths have been updated. Acked-by: Dave Hansen <dave.hansen@linux.intel.com> Cc: linux-arch@vger.kernel.org Cc: x86@kernel.org Cc: Borislav Petkov <bp@alien8.de> Cc: Thomas Gleixner <tglx@linutronix.de> Link: https://lore.kernel.org/lkml/20230315211523.108836-1-corbet@lwn.net/ Signed-off-by: Jonathan Corbet <corbet@lwn.net>
54 lines
1.4 KiB
ReStructuredText
54 lines
1.4 KiB
ReStructuredText
.. SPDX-License-Identifier: GPL-2.0
|
|
|
|
==================================
|
|
x86-specific ELF Auxiliary Vectors
|
|
==================================
|
|
|
|
This document describes the semantics of the x86 auxiliary vectors.
|
|
|
|
Introduction
|
|
============
|
|
|
|
ELF Auxiliary vectors enable the kernel to efficiently provide
|
|
configuration-specific parameters to userspace. In this example, a program
|
|
allocates an alternate stack based on the kernel-provided size::
|
|
|
|
#include <sys/auxv.h>
|
|
#include <elf.h>
|
|
#include <signal.h>
|
|
#include <stdlib.h>
|
|
#include <assert.h>
|
|
#include <err.h>
|
|
|
|
#ifndef AT_MINSIGSTKSZ
|
|
#define AT_MINSIGSTKSZ 51
|
|
#endif
|
|
|
|
....
|
|
stack_t ss;
|
|
|
|
ss.ss_sp = malloc(ss.ss_size);
|
|
assert(ss.ss_sp);
|
|
|
|
ss.ss_size = getauxval(AT_MINSIGSTKSZ) + SIGSTKSZ;
|
|
ss.ss_flags = 0;
|
|
|
|
if (sigaltstack(&ss, NULL))
|
|
err(1, "sigaltstack");
|
|
|
|
|
|
The exposed auxiliary vectors
|
|
=============================
|
|
|
|
AT_SYSINFO is used for locating the vsyscall entry point. It is not
|
|
exported on 64-bit mode.
|
|
|
|
AT_SYSINFO_EHDR is the start address of the page containing the vDSO.
|
|
|
|
AT_MINSIGSTKSZ denotes the minimum stack size required by the kernel to
|
|
deliver a signal to user-space. AT_MINSIGSTKSZ comprehends the space
|
|
consumed by the kernel to accommodate the user context for the current
|
|
hardware configuration. It does not comprehend subsequent user-space stack
|
|
consumption, which must be added by the user. (e.g. Above, user-space adds
|
|
SIGSTKSZ to AT_MINSIGSTKSZ.)
|