arch/x86/um/shared/sysdep/faultinfo_32.h

Source file repositories/reference/linux-study-clean/arch/x86/um/shared/sysdep/faultinfo_32.h

File Facts

System
Linux kernel
Corpus path
arch/x86/um/shared/sysdep/faultinfo_32.h
Extension
.h
Size
1311 bytes
Lines
45
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.

Dependency Surface

Detected Declarations

Annotated Snippet

struct faultinfo {
        int error_code; /* in ptrace_faultinfo misleadingly called is_write */
        unsigned long cr2; /* in ptrace_faultinfo called addr */
        int trap_no; /* missing in ptrace_faultinfo */
};

#define FAULT_WRITE(fi) ((fi).error_code & 2)
#define FAULT_ADDRESS(fi) ((fi).cr2)

/* This is Page Fault */
#define SEGV_IS_FIXABLE(fi)	((fi)->trap_no == 14)

#define PTRACE_FULL_FAULTINFO 0

#define ___backtrack_faulted(_faulted)					\
	asm volatile (							\
		"movl $__get_kernel_nofault_faulted_%=,%1\n"		\
		"mov $0, %0\n"						\
		"jmp _end_%=\n"						\
		"__get_kernel_nofault_faulted_%=:\n"			\
		"mov $1, %0;"						\
		"_end_%=:"						\
		: "=r" (_faulted),					\
		  "=m" (current->thread.segv_continue) ::		\
	)

#endif

Annotation

Implementation Notes