arch/x86/include/asm/kprobes.h
Source file repositories/reference/linux-study-clean/arch/x86/include/asm/kprobes.h
File Facts
- System
- Linux kernel
- Corpus path
arch/x86/include/asm/kprobes.h- Extension
.h- Size
- 3292 bytes
- Lines
- 124
- 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
asm-generic/kprobes.hlinux/types.hlinux/ptrace.hlinux/percpu.hasm/text-patching.hasm/insn.h
Detected Declarations
struct pt_regsstruct kprobestruct arch_specific_insnstruct arch_optimized_insnstruct prev_kprobestruct kprobe_ctlblkfunction arch_prepared_optinsnfunction kprobe_debug_handler
Annotated Snippet
struct arch_specific_insn {
/* copy of the original instruction */
kprobe_opcode_t *insn;
/*
* boostable = 0: This instruction type is not boostable.
* boostable = 1: This instruction has been boosted: we have
* added a relative jump after the instruction copy in insn,
* so no single-step and fixup are needed (unless there's
* a post_handler).
*/
unsigned boostable:1;
unsigned char size; /* The size of insn */
union {
unsigned char opcode;
struct {
unsigned char type;
} jcc;
struct {
unsigned char type;
unsigned char asize;
} loop;
struct {
unsigned char reg;
} indirect;
};
s32 rel32; /* relative offset must be s32, s16, or s8 */
void (*emulate_op)(struct kprobe *p, struct pt_regs *regs);
/* Number of bytes of text poked */
int tp_len;
};
struct arch_optimized_insn {
/* copy of the original instructions */
kprobe_opcode_t copied_insn[DISP32_SIZE];
/* detour code buffer */
kprobe_opcode_t *insn;
/* the size of instructions copied to detour code buffer */
size_t size;
};
/* Return true (!0) if optinsn is prepared for optimization. */
static inline int arch_prepared_optinsn(struct arch_optimized_insn *optinsn)
{
return optinsn->size;
}
struct prev_kprobe {
struct kprobe *kp;
unsigned long status;
unsigned long old_flags;
unsigned long saved_flags;
};
/* per-cpu kprobe control block */
struct kprobe_ctlblk {
unsigned long kprobe_status;
unsigned long kprobe_old_flags;
unsigned long kprobe_saved_flags;
struct prev_kprobe prev_kprobe;
};
extern int kprobe_fault_handler(struct pt_regs *regs, int trapnr);
extern int kprobe_int3_handler(struct pt_regs *regs);
#else
static inline int kprobe_debug_handler(struct pt_regs *regs) { return 0; }
#endif /* CONFIG_KPROBES */
#endif /* _ASM_X86_KPROBES_H */
Annotation
- Immediate include surface: `asm-generic/kprobes.h`, `linux/types.h`, `linux/ptrace.h`, `linux/percpu.h`, `asm/text-patching.h`, `asm/insn.h`.
- Detected declarations: `struct pt_regs`, `struct kprobe`, `struct arch_specific_insn`, `struct arch_optimized_insn`, `struct prev_kprobe`, `struct kprobe_ctlblk`, `function arch_prepared_optinsn`, `function kprobe_debug_handler`.
- 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.