X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/3e170ce000f1506b7b5d2c5c7faec85ceabb573d..d9a64523371fa019c4575bb400cbbc3a50ac9903:/iokit/IOKit/IOPolledInterface.h diff --git a/iokit/IOKit/IOPolledInterface.h b/iokit/IOKit/IOPolledInterface.h index 584484eab..f22e999fc 100644 --- a/iokit/IOKit/IOPolledInterface.h +++ b/iokit/IOKit/IOPolledInterface.h @@ -31,12 +31,15 @@ enum { - kIOPolledPreflightState = 1, - kIOPolledBeforeSleepState = 2, - kIOPolledAfterSleepState = 3, - kIOPolledPostflightState = 4, + kIOPolledPreflightState = 1, + kIOPolledBeforeSleepState = 2, + kIOPolledAfterSleepState = 3, + kIOPolledPostflightState = 4, kIOPolledPreflightCoreDumpState = 5, + kIOPolledPostflightCoreDumpState = 6, + + kIOPolledBeforeSleepStateAborted = 7, }; #if defined(__cplusplus) @@ -51,7 +54,8 @@ enum enum { kIOPolledWrite = 1, - kIOPolledRead = 2 + kIOPolledRead = 2, + kIOPolledFlush = 3 }; typedef void (*IOPolledCompletionAction)( void * target, @@ -87,7 +91,9 @@ public: 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); @@ -113,9 +119,17 @@ public: #include #include +// kern_open_file_for_direct_io() flags +enum +{ + kIOPolledFileCreate = 0x00000001, + kIOPolledFileHibernate = 0x00000002, +}; + +// kern_open_file_for_direct_io() oflags enum { - kIOPolledFileSSD = 0x00000001 + kIOPolledFileSSD = 0x00000001 }; #if !defined(__cplusplus) @@ -168,12 +182,13 @@ typedef struct IOPolledFileCryptVars IOPolledFileCryptVars; #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, - 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, @@ -200,10 +215,15 @@ extern __C IOReturn IOPolledFileRead(IOPolledFileIOVars * vars, 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 IOPolledFilePollersSetEncryptionKey(IOPolledFileIOVars * vars, + const uint8_t * key, size_t keySize); + extern __C IOPolledFileIOVars * gCoreFileVars; #ifdef _SYS_CONF_H_ @@ -213,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 * -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,