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