]> Zhao Yanbai Git Server - minix.git/commitdiff
<sys/ptrace.h>
authorBen Gras <ben@minix3.org>
Tue, 10 Dec 2013 17:18:13 +0000 (18:18 +0100)
committerLionel Sambuc <lionel@minix3.org>
Mon, 3 Mar 2014 19:47:04 +0000 (20:47 +0100)
Change-Id: Ib930c661c1e6de05b2e0d5fce4ffc1ae2269fc6a

lib/libc/sys-minix/ptrace.c
sys/arch/arm/include/Makefile
sys/arch/arm/include/ptrace.h [new file with mode: 0644]
sys/arch/evbarm/include/Makefile
sys/arch/evbarm/include/ptrace.h [new file with mode: 0644]
sys/arch/i386/include/Makefile
sys/arch/i386/include/ptrace.h [new file with mode: 0644]
sys/sys/ptrace.h

index 79c28aa58341df61a18bb7124c66b61dbe9feea1..a70dfa97251244d66505222bb7c743055c443cec 100644 (file)
@@ -9,7 +9,7 @@
 __weak_alias(ptrace, _ptrace)
 #endif
 
-long ptrace(int req, pid_t pid, long addr, long data)
+int ptrace(int req, pid_t pid, void *addr, int data)
 {
   message m;
 
index dee4cf7772ebf6a64f224b3b59595aad10d254c4..2baebc26ccf26599fdc195bdc0028148549d38e7 100644 (file)
@@ -13,7 +13,7 @@ INCS= aeabi.h ansi.h armreg.h asm.h \
        \
        limits.h lock.h \
        math.h mcontext.h mutex.h \
-       param.h profile.h rwlock.h \
+       param.h ptrace.h profile.h rwlock.h \
        \
        rwlock.h \
        setjmp.h signal.h \
diff --git a/sys/arch/arm/include/ptrace.h b/sys/arch/arm/include/ptrace.h
new file mode 100644 (file)
index 0000000..0618201
--- /dev/null
@@ -0,0 +1,50 @@
+/*     $NetBSD: ptrace.h,v 1.5 2008/01/25 11:59:20 skrll Exp $ */
+
+/*
+ * Copyright (c) 1995 Frank Lancaster
+ * Copyright (c) 1995 Tools GmbH
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *      This product includes software developed by TooLs GmbH.
+ * 4. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission
+ *
+ * THIS SOFTWARE IS PROVIDED BY TOOLS GMBH ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL TOOLS GMBH BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * arm-dependent ptrace definitions
+ */
+#ifndef _KERNEL
+#define PT_STEP                (PT_FIRSTMACH + 0) /* Not implemented */
+#endif
+#define        PT_GETREGS      (PT_FIRSTMACH + 1)
+#define        PT_SETREGS      (PT_FIRSTMACH + 2)
+#define        PT_GETFPREGS    (PT_FIRSTMACH + 3)
+#define        PT_SETFPREGS    (PT_FIRSTMACH + 4)
+
+#define PT_MACHDEP_STRINGS \
+       "(unused)", \
+       "PT_GETREGS", \
+       "PT_SETREGS", \
+       "PT_GETFPREGS", \
+       "PT_SETFPREGS",
index fc9eac797fd07e650bd2f911d7fc330453f14437..227150e4ceb738219b9621e9fa240f4b8522559a 100644 (file)
@@ -13,7 +13,7 @@ INCS= ansi.h asm.h \
        \
        limits.h lock.h \
        math.h mcontext.h mutex.h \
-       param.h proc.h profile.h \
+       param.h proc.h profile.h ptrace.h \
        rwlock.h \
        setjmp.h signal.h \
        types.h \
diff --git a/sys/arch/evbarm/include/ptrace.h b/sys/arch/evbarm/include/ptrace.h
new file mode 100644 (file)
index 0000000..8100603
--- /dev/null
@@ -0,0 +1,3 @@
+/*     $NetBSD: ptrace.h,v 1.1 2001/11/25 15:56:05 thorpej Exp $       */
+
+#include <arm/ptrace.h>
index bbccc8841d1e995d84a41840817710859f8048dc..cdc4d2e215f4a8662faf2504464ee94544d2298c 100644 (file)
@@ -17,7 +17,7 @@ INCS= ansi.h asm.h \
        limits.h \
        math.h mcontext.h mutex.h multiboot.h \
        npx.h \
-       param.h pio.h profile.h \
+       param.h pio.h profile.h ptrace.h \
        \
        rwlock.h \
        setjmp.h signal.h \
diff --git a/sys/arch/i386/include/ptrace.h b/sys/arch/i386/include/ptrace.h
new file mode 100644 (file)
index 0000000..2c51c5d
--- /dev/null
@@ -0,0 +1,149 @@
+/*     $NetBSD: ptrace.h,v 1.13 2006/03/05 07:17:21 christos Exp $     */
+
+/*
+ * Copyright (c) 2001 Wasabi Systems, Inc.
+ * All rights reserved.
+ *
+ * Written by Jason R. Thorpe for Wasabi Systems, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *     This product includes software developed for the NetBSD Project by
+ *     Wasabi Systems, Inc.
+ * 4. The name of Wasabi Systems, Inc. may not be used to endorse
+ *    or promote products derived from this software without specific prior
+ *    written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY WASABI SYSTEMS, INC. ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL WASABI SYSTEMS, INC
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * Copyright (c) 1993 Christopher G. Demetriou
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *      This product includes software developed by Christopher G. Demetriou.
+ * 4. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef _I386_PTRACE_H_
+#define        _I386_PTRACE_H_
+
+/*
+ * i386-dependent ptrace definitions
+ */
+#define        PT_STEP         (PT_FIRSTMACH + 0)
+#define        PT_GETREGS      (PT_FIRSTMACH + 1)
+#define        PT_SETREGS      (PT_FIRSTMACH + 2)
+#define        PT_GETFPREGS    (PT_FIRSTMACH + 3)
+#define        PT_SETFPREGS    (PT_FIRSTMACH + 4)
+
+/* We have machine-dependent process tracing needs. */
+#define        __HAVE_PTRACE_MACHDEP
+
+/* We have machine-dependent procfs nodes. */
+#define        __HAVE_PROCFS_MACHDEP
+
+/* The machine-dependent ptrace(2) requests. */
+#define        PT_GETXMMREGS   (PT_FIRSTMACH + 5)
+#define        PT_SETXMMREGS   (PT_FIRSTMACH + 6)
+
+#define PT_MACHDEP_STRINGS \
+       "PT_STEP", \
+       "PT_GETREGS", \
+       "PT_SETREGS", \
+       "PT_GETFPREGS", \
+       "PT_SETFPREGS", \
+       "PT_GETXMMREGS", \
+       "PT_SETXMMREGS",
+
+#ifdef _KERNEL
+
+/*
+ * These are used in sys_ptrace() to find good ptrace(2) requests.
+ */
+#define        PTRACE_MACHDEP_REQUEST_CASES                                    \
+       case PT_GETXMMREGS:                                             \
+       case PT_SETXMMREGS:
+
+/*
+ * These are used to define machine-dependent procfs node types.
+ */
+#define        PROCFS_MACHDEP_NODE_TYPES                                       \
+       Pmachdep_xmmregs,       /* extended FP register set */
+
+/*
+ * These are used in switch statements to catch machine-dependent
+ * procfs node types.
+ */
+#define        PROCFS_MACHDEP_NODETYPE_CASES                                   \
+       case Pmachdep_xmmregs:
+
+/*
+ * These are used to protect a privileged process's state.
+ */
+#define        PROCFS_MACHDEP_PROTECT_CASES                                    \
+       case Pmachdep_xmmregs:
+
+/*
+ * These are used to define the machine-dependent procfs nodes.
+ */
+#define        PROCFS_MACHDEP_NODETYPE_DEFNS                                   \
+       { DT_REG, N("xmmregs"), Pmachdep_xmmregs,                       \
+         procfs_machdep_validxmmregs },
+
+struct xmmregs;
+
+/* Functions used by both ptrace(2) and procfs. */
+int    process_machdep_doxmmregs(struct lwp *, struct lwp *, struct uio *);
+int    process_machdep_validxmmregs(struct proc *);
+
+/* Functions used by procfs. */
+struct mount;
+struct pfsnode;
+int    procfs_machdep_doxmmregs(struct lwp *, struct lwp *,
+           struct pfsnode *, struct uio *);
+int    procfs_machdep_validxmmregs(struct lwp *, struct mount *);
+
+#endif /* _KERNEL */
+
+#endif /* _I386_PTRACE_H_ */
index b829771a403096de52d00bf3246fceb110dd67e4..5a58fa7cfcd7bfcee9082d31b3a23974032d4f8b 100644 (file)
-/* <sys/ptrace.h>
- * definitions for ptrace(2) 
+/*     $NetBSD: ptrace.h,v 1.44 2011/09/02 20:10:19 christos Exp $     */
+
+/*-
+ * Copyright (c) 1984, 1993
+ *     The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *     @(#)ptrace.h    8.2 (Berkeley) 1/4/94
+ */
+
+#ifndef        _SYS_PTRACE_H_
+#define        _SYS_PTRACE_H_
+
+#define        PT_TRACE_ME             0       /* child declares it's being traced */
+#define        PT_READ_I               1       /* read word in child's I space */
+#define        PT_READ_D               2       /* read word in child's D space */
+#define        PT_WRITE_I              4       /* write word in child's I space */
+#define        PT_WRITE_D              5       /* write word in child's D space */
+#define        PT_CONTINUE             7       /* continue the child */
+#define        PT_KILL                 8       /* kill the child process */
+#define        PT_ATTACH               9       /* attach to running process */
+#define        PT_DETACH               10      /* detach from running process */
+#define        PT_IO                   11      /* do I/O to/from the stopped process */
+#define        PT_DUMPCORE             12      /* make child generate a core dump */
+#define        PT_LWPINFO              13      /* get info about the LWP */
+#define        PT_SYSCALL              14      /* stop on syscall entry/exit */
+#define        PT_SYSCALLEMU           15      /* cancel syscall, tracer emulates it */
+#define        PT_SET_EVENT_MASK       16      /* set the event mask, defined below */
+#define        PT_GET_EVENT_MASK       17      /* get the event mask, defined below */
+#define        PT_GET_PROCESS_STATE    18      /* get process state, defined below */
+
+#define        PT_FIRSTMACH            32      /* for machine-specific requests */
+#include <machine/ptrace.h>            /* machine-specific requests, if any */
+
+#define PT_STRINGS \
+/*  0 */    "PT_TRACE_ME", \
+/*  1 */    "PT_READ_I", \
+/*  2 */    "PT_READ_D", \
+/*  3 */    "*PT_INVALID_3*", \
+/*  4 */    "PT_WRITE_I", \
+/*  5 */    "PT_WRITE_D", \
+/*  6 */    "*PT_INVALID_6*", \
+/*  7 */    "PT_CONTINUE", \
+/*  8 */    "PT_KILL", \
+/*  9 */    "PT_ATTACH", \
+/* 10 */    "PT_DETACH", \
+/* 11 */    "PT_IO", \
+/* 12 */    "PT_DUMPCORE", \
+/* 13 */    "PT_LWPINFO", \
+/* 14 */    "PT_SYSCALL", \
+/* 15 */    "PT_SYSCALLEMU", \
+/* 16 */    "PT_SET_EVENT_MASK", \
+/* 17 */    "PT_GET_EVENT_MASK", \
+/* 18 */    "PT_GET_PROCESS_STATE",
+
+/* PT_{G,S}EVENT_MASK */
+typedef struct ptrace_event {
+       int     pe_set_event;
+} ptrace_event_t;
+
+/* PT_GET_PROCESS_STATE */
+typedef struct ptrace_state {
+       int     pe_report_event;
+       pid_t   pe_other_pid;
+} ptrace_state_t;
+
+#define        PTRACE_FORK     0x0001  /* Report forks */
+
+/*
+ * Argument structure for PT_IO.
+ */
+struct ptrace_io_desc {
+       int     piod_op;        /* I/O operation (see below) */
+       void    *piod_offs;     /* child offset */
+       void    *piod_addr;     /* parent offset */
+       size_t  piod_len;       /* request length (in)/actual count (out) */
+};
+
+/* piod_op */
+#define        PIOD_READ_D     1       /* read from D space */
+#define        PIOD_WRITE_D    2       /* write to D spcae */
+#define        PIOD_READ_I     3       /* read from I space */
+#define        PIOD_WRITE_I    4       /* write to I space */
+
+/*
+ * Argument structure for PT_LWPINFO.
  */
+struct ptrace_lwpinfo {
+       lwpid_t pl_lwpid;       /* LWP described */
+       int     pl_event;       /* Event that stopped the LWP */
+       /* Add fields at the end */
+};
+
+#define PL_EVENT_NONE  0
+#define PL_EVENT_SIGNAL        1
+
+#ifdef _KERNEL
+
+#if defined(PT_GETREGS) || defined(PT_SETREGS)
+struct reg;
+#ifndef process_reg32
+#define process_reg32 struct reg
+#endif
+#ifndef process_reg64
+#define process_reg64 struct reg
+#endif
+#endif
+#if defined(PT_GETFPREGS) || defined(PT_SETFPREGS)
+struct fpreg;
+#ifndef process_fpreg32
+#define process_fpreg32 struct fpreg
+#endif
+#ifndef process_fpreg64
+#define process_fpreg64 struct fpreg
+#endif
+#endif
 
-#ifndef _PTRACE_H
-#define _PTRACE_H
-
-/* Trace requests. */
-#define T_STOP        -1       /* stop the process */
-#define T_OK           0       /* enable tracing by parent for this process */
-#define T_GETINS       1       /* return value from instruction space */
-#define T_GETDATA      2       /* return value from data space */
-#define T_GETUSER      3       /* return value from user process table */
-#define        T_SETINS        4       /* set value from instruction space */
-#define T_SETDATA      5       /* set value from data space */
-#define T_SETUSER      6       /* set value in user process table */
-#define T_RESUME       7       /* resume execution */
-#define T_EXIT         8       /* exit */
-#define T_STEP         9       /* set trace bit */
-#define T_SYSCALL      10      /* trace system call */
-#define T_ATTACH       11      /* attach to a running process */
-#define T_DETACH       12      /* detach from a traced process */
-#define T_SETOPT       13      /* set trace options */
-#define T_GETRANGE     14      /* get range of values */
-#define T_SETRANGE     15      /* set range of values */
-
-#define T_READB_INS    100     /* Read a byte from the text segment of an
-                                * untraced process (only for root)
-                                */
-#define T_WRITEB_INS   101     /* Write a byte in the text segment of an
-                                * untraced process (only for root)
-                                */
+void   ptrace_init(void);
 
+int    process_doregs(struct lwp *, struct lwp *, struct uio *);
+int    process_validregs(struct lwp *);
+
+int    process_dofpregs(struct lwp *, struct lwp *, struct uio *);
+int    process_validfpregs(struct lwp *);
+
+int    process_domem(struct lwp *, struct lwp *, struct uio *);
+
+void   process_stoptrace(void);
+
+void   proc_reparent(struct proc *, struct proc *);
+#ifdef PT_GETFPREGS
+#ifdef __HAVE_PROCESS_XFPREGS
+int    process_read_xfpregs(struct lwp *, struct fpreg *, size_t *);
+#ifndef process_read_xfpregs32
+#define process_read_xfpregs32 process_read_xfpregs
+#endif
+#ifndef process_read_xfpregs64
+#define process_read_xfpregs64 process_read_xfpregs
+#endif
+#else
+int    process_read_fpregs(struct lwp *, struct fpreg *);
+#ifndef process_read_fpregs32
+#define process_read_fpregs32  process_read_fpregs
+#endif
+#ifndef process_read_fpregs64
+#define process_read_fpregs64  process_read_fpregs
+#endif
+#endif
+#endif
+#ifdef PT_GETREGS
+int    process_read_regs(struct lwp *, struct reg *);
+#ifndef process_read_regs32
+#define process_read_regs32    process_read_regs
+#endif
+#ifndef process_read_regs64
+#define process_read_regs64    process_read_regs
+#endif
+#endif
+int    process_set_pc(struct lwp *, void *);
+int    process_sstep(struct lwp *, int);
+#ifdef PT_SETFPREGS
+#ifdef __HAVE_PROCESS_XFPREGS
+int    process_write_xfpregs(struct lwp *, const struct fpreg *, size_t);
+#else
+int    process_write_fpregs(struct lwp *, const struct fpreg *);
+#endif
+#endif
+#ifdef PT_SETREGS
+int    process_write_regs(struct lwp *, const struct reg *);
+#endif
+
+#ifdef __HAVE_PROCFS_MACHDEP
+int    ptrace_machdep_dorequest(struct lwp *, struct lwp *, int,
+           void *, int);
+#endif
+
+#ifndef FIX_SSTEP
+#define FIX_SSTEP(p)
+#endif
+
+#else /* !_KERNEL */
+
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+int    ptrace(int _request, pid_t _pid, void *_addr, int _data);
+__END_DECLS
+
+#endif /* !_KERNEL */
+
+#ifdef __minix
 /* Trace options. */
-#define TO_TRACEFORK   0x1     /* automatically attach to forked children */
-#define TO_ALTEXEC     0x2     /* send SIGSTOP on successful exec() */
-#define TO_NOEXEC      0x4     /* do not send signal on successful exec() */
+#define TO_TRACEFORK   0x1     /* automatically attach to forked children */
+#define TO_ALTEXEC     0x2     /* send SIGSTOP on successful exec() */
+#define TO_NOEXEC      0x4     /* do not send signal on successful exec() */
 
 /* Trace spaces. */
-#define TS_INS         0       /* text space */
-#define TS_DATA                1       /* data space */
+#define TS_INS         0       /* text space */
+#define TS_DATA        1       /* data space */
 
 /* Trance range structure. */
 struct ptrace_range {
-  int pr_space;                        /* space in traced process */
-  long pr_addr;                        /* address in traced process */
-  void *pr_ptr;                        /* buffer in caller process */
-  size_t pr_size;              /* size of range, in bytes */
+  int pr_space;                        /* space in traced process */
+  long pr_addr;                        /* address in traced process */
+  void *pr_ptr;                        /* buffer in caller process */
+  size_t pr_size;              /* size of range, in bytes */
 };
 
-/* Function Prototypes. */
-#include <sys/cdefs.h>
+/* Trace requests aliases for minix. */
+#define T_OK           PT_TRACE_ME /* enable tracing by parent for this process */
+#define T_GETINS       PT_READ_I   /* return value from instruction space */
+#define T_GETDATA      PT_READ_D   /* return value from data space */
+#define T_SETINS       PT_WRITE_I  /* set value from instruction space */
+#define T_SETDATA      PT_WRITE_D  /* set value from data space */
+#define T_RESUME       PT_CONTINUE /* resume execution */
+#define T_EXIT         PT_KILL     /* exit */
+#define T_SYSCALL      PT_SYSCALL /* trace system call */
+#define T_ATTACH       PT_ATTACH  /* attach to a running process */
+#define T_DETACH       PT_DETACH  /* detach from a traced process */
 
-__BEGIN_DECLS
-long ptrace(int _req, pid_t _pid, long _addr, long _data);
-__END_DECLS
+/* Trace requests unique to minix */
+#define T_STOP        -1       /* stop the process */
+#define T_READB_INS    100     /* Read a byte from the text segment of an
+                                * untraced process (only for root)
+                                */
+#define T_WRITEB_INS   101     /* Write a byte in the text segment of an
+                                * untraced process (only for root)
+                                */
+#define T_GETUSER      102       /* return value from user process table */
+#define T_SETUSER      103       /* set value in user process table */
+#define T_STEP         104       /* set trace bit */
+#define T_SETOPT       105       /* set trace options */
+#define T_GETRANGE     106       /* get range of values */
+#define T_SETRANGE     107       /* set range of values */
+
+#endif
 
-#endif /* _PTRACE_H */
+#endif /* !_SYS_PTRACE_H_ */