xref: /xnu-12377.1.9/osfmk/kdp/kdp_protocol.h (revision f6217f891ac0bb64f3d375211650a4c1ff8ca1ea)
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