1*4d495c6eSApple OSS Distributions /* 2*4d495c6eSApple OSS Distributions * Copyright (c) 2000-2020 Apple Inc. All rights reserved. 3*4d495c6eSApple OSS Distributions * 4*4d495c6eSApple OSS Distributions * @Apple_LICENSE_HEADER_START@ 5*4d495c6eSApple OSS Distributions * 6*4d495c6eSApple OSS Distributions * The contents of this file constitute Original Code as defined in and 7*4d495c6eSApple OSS Distributions * are subject to the Apple Public Source License Version 1.1 (the 8*4d495c6eSApple OSS Distributions * "License"). You may not use this file except in compliance with the 9*4d495c6eSApple OSS Distributions * License. Please obtain a copy of the License at 10*4d495c6eSApple OSS Distributions * http://www.apple.com/publicsource and read it before using this file. 11*4d495c6eSApple OSS Distributions * 12*4d495c6eSApple OSS Distributions * This Original Code and all software distributed under the License are 13*4d495c6eSApple OSS Distributions * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER 14*4d495c6eSApple OSS Distributions * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 15*4d495c6eSApple OSS Distributions * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 16*4d495c6eSApple OSS Distributions * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the 17*4d495c6eSApple OSS Distributions * License for the specific language governing rights and limitations 18*4d495c6eSApple OSS Distributions * under the License. 19*4d495c6eSApple OSS Distributions * 20*4d495c6eSApple OSS Distributions * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ 21*4d495c6eSApple OSS Distributions */ 22*4d495c6eSApple OSS Distributions 23*4d495c6eSApple OSS Distributions #ifndef BSD_SYS_KDEBUG_TRIAGE_H 24*4d495c6eSApple OSS Distributions #define BSD_SYS_KDEBUG_TRIAGE_H 25*4d495c6eSApple OSS Distributions 26*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_CLASS_MASK (0xff000000) 27*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_CLASS_OFFSET (24) 28*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_CLASS_MAX (0xff) 29*4d495c6eSApple OSS Distributions 30*4d495c6eSApple OSS Distributions /* Unused but reserved for future use (possibly for payload encoding) */ 31*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_RESERVED (0) 32*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_RESERVED_MASK (0x00ff0000) 33*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_RESERVED_OFFSET (16) 34*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_RESERVED_MAX (0xff) 35*4d495c6eSApple OSS Distributions 36*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_CODE_MASK (0x0000fffc) 37*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_CODE_OFFSET (2) 38*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_CODE_MAX (0x3fff) 39*4d495c6eSApple OSS Distributions 40*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_EVENTID(Class, Reserved, Code) \ 41*4d495c6eSApple OSS Distributions (((unsigned)((Class) & 0xff) << KDBG_TRIAGE_CLASS_OFFSET) | \ 42*4d495c6eSApple OSS Distributions ((unsigned)((Reserved) & 0xff) << KDBG_TRIAGE_RESERVED_OFFSET) | \ 43*4d495c6eSApple OSS Distributions ((unsigned)((Code) & 0x3fff) << KDBG_TRIAGE_CODE_OFFSET)) 44*4d495c6eSApple OSS Distributions 45*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_EXTRACT_CLASS(Debugid) \ 46*4d495c6eSApple OSS Distributions ((uint8_t)(((Debugid) & KDBG_TRIAGE_CLASS_MASK) >> KDBG_TRIAGE_CLASS_OFFSET)) 47*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_EXTRACT_CODE(Debugid) \ 48*4d495c6eSApple OSS Distributions ((uint16_t)(((Debugid) & KDBG_TRIAGE_CODE_MASK) >> KDBG_TRIAGE_CODE_OFFSET)) 49*4d495c6eSApple OSS Distributions 50*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_MAX_STRINGS (5) 51*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_MAX_STRLEN (128) 52*4d495c6eSApple OSS Distributions 53*4d495c6eSApple OSS Distributions /****** VM Codes Begin ******/ 54*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_SUBSYS_VM (1) 55*4d495c6eSApple OSS Distributions 56*4d495c6eSApple OSS Distributions enum vm_subsys_error_codes { 57*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_PREFIX = 0, 58*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_NO_DATA, 59*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_TEXT_CORRUPTION, 60*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_ADDRESS_NOT_FOUND, 61*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_PROTECTION_FAILURE, 62*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_FAULT_MEMORY_SHORTAGE, 63*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_FAULT_COPY_MEMORY_SHORTAGE, 64*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_FAULT_OBJCOPYSLOWLY_MEMORY_SHORTAGE, 65*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_FAULT_OBJIOPLREQ_MEMORY_SHORTAGE, 66*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_FAULT_INTERRUPTED, 67*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_SUCCESS_NO_PAGE, 68*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_GUARDPAGE_FAULT, 69*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_NONZERO_PREEMPTION_LEVEL, 70*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_BUSYPAGE_WAIT_INTERRUPTED, 71*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_PURGEABLE_FAULT_ERROR, 72*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_OBJECT_SHADOW_SEVERED, 73*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_OBJECT_NOT_ALIVE, 74*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_OBJECT_NO_PAGER, 75*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_OBJECT_NO_PAGER_RECLAIM, 76*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_OBJECT_NO_PAGER_UNMOUNT, 77*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_OBJECT_NO_PAGER_FORCED_UNMOUNT, 78*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_OBJECT_NO_PAGER_UNGRAFT, 79*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_OBJECT_NO_PAGER_DEALLOC_PAGER, 80*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_PAGE_HAS_ERROR, 81*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_PAGE_HAS_RESTART, 82*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_FAILED_IMMUTABLE_PAGE_WRITE, 83*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_FAILED_NX_PAGE_EXEC_MAPPING, 84*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_PMAP_ENTER_RESOURCE_SHORTAGE, 85*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_COMPRESSOR_GET_OUT_OF_RANGE, 86*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_COMPRESSOR_GET_NO_PAGE, 87*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_COMPRESSOR_DECOMPRESS_FAILED, 88*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_COMPRESSOR_DECOMPRESS_POPCNT_MISMATCH, 89*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_SUBMAP_NO_COW_ON_EXECUTABLE, 90*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_SUBMAP_COPY_SLOWLY_FAILED, 91*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_SUBMAP_COPY_STRAT_FAILED, 92*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_VNODEPAGER_CLREAD_NO_UPL, 93*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_VNODEPAGEIN_NO_UBCINFO, 94*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_VNODEPAGEIN_FSPAGEIN_FAIL, 95*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_VNODEPAGEIN_NO_UPL, 96*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_ECC_DIRTY, 97*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_ECC_CLEAN, 98*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_COPYOUTMAP_SAMEMAP_ERROR, 99*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_COPYOUTMAP_DIFFERENTMAP_ERROR, 100*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_COPYOVERWRITE_FULL_NESTED_ERROR, 101*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_COPYOVERWRITE_PARTIAL_NESTED_ERROR, 102*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_COPYOVERWRITE_PARTIAL_HEAD_NESTED_ERROR, 103*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_COPYOVERWRITE_PARTIAL_TAIL_NESTED_ERROR, 104*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_COPYOUT_INTERNAL_SIZE_ERROR, 105*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_COPYOUT_KERNEL_BUFFER_ERROR, 106*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_COPYOUT_INTERNAL_ADJUSTING_ERROR, 107*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_COPYOUT_INTERNAL_SPACE_ERROR, 108*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_ALLOCATE_KERNEL_BADFLAGS_ERROR, 109*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_ALLOCATE_KERNEL_BADMAP_ERROR, 110*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_ALLOCATE_KERNEL_BADSIZE_ERROR, 111*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_ALLOCATE_KERNEL_VMMAPENTER_ERROR, 112*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_CODE_SIGNING, 113*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_FAULTS_DISABLED, 114*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_IOPL_ON_EXEC_PAGE, 115*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_EXEC_ON_IOPL_PAGE, 116*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_UPL_WRITE_ON_EXEC_REGION, 117*4d495c6eSApple OSS Distributions KDBG_TRIAGE_VM_MAX 118*4d495c6eSApple OSS Distributions }; 119*4d495c6eSApple OSS Distributions #define VM_MAX_TRIAGE_STRINGS (KDBG_TRIAGE_VM_MAX) 120*4d495c6eSApple OSS Distributions 121*4d495c6eSApple OSS Distributions /****** VM Codes End ******/ 122*4d495c6eSApple OSS Distributions 123*4d495c6eSApple OSS Distributions /****** Cluster Codes Begin ******/ 124*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_SUBSYS_CLUSTER (2) 125*4d495c6eSApple OSS Distributions 126*4d495c6eSApple OSS Distributions enum cluster_subsys_error_codes { 127*4d495c6eSApple OSS Distributions KDBG_TRIAGE_CL_PREFIX = 0, 128*4d495c6eSApple OSS Distributions KDBG_TRIAGE_CL_PGIN_PAST_EOF, 129*4d495c6eSApple OSS Distributions KDBG_TRIAGE_CL_MAX 130*4d495c6eSApple OSS Distributions }; 131*4d495c6eSApple OSS Distributions #define CLUSTER_MAX_TRIAGE_STRINGS (KDBG_TRIAGE_CL_MAX) 132*4d495c6eSApple OSS Distributions 133*4d495c6eSApple OSS Distributions /****** Cluster Codes End ******/ 134*4d495c6eSApple OSS Distributions 135*4d495c6eSApple OSS Distributions /****** Shared Region Codes Begin ******/ 136*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_SUBSYS_SHARED_REGION (3) 137*4d495c6eSApple OSS Distributions 138*4d495c6eSApple OSS Distributions enum shared_region_subsys_error_codes { 139*4d495c6eSApple OSS Distributions KDBG_TRIAGE_SHARED_REGION_PREFIX = 0, 140*4d495c6eSApple OSS Distributions KDBG_TRIAGE_SHARED_REGION_NO_UPL, 141*4d495c6eSApple OSS Distributions KDBG_TRIAGE_SHARED_REGION_SLIDE_ERROR, 142*4d495c6eSApple OSS Distributions KDBG_TRIAGE_SHARED_REGION_PAGER_MEMORY_SHORTAGE, 143*4d495c6eSApple OSS Distributions KDBG_TRIAGE_SHARED_REGION_MAX 144*4d495c6eSApple OSS Distributions }; 145*4d495c6eSApple OSS Distributions #define SHARED_REGION_MAX_TRIAGE_STRINGS (KDBG_TRIAGE_SHARED_REGION_MAX) 146*4d495c6eSApple OSS Distributions 147*4d495c6eSApple OSS Distributions /****** Shared Region Codes End ******/ 148*4d495c6eSApple OSS Distributions 149*4d495c6eSApple OSS Distributions /****** DYLD pager Codes Begin ******/ 150*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_SUBSYS_DYLD_PAGER (4) 151*4d495c6eSApple OSS Distributions 152*4d495c6eSApple OSS Distributions enum dyld_pager_subsys_error_codes { 153*4d495c6eSApple OSS Distributions KDBG_TRIAGE_DYLD_PAGER_PREFIX = 0, 154*4d495c6eSApple OSS Distributions KDBG_TRIAGE_DYLD_PAGER_NO_UPL, 155*4d495c6eSApple OSS Distributions KDBG_TRIAGE_DYLD_PAGER_MEMORY_SHORTAGE, 156*4d495c6eSApple OSS Distributions KDBG_TRIAGE_DYLD_PAGER_SLIDE_ERROR, 157*4d495c6eSApple OSS Distributions KDBG_TRIAGE_DYLD_PAGER_CHAIN_OUT_OF_RANGE, 158*4d495c6eSApple OSS Distributions KDBG_TRIAGE_DYLD_PAGER_SEG_INFO_OUT_OF_RANGE, 159*4d495c6eSApple OSS Distributions KDBG_TRIAGE_DYLD_PAGER_SEG_SIZE_OUT_OF_RANGE, 160*4d495c6eSApple OSS Distributions KDBG_TRIAGE_DYLD_PAGER_SEG_PAGE_CNT_OUT_OF_RANGE, 161*4d495c6eSApple OSS Distributions KDBG_TRIAGE_DYLD_PAGER_NO_SEG_FOR_VA, 162*4d495c6eSApple OSS Distributions KDBG_TRIAGE_DYLD_PAGER_RANGE_NOT_FOUND, 163*4d495c6eSApple OSS Distributions KDBG_TRIAGE_DYLD_PAGER_DELTA_TOO_LARGE, 164*4d495c6eSApple OSS Distributions KDBG_TRIAGE_DYLD_PAGER_PAGE_START_OUT_OF_RANGE, 165*4d495c6eSApple OSS Distributions KDBG_TRIAGE_DYLD_PAGER_BAD_POINTER_FMT, 166*4d495c6eSApple OSS Distributions KDBG_TRIAGE_DYLD_PAGER_INVALID_AUTH_KEY, 167*4d495c6eSApple OSS Distributions KDBG_TRIAGE_DYLD_PAGER_BIND_ORDINAL, 168*4d495c6eSApple OSS Distributions KDBG_TRIAGE_DYLD_PAGER_MAX 169*4d495c6eSApple OSS Distributions }; 170*4d495c6eSApple OSS Distributions #define DYLD_PAGER_MAX_TRIAGE_STRINGS (KDBG_TRIAGE_DYLD_PAGER_MAX) 171*4d495c6eSApple OSS Distributions 172*4d495c6eSApple OSS Distributions /****** DYLD pager Codes End ******/ 173*4d495c6eSApple OSS Distributions 174*4d495c6eSApple OSS Distributions /****** APPLE_PROTECT_PAGER pager Codes Begin ******/ 175*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_SUBSYS_APPLE_PROTECT_PAGER (5) 176*4d495c6eSApple OSS Distributions 177*4d495c6eSApple OSS Distributions enum apple_protect_pager_subsys_error_codes { 178*4d495c6eSApple OSS Distributions KDBG_TRIAGE_APPLE_PROTECT_PAGER_PREFIX = 0, 179*4d495c6eSApple OSS Distributions KDBG_TRIAGE_APPLE_PROTECT_PAGER_MEMORY_SHORTAGE, 180*4d495c6eSApple OSS Distributions KDBG_TRIAGE_APPLE_PROTECT_PAGER_MAX 181*4d495c6eSApple OSS Distributions }; 182*4d495c6eSApple OSS Distributions #define APPLE_PROTECT_PAGER_MAX_TRIAGE_STRINGS (KDBG_TRIAGE_APPLE_PROTECT_PAGER_MAX) 183*4d495c6eSApple OSS Distributions 184*4d495c6eSApple OSS Distributions /****** APPLE_PROTECT pager Codes End ******/ 185*4d495c6eSApple OSS Distributions 186*4d495c6eSApple OSS Distributions /****** Corpse pager Codes Begin ******/ 187*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_SUBSYS_CORPSE (6) 188*4d495c6eSApple OSS Distributions 189*4d495c6eSApple OSS Distributions enum corpse_subsys_error_codes { 190*4d495c6eSApple OSS Distributions KDBG_TRIAGE_CORPSE_PREFIX = 0, 191*4d495c6eSApple OSS Distributions KDBG_TRIAGE_CORPSE_PROC_TOO_BIG, 192*4d495c6eSApple OSS Distributions KDBG_TRIAGE_CORPSE_FAIL_LIBGMALLOC, 193*4d495c6eSApple OSS Distributions KDBG_TRIAGE_CORPSE_BLOCKED_JETSAM, 194*4d495c6eSApple OSS Distributions KDBG_TRIAGE_CORPSE_LIMIT, 195*4d495c6eSApple OSS Distributions KDBG_TRIAGE_CORPSES_DISABLED, 196*4d495c6eSApple OSS Distributions KDBG_TRIAGE_CORPSE_DISABLED_FOR_PROC, 197*4d495c6eSApple OSS Distributions KDBG_TRIAGE_CORPSE_MAX 198*4d495c6eSApple OSS Distributions }; 199*4d495c6eSApple OSS Distributions #define CORPSE_MAX_TRIAGE_STRINGS (KDBG_TRIAGE_CORPSE_MAX) 200*4d495c6eSApple OSS Distributions 201*4d495c6eSApple OSS Distributions /****** Corpse pager Codes End ******/ 202*4d495c6eSApple OSS Distributions 203*4d495c6eSApple OSS Distributions /****** Dynamic ktriage Begin ******/ 204*4d495c6eSApple OSS Distributions /* 205*4d495c6eSApple OSS Distributions * kexts and kernel modules can define their own strings and augment them with 206*4d495c6eSApple OSS Distributions * an argument. 207*4d495c6eSApple OSS Distributions * ktriage only needs to know the subsystem id, and expects that the first 208*4d495c6eSApple OSS Distributions * string will be the subsystem prefix string. 209*4d495c6eSApple OSS Distributions * 210*4d495c6eSApple OSS Distributions * Right now we don't support dynamically adding or removing subsystems. 211*4d495c6eSApple OSS Distributions */ 212*4d495c6eSApple OSS Distributions 213*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_SUBSYS_APFS (7) 214*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_SUBSYS_DECMPFS (8) 215*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_SUBSYS_VM_SANITIZE (9) 216*4d495c6eSApple OSS Distributions 217*4d495c6eSApple OSS Distributions /****** Dynamic ktriage End ******/ 218*4d495c6eSApple OSS Distributions 219*4d495c6eSApple OSS Distributions /* please update KDBG_TRIAGE_SUBSYS_MAX when adding a new subsystem */ 220*4d495c6eSApple OSS Distributions 221*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_SUBSYS_MAX KDBG_TRIAGE_SUBSYS_VM_SANITIZE 222*4d495c6eSApple OSS Distributions 223*4d495c6eSApple OSS Distributions #endif /* BSD_SYS_KDEBUG_TRIAGE_H */ 224