#if !defined(_PTRACE_COMPAT_H_)
#define	_PTRACE_COMPAT_H_


/* Type of the REQUEST argument to `ptrace.'  */
enum __ptrace_request
{
  __PTRACE_TRACEME = 0,
  __PTRACE_PEEKTEXT = 1,
  __PTRACE_PEEKDATA = 2,
  __PTRACE_PEEKUSER = 3,
  __PTRACE_POKETEXT = 4,
  __PTRACE_POKEDATA = 5,
  __PTRACE_POKEUSER = 6,
  __PTRACE_CONT = 7,
  __PTRACE_KILL = 8,
  __PTRACE_SINGLESTEP = 9,
  __PTRACE_GETREGS = 12,
  __PTRACE_SETREGS = 13,
  __PTRACE_GETFPREGS = 14,
  __PTRACE_SETFPREGS = 15,
  __PTRACE_ATTACH = 16,
  __PTRACE_DETACH = 17,
  __PTRACE_GETFPXREGS = 18,
  __PTRACE_SETFPXREGS = 19,
  __PTRACE_SYSCALL = 24,
  __PTRACE_SETOPTIONS = 0x4200,
  __PTRACE_GETEVENTMSG = 0x4201,
  __PTRACE_GETSIGINFO = 0x4202,
  __PTRACE_SETSIGINFO = 0x4203,
  __PTRACE_GETREGSET = 0x4204,
  __PTRACE_SETREGSET = 0x4205,
  __PTRACE_SEIZE = 0x4206,
  __PTRACE_INTERRUPT = 0x4207,
  __PTRACE_LISTEN = 0x4208,
  __PTRACE_PEEKSIGINFO = 0x4209,
  __PTRACE_GETSIGMASK = 0x420a,
  __PTRACE_SETSIGMASK = 0x420b
};


/* Flag for PTRACE_LISTEN.  */
enum __ptrace_flags
{
  __PTRACE_SEIZE_DEVEL = 0x80000000
};

/* Options set using PTRACE_SETOPTIONS.  */
enum __ptrace_setoptions
{
  __PTRACE_O_TRACESYSGOOD	= (1 << 0),
  __PTRACE_O_TRACEFORK		= (1 << 1),
  __PTRACE_O_TRACEVFORK		= (1 << 2),
  __PTRACE_O_TRACECLONE		= (1 << 3),
  __PTRACE_O_TRACEEXEC		= (1 << 4),
  __PTRACE_O_TRACEVFORKDONE	= (1 << 5),
  __PTRACE_O_TRACEEXIT		= (1 << 6),
  __PTRACE_O_TRACESECCOMP	= (1 << 7),
  __PTRACE_O_EXITKILL		= (1 << 20),
  __PTRACE_O_MASK		= __PTRACE_O_EXITKILL | ((1 << 8) - 1)
};

/* Wait extended result codes for the above trace options.  */
enum __ptrace_eventcodes
{
  __PTRACE_EVENT_FORK	= 1,
  __PTRACE_EVENT_VFORK	= 2,
  __PTRACE_EVENT_CLONE	= 3,
  __PTRACE_EVENT_EXEC	= 4,
  __PTRACE_EVENT_VFORK_DONE = 5,
  __PTRACE_EVENT_EXIT	= 6,
  __PTRACE_EVENT_SECCOMP  = 7
};

enum __ptrace_peeksiginfo_flags
{
  __PTRACE_PEEKSIGINFO_SHARED = (1 << 0)
};

#endif /* _PTRACE_COMPAT_H */
