xref: /xnu-8792.81.2/bsd/sys/kdebug_triage.h (revision 19c3b8c28c31cb8130e034cfb5df6bf9ba342d90)
1*19c3b8c2SApple OSS Distributions /*
2*19c3b8c2SApple OSS Distributions  * Copyright (c) 2000-2020 Apple Inc. All rights reserved.
3*19c3b8c2SApple OSS Distributions  *
4*19c3b8c2SApple OSS Distributions  * @Apple_LICENSE_HEADER_START@
5*19c3b8c2SApple OSS Distributions  *
6*19c3b8c2SApple OSS Distributions  * The contents of this file constitute Original Code as defined in and
7*19c3b8c2SApple OSS Distributions  * are subject to the Apple Public Source License Version 1.1 (the
8*19c3b8c2SApple OSS Distributions  * "License").  You may not use this file except in compliance with the
9*19c3b8c2SApple OSS Distributions  * License.  Please obtain a copy of the License at
10*19c3b8c2SApple OSS Distributions  * http://www.apple.com/publicsource and read it before using this file.
11*19c3b8c2SApple OSS Distributions  *
12*19c3b8c2SApple OSS Distributions  * This Original Code and all software distributed under the License are
13*19c3b8c2SApple OSS Distributions  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
14*19c3b8c2SApple OSS Distributions  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
15*19c3b8c2SApple OSS Distributions  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
16*19c3b8c2SApple OSS Distributions  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
17*19c3b8c2SApple OSS Distributions  * License for the specific language governing rights and limitations
18*19c3b8c2SApple OSS Distributions  * under the License.
19*19c3b8c2SApple OSS Distributions  *
20*19c3b8c2SApple OSS Distributions  * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
21*19c3b8c2SApple OSS Distributions  */
22*19c3b8c2SApple OSS Distributions 
23*19c3b8c2SApple OSS Distributions #ifndef BSD_SYS_KDEBUG_TRIAGE_H
24*19c3b8c2SApple OSS Distributions #define BSD_SYS_KDEBUG_TRIAGE_H
25*19c3b8c2SApple OSS Distributions 
26*19c3b8c2SApple OSS Distributions void delete_buffers_triage(void);
27*19c3b8c2SApple OSS Distributions 
28*19c3b8c2SApple OSS Distributions #define KDBG_TRIAGE_CLASS_MASK   (0xff000000)
29*19c3b8c2SApple OSS Distributions #define KDBG_TRIAGE_CLASS_OFFSET (24)
30*19c3b8c2SApple OSS Distributions #define KDBG_TRIAGE_CLASS_MAX    (0xff)
31*19c3b8c2SApple OSS Distributions 
32*19c3b8c2SApple OSS Distributions /* Unused but reserved for future use (possibly for payload encoding) */
33*19c3b8c2SApple OSS Distributions #define KDBG_TRIAGE_RESERVED (0)
34*19c3b8c2SApple OSS Distributions #define KDBG_TRIAGE_RESERVED_MASK   (0x00ff0000)
35*19c3b8c2SApple OSS Distributions #define KDBG_TRIAGE_RESERVED_OFFSET (16)
36*19c3b8c2SApple OSS Distributions #define KDBG_TRIAGE_RESERVED_MAX    (0xff)
37*19c3b8c2SApple OSS Distributions 
38*19c3b8c2SApple OSS Distributions #define KDBG_TRIAGE_CODE_MASK   (0x0000fffc)
39*19c3b8c2SApple OSS Distributions #define KDBG_TRIAGE_CODE_OFFSET (2)
40*19c3b8c2SApple OSS Distributions #define KDBG_TRIAGE_CODE_MAX    (0x3fff)
41*19c3b8c2SApple OSS Distributions 
42*19c3b8c2SApple OSS Distributions #define KDBG_TRIAGE_EVENTID(Class, Reserved, Code)                \
43*19c3b8c2SApple OSS Distributions 	(((unsigned)((Class)    &   0xff) << KDBG_TRIAGE_CLASS_OFFSET)    | \
44*19c3b8c2SApple OSS Distributions 	 ((unsigned)((Reserved) &   0xff) << KDBG_TRIAGE_RESERVED_OFFSET) | \
45*19c3b8c2SApple OSS Distributions 	 ((unsigned)((Code)     & 0x3fff) << KDBG_TRIAGE_CODE_OFFSET))
46*19c3b8c2SApple OSS Distributions 
47*19c3b8c2SApple OSS Distributions #define KDBG_TRIAGE_EXTRACT_CLASS(Debugid) \
48*19c3b8c2SApple OSS Distributions 	((uint8_t)(((Debugid) & KDBG_TRIAGE_CLASS_MASK) >> KDBG_TRIAGE_CLASS_OFFSET))
49*19c3b8c2SApple OSS Distributions #define KDBG_TRIAGE_EXTRACT_CODE(Debugid) \
50*19c3b8c2SApple OSS Distributions 	((uint16_t)(((Debugid) & KDBG_TRIAGE_CODE_MASK) >> KDBG_TRIAGE_CODE_OFFSET))
51*19c3b8c2SApple OSS Distributions 
52*19c3b8c2SApple OSS Distributions #define KDBG_TRIAGE_MAX_STRINGS (5)
53*19c3b8c2SApple OSS Distributions #define KDBG_TRIAGE_MAX_STRLEN  (128)
54*19c3b8c2SApple OSS Distributions 
55*19c3b8c2SApple OSS Distributions /****** VM Codes Begin ******/
56*19c3b8c2SApple OSS Distributions #define KDBG_TRIAGE_SUBSYS_VM   (1)
57*19c3b8c2SApple OSS Distributions 
58*19c3b8c2SApple OSS Distributions enum vm_subsys_error_codes {
59*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_VM_PREFIX = 0,
60*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_VM_NO_DATA,
61*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_VM_TEXT_CORRUPTION,
62*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_VM_ADDRESS_NOT_FOUND,
63*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_VM_PROTECTION_FAILURE,
64*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_VM_FAULT_MEMORY_SHORTAGE,
65*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_VM_FAULT_COPY_MEMORY_SHORTAGE,
66*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_VM_FAULT_OBJCOPYSLOWLY_MEMORY_SHORTAGE,
67*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_VM_FAULT_OBJIOPLREQ_MEMORY_SHORTAGE,
68*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_VM_FAULT_INTERRUPTED,
69*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_VM_SUCCESS_NO_PAGE,
70*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_VM_GUARDPAGE_FAULT,
71*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_VM_NONZERO_PREEMPTION_LEVEL,
72*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_VM_BUSYPAGE_WAIT_INTERRUPTED,
73*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_VM_PURGEABLE_FAULT_ERROR,
74*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_VM_OBJECT_SHADOW_SEVERED,
75*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_VM_OBJECT_NOT_ALIVE,
76*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_VM_OBJECT_NO_PAGER,
77*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_VM_PAGE_HAS_ERROR,
78*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_VM_PAGE_HAS_RESTART,
79*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_VM_FAILED_IMMUTABLE_PAGE_WRITE,
80*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_VM_FAILED_NX_PAGE_EXEC_MAPPING,
81*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_VM_PMAP_ENTER_RESOURCE_SHORTAGE,
82*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_VM_COMPRESSOR_GET_OUT_OF_RANGE,
83*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_VM_COMPRESSOR_GET_NO_PAGE,
84*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_VM_COMPRESSOR_DECOMPRESS_FAILED,
85*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_VM_SUBMAP_NO_COW_ON_EXECUTABLE,
86*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_VM_SUBMAP_COPY_SLOWLY_FAILED,
87*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_VM_SUBMAP_COPY_STRAT_FAILED,
88*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_VM_VNODEPAGER_CLREAD_NO_UPL,
89*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_VM_VNODEPAGEIN_NO_UBCINFO,
90*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_VM_VNODEPAGEIN_FSPAGEIN_FAIL,
91*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_VM_VNODEPAGEIN_NO_UPL,
92*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_VM_ECC_DIRTY,
93*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_VM_ECC_CLEAN,
94*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_VM_MAX
95*19c3b8c2SApple OSS Distributions };
96*19c3b8c2SApple OSS Distributions #define VM_MAX_TRIAGE_STRINGS (KDBG_TRIAGE_VM_MAX)
97*19c3b8c2SApple OSS Distributions 
98*19c3b8c2SApple OSS Distributions /****** VM Codes End ******/
99*19c3b8c2SApple OSS Distributions 
100*19c3b8c2SApple OSS Distributions /****** Cluster Codes Begin ******/
101*19c3b8c2SApple OSS Distributions #define KDBG_TRIAGE_SUBSYS_CLUSTER   (2)
102*19c3b8c2SApple OSS Distributions 
103*19c3b8c2SApple OSS Distributions enum cluster_subsys_error_codes {
104*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_CL_PREFIX = 0,
105*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_CL_PGIN_PAST_EOF,
106*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_CL_MAX
107*19c3b8c2SApple OSS Distributions };
108*19c3b8c2SApple OSS Distributions #define CLUSTER_MAX_TRIAGE_STRINGS (KDBG_TRIAGE_CL_MAX)
109*19c3b8c2SApple OSS Distributions 
110*19c3b8c2SApple OSS Distributions /****** Cluster Codes End ******/
111*19c3b8c2SApple OSS Distributions 
112*19c3b8c2SApple OSS Distributions /****** Shared Region Codes Begin ******/
113*19c3b8c2SApple OSS Distributions #define KDBG_TRIAGE_SUBSYS_SHARED_REGION   (3)
114*19c3b8c2SApple OSS Distributions 
115*19c3b8c2SApple OSS Distributions enum shared_region_subsys_error_codes {
116*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_SHARED_REGION_PREFIX = 0,
117*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_SHARED_REGION_NO_UPL,
118*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_SHARED_REGION_SLIDE_ERROR,
119*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_SHARED_REGION_PAGER_MEMORY_SHORTAGE,
120*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_SHARED_REGION_MAX
121*19c3b8c2SApple OSS Distributions };
122*19c3b8c2SApple OSS Distributions #define SHARED_REGION_MAX_TRIAGE_STRINGS (KDBG_TRIAGE_SHARED_REGION_MAX)
123*19c3b8c2SApple OSS Distributions 
124*19c3b8c2SApple OSS Distributions /****** Shared Region Codes End ******/
125*19c3b8c2SApple OSS Distributions 
126*19c3b8c2SApple OSS Distributions /****** DYLD pager Codes Begin ******/
127*19c3b8c2SApple OSS Distributions #define KDBG_TRIAGE_SUBSYS_DYLD_PAGER   (4)
128*19c3b8c2SApple OSS Distributions 
129*19c3b8c2SApple OSS Distributions enum dyld_pager_subsys_error_codes {
130*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_DYLD_PAGER_PREFIX = 0,
131*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_DYLD_PAGER_NO_UPL,
132*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_DYLD_PAGER_SLIDE_ERROR,
133*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_DYLD_PAGER_MEMORY_SHORTAGE,
134*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_DYLD_PAGER_MAX
135*19c3b8c2SApple OSS Distributions };
136*19c3b8c2SApple OSS Distributions #define DYLD_PAGER_MAX_TRIAGE_STRINGS (KDBG_TRIAGE_DYLD_PAGER_MAX)
137*19c3b8c2SApple OSS Distributions 
138*19c3b8c2SApple OSS Distributions /****** DYLD pager Codes End ******/
139*19c3b8c2SApple OSS Distributions 
140*19c3b8c2SApple OSS Distributions /****** APPLE_PROTECT_PAGER pager Codes Begin ******/
141*19c3b8c2SApple OSS Distributions #define KDBG_TRIAGE_SUBSYS_APPLE_PROTECT_PAGER   (5)
142*19c3b8c2SApple OSS Distributions 
143*19c3b8c2SApple OSS Distributions enum apple_protect_pager_subsys_error_codes {
144*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_APPLE_PROTECT_PAGER_PREFIX = 0,
145*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_APPLE_PROTECT_PAGER_MEMORY_SHORTAGE,
146*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_APPLE_PROTECT_PAGER_MAX
147*19c3b8c2SApple OSS Distributions };
148*19c3b8c2SApple OSS Distributions #define APPLE_PROTECT_PAGER_MAX_TRIAGE_STRINGS (KDBG_TRIAGE_APPLE_PROTECT_PAGER_MAX)
149*19c3b8c2SApple OSS Distributions 
150*19c3b8c2SApple OSS Distributions /****** APPLE_PROTECT pager Codes End ******/
151*19c3b8c2SApple OSS Distributions 
152*19c3b8c2SApple OSS Distributions /****** FOURK pager Codes Begin ******/
153*19c3b8c2SApple OSS Distributions #define KDBG_TRIAGE_SUBSYS_FOURK_PAGER   (6)
154*19c3b8c2SApple OSS Distributions 
155*19c3b8c2SApple OSS Distributions enum fourk_pager_subsys_error_codes {
156*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_FOURK_PAGER_PREFIX = 0,
157*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_FOURK_PAGER_MEMORY_SHORTAGE,
158*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_FOURK_PAGER_MAX
159*19c3b8c2SApple OSS Distributions };
160*19c3b8c2SApple OSS Distributions #define FOURK_PAGER_MAX_TRIAGE_STRINGS (KDBG_TRIAGE_FOURK_PAGER_MAX)
161*19c3b8c2SApple OSS Distributions 
162*19c3b8c2SApple OSS Distributions /****** FOURK pager Codes End ******/
163*19c3b8c2SApple OSS Distributions 
164*19c3b8c2SApple OSS Distributions /****** APFS Codes Begin ******/
165*19c3b8c2SApple OSS Distributions #define KDBG_TRIAGE_SUBSYS_APFS   (7)
166*19c3b8c2SApple OSS Distributions 
167*19c3b8c2SApple OSS Distributions enum apfs_subsys_error_codes {
168*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_APFS_PREFIX = 0,
169*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_APFS_PAGEIN_NOT_ALLOWED,
170*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_APFS_INODE_DEAD,
171*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_APFS_INODE_RAW_ENCRYPTED,
172*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_APFS_INODE_OF_RAW_DEVICE,
173*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_APFS_DISALLOW_READS,
174*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_APFS_XATTR_GET_FAILED,
175*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_APFS_NO_NAMEDSTREAM_PARENT_INODE,
176*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_APFS_INVALID_OFFSET,
177*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_APFS_COLLECT_HASH_RECORDS,
178*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_APFS_INVALID_FILE_INFO,
179*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_APFS_NO_HASH_RECORD,
180*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_APFS_DATA_HASH_MISMATCH,
181*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_APFS_COMPRESSED_DATA_HASH_MISMATCH,
182*19c3b8c2SApple OSS Distributions 	KDBG_TRIAGE_APFS_MAX
183*19c3b8c2SApple OSS Distributions };
184*19c3b8c2SApple OSS Distributions 
185*19c3b8c2SApple OSS Distributions #define APFS_MAX_TRIAGE_STRINGS (KDBG_TRIAGE_APFS_MAX)
186*19c3b8c2SApple OSS Distributions 
187*19c3b8c2SApple OSS Distributions /****** APFS Codes End ******/
188*19c3b8c2SApple OSS Distributions 
189*19c3b8c2SApple OSS Distributions #define KDBG_TRIAGE_SUBSYS_MAX  KDBG_TRIAGE_SUBSYS_APFS
190*19c3b8c2SApple OSS Distributions 
191*19c3b8c2SApple OSS Distributions #endif /* BSD_SYS_KDEBUG_TRIAGE_H */
192