xref: /DragonOS/kernel/src/process/ptrace.h (revision d4f3de93a23e4bd4f000a3663768d47d094bf188)
12813126eSlogin #ifndef __PTRACE_H__
22813126eSlogin 
32813126eSlogin #define __PTRACE_H__
42813126eSlogin 
52813126eSlogin struct pt_regs
62813126eSlogin {
72813126eSlogin     unsigned long r15;
82813126eSlogin     unsigned long r14;
92813126eSlogin     unsigned long r13;
102813126eSlogin     unsigned long r12;
112813126eSlogin     unsigned long r11;
122813126eSlogin     unsigned long r10;
132813126eSlogin     unsigned long r9;
142813126eSlogin     unsigned long r8;
152813126eSlogin     unsigned long rbx;
162813126eSlogin     unsigned long rcx;
172813126eSlogin     unsigned long rdx;
182813126eSlogin     unsigned long rsi;
192813126eSlogin     unsigned long rdi;
202813126eSlogin     unsigned long rbp;
212813126eSlogin     unsigned long ds;
222813126eSlogin     unsigned long es;
232813126eSlogin     unsigned long rax;
242813126eSlogin     unsigned long func;
252813126eSlogin     unsigned long errcode;
262813126eSlogin     unsigned long rip;
272813126eSlogin     unsigned long cs;
282813126eSlogin     unsigned long rflags;
292813126eSlogin     unsigned long rsp;
302813126eSlogin     unsigned long ss;
312813126eSlogin };
32*1a2eaa40Slogin 
33*1a2eaa40Slogin /**
34*1a2eaa40Slogin  * @brief 判断pt_regs是否来自用户态
35*1a2eaa40Slogin  *
36*1a2eaa40Slogin  * @param regs
37*1a2eaa40Slogin  * @return __always_inline
38*1a2eaa40Slogin  */
user_mode(struct pt_regs * regs)39*1a2eaa40Slogin static inline int user_mode(struct pt_regs *regs)
40*1a2eaa40Slogin {
41*1a2eaa40Slogin     return !!(regs->cs & 3);
42*1a2eaa40Slogin }
432813126eSlogin 
442813126eSlogin #endif
45