]> git.saurik.com Git - apple/xnu.git/blobdiff - iokit/IOKit/IOPolledInterface.h
xnu-4903.221.2.tar.gz
[apple/xnu.git] / iokit / IOKit / IOPolledInterface.h
index 3b3a663ecc5aa14aace07060be5cc7197a40973c..f22e999fcd5bc1decdfadc531e0ddd34dc88f232 100644 (file)
@@ -54,7 +54,8 @@ enum
 enum
 {
     kIOPolledWrite = 1,
 enum
 {
     kIOPolledWrite = 1,
-    kIOPolledRead  = 2
+    kIOPolledRead  = 2,
+    kIOPolledFlush = 3
 };
 
 typedef void (*IOPolledCompletionAction)( void *   target,
 };
 
 typedef void (*IOPolledCompletionAction)( void *   target,
@@ -90,7 +91,9 @@ public:
 
     virtual IOReturn checkForWork(void) = 0;
 
 
     virtual IOReturn checkForWork(void) = 0;
 
-    OSMetaClassDeclareReservedUnused(IOPolledInterface, 0);
+    virtual IOReturn setEncryptionKey(const uint8_t * key, size_t keySize);
+
+    OSMetaClassDeclareReservedUsed(IOPolledInterface, 0);
     OSMetaClassDeclareReservedUnused(IOPolledInterface, 1);
     OSMetaClassDeclareReservedUnused(IOPolledInterface, 2);
     OSMetaClassDeclareReservedUnused(IOPolledInterface, 3);
     OSMetaClassDeclareReservedUnused(IOPolledInterface, 1);
     OSMetaClassDeclareReservedUnused(IOPolledInterface, 2);
     OSMetaClassDeclareReservedUnused(IOPolledInterface, 3);
@@ -116,9 +119,17 @@ public:
 #include <IOKit/IOTypes.h>
 #include <IOKit/IOHibernatePrivate.h>
 
 #include <IOKit/IOTypes.h>
 #include <IOKit/IOHibernatePrivate.h>
 
+// kern_open_file_for_direct_io() flags
 enum
 {
 enum
 {
-    kIOPolledFileSSD = 0x00000001
+    kIOPolledFileCreate    = 0x00000001,
+    kIOPolledFileHibernate = 0x00000002,
+};
+
+// kern_open_file_for_direct_io() oflags
+enum
+{
+    kIOPolledFileSSD    = 0x00000001
 };
 
 #if !defined(__cplusplus)
 };
 
 #if !defined(__cplusplus)
@@ -171,12 +182,13 @@ typedef struct IOPolledFileCryptVars IOPolledFileCryptVars;
 
 #if defined(__cplusplus)
 
 
 #if defined(__cplusplus)
 
-IOReturn IOPolledFileOpen(const char * filename, 
+IOReturn IOPolledFileOpen(const char * filename,
+                         uint32_t flags,
                          uint64_t setFileSize, uint64_t fsFreeSize,
                          void * write_file_addr, size_t write_file_len,
                          IOPolledFileIOVars ** fileVars,
                          OSData ** imagePath,
                          uint64_t setFileSize, uint64_t fsFreeSize,
                          void * write_file_addr, size_t write_file_len,
                          IOPolledFileIOVars ** fileVars,
                          OSData ** imagePath,
-                         uint8_t * volumeCryptKey, size_t keySize);
+                         uint8_t * volumeCryptKey, size_t keySize);
 
 IOReturn IOPolledFileClose(IOPolledFileIOVars ** pVars,
                           off_t write_offset, void * addr, size_t write_length,
 
 IOReturn IOPolledFileClose(IOPolledFileIOVars ** pVars,
                           off_t write_offset, void * addr, size_t write_length,
@@ -203,10 +215,15 @@ extern __C IOReturn IOPolledFileRead(IOPolledFileIOVars * vars,
                          uint8_t * bytes, IOByteCount size,
                          IOPolledFileCryptVars * cryptvars);
 
                          uint8_t * bytes, IOByteCount size,
                          IOPolledFileCryptVars * cryptvars);
 
+extern __C IOReturn IOPolledFileFlush(IOPolledFileIOVars * vars);
+
 extern __C IOReturn IOPolledFilePollersOpen(IOPolledFileIOVars * vars, uint32_t state, bool abortable);
 
 extern __C IOReturn IOPolledFilePollersClose(IOPolledFileIOVars * vars, uint32_t state);
 
 extern __C IOReturn IOPolledFilePollersOpen(IOPolledFileIOVars * vars, uint32_t state, bool abortable);
 
 extern __C IOReturn IOPolledFilePollersClose(IOPolledFileIOVars * vars, uint32_t state);
 
+extern __C IOReturn IOPolledFilePollersSetEncryptionKey(IOPolledFileIOVars * vars,
+                                   const uint8_t * key, size_t keySize);
+
 extern __C IOPolledFileIOVars * gCoreFileVars;
 
 #ifdef _SYS_CONF_H_
 extern __C IOPolledFileIOVars * gCoreFileVars;
 
 #ifdef _SYS_CONF_H_
@@ -216,7 +233,8 @@ __BEGIN_DECLS
 typedef void (*kern_get_file_extents_callback_t)(void * ref, uint64_t start, uint64_t size);
 
 struct kern_direct_file_io_ref_t *
 typedef void (*kern_get_file_extents_callback_t)(void * ref, uint64_t start, uint64_t size);
 
 struct kern_direct_file_io_ref_t *
-kern_open_file_for_direct_io(const char * name, boolean_t create_file,
+kern_open_file_for_direct_io(const char * name,
+                            uint32_t flags,
                             kern_get_file_extents_callback_t callback, 
                             void * callback_ref,
                              off_t set_file_size,
                             kern_get_file_extents_callback_t callback, 
                             void * callback_ref,
                              off_t set_file_size,