]> git.saurik.com Git - apple/xnu.git/blobdiff - iokit/Kernel/IOHibernateInternal.h
xnu-4903.270.47.tar.gz
[apple/xnu.git] / iokit / Kernel / IOHibernateInternal.h
index 2b2e5802e591b99e550a36074b3a62ea63766762..a96d843bd1783be282491bdac38f98d15c5d8e7f 100644 (file)
@@ -2,7 +2,7 @@
  * Copyright (c) 2004 Apple Computer, Inc. All rights reserved.
  *
  * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
- * 
+ *
  * This file contains Original Code and/or Modifications of Original Code
  * as defined in and that are subject to the Apple Public Source License
  * Version 2.0 (the 'License'). You may not use this file except in
  * unlawful or unlicensed copies of an Apple operating system, or to
  * circumvent, violate, or enable the circumvention or violation of, any
  * terms of an Apple operating system software license agreement.
- * 
+ *
  * Please obtain a copy of the License at
  * http://www.opensource.apple.com/apsl/ and read it before using this file.
- * 
+ *
  * The Original Code and all software distributed under the License are
  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
@@ -22,7 +22,7 @@
  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
  * Please see the License for the specific language governing rights and
  * limitations under the License.
- * 
+ *
  * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
  */
 
 
 #ifdef __cplusplus
 
-enum { kIOHibernateAESKeySize = 128 }; /* bits */
+enum { kIOHibernateAESKeySize = 128 };  /* bits */
 
-struct IOHibernateVars
-{
-    hibernate_page_list_t *            page_list;
-    hibernate_page_list_t *            page_list_wired;
-    class IOBufferMemoryDescriptor *    ioBuffer;
-    class IOBufferMemoryDescriptor *    srcBuffer;
-    class IOMemoryDescriptor *          previewBuffer;
-    OSData *                           previewData;
-    OSData *                           fileExtents;
-    OSObject *                         saveBootDevice;
+struct IOHibernateVars {
+       hibernate_page_list_t *             page_list;
+       hibernate_page_list_t *             page_list_wired;
+       hibernate_page_list_t *             page_list_pal;
+       class IOBufferMemoryDescriptor *    ioBuffer;
+       class IOBufferMemoryDescriptor *    srcBuffer;
+       class IOBufferMemoryDescriptor *    handoffBuffer;
+       class IOMemoryDescriptor *          previewBuffer;
+       OSData *                            previewData;
+       OSObject *                          saveBootDevice;
 
-    struct IOPolledFileIOVars *                fileVars;
-    vm_offset_t                                videoMapping;
-    vm_size_t                          videoAllocSize;
-    vm_size_t                          videoMapSize;
-    uint8_t *                          consoleMapping;
-    uint8_t                            haveFastBoot;
-    uint8_t                            saveBootAudioVolume;
-    uint8_t                            wiredCryptKey[kIOHibernateAESKeySize / 8];
-    uint8_t                            cryptKey[kIOHibernateAESKeySize / 8];
+       struct IOPolledFileIOVars *         fileVars;
+       uint64_t                            fileMinSize;
+       uint64_t                            fileMaxSize;
+       vm_offset_t                         videoMapping;
+       vm_size_t                           videoAllocSize;
+       vm_size_t                           videoMapSize;
+       uint8_t *                           consoleMapping;
+       uint8_t                             haveFastBoot;
+       uint8_t                             saveBootAudioVolume;
+       uint8_t                             hwEncrypt;
+       uint8_t                             wiredCryptKey[kIOHibernateAESKeySize / 8];
+       uint8_t                             cryptKey[kIOHibernateAESKeySize / 8];
+       size_t                              volumeCryptKeySize;
+       uint8_t                             volumeCryptKey[64];
 };
 typedef struct IOHibernateVars IOHibernateVars;
 
+#endif          /* __cplusplus */
 
-struct IOPolledFileIOVars
-{
-    struct kern_direct_file_io_ref_t * fileRef;
-    class OSArray *                    pollers;
-    IOByteCount                                blockSize;
-    uint8_t *                                  buffer;
-    IOByteCount                        bufferSize;
-    IOByteCount                        bufferLimit;
-    IOByteCount                        bufferOffset;
-    IOByteCount                        bufferHalf;
-    IOByteCount                                extentRemaining;
-    IOByteCount                                lastRead;
-    boolean_t                           solid_state;
-    uint64_t                           block0;
-    uint64_t                           position;
-    uint64_t                           extentPosition;
-    uint64_t                           encryptStart;
-    uint64_t                           encryptEnd;
-    IOPolledFileExtent *               extentMap;
-    IOPolledFileExtent *               currentExtent;
-    bool                               io;
-    IOReturn                           ioStatus;
-};
-typedef struct IOPolledFileIOVars IOPolledFileIOVars;
-
-#endif         /* __cplusplus */
-
-enum
-{
-    kIOHibernateTagSignature = 0x53000000,
-    kIOHibernateTagLength    = 0x00001fff,
+enum{
+       kIOHibernateTagSignature = 0x53000000,
+       kIOHibernateTagLength    = 0x00001fff,
 };
 
 #ifdef __cplusplus
 extern "C"
-#endif         /* __cplusplus */
+#endif          /* __cplusplus */
 uint32_t
 hibernate_sum_page(uint8_t *buf, uint32_t ppnum);
 
-extern vm_offset_t sectHIBB;
-extern unsigned long sectSizeHIB;
-extern vm_offset_t sectDATAB;
-extern unsigned long sectSizeDATA;
-#if defined(__i386__) || defined(__x86_64__)
-extern vm_offset_t sectINITPTB;
-#endif
-
-extern vm_offset_t gIOHibernateWakeMap;            // ppnum
-extern vm_size_t   gIOHibernateWakeMapSize;
+extern vm_offset_t segHIBB;
+extern unsigned long segSizeHIB;
+extern vm_offset_t segDATAB;
+extern unsigned long segSizeDATA;
 
+extern ppnum_t gIOHibernateHandoffPages[];
+extern uint32_t gIOHibernateHandoffPageCount;