* Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
*
* @APPLE_OSREFERENCE_LICENSE_HEADER_START@
- *
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
* unlawful or unlicensed copies of an Apple operating system, or to
* circumvent, violate, or enable the circumvention or violation of, any
* terms of an Apple operating system software license agreement.
- *
+ *
* Please obtain a copy of the License at
* http://www.opensource.apple.com/apsl/ and read it before using this file.
- *
+ *
* The Original Code and all software distributed under the License are
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
* Please see the License for the specific language governing rights and
* limitations under the License.
- *
+ *
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
*/
#ifdef MACH_KERNEL_PRIVATE
-#include <mach/vm_prot.h>
+#include <mach/vm_prot.h>
#include <mach/boolean.h>
-#include <stdint.h>
+#include <stdint.h>
#endif
#ifdef KDP_PROXY_PACK_SUPPORT
/*
* Retransmit parameters
*/
-#if DDEBUG_DEBUG || DEBUG_DEBUG
-#define KDP_REXMIT_SECS 20 /* rexmit if no ack in 3 secs */
-#else /* DDEBUG_DEBUG || DEBUG_DEBUG */
-#define KDP_REXMIT_SECS 3 /* rexmit if no ack in 3 secs */
-#endif /* DDEBUG_DEBUG || DEBUG_DEBUG */
-#define KDP_REXMIT_TRIES 8 /* xmit 8 times, then give up */
+#if DDEBUG_DEBUG || DEBUG_DEBUG
+#define KDP_REXMIT_SECS 20 /* rexmit if no ack in 3 secs */
+#else /* DDEBUG_DEBUG || DEBUG_DEBUG */
+#define KDP_REXMIT_SECS 3 /* rexmit if no ack in 3 secs */
+#endif /* DDEBUG_DEBUG || DEBUG_DEBUG */
+#define KDP_REXMIT_TRIES 8 /* xmit 8 times, then give up */
/*
* Remote will resume unless KDP requests is received within this
* many seconds after an attention (nmi) packet is sent.
*/
-#define KDP_MAX_ATTN_WAIT 30 /* wait max of 30 seconds */
+#define KDP_MAX_ATTN_WAIT 30 /* wait max of 30 seconds */
/*
* Well-known UDP port, debugger side.
* FIXME: This is what the 68K guys use, but beats me how they chose it...
*/
-#define KDP_REMOTE_PORT 41139 /* pick one and register it */
+#define KDP_REMOTE_PORT 41139 /* pick one and register it */
/*
* UDP ports, KDB side. 5 port numbers are reserved for each port (request
* and exception). This allows multiple KDBs to run on one host.
*/
-#define UDP_HOST_COMM_BASE 41140
-#define UDP_HOST_EXCEP_BASE 41145
-#define NUM_UDP_HOST_PORTS 5
+#define UDP_HOST_COMM_BASE 41140
+#define UDP_HOST_EXCEP_BASE 41145
+#define NUM_UDP_HOST_PORTS 5
/*
* Requests
*/
typedef enum {
/* connection oriented requests */
- KDP_CONNECT, KDP_DISCONNECT,
+ KDP_CONNECT, KDP_DISCONNECT,
/* obtaining client info */
- KDP_HOSTINFO, KDP_VERSION, KDP_MAXBYTES,
-
+ KDP_HOSTINFO, KDP_VERSION, KDP_MAXBYTES,
+
/* memory access */
- KDP_READMEM, KDP_WRITEMEM,
-
+ KDP_READMEM, KDP_WRITEMEM,
+
/* register access */
- KDP_READREGS, KDP_WRITEREGS,
-
+ KDP_READREGS, KDP_WRITEREGS,
+
/* executable image info */
- KDP_LOAD, KDP_IMAGEPATH,
-
+ KDP_LOAD, KDP_IMAGEPATH,
+
/* execution control */
- KDP_SUSPEND, KDP_RESUMECPUS,
-
+ KDP_SUSPEND, KDP_RESUMECPUS,
+
/* exception and termination notification, NOT true requests */
- KDP_EXCEPTION, KDP_TERMINATION,
+ KDP_EXCEPTION, KDP_TERMINATION,
/* breakpoint control */
KDP_BREAKPOINT_SET, KDP_BREAKPOINT_REMOVE,
-
+
/* vm regions */
KDP_REGIONS,
KDP_HOSTREBOOT,
/* memory access (64-bit wide addresses). Version 11 protocol */
- KDP_READMEM64, KDP_WRITEMEM64,
+ KDP_READMEM64, KDP_WRITEMEM64,
/* breakpoint control (64-bit wide addresses). Version 11 protocol */
KDP_BREAKPOINT64_SET, KDP_BREAKPOINT64_REMOVE,
-
+
/* kernel version string, like "xnu-1234.5~6". Version 11 protocol */
KDP_KERNELVERSION,
-
+
/* physical memory access (64-bit wide addresses). Version 12 protocol */
- KDP_READPHYSMEM64, KDP_WRITEPHYSMEM64,
+ KDP_READPHYSMEM64, KDP_WRITEPHYSMEM64,
- /* ioport access (8-, 16-, and 32-bit) */
- KDP_READIOPORT, KDP_WRITEIOPORT,
+ /* ioport access (8-, 16-, and 32-bit) */
+ KDP_READIOPORT, KDP_WRITEIOPORT,
- /* msr access (64-bit) */
- KDP_READMSR64, KDP_WRITEMSR64,
+ /* msr access (64-bit) */
+ KDP_READMSR64, KDP_WRITEMSR64,
- /* get/dump panic/corefile info */
- KDP_DUMPINFO,
+ /* get/dump panic/corefile info */
+ KDP_DUMPINFO,
/* keep this last */
KDP_INVALID_REQUEST
} kdp_req_t;
typedef enum {
- KDP_DUMPINFO_GETINFO = 0x00000000,
- KDP_DUMPINFO_SETINFO = 0x00000001,
- KDP_DUMPINFO_CORE = 0x00000102,
- KDP_DUMPINFO_PANICLOG = 0x00000103,
- KDP_DUMPINFO_SYSTEMLOG = 0x00000104,
- KDP_DUMPINFO_DISABLE = 0x00000105,
- KDP_DUMPINFO_MASK = 0x00000FFF,
- KDP_DUMPINFO_DUMP = 0x00000100,
-
- KDP_DUMPINFO_REBOOT = 0x10000000,
- KDP_DUMPINFO_NORESUME = 0x20000000,
- KDP_DUMPINFO_RESUME = 0x00000000, /* default behaviour */
- KDP_DUMPINFO_NOINTR = 0x40000000, /* don't interrupt */
- KDP_DUMPINFO_INTR = 0x00000000, /* default behaviour */
+ KDP_DUMPINFO_GETINFO = 0x00000000,
+ KDP_DUMPINFO_SETINFO = 0x00000001,
+ KDP_DUMPINFO_CORE = 0x00000102,
+ KDP_DUMPINFO_PANICLOG = 0x00000103,
+ KDP_DUMPINFO_SYSTEMLOG = 0x00000104,
+ KDP_DUMPINFO_DISABLE = 0x00000105,
+ KDP_DUMPINFO_MASK = 0x00000FFF,
+ KDP_DUMPINFO_DUMP = 0x00000100,
+
+ KDP_DUMPINFO_REBOOT = 0x10000000,
+ KDP_DUMPINFO_NORESUME = 0x20000000,
+ KDP_DUMPINFO_RESUME = 0x00000000, /* default behaviour */
+ KDP_DUMPINFO_NOINTR = 0x40000000, /* don't interrupt */
+ KDP_DUMPINFO_INTR = 0x00000000, /* default behaviour */
} kdp_dumpinfo_t;
/*
* need to be reflected in kgmacros as well.
*/
typedef struct {
- kdp_req_t request:7; /* kdp_req_t, request type */
- unsigned is_reply:1; /* 0 => request, 1 => reply */
- unsigned seq:8; /* sequence number within session */
- unsigned len:16; /* length of entire pkt including hdr */
- unsigned key; /* session key */
+ kdp_req_t request:7; /* kdp_req_t, request type */
+ unsigned is_reply:1; /* 0 => request, 1 => reply */
+ unsigned seq:8; /* sequence number within session */
+ unsigned len:16; /* length of entire pkt including hdr */
+ unsigned key; /* session key */
} KDP_PACKED kdp_hdr_t;
/*
KDPERR_NO_ERROR = 0,
KDPERR_ALREADY_CONNECTED,
KDPERR_BAD_NBYTES,
- KDPERR_BADFLAVOR, /* bad flavor in w/r regs */
- KDPERR_BAD_ACCESS, /* memory reference failure */
+ KDPERR_BADFLAVOR, /* bad flavor in w/r regs */
+ KDPERR_BAD_ACCESS, /* memory reference failure */
KDPERR_MAX_BREAKPOINTS = 100,
KDPERR_BREAKPOINT_NOT_FOUND = 101,
KDPERR_BREAKPOINT_ALREADY_SET = 102
} kdp_error_t;
-#if defined(__x86_64__)
-#define KDPERR_ACCESS(_req,_ret) \
+#if defined(__x86_64__)
+#define KDPERR_ACCESS(_req, _ret) \
(((_req) == (uint32_t)(_ret)) ? KDPERR_NO_ERROR : KDPERR_BAD_ACCESS)
#else
-#define KDPERR_ACCESS(req,cnt) (KDPERR_NO_ERROR)
+#define KDPERR_ACCESS(req, cnt) (KDPERR_NO_ERROR)
#endif /* x86_64 */
/*
* KDP_CONNECT
*/
-typedef struct { /* KDP_CONNECT request */
- kdp_hdr_t hdr;
- uint16_t req_reply_port; /* udp port which to send replies */
- uint16_t exc_note_port; /* udp port which to send exc notes */
- char greeting[0]; /* "greetings", nul-terminated */
+typedef struct { /* KDP_CONNECT request */
+ kdp_hdr_t hdr;
+ uint16_t req_reply_port; /* udp port which to send replies */
+ uint16_t exc_note_port; /* udp port which to send exc notes */
+ char greeting[0]; /* "greetings", nul-terminated */
} KDP_PACKED kdp_connect_req_t;
-typedef struct { /* KDP_CONNECT reply */
- kdp_hdr_t hdr;
- kdp_error_t error;
+typedef struct { /* KDP_CONNECT reply */
+ kdp_hdr_t hdr;
+ kdp_error_t error;
} KDP_PACKED kdp_connect_reply_t;
/*
* KDP_DISCONNECT
*/
-typedef struct { /* KDP_DISCONNECT request */
- kdp_hdr_t hdr;
+typedef struct { /* KDP_DISCONNECT request */
+ kdp_hdr_t hdr;
} KDP_PACKED kdp_disconnect_req_t;
-typedef struct { /* KDP_DISCONNECT reply */
- kdp_hdr_t hdr;
+typedef struct { /* KDP_DISCONNECT reply */
+ kdp_hdr_t hdr;
} KDP_PACKED kdp_disconnect_reply_t;
/*
* KDP_REATTACH
*/
typedef struct {
- kdp_hdr_t hdr;
- uint16_t req_reply_port; /* udp port which to send replies */
+ kdp_hdr_t hdr;
+ uint16_t req_reply_port; /* udp port which to send replies */
} KDP_PACKED kdp_reattach_req_t;
/*
* KDP_HOSTINFO
*/
-typedef struct { /* KDP_HOSTINFO request */
- kdp_hdr_t hdr;
+typedef struct { /* KDP_HOSTINFO request */
+ kdp_hdr_t hdr;
} KDP_PACKED kdp_hostinfo_req_t;
typedef struct {
- uint32_t cpus_mask; /* bit is 1 if cpu present */
- uint32_t cpu_type;
- uint32_t cpu_subtype;
+ uint32_t cpus_mask; /* bit is 1 if cpu present */
+ uint32_t cpu_type;
+ uint32_t cpu_subtype;
} KDP_PACKED kdp_hostinfo_t;
-typedef struct { /* KDP_HOSTINFO reply */
- kdp_hdr_t hdr;
- kdp_hostinfo_t hostinfo;
+typedef struct { /* KDP_HOSTINFO reply */
+ kdp_hdr_t hdr;
+ kdp_hostinfo_t hostinfo;
} KDP_PACKED kdp_hostinfo_reply_t;
/*
* KDP_VERSION
*/
-typedef struct { /* KDP_VERSION request */
- kdp_hdr_t hdr;
+typedef struct { /* KDP_VERSION request */
+ kdp_hdr_t hdr;
} KDP_PACKED kdp_version_req_t;
-#define KDP_FEATURE_BP 0x1 /* local breakpoint support */
+#define KDP_FEATURE_BP 0x1 /* local breakpoint support */
-typedef struct { /* KDP_VERSION reply */
- kdp_hdr_t hdr;
- uint32_t version;
- uint32_t feature;
- uint32_t pad0;
- uint32_t pad1;
+typedef struct { /* KDP_VERSION reply */
+ kdp_hdr_t hdr;
+ uint32_t version;
+ uint32_t feature;
+ uint32_t pad0;
+ uint32_t pad1;
} KDP_PACKED kdp_version_reply_t;
-#define VM_PROT_VOLATILE ((vm_prot_t) 0x08) /* not cacheable */
-#define VM_PROT_SPARSE ((vm_prot_t) 0x10) /* sparse addr space */
+#define VM_PROT_VOLATILE ((vm_prot_t) 0x08) /* not cacheable */
+#define VM_PROT_SPARSE ((vm_prot_t) 0x10) /* sparse addr space */
/*
* KDP_REGIONS
*/
-typedef struct { /* KDP_REGIONS request */
- kdp_hdr_t hdr;
+typedef struct { /* KDP_REGIONS request */
+ kdp_hdr_t hdr;
} KDP_PACKED kdp_regions_req_t;
typedef struct {
- uint32_t address;
- uint32_t nbytes;
- uint32_t protection; /* vm_prot_t */
+ uint32_t address;
+ uint32_t nbytes;
+ uint32_t protection; /* vm_prot_t */
} KDP_PACKED kdp_region_t;
-typedef struct { /* KDP_REGIONS reply */
- kdp_hdr_t hdr;
- uint32_t nregions;
- kdp_region_t regions[0];
+typedef struct { /* KDP_REGIONS reply */
+ kdp_hdr_t hdr;
+ uint32_t nregions;
+ kdp_region_t regions[0];
} KDP_PACKED kdp_regions_reply_t;
/*
* KDP_MAXBYTES
*/
-typedef struct { /* KDP_MAXBYTES request */
- kdp_hdr_t hdr;
+typedef struct { /* KDP_MAXBYTES request */
+ kdp_hdr_t hdr;
} KDP_PACKED kdp_maxbytes_req_t;
-typedef struct { /* KDP_MAXBYTES reply */
- kdp_hdr_t hdr;
- uint32_t max_bytes;
+typedef struct { /* KDP_MAXBYTES reply */
+ kdp_hdr_t hdr;
+ uint32_t max_bytes;
} KDP_PACKED kdp_maxbytes_reply_t;
/*
* KDP_READMEM
*/
-typedef struct { /* KDP_READMEM request */
- kdp_hdr_t hdr;
- uint32_t address;
- uint32_t nbytes;
+typedef struct { /* KDP_READMEM request */
+ kdp_hdr_t hdr;
+ uint32_t address;
+ uint32_t nbytes;
} KDP_PACKED kdp_readmem_req_t;
-typedef struct { /* KDP_READMEM reply */
- kdp_hdr_t hdr;
- kdp_error_t error;
- char data[0];
+typedef struct { /* KDP_READMEM reply */
+ kdp_hdr_t hdr;
+ kdp_error_t error;
+ char data[0];
} KDP_PACKED kdp_readmem_reply_t;
/*
* KDP_READMEM64
*/
-typedef struct { /* KDP_READMEM64 request */
- kdp_hdr_t hdr;
- uint64_t address;
- uint32_t nbytes;
+typedef struct { /* KDP_READMEM64 request */
+ kdp_hdr_t hdr;
+ uint64_t address;
+ uint32_t nbytes;
} KDP_PACKED kdp_readmem64_req_t;
-typedef struct { /* KDP_READMEM64 reply */
- kdp_hdr_t hdr;
- kdp_error_t error;
- char data[0];
+typedef struct { /* KDP_READMEM64 reply */
+ kdp_hdr_t hdr;
+ kdp_error_t error;
+ char data[0];
} KDP_PACKED kdp_readmem64_reply_t;
/*
* KDP_READPHYSMEM64
*/
-typedef struct { /* KDP_READPHYSMEM64 request */
- kdp_hdr_t hdr;
- uint64_t address;
- uint32_t nbytes;
+typedef struct { /* KDP_READPHYSMEM64 request */
+ kdp_hdr_t hdr;
+ uint64_t address;
+ uint32_t nbytes;
uint16_t lcpu;
} KDP_PACKED kdp_readphysmem64_req_t;
-typedef struct { /* KDP_READPHYSMEM64 reply */
- kdp_hdr_t hdr;
- kdp_error_t error;
- char data[0];
+typedef struct { /* KDP_READPHYSMEM64 reply */
+ kdp_hdr_t hdr;
+ kdp_error_t error;
+ char data[0];
} KDP_PACKED kdp_readphysmem64_reply_t;
/*
* KDP_WRITEMEM
*/
-typedef struct { /* KDP_WRITEMEM request */
- kdp_hdr_t hdr;
- uint32_t address;
- uint32_t nbytes;
- char data[0];
+typedef struct { /* KDP_WRITEMEM request */
+ kdp_hdr_t hdr;
+ uint32_t address;
+ uint32_t nbytes;
+ char data[0];
} KDP_PACKED kdp_writemem_req_t;
-typedef struct { /* KDP_WRITEMEM reply */
- kdp_hdr_t hdr;
- kdp_error_t error;
+typedef struct { /* KDP_WRITEMEM reply */
+ kdp_hdr_t hdr;
+ kdp_error_t error;
} KDP_PACKED kdp_writemem_reply_t;
/*
* KDP_WRITEMEM64
*/
-typedef struct { /* KDP_WRITEMEM64 request */
- kdp_hdr_t hdr;
- uint64_t address;
- uint32_t nbytes;
- char data[0];
+typedef struct { /* KDP_WRITEMEM64 request */
+ kdp_hdr_t hdr;
+ uint64_t address;
+ uint32_t nbytes;
+ char data[0];
} KDP_PACKED kdp_writemem64_req_t;
-typedef struct { /* KDP_WRITEMEM64 reply */
- kdp_hdr_t hdr;
- kdp_error_t error;
+typedef struct { /* KDP_WRITEMEM64 reply */
+ kdp_hdr_t hdr;
+ kdp_error_t error;
} KDP_PACKED kdp_writemem64_reply_t;
/*
* KDP_WRITEPHYSMEM64
*/
-typedef struct { /* KDP_WRITEPHYSMEM64 request */
- kdp_hdr_t hdr;
- uint64_t address;
- uint32_t nbytes;
+typedef struct { /* KDP_WRITEPHYSMEM64 request */
+ kdp_hdr_t hdr;
+ uint64_t address;
+ uint32_t nbytes;
uint16_t lcpu;
- char data[0];
+ char data[0];
} KDP_PACKED kdp_writephysmem64_req_t;
-typedef struct { /* KDP_WRITEPHYSMEM64 reply */
- kdp_hdr_t hdr;
- kdp_error_t error;
+typedef struct { /* KDP_WRITEPHYSMEM64 reply */
+ kdp_hdr_t hdr;
+ kdp_error_t error;
} KDP_PACKED kdp_writephysmem64_reply_t;
/*
* KDP_WRITEIOPORT
*/
-typedef struct { /* KDP_WRITEIOPORT request */
- kdp_hdr_t hdr;
- uint16_t lcpu;
- uint16_t address;
- uint16_t nbytes;
- char data[0];
+typedef struct { /* KDP_WRITEIOPORT request */
+ kdp_hdr_t hdr;
+ uint16_t lcpu;
+ uint16_t address;
+ uint16_t nbytes;
+ char data[0];
} KDP_PACKED kdp_writeioport_req_t;
-typedef struct { /* KDP_WRITEIOPORT reply */
- kdp_hdr_t hdr;
- kdp_error_t error;
+typedef struct { /* KDP_WRITEIOPORT reply */
+ kdp_hdr_t hdr;
+ kdp_error_t error;
} KDP_PACKED kdp_writeioport_reply_t;
/*
* KDP_READIOPORT
*/
-typedef struct { /* KDP_READIOPORT request */
- kdp_hdr_t hdr;
- uint16_t lcpu;
- uint16_t address;
- uint16_t nbytes;
+typedef struct { /* KDP_READIOPORT request */
+ kdp_hdr_t hdr;
+ uint16_t lcpu;
+ uint16_t address;
+ uint16_t nbytes;
} KDP_PACKED kdp_readioport_req_t;
-typedef struct { /* KDP_READIOPORT reply */
- kdp_hdr_t hdr;
- kdp_error_t error;
- char data[0];
+typedef struct { /* KDP_READIOPORT reply */
+ kdp_hdr_t hdr;
+ kdp_error_t error;
+ char data[0];
} KDP_PACKED kdp_readioport_reply_t;
/*
* KDP_WRITEMSR64
*/
-typedef struct { /* KDP_WRITEMSR64 request */
- kdp_hdr_t hdr;
- uint32_t address;
- uint16_t lcpu;
- char data[0];
+typedef struct { /* KDP_WRITEMSR64 request */
+ kdp_hdr_t hdr;
+ uint32_t address;
+ uint16_t lcpu;
+ char data[0];
} KDP_PACKED kdp_writemsr64_req_t;
-typedef struct { /* KDP_WRITEMSR64 reply */
- kdp_hdr_t hdr;
- kdp_error_t error;
+typedef struct { /* KDP_WRITEMSR64 reply */
+ kdp_hdr_t hdr;
+ kdp_error_t error;
} KDP_PACKED kdp_writemsr64_reply_t;
/*
* KDP_READMSR64
*/
-typedef struct { /* KDP_READMSR64 request */
- kdp_hdr_t hdr;
- uint32_t address;
- uint16_t lcpu;
+typedef struct { /* KDP_READMSR64 request */
+ kdp_hdr_t hdr;
+ uint32_t address;
+ uint16_t lcpu;
} KDP_PACKED kdp_readmsr64_req_t;
-typedef struct { /* KDP_READMSR64 reply */
- kdp_hdr_t hdr;
- kdp_error_t error;
- char data[0];
+typedef struct { /* KDP_READMSR64 reply */
+ kdp_hdr_t hdr;
+ kdp_error_t error;
+ char data[0];
} KDP_PACKED kdp_readmsr64_reply_t;
/*
* KDP_READREGS
*/
-typedef struct { /* KDP_READREGS request */
- kdp_hdr_t hdr;
- uint32_t cpu;
- uint32_t flavor;
+typedef struct { /* KDP_READREGS request */
+ kdp_hdr_t hdr;
+ uint32_t cpu;
+ uint32_t flavor;
} KDP_PACKED kdp_readregs_req_t;
-typedef struct { /* KDP_READREGS reply */
- kdp_hdr_t hdr;
- kdp_error_t error; /* could be KDPERR_BADFLAVOR */
- char data[0];
+typedef struct { /* KDP_READREGS reply */
+ kdp_hdr_t hdr;
+ kdp_error_t error; /* could be KDPERR_BADFLAVOR */
+ char data[0];
} KDP_PACKED kdp_readregs_reply_t;
/*
* KDP_WRITEREGS
*/
-typedef struct { /* KDP_WRITEREGS request */
- kdp_hdr_t hdr;
- uint32_t cpu;
- uint32_t flavor;
- char data[0];
+typedef struct { /* KDP_WRITEREGS request */
+ kdp_hdr_t hdr;
+ uint32_t cpu;
+ uint32_t flavor;
+ char data[0];
} KDP_PACKED kdp_writeregs_req_t;
-typedef struct { /* KDP_WRITEREGS reply */
- kdp_hdr_t hdr;
- kdp_error_t error;
+typedef struct { /* KDP_WRITEREGS reply */
+ kdp_hdr_t hdr;
+ kdp_error_t error;
} KDP_PACKED kdp_writeregs_reply_t;
/*
* KDP_LOAD
*/
-typedef struct { /* KDP_LOAD request */
- kdp_hdr_t hdr;
- char file_args[0];
+typedef struct { /* KDP_LOAD request */
+ kdp_hdr_t hdr;
+ char file_args[0];
} KDP_PACKED kdp_load_req_t;
-typedef struct { /* KDP_LOAD reply */
- kdp_hdr_t hdr;
- kdp_error_t error;
+typedef struct { /* KDP_LOAD reply */
+ kdp_hdr_t hdr;
+ kdp_error_t error;
} KDP_PACKED kdp_load_reply_t;
/*
* KDP_IMAGEPATH
*/
-typedef struct { /* KDP_IMAGEPATH request */
- kdp_hdr_t hdr;
+typedef struct { /* KDP_IMAGEPATH request */
+ kdp_hdr_t hdr;
} KDP_PACKED kdp_imagepath_req_t;
-typedef struct { /* KDP_IMAGEPATH reply */
- kdp_hdr_t hdr;
- char path[0];
+typedef struct { /* KDP_IMAGEPATH reply */
+ kdp_hdr_t hdr;
+ char path[0];
} KDP_PACKED kdp_imagepath_reply_t;
/*
* KDP_SUSPEND
*/
-typedef struct { /* KDP_SUSPEND request */
- kdp_hdr_t hdr;
+typedef struct { /* KDP_SUSPEND request */
+ kdp_hdr_t hdr;
} KDP_PACKED kdp_suspend_req_t;
-typedef struct { /* KDP_SUSPEND reply */
- kdp_hdr_t hdr;
+typedef struct { /* KDP_SUSPEND reply */
+ kdp_hdr_t hdr;
} KDP_PACKED kdp_suspend_reply_t;
/*
* KDP_RESUMECPUS
*/
-typedef struct { /* KDP_RESUMECPUS request */
- kdp_hdr_t hdr;
- uint32_t cpu_mask;
+typedef struct { /* KDP_RESUMECPUS request */
+ kdp_hdr_t hdr;
+ uint32_t cpu_mask;
} KDP_PACKED kdp_resumecpus_req_t;
-typedef struct { /* KDP_RESUMECPUS reply */
- kdp_hdr_t hdr;
+typedef struct { /* KDP_RESUMECPUS reply */
+ kdp_hdr_t hdr;
} KDP_PACKED kdp_resumecpus_reply_t;
/*
*/
typedef struct {
- kdp_hdr_t hdr;
- uint32_t address;
+ kdp_hdr_t hdr;
+ uint32_t address;
} KDP_PACKED kdp_breakpoint_req_t;
typedef struct {
- kdp_hdr_t hdr;
- kdp_error_t error;
+ kdp_hdr_t hdr;
+ kdp_error_t error;
} KDP_PACKED kdp_breakpoint_reply_t;
/*
typedef struct {
kdp_hdr_t hdr;
- uint64_t address;
+ uint64_t address;
} KDP_PACKED kdp_breakpoint64_req_t;
typedef struct {
* (Exception notifications are not requests, and in fact travel from
* the remote debugger to the gdb agent KDB.)
*/
-typedef struct { /* exc. info for one cpu */
- uint32_t cpu;
+typedef struct { /* exc. info for one cpu */
+ uint32_t cpu;
/*
* Following info is defined as
* per <mach/exception.h>
*/
- uint32_t exception;
- uint32_t code;
- uint32_t subcode;
+ uint32_t exception;
+ uint32_t code;
+ uint32_t subcode;
} KDP_PACKED kdp_exc_info_t;
-typedef struct { /* KDP_EXCEPTION notification */
- kdp_hdr_t hdr;
- uint32_t n_exc_info;
- kdp_exc_info_t exc_info[0];
+typedef struct { /* KDP_EXCEPTION notification */
+ kdp_hdr_t hdr;
+ uint32_t n_exc_info;
+ kdp_exc_info_t exc_info[0];
} KDP_PACKED kdp_exception_t;
-typedef struct { /* KDP_EXCEPTION acknowledgement */
- kdp_hdr_t hdr;
+typedef struct { /* KDP_EXCEPTION acknowledgement */
+ kdp_hdr_t hdr;
} KDP_PACKED kdp_exception_ack_t;
/*
* KDP_KERNELVERSION
*/
-typedef struct { /* KDP_KERNELVERSION request */
- kdp_hdr_t hdr;
+typedef struct { /* KDP_KERNELVERSION request */
+ kdp_hdr_t hdr;
} KDP_PACKED kdp_kernelversion_req_t;
-typedef struct { /* KDP_KERNELVERSION reply */
- kdp_hdr_t hdr;
- char version[0];
+typedef struct { /* KDP_KERNELVERSION reply */
+ kdp_hdr_t hdr;
+ char version[0];
} KDP_PACKED kdp_kernelversion_reply_t;
* Child termination messages
*/
typedef enum {
- KDP_FAULT = 0, /* child took fault (internal use) */
- KDP_EXIT, /* child exited */
- KDP_POWEROFF, /* child power-off */
- KDP_REBOOT, /* child reboot */
- KDP_COMMAND_MODE /* child exit to mon command_mode */
+ KDP_FAULT = 0, /* child took fault (internal use) */
+ KDP_EXIT, /* child exited */
+ KDP_POWEROFF, /* child power-off */
+ KDP_REBOOT, /* child reboot */
+ KDP_COMMAND_MODE /* child exit to mon command_mode */
} kdp_termination_code_t;
-typedef struct { /* KDP_TERMINATION notification */
- kdp_hdr_t hdr;
- uint32_t term_code; /* kdp_termination_code_t */
- uint32_t exit_code;
+typedef struct { /* KDP_TERMINATION notification */
+ kdp_hdr_t hdr;
+ uint32_t term_code; /* kdp_termination_code_t */
+ uint32_t exit_code;
} KDP_PACKED kdp_termination_t;
typedef struct {
- kdp_hdr_t hdr;
+ kdp_hdr_t hdr;
} KDP_PACKED kdp_termination_ack_t;
/*
* KDP_DUMPINFO
*/
-typedef struct { /* KDP_DUMPINFO request */
- kdp_hdr_t hdr;
- char name[50];
+typedef struct { /* KDP_DUMPINFO request */
+ kdp_hdr_t hdr;
+ char name[50];
char destip[16];
char routerip[16];
uint32_t port;
kdp_dumpinfo_t type;
} KDP_PACKED kdp_dumpinfo_req_t;
-typedef struct { /* KDP_DUMPINFO reply */
- kdp_hdr_t hdr;
- char name[50];
+typedef struct { /* KDP_DUMPINFO reply */
+ kdp_hdr_t hdr;
+ char name[50];
char destip[16];
char routerip[16];
uint32_t port;
typedef union {
- kdp_hdr_t hdr;
- kdp_connect_req_t connect_req;
- kdp_connect_reply_t connect_reply;
- kdp_disconnect_req_t disconnect_req;
- kdp_disconnect_reply_t disconnect_reply;
- kdp_hostinfo_req_t hostinfo_req;
- kdp_hostinfo_reply_t hostinfo_reply;
- kdp_version_req_t version_req;
- kdp_version_reply_t version_reply;
- kdp_maxbytes_req_t maxbytes_req;
- kdp_maxbytes_reply_t maxbytes_reply;
- kdp_readmem_req_t readmem_req;
- kdp_readmem_reply_t readmem_reply;
- kdp_readmem64_req_t readmem64_req;
- kdp_readmem64_reply_t readmem64_reply;
- kdp_readphysmem64_req_t readphysmem64_req;
- kdp_readphysmem64_reply_t readphysmem64_reply;
- kdp_writemem_req_t writemem_req;
- kdp_writemem_reply_t writemem_reply;
- kdp_writemem64_req_t writemem64_req;
- kdp_writemem64_reply_t writemem64_reply;
- kdp_writephysmem64_req_t writephysmem64_req;
- kdp_writephysmem64_reply_t writephysmem64_reply;
- kdp_readregs_req_t readregs_req;
- kdp_readregs_reply_t readregs_reply;
- kdp_writeregs_req_t writeregs_req;
- kdp_writeregs_reply_t writeregs_reply;
- kdp_load_req_t load_req;
- kdp_load_reply_t load_reply;
- kdp_imagepath_req_t imagepath_req;
- kdp_imagepath_reply_t imagepath_reply;
- kdp_suspend_req_t suspend_req;
- kdp_suspend_reply_t suspend_reply;
- kdp_resumecpus_req_t resumecpus_req;
- kdp_resumecpus_reply_t resumecpus_reply;
- kdp_exception_t exception;
- kdp_exception_ack_t exception_ack;
- kdp_termination_t termination;
- kdp_termination_ack_t termination_ack;
- kdp_breakpoint_req_t breakpoint_req;
- kdp_breakpoint_reply_t breakpoint_reply;
- kdp_breakpoint64_req_t breakpoint64_req;
- kdp_breakpoint64_reply_t breakpoint64_reply;
- kdp_reattach_req_t reattach_req;
- kdp_regions_req_t regions_req;
- kdp_regions_reply_t regions_reply;
- kdp_kernelversion_req_t kernelversion_req;
- kdp_kernelversion_reply_t kernelversion_reply;
- kdp_readioport_req_t readioport_req;
- kdp_readioport_reply_t readioport_reply;
- kdp_writeioport_req_t writeioport_req;
- kdp_writeioport_reply_t writeioport_reply;
- kdp_readmsr64_req_t readmsr64_req;
- kdp_readmsr64_reply_t readmsr64_reply;
- kdp_writemsr64_req_t writemsr64_req;
- kdp_writemsr64_reply_t writemsr64_reply;
- kdp_dumpinfo_req_t dumpinfo_req;
- kdp_dumpinfo_reply_t dumpinfo_reply;
+ kdp_hdr_t hdr;
+ kdp_connect_req_t connect_req;
+ kdp_connect_reply_t connect_reply;
+ kdp_disconnect_req_t disconnect_req;
+ kdp_disconnect_reply_t disconnect_reply;
+ kdp_hostinfo_req_t hostinfo_req;
+ kdp_hostinfo_reply_t hostinfo_reply;
+ kdp_version_req_t version_req;
+ kdp_version_reply_t version_reply;
+ kdp_maxbytes_req_t maxbytes_req;
+ kdp_maxbytes_reply_t maxbytes_reply;
+ kdp_readmem_req_t readmem_req;
+ kdp_readmem_reply_t readmem_reply;
+ kdp_readmem64_req_t readmem64_req;
+ kdp_readmem64_reply_t readmem64_reply;
+ kdp_readphysmem64_req_t readphysmem64_req;
+ kdp_readphysmem64_reply_t readphysmem64_reply;
+ kdp_writemem_req_t writemem_req;
+ kdp_writemem_reply_t writemem_reply;
+ kdp_writemem64_req_t writemem64_req;
+ kdp_writemem64_reply_t writemem64_reply;
+ kdp_writephysmem64_req_t writephysmem64_req;
+ kdp_writephysmem64_reply_t writephysmem64_reply;
+ kdp_readregs_req_t readregs_req;
+ kdp_readregs_reply_t readregs_reply;
+ kdp_writeregs_req_t writeregs_req;
+ kdp_writeregs_reply_t writeregs_reply;
+ kdp_load_req_t load_req;
+ kdp_load_reply_t load_reply;
+ kdp_imagepath_req_t imagepath_req;
+ kdp_imagepath_reply_t imagepath_reply;
+ kdp_suspend_req_t suspend_req;
+ kdp_suspend_reply_t suspend_reply;
+ kdp_resumecpus_req_t resumecpus_req;
+ kdp_resumecpus_reply_t resumecpus_reply;
+ kdp_exception_t exception;
+ kdp_exception_ack_t exception_ack;
+ kdp_termination_t termination;
+ kdp_termination_ack_t termination_ack;
+ kdp_breakpoint_req_t breakpoint_req;
+ kdp_breakpoint_reply_t breakpoint_reply;
+ kdp_breakpoint64_req_t breakpoint64_req;
+ kdp_breakpoint64_reply_t breakpoint64_reply;
+ kdp_reattach_req_t reattach_req;
+ kdp_regions_req_t regions_req;
+ kdp_regions_reply_t regions_reply;
+ kdp_kernelversion_req_t kernelversion_req;
+ kdp_kernelversion_reply_t kernelversion_reply;
+ kdp_readioport_req_t readioport_req;
+ kdp_readioport_reply_t readioport_reply;
+ kdp_writeioport_req_t writeioport_req;
+ kdp_writeioport_reply_t writeioport_reply;
+ kdp_readmsr64_req_t readmsr64_req;
+ kdp_readmsr64_reply_t readmsr64_reply;
+ kdp_writemsr64_req_t writemsr64_req;
+ kdp_writemsr64_reply_t writemsr64_reply;
+ kdp_dumpinfo_req_t dumpinfo_req;
+ kdp_dumpinfo_reply_t dumpinfo_reply;
} kdp_pkt_t;
-#define MAX_KDP_PKT_SIZE 1200 /* max packet size */
-#define MAX_KDP_DATA_SIZE 1024 /* max r/w data per packet */
+#define MAX_KDP_PKT_SIZE 1200 /* max packet size */
+#define MAX_KDP_DATA_SIZE 1024 /* max r/w data per packet */
/*
* Support relatively small request/responses here.
*/
#define KDP_MANUAL_PACKET_SIZE 128
struct kdp_manual_pkt {
- unsigned char data[KDP_MANUAL_PACKET_SIZE];
- unsigned int len;
- boolean_t input;
+ unsigned char data[KDP_MANUAL_PACKET_SIZE];
+ unsigned int len;
+ boolean_t input;
} KDP_PACKED;
#ifdef KDP_PROXY_PACK_SUPPORT