1 /* 2 * Copyright (c) 2004 Apple Computer, Inc. All rights reserved. 3 * 4 * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. The rights granted to you under the License 10 * may not be used to create, or enable the creation or redistribution of, 11 * unlawful or unlicensed copies of an Apple operating system, or to 12 * circumvent, violate, or enable the circumvention or violation of, any 13 * terms of an Apple operating system software license agreement. 14 * 15 * Please obtain a copy of the License at 16 * http://www.opensource.apple.com/apsl/ and read it before using this file. 17 * 18 * The Original Code and all software distributed under the License are 19 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 20 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 21 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 22 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 23 * Please see the License for the specific language governing rights and 24 * limitations under the License. 25 * 26 * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ 27 */ 28 29 #ifndef __IOKIT_IOHIBERNATEPRIVATE_H 30 #define __IOKIT_IOHIBERNATEPRIVATE_H 31 32 #if HIBERNATION 33 34 #if defined(__arm64__) 35 36 #define HIBERNATE_HAVE_MACHINE_HEADER 1 37 38 // enable the hibernation exception handler on DEBUG and DEVELOPMENT kernels 39 #define HIBERNATE_TRAP_HANDLER (DEBUG || DEVELOPMENT) 40 41 #endif /* defined(__arm64__) */ 42 43 #endif /* HIBERNATION */ 44 45 #ifndef __ASSEMBLER__ 46 47 #include <stdint.h> 48 #include <sys/cdefs.h> 49 50 __BEGIN_DECLS 51 52 #ifdef KERNEL 53 #include <libkern/crypto/aes.h> 54 #include <uuid/uuid.h> 55 #include <kern/debug.h> 56 57 extern int kdb_printf(const char *format, ...) __printflike(1, 2); 58 #endif /* KERNEL */ 59 60 #define HIBERNATE_HMAC_SIZE 48 // SHA384 size in bytes 61 #define HIBERNATE_SHA256_SIZE 32 // SHA256 size in bytes 62 63 struct IOHibernateHibSegment { 64 uint32_t iBootMemoryRegion; 65 uint32_t physPage; 66 uint32_t pageCount; 67 uint32_t protection; 68 }; 69 typedef struct IOHibernateHibSegment IOHibernateHibSegment; 70 71 #define NUM_HIBSEGINFO_SEGMENTS 10 72 struct IOHibernateHibSegInfo { 73 struct IOHibernateHibSegment segments[NUM_HIBSEGINFO_SEGMENTS]; 74 uint8_t hmac[HIBERNATE_HMAC_SIZE]; 75 }; 76 typedef struct IOHibernateHibSegInfo IOHibernateHibSegInfo; 77 78 struct IOPolledFileExtent { 79 uint64_t start; 80 uint64_t length; 81 }; 82 typedef struct IOPolledFileExtent IOPolledFileExtent; 83 84 struct IOHibernateImageHeader { 85 uint64_t imageSize; 86 uint64_t image1Size; 87 88 uint32_t restore1CodePhysPage; 89 uint32_t reserved1; 90 uint64_t restore1CodeVirt; 91 uint32_t restore1PageCount; 92 uint32_t restore1CodeOffset; 93 uint32_t restore1StackOffset; 94 95 uint32_t pageCount; 96 uint32_t bitmapSize; 97 98 uint32_t restore1Sum; 99 uint32_t image1Sum; 100 uint32_t image2Sum; 101 102 uint32_t actualRestore1Sum; 103 uint32_t actualImage1Sum; 104 uint32_t actualImage2Sum; 105 106 uint32_t actualUncompressedPages; 107 uint32_t conflictCount; 108 uint32_t nextFree; 109 110 uint32_t signature; 111 uint32_t processorFlags; 112 113 uint32_t runtimePages; 114 uint32_t runtimePageCount; 115 uint64_t runtimeVirtualPages __attribute__ ((packed)); 116 117 uint32_t performanceDataStart; 118 uint32_t performanceDataSize; 119 120 uint64_t encryptStart __attribute__ ((packed)); 121 uint64_t machineSignature __attribute__ ((packed)); 122 123 uint32_t previewSize; 124 uint32_t previewPageListSize; 125 126 uint32_t diag[4]; 127 128 uint32_t handoffPages; 129 uint32_t handoffPageCount; 130 131 uint32_t systemTableOffset; 132 133 uint32_t debugFlags; 134 uint32_t options; 135 uint64_t sleepTime __attribute__ ((packed)); 136 uint32_t compression; 137 138 uint8_t bridgeBootSessionUUID[16]; 139 140 uint64_t lastHibAbsTime __attribute__ ((packed)); 141 union { 142 uint64_t lastHibContTime; 143 uint64_t hwClockOffset; 144 } __attribute__ ((packed)); 145 uint64_t kernVirtSlide __attribute__ ((packed)); 146 147 uint32_t reserved[47]; // make sizeof == 512 148 uint32_t booterTime0; 149 uint32_t booterTime1; 150 uint32_t booterTime2; 151 152 uint32_t booterStart; 153 uint32_t smcStart; 154 uint32_t connectDisplayTime; 155 uint32_t splashTime; 156 uint32_t booterTime; 157 uint32_t trampolineTime; 158 159 uint64_t encryptEnd __attribute__ ((packed)); 160 uint64_t deviceBase __attribute__ ((packed)); 161 uint32_t deviceBlockSize; 162 163 #if defined(__arm64__) 164 uint32_t segmentsFileOffset; 165 IOHibernateHibSegInfo hibSegInfo; 166 uint32_t imageHeaderHMACSize; 167 uint8_t imageHeaderHMAC[HIBERNATE_HMAC_SIZE]; 168 uint8_t handoffHMAC[HIBERNATE_HMAC_SIZE]; 169 uint8_t image1PagesHMAC[HIBERNATE_HMAC_SIZE]; 170 uint8_t image2PagesHMAC[HIBERNATE_HMAC_SIZE]; 171 uint8_t rorgnHMAC[HIBERNATE_HMAC_SIZE]; 172 uint8_t rorgnSHA256[HIBERNATE_SHA256_SIZE]; 173 #endif /* defined(__arm64__) */ 174 175 uint32_t fileExtentMapSize; 176 IOPolledFileExtent fileExtentMap[2]; 177 }; 178 typedef struct IOHibernateImageHeader IOHibernateImageHeader; 179 180 enum{ 181 kIOHibernateDebugRestoreLogs = 0x00000001 182 }; 183 184 // options & IOHibernateOptions property 185 enum{ 186 kIOHibernateOptionSSD = 0x00000001, 187 kIOHibernateOptionColor = 0x00000002, 188 kIOHibernateOptionProgress = 0x00000004, 189 kIOHibernateOptionDarkWake = 0x00000008, 190 kIOHibernateOptionHWEncrypt = 0x00000010, 191 }; 192 193 struct hibernate_bitmap_t { 194 uint32_t first_page; 195 uint32_t last_page; 196 uint32_t bitmapwords; 197 uint32_t bitmap[0]; 198 }; 199 typedef struct hibernate_bitmap_t hibernate_bitmap_t; 200 201 struct hibernate_page_list_t { 202 uint32_t list_size; 203 uint32_t page_count; 204 uint32_t bank_count; 205 hibernate_bitmap_t bank_bitmap[0]; 206 }; 207 typedef struct hibernate_page_list_t hibernate_page_list_t; 208 209 #if defined(_AES_H) 210 211 struct hibernate_cryptwakevars_t { 212 uint8_t aes_iv[AES_BLOCK_SIZE]; 213 }; 214 typedef struct hibernate_cryptwakevars_t hibernate_cryptwakevars_t; 215 216 struct hibernate_cryptvars_t { 217 uint8_t aes_iv[AES_BLOCK_SIZE]; 218 aes_ctx ctx; 219 }; 220 typedef struct hibernate_cryptvars_t hibernate_cryptvars_t; 221 222 #endif /* defined(_AES_H) */ 223 224 enum{ 225 kIOHibernateHandoffType = 0x686f0000, 226 kIOHibernateHandoffTypeEnd = kIOHibernateHandoffType + 0, 227 kIOHibernateHandoffTypeGraphicsInfo = kIOHibernateHandoffType + 1, 228 kIOHibernateHandoffTypeCryptVars = kIOHibernateHandoffType + 2, 229 kIOHibernateHandoffTypeMemoryMap = kIOHibernateHandoffType + 3, 230 kIOHibernateHandoffTypeDeviceTree = kIOHibernateHandoffType + 4, 231 kIOHibernateHandoffTypeDeviceProperties = kIOHibernateHandoffType + 5, 232 kIOHibernateHandoffTypeKeyStore = kIOHibernateHandoffType + 6, 233 kIOHibernateHandoffTypeVolumeCryptKey = kIOHibernateHandoffType + 7, 234 }; 235 236 struct IOHibernateHandoff { 237 uint32_t type; 238 uint32_t bytecount; 239 uint8_t data[]; 240 }; 241 typedef struct IOHibernateHandoff IOHibernateHandoff; 242 243 enum{ 244 kIOHibernateProgressCount = 19, 245 kIOHibernateProgressWidth = 7, 246 kIOHibernateProgressHeight = 16, 247 kIOHibernateProgressSpacing = 3, 248 kIOHibernateProgressOriginY = 81, 249 250 kIOHibernateProgressSaveUnderSize = 2 * 5 + 14 * 2, 251 252 kIOHibernateProgressLightGray = 230, 253 kIOHibernateProgressMidGray = 174, 254 kIOHibernateProgressDarkGray = 92 255 }; 256 257 enum{ 258 kIOHibernatePostWriteSleep = 0, 259 kIOHibernatePostWriteWake = 1, 260 kIOHibernatePostWriteHalt = 2, 261 kIOHibernatePostWriteRestart = 3 262 }; 263 264 265 struct hibernate_graphics_t { 266 uint64_t physicalAddress; // Base address of video memory 267 int32_t gfxStatus; // EFI config restore status 268 uint32_t rowBytes; // Number of bytes per pixel row 269 uint32_t width; // Width 270 uint32_t height; // Height 271 uint32_t depth; // Pixel Depth 272 273 uint8_t progressSaveUnder[kIOHibernateProgressCount][kIOHibernateProgressSaveUnderSize]; 274 }; 275 typedef struct hibernate_graphics_t hibernate_graphics_t; 276 277 #define DECLARE_IOHIBERNATEPROGRESSALPHA \ 278 static const uint8_t gIOHibernateProgressAlpha \ 279 [kIOHibernateProgressHeight][kIOHibernateProgressWidth] = \ 280 { \ 281 { 0x00,0x63,0xd8,0xf0,0xd8,0x63,0x00 }, \ 282 { 0x51,0xff,0xff,0xff,0xff,0xff,0x51 }, \ 283 { 0xae,0xff,0xff,0xff,0xff,0xff,0xae }, \ 284 { 0xc3,0xff,0xff,0xff,0xff,0xff,0xc3 }, \ 285 { 0xc3,0xff,0xff,0xff,0xff,0xff,0xc3 }, \ 286 { 0xc3,0xff,0xff,0xff,0xff,0xff,0xc3 }, \ 287 { 0xc3,0xff,0xff,0xff,0xff,0xff,0xc3 }, \ 288 { 0xc3,0xff,0xff,0xff,0xff,0xff,0xc3 }, \ 289 { 0xc3,0xff,0xff,0xff,0xff,0xff,0xc3 }, \ 290 { 0xc3,0xff,0xff,0xff,0xff,0xff,0xc3 }, \ 291 { 0xc3,0xff,0xff,0xff,0xff,0xff,0xc3 }, \ 292 { 0xc3,0xff,0xff,0xff,0xff,0xff,0xc3 }, \ 293 { 0xc3,0xff,0xff,0xff,0xff,0xff,0xc3 }, \ 294 { 0xae,0xff,0xff,0xff,0xff,0xff,0xae }, \ 295 { 0x54,0xff,0xff,0xff,0xff,0xff,0x54 }, \ 296 { 0x00,0x66,0xdb,0xf3,0xdb,0x66,0x00 } \ 297 }; 298 299 struct hibernate_preview_t { 300 uint32_t imageCount; // Number of images 301 uint32_t width; // Width 302 uint32_t height; // Height 303 uint32_t depth; // Pixel Depth 304 uint64_t lockTime; // Lock time 305 uint32_t reservedG[7]; // reserved 306 uint32_t reservedK[8]; // reserved 307 }; 308 typedef struct hibernate_preview_t hibernate_preview_t; 309 310 struct hibernate_statistics_t { 311 uint64_t image1Size; 312 uint64_t imageSize; 313 uint32_t image1Pages; 314 uint32_t imagePages; 315 uint32_t booterStart; 316 uint32_t smcStart; 317 uint32_t booterDuration; 318 uint32_t booterConnectDisplayDuration; 319 uint32_t booterSplashDuration; 320 uint32_t booterDuration0; 321 uint32_t booterDuration1; 322 uint32_t booterDuration2; 323 uint32_t trampolineDuration; 324 uint32_t kernelImageReadDuration; 325 326 uint32_t graphicsReadyTime; 327 uint32_t wakeNotificationTime; 328 uint32_t lockScreenReadyTime; 329 uint32_t hidReadyTime; 330 331 uint32_t wakeCapability; 332 uint32_t hibCount; 333 uint32_t resvA[14]; 334 }; 335 typedef struct hibernate_statistics_t hibernate_statistics_t; 336 337 #define kIOSysctlHibernateStatistics "kern.hibernatestatistics" 338 #define kIOSysctlHibernateGraphicsReady "kern.hibernategraphicsready" 339 #define kIOSysctlHibernateWakeNotify "kern.hibernatewakenotification" 340 #define kIOSysctlHibernateScreenReady "kern.hibernatelockscreenready" 341 #define kIOSysctlHibernateHIDReady "kern.hibernatehidready" 342 #define kIOSysctlHibernateCount "kern.hibernatecount" 343 #define kIOSysctlHibernateSetPreview "kern.hibernatepreview" 344 345 #define kIOHibernateSetPreviewEntitlementKey "com.apple.private.hibernation.set-preview" 346 347 #ifdef KERNEL 348 349 #ifdef __cplusplus 350 351 void IOHibernateSystemInit(IOPMrootDomain * rootDomain); 352 353 IOReturn IOHibernateSystemSleep(void); 354 IOReturn IOHibernateIOKitSleep(void); 355 IOReturn IOHibernateSystemHasSlept(void); 356 IOReturn IOHibernateSystemWake(void); 357 IOReturn IOHibernateSystemPostWake(bool now); 358 uint32_t IOHibernateWasScreenLocked(void); 359 void IOHibernateSetScreenLocked(uint32_t lockState); 360 void IOHibernateSetWakeCapabilities(uint32_t capability); 361 void IOHibernateSystemRestart(void); 362 363 #endif /* __cplusplus */ 364 365 struct hibernate_scratch { 366 uint8_t *curPage; 367 size_t curPagePos; 368 uint64_t curPos; 369 uint64_t totalLength; 370 ppnum_t headPage; 371 hibernate_page_list_t *map; 372 uint32_t *nextFree; 373 }; 374 typedef struct hibernate_scratch hibernate_scratch_t; 375 376 void 377 vm_compressor_do_warmup(void); 378 379 380 hibernate_page_list_t * 381 hibernate_page_list_allocate(boolean_t log); 382 383 kern_return_t 384 hibernate_alloc_page_lists( 385 hibernate_page_list_t ** page_list_ret, 386 hibernate_page_list_t ** page_list_wired_ret, 387 hibernate_page_list_t ** page_list_pal_ret); 388 389 kern_return_t 390 hibernate_setup(IOHibernateImageHeader * header, 391 boolean_t vmflush, 392 hibernate_page_list_t * page_list, 393 hibernate_page_list_t * page_list_wired, 394 hibernate_page_list_t * page_list_pal); 395 396 kern_return_t 397 hibernate_teardown(hibernate_page_list_t * page_list, 398 hibernate_page_list_t * page_list_wired, 399 hibernate_page_list_t * page_list_pal); 400 401 kern_return_t 402 hibernate_pin_swap(boolean_t begin); 403 404 kern_return_t 405 hibernate_processor_setup(IOHibernateImageHeader * header); 406 407 void 408 hibernate_gobble_pages(uint32_t gobble_count, uint32_t free_page_time); 409 void 410 hibernate_free_gobble_pages(void); 411 412 void 413 hibernate_vm_lock_queues(void); 414 void 415 hibernate_vm_unlock_queues(void); 416 417 void 418 hibernate_vm_lock(void); 419 void 420 hibernate_vm_unlock(void); 421 void 422 hibernate_vm_lock_end(void); 423 boolean_t 424 hibernate_vm_locks_are_safe(void); 425 426 // mark pages not to be saved, based on VM system accounting 427 void 428 hibernate_page_list_setall(hibernate_page_list_t * page_list, 429 hibernate_page_list_t * page_list_wired, 430 hibernate_page_list_t * page_list_pal, 431 boolean_t preflight, 432 boolean_t discard_all, 433 uint32_t * pagesOut); 434 435 // mark pages to be saved, or pages not to be saved but available 436 // for scratch usage during restore 437 void 438 hibernate_page_list_setall_machine(hibernate_page_list_t * page_list, 439 hibernate_page_list_t * page_list_wired, 440 boolean_t preflight, 441 uint32_t * pagesOut); 442 443 // mark pages not to be saved and not for scratch usage during restore 444 void 445 hibernate_page_list_set_volatile( hibernate_page_list_t * page_list, 446 hibernate_page_list_t * page_list_wired, 447 uint32_t * pagesOut); 448 449 void 450 hibernate_page_list_discard(hibernate_page_list_t * page_list); 451 452 int 453 hibernate_should_abort(void); 454 455 void 456 hibernate_set_page_state(hibernate_page_list_t * page_list, hibernate_page_list_t * page_list_wired, 457 vm_offset_t ppnum, vm_offset_t count, uint32_t kind); 458 459 void 460 hibernate_page_bitset(hibernate_page_list_t * list, boolean_t set, uint32_t page); 461 462 boolean_t 463 hibernate_page_bittst(hibernate_page_list_t * list, uint32_t page); 464 465 hibernate_bitmap_t * 466 hibernate_page_bitmap_pin(hibernate_page_list_t * list, uint32_t * page); 467 468 uint32_t 469 hibernate_page_bitmap_count(hibernate_bitmap_t * bitmap, uint32_t set, uint32_t page); 470 471 uintptr_t 472 hibernate_restore_phys_page(uint64_t src, uint64_t dst, uint32_t len, uint32_t procFlags); 473 474 void 475 hibernate_scratch_init(hibernate_scratch_t * scratch, hibernate_page_list_t * map, uint32_t * nextFree); 476 477 void 478 hibernate_scratch_start_read(hibernate_scratch_t * scratch); 479 480 void 481 hibernate_scratch_write(hibernate_scratch_t * scratch, const void * buffer, size_t size); 482 483 void 484 hibernate_scratch_read(hibernate_scratch_t * scratch, void * buffer, size_t size); 485 486 void 487 hibernate_machine_init(void); 488 489 uint32_t 490 hibernate_write_image(void); 491 492 ppnum_t 493 hibernate_page_list_grab(hibernate_page_list_t * list, uint32_t * pNextFree); 494 495 void 496 hibernate_reserve_restore_pages(uint64_t headerPhys, IOHibernateImageHeader *header, hibernate_page_list_t * map); 497 498 long 499 hibernate_machine_entrypoint(uint32_t p1, uint32_t p2, uint32_t p3, uint32_t p4); 500 long 501 hibernate_kernel_entrypoint(uint32_t p1, uint32_t p2, uint32_t p3, uint32_t p4); 502 void 503 hibernate_newruntime_map(void * map, vm_size_t map_size, 504 uint32_t system_table_offset); 505 506 507 extern uint32_t gIOHibernateState; 508 extern uint32_t gIOHibernateMode; 509 extern uint32_t gIOHibernateDebugFlags; 510 extern uint32_t gIOHibernateFreeTime; // max time to spend freeing pages (ms) 511 extern boolean_t gIOHibernateStandbyDisabled; 512 #if !defined(__arm64__) 513 extern uint8_t gIOHibernateRestoreStack[]; 514 extern uint8_t gIOHibernateRestoreStackEnd[]; 515 #endif /* !defined(__arm64__) */ 516 extern IOHibernateImageHeader * gIOHibernateCurrentHeader; 517 518 #define HIBLOGFROMPANIC(fmt, args...) \ 519 { if (kernel_debugger_entry_count) { kdb_printf(fmt, ## args); } } 520 521 #define HIBLOG(fmt, args...) \ 522 { if (kernel_debugger_entry_count) { kdb_printf(fmt, ## args); } else { kprintf(fmt, ## args); printf(fmt, ## args); } } 523 524 #define HIBPRINT(fmt, args...) \ 525 { if (kernel_debugger_entry_count) { kdb_printf(fmt, ## args); } else { kprintf(fmt, ## args); } } 526 527 528 #endif /* KERNEL */ 529 530 // gIOHibernateState, kIOHibernateStateKey 531 enum{ 532 kIOHibernateStateInactive = 0, 533 kIOHibernateStateHibernating = 1,/* writing image */ 534 kIOHibernateStateWakingFromHibernate = 2 /* booted and restored image */ 535 }; 536 537 // gIOHibernateMode, kIOHibernateModeKey 538 enum{ 539 kIOHibernateModeOn = 0x00000001, 540 kIOHibernateModeSleep = 0x00000002, 541 kIOHibernateModeEncrypt = 0x00000004, 542 kIOHibernateModeDiscardCleanInactive = 0x00000008, 543 kIOHibernateModeDiscardCleanActive = 0x00000010, 544 kIOHibernateModeSwitch = 0x00000020, 545 kIOHibernateModeRestart = 0x00000040, 546 kIOHibernateModeSSDInvert = 0x00000080, 547 kIOHibernateModeFileResize = 0x00000100, 548 }; 549 550 // IOHibernateImageHeader.signature 551 enum{ 552 kIOHibernateHeaderSignature = 0x73696d65, 553 kIOHibernateHeaderInvalidSignature = 0x7a7a7a7a, 554 kIOHibernateHeaderOpenSignature = 0xf1e0be9d, 555 kIOHibernateHeaderDebugDataSignature = 0xfcddfcdd 556 }; 557 558 // kind for hibernate_set_page_state() 559 enum{ 560 kIOHibernatePageStateFree = 0, 561 kIOHibernatePageStateWiredSave = 1, 562 kIOHibernatePageStateUnwiredSave = 2 563 }; 564 565 #define kIOHibernateModeKey "Hibernate Mode" 566 #define kIOHibernateFileKey "Hibernate File" 567 #define kIOHibernateFileMinSizeKey "Hibernate File Min" 568 #define kIOHibernateFileMaxSizeKey "Hibernate File Max" 569 #define kIOHibernateFreeRatioKey "Hibernate Free Ratio" 570 #define kIOHibernateFreeTimeKey "Hibernate Free Time" 571 572 #define kIOHibernateStateKey "IOHibernateState" 573 #define kIOHibernateFeatureKey "Hibernation" 574 #define kIOHibernatePreviewBufferKey "IOPreviewBuffer" 575 576 #ifndef kIOHibernatePreviewActiveKey 577 #define kIOHibernatePreviewActiveKey "IOHibernatePreviewActive" 578 // values for kIOHibernatePreviewActiveKey 579 enum { 580 kIOHibernatePreviewActive = 0x00000001, 581 kIOHibernatePreviewUpdates = 0x00000002 582 }; 583 #endif 584 585 #define kIOHibernateOptionsKey "IOHibernateOptions" 586 #define kIOHibernateGfxStatusKey "IOHibernateGfxStatus" 587 enum { 588 kIOHibernateGfxStatusUnknown = ((int32_t) 0xFFFFFFFF) 589 }; 590 591 #define kIOHibernateBootImageKey "boot-image" 592 #define kIOHibernateBootImageKeyKey "boot-image-key" 593 #define kIOHibernateBootSignatureKey "boot-signature" 594 595 #define kIOHibernateMemorySignatureKey "memory-signature" 596 #define kIOHibernateMemorySignatureEnvKey "mem-sig" 597 #define kIOHibernateMachineSignatureKey "machine-signature" 598 599 #define kIOHibernateRTCVariablesKey "IOHibernateRTCVariables" 600 #define kIOHibernateSMCVariablesKey "IOHibernateSMCVariables" 601 602 #define kIOHibernateBootSwitchVarsKey "boot-switch-vars" 603 604 #define kIOHibernateBootNoteKey "boot-note" 605 606 607 #define kIOHibernateUseKernelInterpreter 0x80000000 608 609 enum{ 610 kIOPreviewImageIndexDesktop = 0, 611 kIOPreviewImageIndexLockScreen = 1, 612 kIOPreviewImageCount = 2 613 }; 614 615 enum{ 616 kIOScreenLockNoLock = 1, 617 kIOScreenLockUnlocked = 2, 618 kIOScreenLockLocked = 3, 619 kIOScreenLockFileVaultDialog = 4, 620 }; 621 622 #define kIOScreenLockStateKey "IOScreenLockState" 623 #define kIOBooterScreenLockStateKey "IOBooterScreenLockState" 624 625 __END_DECLS 626 627 #endif /* !__ASSEMBLER__ */ 628 629 #endif /* ! __IOKIT_IOHIBERNATEPRIVATE_H */ 630