X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/7e4a7d3939db04e70062ae6c7bf24b8c8b2f5a7c..0a7de7458d150b5d4dffc935ba399be265ef0a1a:/osfmk/kdp/kdp_protocol.h diff --git a/osfmk/kdp/kdp_protocol.h b/osfmk/kdp/kdp_protocol.h index fb9d29482..1b17ed0e0 100644 --- a/osfmk/kdp/kdp_protocol.h +++ b/osfmk/kdp/kdp_protocol.h @@ -2,7 +2,7 @@ * 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 @@ -11,10 +11,10 @@ * 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, @@ -22,7 +22,7 @@ * 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@ */ @@ -35,8 +35,9 @@ #ifdef MACH_KERNEL_PRIVATE -#include -#include +#include +#include +#include #endif #ifdef KDP_PROXY_PACK_SUPPORT @@ -49,12 +50,12 @@ /* * 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 */ /* @@ -62,50 +63,50 @@ * 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, @@ -116,45 +117,45 @@ typedef enum { 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; /* @@ -164,11 +165,11 @@ typedef enum { * 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; /* @@ -178,13 +179,22 @@ typedef enum { KDPERR_NO_ERROR = 0, KDPERR_ALREADY_CONNECTED, KDPERR_BAD_NBYTES, - KDPERR_BADFLAVOR, /* bad flavor in w/r regs */ + 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) \ + (((_req) == (uint32_t)(_ret)) ? KDPERR_NO_ERROR : KDPERR_BAD_ACCESS) +#else +#define KDPERR_ACCESS(req, cnt) (KDPERR_NO_ERROR) +#endif /* x86_64 */ + + /* * KDP requests and reply packet formats */ @@ -192,338 +202,338 @@ typedef enum { /* * 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; /* @@ -531,13 +541,13 @@ typedef struct { /* KDP_RESUMECPUS reply */ */ 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; /* @@ -546,7 +556,7 @@ typedef struct { typedef struct { kdp_hdr_t hdr; - uint64_t address; + uint64_t address; } KDP_PACKED kdp_breakpoint64_req_t; typedef struct { @@ -559,37 +569,37 @@ 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 */ - 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; @@ -597,38 +607,38 @@ typedef struct { /* KDP_KERNELVERSION reply */ * 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; @@ -637,68 +647,68 @@ typedef struct { /* KDP_DUMPINFO reply */ 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. @@ -707,9 +717,9 @@ typedef union { */ #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