#include <linux/sched.h>
#include <linux/sched/task_stack.h>
#include <linux/mm.h>
#include <linux/ptrace.h>
#include <asm/desc.h>
#include <asm/debugreg.h>
#include <asm/mmu_context.h>
unsigned long convert_ip_to_linear(struct task_struct *child, struct pt_regs *regs)
{ … }
static int is_setting_trap_flag(struct task_struct *child, struct pt_regs *regs)
{ … }
static int enable_single_step(struct task_struct *child)
{ … }
void set_task_blockstep(struct task_struct *task, bool on)
{ … }
static void enable_step(struct task_struct *child, bool block)
{ … }
void user_enable_single_step(struct task_struct *child)
{ … }
void user_enable_block_step(struct task_struct *child)
{ … }
void user_disable_single_step(struct task_struct *child)
{ … }