1*f6217f89SApple OSS Distributions /* 2*f6217f89SApple OSS Distributions * Copyright (c) 2000 Apple Computer, Inc. All rights reserved. 3*f6217f89SApple OSS Distributions * 4*f6217f89SApple OSS Distributions * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ 5*f6217f89SApple OSS Distributions * 6*f6217f89SApple OSS Distributions * This file contains Original Code and/or Modifications of Original Code 7*f6217f89SApple OSS Distributions * as defined in and that are subject to the Apple Public Source License 8*f6217f89SApple OSS Distributions * Version 2.0 (the 'License'). You may not use this file except in 9*f6217f89SApple OSS Distributions * compliance with the License. The rights granted to you under the License 10*f6217f89SApple OSS Distributions * may not be used to create, or enable the creation or redistribution of, 11*f6217f89SApple OSS Distributions * unlawful or unlicensed copies of an Apple operating system, or to 12*f6217f89SApple OSS Distributions * circumvent, violate, or enable the circumvention or violation of, any 13*f6217f89SApple OSS Distributions * terms of an Apple operating system software license agreement. 14*f6217f89SApple OSS Distributions * 15*f6217f89SApple OSS Distributions * Please obtain a copy of the License at 16*f6217f89SApple OSS Distributions * http://www.opensource.apple.com/apsl/ and read it before using this file. 17*f6217f89SApple OSS Distributions * 18*f6217f89SApple OSS Distributions * The Original Code and all software distributed under the License are 19*f6217f89SApple OSS Distributions * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 20*f6217f89SApple OSS Distributions * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 21*f6217f89SApple OSS Distributions * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 22*f6217f89SApple OSS Distributions * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 23*f6217f89SApple OSS Distributions * Please see the License for the specific language governing rights and 24*f6217f89SApple OSS Distributions * limitations under the License. 25*f6217f89SApple OSS Distributions * 26*f6217f89SApple OSS Distributions * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ 27*f6217f89SApple OSS Distributions */ 28*f6217f89SApple OSS Distributions 29*f6217f89SApple OSS Distributions #ifndef _KDP_PROTOCOL_H_ 30*f6217f89SApple OSS Distributions #define _KDP_PROTOCOL_H_ 31*f6217f89SApple OSS Distributions 32*f6217f89SApple OSS Distributions /* 33*f6217f89SApple OSS Distributions * Definition of remote debugger protocol. 34*f6217f89SApple OSS Distributions */ 35*f6217f89SApple OSS Distributions 36*f6217f89SApple OSS Distributions 37*f6217f89SApple OSS Distributions #ifdef MACH_KERNEL_PRIVATE 38*f6217f89SApple OSS Distributions #include <mach/vm_prot.h> 39*f6217f89SApple OSS Distributions #include <mach/boolean.h> 40*f6217f89SApple OSS Distributions #include <stdint.h> 41*f6217f89SApple OSS Distributions #endif 42*f6217f89SApple OSS Distributions 43*f6217f89SApple OSS Distributions #ifdef KDP_PROXY_PACK_SUPPORT 44*f6217f89SApple OSS Distributions #pragma pack(1) 45*f6217f89SApple OSS Distributions #define KDP_PACKED 46*f6217f89SApple OSS Distributions #else 47*f6217f89SApple OSS Distributions #define KDP_PACKED __attribute__((packed)) 48*f6217f89SApple OSS Distributions #endif 49*f6217f89SApple OSS Distributions 50*f6217f89SApple OSS Distributions /* 51*f6217f89SApple OSS Distributions * Retransmit parameters 52*f6217f89SApple OSS Distributions */ 53*f6217f89SApple OSS Distributions #if DDEBUG_DEBUG || DEBUG_DEBUG 54*f6217f89SApple OSS Distributions #define KDP_REXMIT_SECS 20 /* rexmit if no ack in 3 secs */ 55*f6217f89SApple OSS Distributions #else /* DDEBUG_DEBUG || DEBUG_DEBUG */ 56*f6217f89SApple OSS Distributions #define KDP_REXMIT_SECS 3 /* rexmit if no ack in 3 secs */ 57*f6217f89SApple OSS Distributions #endif /* DDEBUG_DEBUG || DEBUG_DEBUG */ 58*f6217f89SApple OSS Distributions #define KDP_REXMIT_TRIES 8 /* xmit 8 times, then give up */ 59*f6217f89SApple OSS Distributions 60*f6217f89SApple OSS Distributions 61*f6217f89SApple OSS Distributions /* 62*f6217f89SApple OSS Distributions * (NMI) Attention Max Wait Time 63*f6217f89SApple OSS Distributions * Remote will resume unless KDP requests is received within this 64*f6217f89SApple OSS Distributions * many seconds after an attention (nmi) packet is sent. 65*f6217f89SApple OSS Distributions */ 66*f6217f89SApple OSS Distributions #define KDP_MAX_ATTN_WAIT 30 /* wait max of 30 seconds */ 67*f6217f89SApple OSS Distributions 68*f6217f89SApple OSS Distributions /* 69*f6217f89SApple OSS Distributions * Well-known UDP port, debugger side. 70*f6217f89SApple OSS Distributions * FIXME: This is what the 68K guys use, but beats me how they chose it... 71*f6217f89SApple OSS Distributions */ 72*f6217f89SApple OSS Distributions #define KDP_REMOTE_PORT 41139 /* pick one and register it */ 73*f6217f89SApple OSS Distributions 74*f6217f89SApple OSS Distributions /* 75*f6217f89SApple OSS Distributions * UDP ports, KDB side. 5 port numbers are reserved for each port (request 76*f6217f89SApple OSS Distributions * and exception). This allows multiple KDBs to run on one host. 77*f6217f89SApple OSS Distributions */ 78*f6217f89SApple OSS Distributions #define UDP_HOST_COMM_BASE 41140 79*f6217f89SApple OSS Distributions #define UDP_HOST_EXCEP_BASE 41145 80*f6217f89SApple OSS Distributions #define NUM_UDP_HOST_PORTS 5 81*f6217f89SApple OSS Distributions 82*f6217f89SApple OSS Distributions /* 83*f6217f89SApple OSS Distributions * Requests 84*f6217f89SApple OSS Distributions */ 85*f6217f89SApple OSS Distributions typedef enum { 86*f6217f89SApple OSS Distributions /* connection oriented requests */ 87*f6217f89SApple OSS Distributions KDP_CONNECT, KDP_DISCONNECT, 88*f6217f89SApple OSS Distributions 89*f6217f89SApple OSS Distributions /* obtaining client info */ 90*f6217f89SApple OSS Distributions KDP_HOSTINFO, KDP_VERSION, KDP_MAXBYTES, 91*f6217f89SApple OSS Distributions 92*f6217f89SApple OSS Distributions /* memory access */ 93*f6217f89SApple OSS Distributions KDP_READMEM, KDP_WRITEMEM, 94*f6217f89SApple OSS Distributions 95*f6217f89SApple OSS Distributions /* register access */ 96*f6217f89SApple OSS Distributions KDP_READREGS, KDP_WRITEREGS, 97*f6217f89SApple OSS Distributions 98*f6217f89SApple OSS Distributions /* executable image info */ 99*f6217f89SApple OSS Distributions KDP_LOAD, KDP_IMAGEPATH, 100*f6217f89SApple OSS Distributions 101*f6217f89SApple OSS Distributions /* execution control */ 102*f6217f89SApple OSS Distributions KDP_SUSPEND, KDP_RESUMECPUS, 103*f6217f89SApple OSS Distributions 104*f6217f89SApple OSS Distributions /* exception and termination notification, NOT true requests */ 105*f6217f89SApple OSS Distributions KDP_EXCEPTION, KDP_TERMINATION, 106*f6217f89SApple OSS Distributions 107*f6217f89SApple OSS Distributions /* breakpoint control */ 108*f6217f89SApple OSS Distributions KDP_BREAKPOINT_SET, KDP_BREAKPOINT_REMOVE, 109*f6217f89SApple OSS Distributions 110*f6217f89SApple OSS Distributions /* vm regions */ 111*f6217f89SApple OSS Distributions KDP_REGIONS, 112*f6217f89SApple OSS Distributions 113*f6217f89SApple OSS Distributions /* reattach to a connected host */ 114*f6217f89SApple OSS Distributions KDP_REATTACH, 115*f6217f89SApple OSS Distributions 116*f6217f89SApple OSS Distributions /* remote reboot request */ 117*f6217f89SApple OSS Distributions KDP_HOSTREBOOT, 118*f6217f89SApple OSS Distributions 119*f6217f89SApple OSS Distributions /* memory access (64-bit wide addresses). Version 11 protocol */ 120*f6217f89SApple OSS Distributions KDP_READMEM64, KDP_WRITEMEM64, 121*f6217f89SApple OSS Distributions 122*f6217f89SApple OSS Distributions /* breakpoint control (64-bit wide addresses). Version 11 protocol */ 123*f6217f89SApple OSS Distributions KDP_BREAKPOINT64_SET, KDP_BREAKPOINT64_REMOVE, 124*f6217f89SApple OSS Distributions 125*f6217f89SApple OSS Distributions /* kernel version string, like "xnu-1234.5~6". Version 11 protocol */ 126*f6217f89SApple OSS Distributions KDP_KERNELVERSION, 127*f6217f89SApple OSS Distributions 128*f6217f89SApple OSS Distributions /* physical memory access (64-bit wide addresses). Version 12 protocol */ 129*f6217f89SApple OSS Distributions KDP_READPHYSMEM64, KDP_WRITEPHYSMEM64, 130*f6217f89SApple OSS Distributions 131*f6217f89SApple OSS Distributions /* ioport access (8-, 16-, and 32-bit) */ 132*f6217f89SApple OSS Distributions KDP_READIOPORT, KDP_WRITEIOPORT, 133*f6217f89SApple OSS Distributions 134*f6217f89SApple OSS Distributions /* msr access (64-bit) */ 135*f6217f89SApple OSS Distributions KDP_READMSR64, KDP_WRITEMSR64, 136*f6217f89SApple OSS Distributions 137*f6217f89SApple OSS Distributions /* get/dump panic/corefile info */ 138*f6217f89SApple OSS Distributions KDP_DUMPINFO, 139*f6217f89SApple OSS Distributions 140*f6217f89SApple OSS Distributions /* keep this last */ 141*f6217f89SApple OSS Distributions KDP_INVALID_REQUEST 142*f6217f89SApple OSS Distributions } kdp_req_t; 143*f6217f89SApple OSS Distributions 144*f6217f89SApple OSS Distributions typedef enum { 145*f6217f89SApple OSS Distributions KDP_DUMPINFO_GETINFO = 0x00000000, 146*f6217f89SApple OSS Distributions KDP_DUMPINFO_SETINFO = 0x00000001, 147*f6217f89SApple OSS Distributions KDP_DUMPINFO_CORE = 0x00000102, 148*f6217f89SApple OSS Distributions KDP_DUMPINFO_PANICLOG = 0x00000103, 149*f6217f89SApple OSS Distributions KDP_DUMPINFO_SYSTEMLOG = 0x00000104, 150*f6217f89SApple OSS Distributions KDP_DUMPINFO_DISABLE = 0x00000105, 151*f6217f89SApple OSS Distributions KDP_DUMPINFO_MASK = 0x00000FFF, 152*f6217f89SApple OSS Distributions KDP_DUMPINFO_DUMP = 0x00000100, 153*f6217f89SApple OSS Distributions 154*f6217f89SApple OSS Distributions KDP_DUMPINFO_REBOOT = 0x10000000, 155*f6217f89SApple OSS Distributions KDP_DUMPINFO_NORESUME = 0x20000000, 156*f6217f89SApple OSS Distributions KDP_DUMPINFO_RESUME = 0x00000000, /* default behaviour */ 157*f6217f89SApple OSS Distributions KDP_DUMPINFO_NOINTR = 0x40000000, /* don't interrupt */ 158*f6217f89SApple OSS Distributions KDP_DUMPINFO_INTR = 0x00000000, /* default behaviour */ 159*f6217f89SApple OSS Distributions } kdp_dumpinfo_t; 160*f6217f89SApple OSS Distributions 161*f6217f89SApple OSS Distributions /* 162*f6217f89SApple OSS Distributions * Common KDP packet header 163*f6217f89SApple OSS Distributions * NOTE: kgmacros has a non-symboled version of kdp_hdr_t so that some basic information. 164*f6217f89SApple OSS Distributions * can be gathered from a kernel without any symbols. changes to this structure 165*f6217f89SApple OSS Distributions * need to be reflected in kgmacros as well. 166*f6217f89SApple OSS Distributions */ 167*f6217f89SApple OSS Distributions typedef struct { 168*f6217f89SApple OSS Distributions kdp_req_t request:7; /* kdp_req_t, request type */ 169*f6217f89SApple OSS Distributions unsigned is_reply:1; /* 0 => request, 1 => reply */ 170*f6217f89SApple OSS Distributions unsigned seq:8; /* sequence number within session */ 171*f6217f89SApple OSS Distributions unsigned len:16; /* length of entire pkt including hdr */ 172*f6217f89SApple OSS Distributions unsigned key; /* session key */ 173*f6217f89SApple OSS Distributions } KDP_PACKED kdp_hdr_t; 174*f6217f89SApple OSS Distributions 175*f6217f89SApple OSS Distributions /* 176*f6217f89SApple OSS Distributions * KDP errors 177*f6217f89SApple OSS Distributions */ 178*f6217f89SApple OSS Distributions typedef enum { 179*f6217f89SApple OSS Distributions KDPERR_NO_ERROR = 0, 180*f6217f89SApple OSS Distributions KDPERR_ALREADY_CONNECTED, 181*f6217f89SApple OSS Distributions KDPERR_BAD_NBYTES, 182*f6217f89SApple OSS Distributions KDPERR_BADFLAVOR, /* bad flavor in w/r regs */ 183*f6217f89SApple OSS Distributions KDPERR_BAD_ACCESS, /* memory reference failure */ 184*f6217f89SApple OSS Distributions 185*f6217f89SApple OSS Distributions KDPERR_MAX_BREAKPOINTS = 100, 186*f6217f89SApple OSS Distributions KDPERR_BREAKPOINT_NOT_FOUND = 101, 187*f6217f89SApple OSS Distributions KDPERR_BREAKPOINT_ALREADY_SET = 102 188*f6217f89SApple OSS Distributions } kdp_error_t; 189*f6217f89SApple OSS Distributions 190*f6217f89SApple OSS Distributions #if defined(__x86_64__) 191*f6217f89SApple OSS Distributions #define KDPERR_ACCESS(_req, _ret) \ 192*f6217f89SApple OSS Distributions (((_req) == (uint32_t)(_ret)) ? KDPERR_NO_ERROR : KDPERR_BAD_ACCESS) 193*f6217f89SApple OSS Distributions #else 194*f6217f89SApple OSS Distributions #define KDPERR_ACCESS(req, cnt) (KDPERR_NO_ERROR) 195*f6217f89SApple OSS Distributions #endif /* x86_64 */ 196*f6217f89SApple OSS Distributions 197*f6217f89SApple OSS Distributions 198*f6217f89SApple OSS Distributions /* 199*f6217f89SApple OSS Distributions * KDP requests and reply packet formats 200*f6217f89SApple OSS Distributions */ 201*f6217f89SApple OSS Distributions 202*f6217f89SApple OSS Distributions /* 203*f6217f89SApple OSS Distributions * KDP_CONNECT 204*f6217f89SApple OSS Distributions */ 205*f6217f89SApple OSS Distributions typedef struct { /* KDP_CONNECT request */ 206*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 207*f6217f89SApple OSS Distributions uint16_t req_reply_port; /* udp port which to send replies */ 208*f6217f89SApple OSS Distributions uint16_t exc_note_port; /* udp port which to send exc notes */ 209*f6217f89SApple OSS Distributions char greeting[0]; /* "greetings", nul-terminated */ 210*f6217f89SApple OSS Distributions } KDP_PACKED kdp_connect_req_t; 211*f6217f89SApple OSS Distributions 212*f6217f89SApple OSS Distributions typedef struct { /* KDP_CONNECT reply */ 213*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 214*f6217f89SApple OSS Distributions kdp_error_t error; 215*f6217f89SApple OSS Distributions } KDP_PACKED kdp_connect_reply_t; 216*f6217f89SApple OSS Distributions 217*f6217f89SApple OSS Distributions /* 218*f6217f89SApple OSS Distributions * KDP_DISCONNECT 219*f6217f89SApple OSS Distributions */ 220*f6217f89SApple OSS Distributions typedef struct { /* KDP_DISCONNECT request */ 221*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 222*f6217f89SApple OSS Distributions } KDP_PACKED kdp_disconnect_req_t; 223*f6217f89SApple OSS Distributions 224*f6217f89SApple OSS Distributions typedef struct { /* KDP_DISCONNECT reply */ 225*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 226*f6217f89SApple OSS Distributions } KDP_PACKED kdp_disconnect_reply_t; 227*f6217f89SApple OSS Distributions 228*f6217f89SApple OSS Distributions /* 229*f6217f89SApple OSS Distributions * KDP_REATTACH 230*f6217f89SApple OSS Distributions */ 231*f6217f89SApple OSS Distributions typedef struct { 232*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 233*f6217f89SApple OSS Distributions uint16_t req_reply_port; /* udp port which to send replies */ 234*f6217f89SApple OSS Distributions } KDP_PACKED kdp_reattach_req_t; 235*f6217f89SApple OSS Distributions 236*f6217f89SApple OSS Distributions /* 237*f6217f89SApple OSS Distributions * KDP_HOSTINFO 238*f6217f89SApple OSS Distributions */ 239*f6217f89SApple OSS Distributions typedef struct { /* KDP_HOSTINFO request */ 240*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 241*f6217f89SApple OSS Distributions } KDP_PACKED kdp_hostinfo_req_t; 242*f6217f89SApple OSS Distributions 243*f6217f89SApple OSS Distributions typedef struct { 244*f6217f89SApple OSS Distributions uint32_t cpus_mask; /* bit is 1 if cpu present */ 245*f6217f89SApple OSS Distributions uint32_t cpu_type; 246*f6217f89SApple OSS Distributions uint32_t cpu_subtype; 247*f6217f89SApple OSS Distributions } KDP_PACKED kdp_hostinfo_t; 248*f6217f89SApple OSS Distributions 249*f6217f89SApple OSS Distributions typedef struct { /* KDP_HOSTINFO reply */ 250*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 251*f6217f89SApple OSS Distributions kdp_hostinfo_t hostinfo; 252*f6217f89SApple OSS Distributions } KDP_PACKED kdp_hostinfo_reply_t; 253*f6217f89SApple OSS Distributions 254*f6217f89SApple OSS Distributions /* 255*f6217f89SApple OSS Distributions * KDP_VERSION 256*f6217f89SApple OSS Distributions */ 257*f6217f89SApple OSS Distributions typedef struct { /* KDP_VERSION request */ 258*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 259*f6217f89SApple OSS Distributions } KDP_PACKED kdp_version_req_t; 260*f6217f89SApple OSS Distributions 261*f6217f89SApple OSS Distributions #define KDP_FEATURE_BP 0x1 /* local breakpoint support */ 262*f6217f89SApple OSS Distributions 263*f6217f89SApple OSS Distributions typedef struct { /* KDP_VERSION reply */ 264*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 265*f6217f89SApple OSS Distributions uint32_t version; 266*f6217f89SApple OSS Distributions uint32_t feature; 267*f6217f89SApple OSS Distributions uint32_t pad0; 268*f6217f89SApple OSS Distributions uint32_t pad1; 269*f6217f89SApple OSS Distributions } KDP_PACKED kdp_version_reply_t; 270*f6217f89SApple OSS Distributions 271*f6217f89SApple OSS Distributions #define VM_PROT_VOLATILE ((vm_prot_t) 0x08) /* not cacheable */ 272*f6217f89SApple OSS Distributions #define VM_PROT_SPARSE ((vm_prot_t) 0x10) /* sparse addr space */ 273*f6217f89SApple OSS Distributions 274*f6217f89SApple OSS Distributions /* 275*f6217f89SApple OSS Distributions * KDP_REGIONS 276*f6217f89SApple OSS Distributions */ 277*f6217f89SApple OSS Distributions typedef struct { /* KDP_REGIONS request */ 278*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 279*f6217f89SApple OSS Distributions } KDP_PACKED kdp_regions_req_t; 280*f6217f89SApple OSS Distributions 281*f6217f89SApple OSS Distributions typedef struct { 282*f6217f89SApple OSS Distributions uint32_t address; 283*f6217f89SApple OSS Distributions uint32_t nbytes; 284*f6217f89SApple OSS Distributions uint32_t protection; /* vm_prot_t */ 285*f6217f89SApple OSS Distributions } KDP_PACKED kdp_region_t; 286*f6217f89SApple OSS Distributions 287*f6217f89SApple OSS Distributions typedef struct { /* KDP_REGIONS reply */ 288*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 289*f6217f89SApple OSS Distributions uint32_t nregions; 290*f6217f89SApple OSS Distributions kdp_region_t regions[0]; 291*f6217f89SApple OSS Distributions } KDP_PACKED kdp_regions_reply_t; 292*f6217f89SApple OSS Distributions 293*f6217f89SApple OSS Distributions /* 294*f6217f89SApple OSS Distributions * KDP_MAXBYTES 295*f6217f89SApple OSS Distributions */ 296*f6217f89SApple OSS Distributions typedef struct { /* KDP_MAXBYTES request */ 297*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 298*f6217f89SApple OSS Distributions } KDP_PACKED kdp_maxbytes_req_t; 299*f6217f89SApple OSS Distributions 300*f6217f89SApple OSS Distributions typedef struct { /* KDP_MAXBYTES reply */ 301*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 302*f6217f89SApple OSS Distributions uint32_t max_bytes; 303*f6217f89SApple OSS Distributions } KDP_PACKED kdp_maxbytes_reply_t; 304*f6217f89SApple OSS Distributions 305*f6217f89SApple OSS Distributions /* 306*f6217f89SApple OSS Distributions * KDP_READMEM 307*f6217f89SApple OSS Distributions */ 308*f6217f89SApple OSS Distributions typedef struct { /* KDP_READMEM request */ 309*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 310*f6217f89SApple OSS Distributions uint32_t address; 311*f6217f89SApple OSS Distributions uint32_t nbytes; 312*f6217f89SApple OSS Distributions } KDP_PACKED kdp_readmem_req_t; 313*f6217f89SApple OSS Distributions 314*f6217f89SApple OSS Distributions typedef struct { /* KDP_READMEM reply */ 315*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 316*f6217f89SApple OSS Distributions kdp_error_t error; 317*f6217f89SApple OSS Distributions char data[0]; 318*f6217f89SApple OSS Distributions } KDP_PACKED kdp_readmem_reply_t; 319*f6217f89SApple OSS Distributions 320*f6217f89SApple OSS Distributions /* 321*f6217f89SApple OSS Distributions * KDP_READMEM64 322*f6217f89SApple OSS Distributions */ 323*f6217f89SApple OSS Distributions typedef struct { /* KDP_READMEM64 request */ 324*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 325*f6217f89SApple OSS Distributions uint64_t address; 326*f6217f89SApple OSS Distributions uint32_t nbytes; 327*f6217f89SApple OSS Distributions } KDP_PACKED kdp_readmem64_req_t; 328*f6217f89SApple OSS Distributions 329*f6217f89SApple OSS Distributions typedef struct { /* KDP_READMEM64 reply */ 330*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 331*f6217f89SApple OSS Distributions kdp_error_t error; 332*f6217f89SApple OSS Distributions char data[0]; 333*f6217f89SApple OSS Distributions } KDP_PACKED kdp_readmem64_reply_t; 334*f6217f89SApple OSS Distributions 335*f6217f89SApple OSS Distributions /* 336*f6217f89SApple OSS Distributions * KDP_READPHYSMEM64 337*f6217f89SApple OSS Distributions */ 338*f6217f89SApple OSS Distributions typedef struct { /* KDP_READPHYSMEM64 request */ 339*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 340*f6217f89SApple OSS Distributions uint64_t address; 341*f6217f89SApple OSS Distributions uint32_t nbytes; 342*f6217f89SApple OSS Distributions uint16_t lcpu; 343*f6217f89SApple OSS Distributions } KDP_PACKED kdp_readphysmem64_req_t; 344*f6217f89SApple OSS Distributions 345*f6217f89SApple OSS Distributions typedef struct { /* KDP_READPHYSMEM64 reply */ 346*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 347*f6217f89SApple OSS Distributions kdp_error_t error; 348*f6217f89SApple OSS Distributions char data[0]; 349*f6217f89SApple OSS Distributions } KDP_PACKED kdp_readphysmem64_reply_t; 350*f6217f89SApple OSS Distributions 351*f6217f89SApple OSS Distributions /* 352*f6217f89SApple OSS Distributions * KDP_WRITEMEM 353*f6217f89SApple OSS Distributions */ 354*f6217f89SApple OSS Distributions typedef struct { /* KDP_WRITEMEM request */ 355*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 356*f6217f89SApple OSS Distributions uint32_t address; 357*f6217f89SApple OSS Distributions uint32_t nbytes; 358*f6217f89SApple OSS Distributions char data[0]; 359*f6217f89SApple OSS Distributions } KDP_PACKED kdp_writemem_req_t; 360*f6217f89SApple OSS Distributions 361*f6217f89SApple OSS Distributions typedef struct { /* KDP_WRITEMEM reply */ 362*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 363*f6217f89SApple OSS Distributions kdp_error_t error; 364*f6217f89SApple OSS Distributions } KDP_PACKED kdp_writemem_reply_t; 365*f6217f89SApple OSS Distributions 366*f6217f89SApple OSS Distributions /* 367*f6217f89SApple OSS Distributions * KDP_WRITEMEM64 368*f6217f89SApple OSS Distributions */ 369*f6217f89SApple OSS Distributions typedef struct { /* KDP_WRITEMEM64 request */ 370*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 371*f6217f89SApple OSS Distributions uint64_t address; 372*f6217f89SApple OSS Distributions uint32_t nbytes; 373*f6217f89SApple OSS Distributions char data[0]; 374*f6217f89SApple OSS Distributions } KDP_PACKED kdp_writemem64_req_t; 375*f6217f89SApple OSS Distributions 376*f6217f89SApple OSS Distributions typedef struct { /* KDP_WRITEMEM64 reply */ 377*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 378*f6217f89SApple OSS Distributions kdp_error_t error; 379*f6217f89SApple OSS Distributions } KDP_PACKED kdp_writemem64_reply_t; 380*f6217f89SApple OSS Distributions 381*f6217f89SApple OSS Distributions /* 382*f6217f89SApple OSS Distributions * KDP_WRITEPHYSMEM64 383*f6217f89SApple OSS Distributions */ 384*f6217f89SApple OSS Distributions typedef struct { /* KDP_WRITEPHYSMEM64 request */ 385*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 386*f6217f89SApple OSS Distributions uint64_t address; 387*f6217f89SApple OSS Distributions uint32_t nbytes; 388*f6217f89SApple OSS Distributions uint16_t lcpu; 389*f6217f89SApple OSS Distributions char data[0]; 390*f6217f89SApple OSS Distributions } KDP_PACKED kdp_writephysmem64_req_t; 391*f6217f89SApple OSS Distributions 392*f6217f89SApple OSS Distributions typedef struct { /* KDP_WRITEPHYSMEM64 reply */ 393*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 394*f6217f89SApple OSS Distributions kdp_error_t error; 395*f6217f89SApple OSS Distributions } KDP_PACKED kdp_writephysmem64_reply_t; 396*f6217f89SApple OSS Distributions 397*f6217f89SApple OSS Distributions /* 398*f6217f89SApple OSS Distributions * KDP_WRITEIOPORT 399*f6217f89SApple OSS Distributions */ 400*f6217f89SApple OSS Distributions typedef struct { /* KDP_WRITEIOPORT request */ 401*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 402*f6217f89SApple OSS Distributions uint16_t lcpu; 403*f6217f89SApple OSS Distributions uint16_t address; 404*f6217f89SApple OSS Distributions uint16_t nbytes; 405*f6217f89SApple OSS Distributions char data[0]; 406*f6217f89SApple OSS Distributions } KDP_PACKED kdp_writeioport_req_t; 407*f6217f89SApple OSS Distributions 408*f6217f89SApple OSS Distributions typedef struct { /* KDP_WRITEIOPORT reply */ 409*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 410*f6217f89SApple OSS Distributions kdp_error_t error; 411*f6217f89SApple OSS Distributions } KDP_PACKED kdp_writeioport_reply_t; 412*f6217f89SApple OSS Distributions 413*f6217f89SApple OSS Distributions /* 414*f6217f89SApple OSS Distributions * KDP_READIOPORT 415*f6217f89SApple OSS Distributions */ 416*f6217f89SApple OSS Distributions typedef struct { /* KDP_READIOPORT request */ 417*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 418*f6217f89SApple OSS Distributions uint16_t lcpu; 419*f6217f89SApple OSS Distributions uint16_t address; 420*f6217f89SApple OSS Distributions uint16_t nbytes; 421*f6217f89SApple OSS Distributions } KDP_PACKED kdp_readioport_req_t; 422*f6217f89SApple OSS Distributions 423*f6217f89SApple OSS Distributions typedef struct { /* KDP_READIOPORT reply */ 424*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 425*f6217f89SApple OSS Distributions kdp_error_t error; 426*f6217f89SApple OSS Distributions char data[0]; 427*f6217f89SApple OSS Distributions } KDP_PACKED kdp_readioport_reply_t; 428*f6217f89SApple OSS Distributions 429*f6217f89SApple OSS Distributions 430*f6217f89SApple OSS Distributions /* 431*f6217f89SApple OSS Distributions * KDP_WRITEMSR64 432*f6217f89SApple OSS Distributions */ 433*f6217f89SApple OSS Distributions typedef struct { /* KDP_WRITEMSR64 request */ 434*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 435*f6217f89SApple OSS Distributions uint32_t address; 436*f6217f89SApple OSS Distributions uint16_t lcpu; 437*f6217f89SApple OSS Distributions char data[0]; 438*f6217f89SApple OSS Distributions } KDP_PACKED kdp_writemsr64_req_t; 439*f6217f89SApple OSS Distributions 440*f6217f89SApple OSS Distributions typedef struct { /* KDP_WRITEMSR64 reply */ 441*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 442*f6217f89SApple OSS Distributions kdp_error_t error; 443*f6217f89SApple OSS Distributions } KDP_PACKED kdp_writemsr64_reply_t; 444*f6217f89SApple OSS Distributions 445*f6217f89SApple OSS Distributions /* 446*f6217f89SApple OSS Distributions * KDP_READMSR64 447*f6217f89SApple OSS Distributions */ 448*f6217f89SApple OSS Distributions typedef struct { /* KDP_READMSR64 request */ 449*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 450*f6217f89SApple OSS Distributions uint32_t address; 451*f6217f89SApple OSS Distributions uint16_t lcpu; 452*f6217f89SApple OSS Distributions } KDP_PACKED kdp_readmsr64_req_t; 453*f6217f89SApple OSS Distributions 454*f6217f89SApple OSS Distributions typedef struct { /* KDP_READMSR64 reply */ 455*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 456*f6217f89SApple OSS Distributions kdp_error_t error; 457*f6217f89SApple OSS Distributions char data[0]; 458*f6217f89SApple OSS Distributions } KDP_PACKED kdp_readmsr64_reply_t; 459*f6217f89SApple OSS Distributions 460*f6217f89SApple OSS Distributions 461*f6217f89SApple OSS Distributions /* 462*f6217f89SApple OSS Distributions * KDP_READREGS 463*f6217f89SApple OSS Distributions */ 464*f6217f89SApple OSS Distributions typedef struct { /* KDP_READREGS request */ 465*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 466*f6217f89SApple OSS Distributions uint32_t cpu; 467*f6217f89SApple OSS Distributions uint32_t flavor; 468*f6217f89SApple OSS Distributions } KDP_PACKED kdp_readregs_req_t; 469*f6217f89SApple OSS Distributions 470*f6217f89SApple OSS Distributions typedef struct { /* KDP_READREGS reply */ 471*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 472*f6217f89SApple OSS Distributions kdp_error_t error; /* could be KDPERR_BADFLAVOR */ 473*f6217f89SApple OSS Distributions char data[0]; 474*f6217f89SApple OSS Distributions } KDP_PACKED kdp_readregs_reply_t; 475*f6217f89SApple OSS Distributions 476*f6217f89SApple OSS Distributions /* 477*f6217f89SApple OSS Distributions * KDP_WRITEREGS 478*f6217f89SApple OSS Distributions */ 479*f6217f89SApple OSS Distributions typedef struct { /* KDP_WRITEREGS request */ 480*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 481*f6217f89SApple OSS Distributions uint32_t cpu; 482*f6217f89SApple OSS Distributions uint32_t flavor; 483*f6217f89SApple OSS Distributions char data[0]; 484*f6217f89SApple OSS Distributions } KDP_PACKED kdp_writeregs_req_t; 485*f6217f89SApple OSS Distributions 486*f6217f89SApple OSS Distributions typedef struct { /* KDP_WRITEREGS reply */ 487*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 488*f6217f89SApple OSS Distributions kdp_error_t error; 489*f6217f89SApple OSS Distributions } KDP_PACKED kdp_writeregs_reply_t; 490*f6217f89SApple OSS Distributions 491*f6217f89SApple OSS Distributions /* 492*f6217f89SApple OSS Distributions * KDP_LOAD 493*f6217f89SApple OSS Distributions */ 494*f6217f89SApple OSS Distributions typedef struct { /* KDP_LOAD request */ 495*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 496*f6217f89SApple OSS Distributions char file_args[0]; 497*f6217f89SApple OSS Distributions } KDP_PACKED kdp_load_req_t; 498*f6217f89SApple OSS Distributions 499*f6217f89SApple OSS Distributions typedef struct { /* KDP_LOAD reply */ 500*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 501*f6217f89SApple OSS Distributions kdp_error_t error; 502*f6217f89SApple OSS Distributions } KDP_PACKED kdp_load_reply_t; 503*f6217f89SApple OSS Distributions 504*f6217f89SApple OSS Distributions /* 505*f6217f89SApple OSS Distributions * KDP_IMAGEPATH 506*f6217f89SApple OSS Distributions */ 507*f6217f89SApple OSS Distributions typedef struct { /* KDP_IMAGEPATH request */ 508*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 509*f6217f89SApple OSS Distributions } KDP_PACKED kdp_imagepath_req_t; 510*f6217f89SApple OSS Distributions 511*f6217f89SApple OSS Distributions typedef struct { /* KDP_IMAGEPATH reply */ 512*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 513*f6217f89SApple OSS Distributions char path[0]; 514*f6217f89SApple OSS Distributions } KDP_PACKED kdp_imagepath_reply_t; 515*f6217f89SApple OSS Distributions 516*f6217f89SApple OSS Distributions /* 517*f6217f89SApple OSS Distributions * KDP_SUSPEND 518*f6217f89SApple OSS Distributions */ 519*f6217f89SApple OSS Distributions typedef struct { /* KDP_SUSPEND request */ 520*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 521*f6217f89SApple OSS Distributions } KDP_PACKED kdp_suspend_req_t; 522*f6217f89SApple OSS Distributions 523*f6217f89SApple OSS Distributions typedef struct { /* KDP_SUSPEND reply */ 524*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 525*f6217f89SApple OSS Distributions } KDP_PACKED kdp_suspend_reply_t; 526*f6217f89SApple OSS Distributions 527*f6217f89SApple OSS Distributions /* 528*f6217f89SApple OSS Distributions * KDP_RESUMECPUS 529*f6217f89SApple OSS Distributions */ 530*f6217f89SApple OSS Distributions typedef struct { /* KDP_RESUMECPUS request */ 531*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 532*f6217f89SApple OSS Distributions uint32_t cpu_mask; 533*f6217f89SApple OSS Distributions } KDP_PACKED kdp_resumecpus_req_t; 534*f6217f89SApple OSS Distributions 535*f6217f89SApple OSS Distributions typedef struct { /* KDP_RESUMECPUS reply */ 536*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 537*f6217f89SApple OSS Distributions } KDP_PACKED kdp_resumecpus_reply_t; 538*f6217f89SApple OSS Distributions 539*f6217f89SApple OSS Distributions /* 540*f6217f89SApple OSS Distributions * KDP_BREAKPOINT_SET and KDP_BREAKPOINT_REMOVE 541*f6217f89SApple OSS Distributions */ 542*f6217f89SApple OSS Distributions 543*f6217f89SApple OSS Distributions typedef struct { 544*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 545*f6217f89SApple OSS Distributions uint32_t address; 546*f6217f89SApple OSS Distributions } KDP_PACKED kdp_breakpoint_req_t; 547*f6217f89SApple OSS Distributions 548*f6217f89SApple OSS Distributions typedef struct { 549*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 550*f6217f89SApple OSS Distributions kdp_error_t error; 551*f6217f89SApple OSS Distributions } KDP_PACKED kdp_breakpoint_reply_t; 552*f6217f89SApple OSS Distributions 553*f6217f89SApple OSS Distributions /* 554*f6217f89SApple OSS Distributions * KDP_BREAKPOINT64_SET and KDP_BREAKPOINT64_REMOVE 555*f6217f89SApple OSS Distributions */ 556*f6217f89SApple OSS Distributions 557*f6217f89SApple OSS Distributions typedef struct { 558*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 559*f6217f89SApple OSS Distributions uint64_t address; 560*f6217f89SApple OSS Distributions } KDP_PACKED kdp_breakpoint64_req_t; 561*f6217f89SApple OSS Distributions 562*f6217f89SApple OSS Distributions typedef struct { 563*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 564*f6217f89SApple OSS Distributions kdp_error_t error; 565*f6217f89SApple OSS Distributions } KDP_PACKED kdp_breakpoint64_reply_t; 566*f6217f89SApple OSS Distributions 567*f6217f89SApple OSS Distributions /* 568*f6217f89SApple OSS Distributions * Exception notifications 569*f6217f89SApple OSS Distributions * (Exception notifications are not requests, and in fact travel from 570*f6217f89SApple OSS Distributions * the remote debugger to the gdb agent KDB.) 571*f6217f89SApple OSS Distributions */ 572*f6217f89SApple OSS Distributions typedef struct { /* exc. info for one cpu */ 573*f6217f89SApple OSS Distributions uint32_t cpu; 574*f6217f89SApple OSS Distributions /* 575*f6217f89SApple OSS Distributions * Following info is defined as 576*f6217f89SApple OSS Distributions * per <mach/exception.h> 577*f6217f89SApple OSS Distributions */ 578*f6217f89SApple OSS Distributions uint32_t exception; 579*f6217f89SApple OSS Distributions uint32_t code; 580*f6217f89SApple OSS Distributions uint32_t subcode; 581*f6217f89SApple OSS Distributions } KDP_PACKED kdp_exc_info_t; 582*f6217f89SApple OSS Distributions 583*f6217f89SApple OSS Distributions typedef struct { /* KDP_EXCEPTION notification */ 584*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 585*f6217f89SApple OSS Distributions uint32_t n_exc_info; 586*f6217f89SApple OSS Distributions kdp_exc_info_t exc_info[0]; 587*f6217f89SApple OSS Distributions } KDP_PACKED kdp_exception_t; 588*f6217f89SApple OSS Distributions 589*f6217f89SApple OSS Distributions typedef struct { /* KDP_EXCEPTION acknowledgement */ 590*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 591*f6217f89SApple OSS Distributions } KDP_PACKED kdp_exception_ack_t; 592*f6217f89SApple OSS Distributions 593*f6217f89SApple OSS Distributions /* 594*f6217f89SApple OSS Distributions * KDP_KERNELVERSION 595*f6217f89SApple OSS Distributions */ 596*f6217f89SApple OSS Distributions typedef struct { /* KDP_KERNELVERSION request */ 597*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 598*f6217f89SApple OSS Distributions } KDP_PACKED kdp_kernelversion_req_t; 599*f6217f89SApple OSS Distributions 600*f6217f89SApple OSS Distributions typedef struct { /* KDP_KERNELVERSION reply */ 601*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 602*f6217f89SApple OSS Distributions char version[0]; 603*f6217f89SApple OSS Distributions } KDP_PACKED kdp_kernelversion_reply_t; 604*f6217f89SApple OSS Distributions 605*f6217f89SApple OSS Distributions 606*f6217f89SApple OSS Distributions /* 607*f6217f89SApple OSS Distributions * Child termination messages 608*f6217f89SApple OSS Distributions */ 609*f6217f89SApple OSS Distributions typedef enum { 610*f6217f89SApple OSS Distributions KDP_FAULT = 0, /* child took fault (internal use) */ 611*f6217f89SApple OSS Distributions KDP_EXIT, /* child exited */ 612*f6217f89SApple OSS Distributions KDP_POWEROFF, /* child power-off */ 613*f6217f89SApple OSS Distributions KDP_REBOOT, /* child reboot */ 614*f6217f89SApple OSS Distributions KDP_COMMAND_MODE /* child exit to mon command_mode */ 615*f6217f89SApple OSS Distributions } kdp_termination_code_t; 616*f6217f89SApple OSS Distributions 617*f6217f89SApple OSS Distributions typedef struct { /* KDP_TERMINATION notification */ 618*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 619*f6217f89SApple OSS Distributions uint32_t term_code; /* kdp_termination_code_t */ 620*f6217f89SApple OSS Distributions uint32_t exit_code; 621*f6217f89SApple OSS Distributions } KDP_PACKED kdp_termination_t; 622*f6217f89SApple OSS Distributions 623*f6217f89SApple OSS Distributions typedef struct { 624*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 625*f6217f89SApple OSS Distributions } KDP_PACKED kdp_termination_ack_t; 626*f6217f89SApple OSS Distributions 627*f6217f89SApple OSS Distributions /* 628*f6217f89SApple OSS Distributions * KDP_DUMPINFO 629*f6217f89SApple OSS Distributions */ 630*f6217f89SApple OSS Distributions typedef struct { /* KDP_DUMPINFO request */ 631*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 632*f6217f89SApple OSS Distributions char name[50]; 633*f6217f89SApple OSS Distributions char destip[16]; 634*f6217f89SApple OSS Distributions char routerip[16]; 635*f6217f89SApple OSS Distributions uint32_t port; 636*f6217f89SApple OSS Distributions kdp_dumpinfo_t type; 637*f6217f89SApple OSS Distributions } KDP_PACKED kdp_dumpinfo_req_t; 638*f6217f89SApple OSS Distributions 639*f6217f89SApple OSS Distributions typedef struct { /* KDP_DUMPINFO reply */ 640*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 641*f6217f89SApple OSS Distributions char name[50]; 642*f6217f89SApple OSS Distributions char destip[16]; 643*f6217f89SApple OSS Distributions char routerip[16]; 644*f6217f89SApple OSS Distributions uint32_t port; 645*f6217f89SApple OSS Distributions kdp_dumpinfo_t type; 646*f6217f89SApple OSS Distributions } KDP_PACKED kdp_dumpinfo_reply_t; 647*f6217f89SApple OSS Distributions 648*f6217f89SApple OSS Distributions 649*f6217f89SApple OSS Distributions typedef union { 650*f6217f89SApple OSS Distributions kdp_hdr_t hdr; 651*f6217f89SApple OSS Distributions kdp_connect_req_t connect_req; 652*f6217f89SApple OSS Distributions kdp_connect_reply_t connect_reply; 653*f6217f89SApple OSS Distributions kdp_disconnect_req_t disconnect_req; 654*f6217f89SApple OSS Distributions kdp_disconnect_reply_t disconnect_reply; 655*f6217f89SApple OSS Distributions kdp_hostinfo_req_t hostinfo_req; 656*f6217f89SApple OSS Distributions kdp_hostinfo_reply_t hostinfo_reply; 657*f6217f89SApple OSS Distributions kdp_version_req_t version_req; 658*f6217f89SApple OSS Distributions kdp_version_reply_t version_reply; 659*f6217f89SApple OSS Distributions kdp_maxbytes_req_t maxbytes_req; 660*f6217f89SApple OSS Distributions kdp_maxbytes_reply_t maxbytes_reply; 661*f6217f89SApple OSS Distributions kdp_readmem_req_t readmem_req; 662*f6217f89SApple OSS Distributions kdp_readmem_reply_t readmem_reply; 663*f6217f89SApple OSS Distributions kdp_readmem64_req_t readmem64_req; 664*f6217f89SApple OSS Distributions kdp_readmem64_reply_t readmem64_reply; 665*f6217f89SApple OSS Distributions kdp_readphysmem64_req_t readphysmem64_req; 666*f6217f89SApple OSS Distributions kdp_readphysmem64_reply_t readphysmem64_reply; 667*f6217f89SApple OSS Distributions kdp_writemem_req_t writemem_req; 668*f6217f89SApple OSS Distributions kdp_writemem_reply_t writemem_reply; 669*f6217f89SApple OSS Distributions kdp_writemem64_req_t writemem64_req; 670*f6217f89SApple OSS Distributions kdp_writemem64_reply_t writemem64_reply; 671*f6217f89SApple OSS Distributions kdp_writephysmem64_req_t writephysmem64_req; 672*f6217f89SApple OSS Distributions kdp_writephysmem64_reply_t writephysmem64_reply; 673*f6217f89SApple OSS Distributions kdp_readregs_req_t readregs_req; 674*f6217f89SApple OSS Distributions kdp_readregs_reply_t readregs_reply; 675*f6217f89SApple OSS Distributions kdp_writeregs_req_t writeregs_req; 676*f6217f89SApple OSS Distributions kdp_writeregs_reply_t writeregs_reply; 677*f6217f89SApple OSS Distributions kdp_load_req_t load_req; 678*f6217f89SApple OSS Distributions kdp_load_reply_t load_reply; 679*f6217f89SApple OSS Distributions kdp_imagepath_req_t imagepath_req; 680*f6217f89SApple OSS Distributions kdp_imagepath_reply_t imagepath_reply; 681*f6217f89SApple OSS Distributions kdp_suspend_req_t suspend_req; 682*f6217f89SApple OSS Distributions kdp_suspend_reply_t suspend_reply; 683*f6217f89SApple OSS Distributions kdp_resumecpus_req_t resumecpus_req; 684*f6217f89SApple OSS Distributions kdp_resumecpus_reply_t resumecpus_reply; 685*f6217f89SApple OSS Distributions kdp_exception_t exception; 686*f6217f89SApple OSS Distributions kdp_exception_ack_t exception_ack; 687*f6217f89SApple OSS Distributions kdp_termination_t termination; 688*f6217f89SApple OSS Distributions kdp_termination_ack_t termination_ack; 689*f6217f89SApple OSS Distributions kdp_breakpoint_req_t breakpoint_req; 690*f6217f89SApple OSS Distributions kdp_breakpoint_reply_t breakpoint_reply; 691*f6217f89SApple OSS Distributions kdp_breakpoint64_req_t breakpoint64_req; 692*f6217f89SApple OSS Distributions kdp_breakpoint64_reply_t breakpoint64_reply; 693*f6217f89SApple OSS Distributions kdp_reattach_req_t reattach_req; 694*f6217f89SApple OSS Distributions kdp_regions_req_t regions_req; 695*f6217f89SApple OSS Distributions kdp_regions_reply_t regions_reply; 696*f6217f89SApple OSS Distributions kdp_kernelversion_req_t kernelversion_req; 697*f6217f89SApple OSS Distributions kdp_kernelversion_reply_t kernelversion_reply; 698*f6217f89SApple OSS Distributions kdp_readioport_req_t readioport_req; 699*f6217f89SApple OSS Distributions kdp_readioport_reply_t readioport_reply; 700*f6217f89SApple OSS Distributions kdp_writeioport_req_t writeioport_req; 701*f6217f89SApple OSS Distributions kdp_writeioport_reply_t writeioport_reply; 702*f6217f89SApple OSS Distributions kdp_readmsr64_req_t readmsr64_req; 703*f6217f89SApple OSS Distributions kdp_readmsr64_reply_t readmsr64_reply; 704*f6217f89SApple OSS Distributions kdp_writemsr64_req_t writemsr64_req; 705*f6217f89SApple OSS Distributions kdp_writemsr64_reply_t writemsr64_reply; 706*f6217f89SApple OSS Distributions kdp_dumpinfo_req_t dumpinfo_req; 707*f6217f89SApple OSS Distributions kdp_dumpinfo_reply_t dumpinfo_reply; 708*f6217f89SApple OSS Distributions } kdp_pkt_t; 709*f6217f89SApple OSS Distributions 710*f6217f89SApple OSS Distributions #define MAX_KDP_PKT_SIZE 1200 /* max packet size */ 711*f6217f89SApple OSS Distributions #define MAX_KDP_DATA_SIZE 1024 /* max r/w data per packet */ 712*f6217f89SApple OSS Distributions 713*f6217f89SApple OSS Distributions /* 714*f6217f89SApple OSS Distributions * Support relatively small request/responses here. 715*f6217f89SApple OSS Distributions * If kgmacros needs to make a larger request, increase 716*f6217f89SApple OSS Distributions * this buffer size 717*f6217f89SApple OSS Distributions */ 718*f6217f89SApple OSS Distributions #define KDP_MANUAL_PACKET_SIZE 128 719*f6217f89SApple OSS Distributions struct kdp_manual_pkt { 720*f6217f89SApple OSS Distributions unsigned char data[KDP_MANUAL_PACKET_SIZE]; 721*f6217f89SApple OSS Distributions unsigned int len; 722*f6217f89SApple OSS Distributions boolean_t input; 723*f6217f89SApple OSS Distributions } KDP_PACKED; 724*f6217f89SApple OSS Distributions 725*f6217f89SApple OSS Distributions #ifdef KDP_PROXY_PACK_SUPPORT 726*f6217f89SApple OSS Distributions #pragma pack() 727*f6217f89SApple OSS Distributions #endif 728*f6217f89SApple OSS Distributions 729*f6217f89SApple OSS Distributions #endif // _KDP_PROTOCOL_H_ 730