2  * Copyright (c) 2004 Apple Computer, Inc. All rights reserved. 
   4  * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ 
   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. 
  15  * Please obtain a copy of the License at 
  16  * http://www.opensource.apple.com/apsl/ and read it before using this file. 
  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. 
  26  * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ 
  33 enum { kIOHibernateAESKeySize 
= 128 };  /* bits */ 
  35 struct IOHibernateVars
 
  37     hibernate_page_list_t 
*             page_list
; 
  38     hibernate_page_list_t 
*             page_list_wired
; 
  39     class IOBufferMemoryDescriptor 
*    ioBuffer
; 
  40     class IOBufferMemoryDescriptor 
*    srcBuffer
; 
  41     class IOMemoryDescriptor 
*          previewBuffer
; 
  44     OSObject 
*                          saveBootDevice
; 
  46     struct IOPolledFileIOVars 
*         fileVars
; 
  47     vm_offset_t                         videoMapping
; 
  48     vm_size_t                           videoAllocSize
; 
  49     vm_size_t                           videoMapSize
; 
  50     uint8_t *                           consoleMapping
; 
  52     uint8_t                             saveBootAudioVolume
; 
  53     uint8_t                             wiredCryptKey
[kIOHibernateAESKeySize 
/ 8]; 
  54     uint8_t                             cryptKey
[kIOHibernateAESKeySize 
/ 8]; 
  56 typedef struct IOHibernateVars IOHibernateVars
; 
  59 struct IOPolledFileIOVars
 
  61     struct kern_direct_file_io_ref_t 
*  fileRef
; 
  62     class OSArray 
*                     pollers
; 
  63     IOByteCount                         blockSize
; 
  65     IOByteCount                         bufferSize
; 
  66     IOByteCount                         bufferLimit
; 
  67     IOByteCount                         bufferOffset
; 
  68     IOByteCount                         bufferHalf
; 
  69     IOByteCount                         extentRemaining
; 
  71     boolean_t                           solid_state
; 
  74     uint64_t                            extentPosition
; 
  75     uint64_t                            encryptStart
; 
  77     IOPolledFileExtent 
*                extentMap
; 
  78     IOPolledFileExtent 
*                currentExtent
; 
  82 typedef struct IOPolledFileIOVars IOPolledFileIOVars
; 
  84 #endif          /* __cplusplus */ 
  88     kIOHibernateTagSignature 
= 0x53000000, 
  89     kIOHibernateTagLength    
= 0x00001fff, 
  94 #endif          /* __cplusplus */ 
  96 hibernate_sum_page(uint8_t *buf
, uint32_t ppnum
); 
  98 extern vm_offset_t sectHIBB
; 
  99 extern unsigned long sectSizeHIB
; 
 100 extern vm_offset_t sectDATAB
; 
 101 extern unsigned long sectSizeDATA
; 
 102 #if defined(__i386__) || defined(__x86_64__) 
 103 extern vm_offset_t sectINITPTB
; 
 106 extern vm_offset_t gIOHibernateWakeMap
;     // ppnum 
 107 extern vm_size_t   gIOHibernateWakeMapSize
;