arch/x86/um/shared/sysdep/stub_64.h
Source file repositories/reference/linux-study-clean/arch/x86/um/shared/sysdep/stub_64.h
File Facts
- System
- Linux kernel
- Corpus path
arch/x86/um/shared/sysdep/stub_64.h- Extension
.h- Size
- 3222 bytes
- Lines
- 155
- Domain
- Architecture Layer
- Bucket
- arch/x86
- Inferred role
- Architecture Layer: implementation source
- Status
- source implementation candidate
Why This File Exists
CPU and platform-specific kernel glue: boot entry, traps, syscall entry, interrupts, page tables, context switch, and low-level barriers.
- CPU and platform-specific kernel glue: boot entry, traps, syscall entry, interrupts, page tables, context switch, and low-level barriers.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
stddef.hsysdep/ptrace_user.hgenerated/asm-offsets.hlinux/stddef.hasm/prctl.h
Detected Declarations
function Copyrightfunction stub_syscall1function stub_syscall2function stub_syscall3function stub_syscall4function stub_syscall5function stub_syscall6function trap_myselffunction stub_seccomp_restore_state
Annotated Snippet
#ifndef __SYSDEP_STUB_H
#define __SYSDEP_STUB_H
#include <stddef.h>
#include <sysdep/ptrace_user.h>
#include <generated/asm-offsets.h>
#include <linux/stddef.h>
#include <asm/prctl.h>
#define STUB_MMAP_NR __NR_mmap
#define MMAP_OFFSET(o) (o)
#define __syscall_clobber "r11","rcx","memory"
#define __syscall "syscall"
static __always_inline long stub_syscall0(long syscall)
{
long ret;
__asm__ volatile (__syscall
: "=a" (ret)
: "0" (syscall) : __syscall_clobber );
return ret;
}
static __always_inline long stub_syscall1(long syscall, long arg1)
{
long ret;
__asm__ volatile (__syscall
: "=a" (ret)
: "0" (syscall), "D" (arg1) : __syscall_clobber );
return ret;
}
static __always_inline long stub_syscall2(long syscall, long arg1, long arg2)
{
long ret;
__asm__ volatile (__syscall
: "=a" (ret)
: "0" (syscall), "D" (arg1), "S" (arg2) : __syscall_clobber );
return ret;
}
static __always_inline long stub_syscall3(long syscall, long arg1, long arg2,
long arg3)
{
long ret;
__asm__ volatile (__syscall
: "=a" (ret)
: "0" (syscall), "D" (arg1), "S" (arg2), "d" (arg3)
: __syscall_clobber );
return ret;
}
static __always_inline long stub_syscall4(long syscall, long arg1, long arg2, long arg3,
long arg4)
{
long ret;
__asm__ volatile ("movq %5,%%r10 ; " __syscall
: "=a" (ret)
: "0" (syscall), "D" (arg1), "S" (arg2), "d" (arg3),
"g" (arg4)
: __syscall_clobber, "r10" );
return ret;
}
static __always_inline long stub_syscall5(long syscall, long arg1, long arg2,
long arg3, long arg4, long arg5)
{
long ret;
__asm__ volatile ("movq %5,%%r10 ; movq %6,%%r8 ; " __syscall
: "=a" (ret)
: "0" (syscall), "D" (arg1), "S" (arg2), "d" (arg3),
"g" (arg4), "g" (arg5)
: __syscall_clobber, "r10", "r8" );
return ret;
}
static __always_inline long stub_syscall6(long syscall, long arg1, long arg2,
Annotation
- Immediate include surface: `stddef.h`, `sysdep/ptrace_user.h`, `generated/asm-offsets.h`, `linux/stddef.h`, `asm/prctl.h`.
- Detected declarations: `function Copyright`, `function stub_syscall1`, `function stub_syscall2`, `function stub_syscall3`, `function stub_syscall4`, `function stub_syscall5`, `function stub_syscall6`, `function trap_myself`, `function stub_seccomp_restore_state`.
- Atlas domain: Architecture Layer / arch/x86.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.