X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/3e170ce000f1506b7b5d2c5c7faec85ceabb573d..cb3231590a3c94ab4375e2228bd5e86b0cf1ad7e:/iokit/IOKit/IONVRAM.h diff --git a/iokit/IOKit/IONVRAM.h b/iokit/IOKit/IONVRAM.h index 31d5e0967..ef2e533e8 100644 --- a/iokit/IOKit/IONVRAM.h +++ b/iokit/IOKit/IONVRAM.h @@ -3,7 +3,7 @@ * Copyright (c) 2007-2012 Apple 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 @@ -12,10 +12,10 @@ * 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, @@ -23,7 +23,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@ */ @@ -45,139 +45,142 @@ #define MIN_SYNC_NOW_INTERVAL 15*60 /* Minimum 15 Minutes interval mandated */ enum { - kIODTNVRAMImageSize = 0x2000, - kIODTNVRAMXPRAMSize = 0x0100, - kIODTNVRAMNameRegistrySize = 0x0400 + kIODTNVRAMImageSize = 0x2000, + kIODTNVRAMXPRAMSize = 0x0100, + kIODTNVRAMNameRegistrySize = 0x0400 }; enum { - kOFVariableTypeBoolean = 1, - kOFVariableTypeNumber, - kOFVariableTypeString, - kOFVariableTypeData + kOFVariableTypeBoolean = 1, + kOFVariableTypeNumber, + kOFVariableTypeString, + kOFVariableTypeData }; enum { - kOFVariablePermRootOnly = 0, - kOFVariablePermUserRead, - kOFVariablePermUserWrite, - kOFVariablePermKernelOnly + kOFVariablePermRootOnly = 0, + kOFVariablePermUserRead, + kOFVariablePermUserWrite, + kOFVariablePermKernelOnly }; #ifdef __cplusplus class IODTNVRAM : public IOService { - OSDeclareDefaultStructors(IODTNVRAM); - + OSDeclareDefaultStructors(IODTNVRAM); + private: - IONVRAMController *_nvramController; - const OSSymbol *_registryPropertiesKey; - UInt8 *_nvramImage; - __unused bool _nvramImageDirty; - UInt32 _ofPartitionOffset; - UInt32 _ofPartitionSize; - UInt8 *_ofImage; - __unused bool _ofImageDirty; - OSDictionary *_ofDict; - OSDictionary *_nvramPartitionOffsets; - OSDictionary *_nvramPartitionLengths; - UInt32 _resv0 __unused; - UInt32 _resv1 __unused; - IOLock *_ofLock; - UInt32 _resv2 __unused; - UInt32 _resv3 __unused; - UInt8 *_resv4 __unused; - UInt32 _piPartitionOffset; - UInt32 _piPartitionSize; - UInt8 *_piImage; - bool _systemPaniced; - SInt32 _lastDeviceSync; - bool _freshInterval; - bool _isProxied; - - virtual UInt8 calculatePartitionChecksum(UInt8 *partitionHeader); - virtual IOReturn initOFVariables(void); + IONVRAMController *_nvramController; + const OSSymbol *_registryPropertiesKey; + UInt8 *_nvramImage; + __unused bool _nvramImageDirty; + UInt32 _ofPartitionOffset; + UInt32 _ofPartitionSize; + UInt8 *_ofImage; + __unused bool _ofImageDirty; + OSDictionary *_ofDict; + OSDictionary *_nvramPartitionOffsets; + OSDictionary *_nvramPartitionLengths; + UInt32 _resv0 __unused; + UInt32 _resv1 __unused; + IOLock *_ofLock; + UInt32 _resv2 __unused; + UInt32 _resv3 __unused; + UInt8 *_resv4 __unused; + UInt32 _piPartitionOffset; + UInt32 _piPartitionSize; + UInt8 *_piImage; + bool _systemPaniced; + SInt32 _lastDeviceSync; + bool _freshInterval; + bool _isProxied; + + virtual UInt8 calculatePartitionChecksum(UInt8 *partitionHeader); + virtual IOReturn initOFVariables(void); public: - virtual IOReturn syncOFVariables(void); + virtual IOReturn syncOFVariables(void); private: - virtual UInt32 getOFVariableType(const OSSymbol *propSymbol) const; - virtual UInt32 getOFVariablePerm(const OSSymbol *propSymbol) const; - virtual bool getOWVariableInfo(UInt32 variableNumber, const OSSymbol **propSymbol, - UInt32 *propType, UInt32 *propOffset); - virtual bool convertPropToObject(UInt8 *propName, UInt32 propNameLength, - UInt8 *propData, UInt32 propDataLength, - const OSSymbol **propSymbol, - OSObject **propObject); - virtual bool convertObjectToProp(UInt8 *buffer, UInt32 *length, - const OSSymbol *propSymbol, OSObject *propObject); - virtual UInt16 generateOWChecksum(UInt8 *buffer); - virtual bool validateOWChecksum(UInt8 *buffer); - virtual void updateOWBootArgs(const OSSymbol *key, OSObject *value); - virtual bool searchNVRAMProperty(struct IONVRAMDescriptor *hdr, - UInt32 *where); - - virtual IOReturn readNVRAMPropertyType0(IORegistryEntry *entry, - const OSSymbol **name, - OSData **value); - virtual IOReturn writeNVRAMPropertyType0(IORegistryEntry *entry, - const OSSymbol *name, - OSData * value); - - virtual OSData *unescapeBytesToData(const UInt8 *bytes, UInt32 length); - virtual OSData *escapeDataToData(OSData * value); - - virtual IOReturn readNVRAMPropertyType1(IORegistryEntry *entry, - const OSSymbol **name, - OSData **value); - virtual IOReturn writeNVRAMPropertyType1(IORegistryEntry *entry, - const OSSymbol *name, - OSData *value); - - void initNVRAMImage(void); - void initProxyData(void); - + virtual UInt32 getOFVariableType(const OSSymbol *propSymbol) const; + virtual UInt32 getOFVariablePerm(const OSSymbol *propSymbol) const; + virtual bool getOWVariableInfo(UInt32 variableNumber, const OSSymbol **propSymbol, + UInt32 *propType, UInt32 *propOffset); + virtual bool convertPropToObject(UInt8 *propName, UInt32 propNameLength, + UInt8 *propData, UInt32 propDataLength, + LIBKERN_RETURNS_RETAINED const OSSymbol **propSymbol, + LIBKERN_RETURNS_RETAINED OSObject **propObject); + virtual bool convertObjectToProp(UInt8 *buffer, UInt32 *length, + const OSSymbol *propSymbol, OSObject *propObject); + virtual UInt16 generateOWChecksum(UInt8 *buffer); + virtual bool validateOWChecksum(UInt8 *buffer); + virtual void updateOWBootArgs(const OSSymbol *key, OSObject *value); + virtual bool searchNVRAMProperty(struct IONVRAMDescriptor *hdr, + UInt32 *where); + + virtual IOReturn readNVRAMPropertyType0(IORegistryEntry *entry, + const OSSymbol **name, + OSData **value); + virtual IOReturn writeNVRAMPropertyType0(IORegistryEntry *entry, + const OSSymbol *name, + OSData * value); + + virtual OSData *unescapeBytesToData(const UInt8 *bytes, UInt32 length); + virtual OSData *escapeDataToData(OSData * value); + + virtual IOReturn readNVRAMPropertyType1(IORegistryEntry *entry, + const OSSymbol **name, + OSData **value); + virtual IOReturn writeNVRAMPropertyType1(IORegistryEntry *entry, + const OSSymbol *name, + OSData *value); + + void initNVRAMImage(void); + void initProxyData(void); + IOReturn syncVariables(void); + IOReturn setPropertyInternal(const OSSymbol *aKey, OSObject *anObject); + + public: - virtual bool init(IORegistryEntry *old, const IORegistryPlane *plane) APPLE_KEXT_OVERRIDE; - - virtual void registerNVRAMController(IONVRAMController *nvram); - - virtual void sync(void); - - virtual bool serializeProperties(OSSerialize *s) const APPLE_KEXT_OVERRIDE; - virtual OSObject *copyProperty(const OSSymbol *aKey) const APPLE_KEXT_OVERRIDE; - virtual OSObject *copyProperty(const char *aKey) const APPLE_KEXT_OVERRIDE; - virtual OSObject *getProperty(const OSSymbol *aKey) const APPLE_KEXT_OVERRIDE; - virtual OSObject *getProperty(const char *aKey) const APPLE_KEXT_OVERRIDE; - virtual bool setProperty(const OSSymbol *aKey, OSObject *anObject) APPLE_KEXT_OVERRIDE; - virtual void removeProperty(const OSSymbol *aKey) APPLE_KEXT_OVERRIDE; - virtual IOReturn setProperties(OSObject *properties) APPLE_KEXT_OVERRIDE; - - virtual IOReturn readXPRAM(IOByteCount offset, UInt8 *buffer, - IOByteCount length); - virtual IOReturn writeXPRAM(IOByteCount offset, UInt8 *buffer, - IOByteCount length); - - virtual IOReturn readNVRAMProperty(IORegistryEntry *entry, - const OSSymbol **name, - OSData **value); - virtual IOReturn writeNVRAMProperty(IORegistryEntry *entry, - const OSSymbol *name, - OSData *value); - - virtual OSDictionary *getNVRAMPartitions(void); - - virtual IOReturn readNVRAMPartition(const OSSymbol *partitionID, - IOByteCount offset, UInt8 *buffer, - IOByteCount length); - - virtual IOReturn writeNVRAMPartition(const OSSymbol *partitionID, - IOByteCount offset, UInt8 *buffer, - IOByteCount length); - - virtual IOByteCount savePanicInfo(UInt8 *buffer, IOByteCount length); - virtual bool safeToSync(void); - void syncInternal(bool rateLimit); + virtual bool init(IORegistryEntry *old, const IORegistryPlane *plane) APPLE_KEXT_OVERRIDE; + + virtual void registerNVRAMController(IONVRAMController *nvram); + + virtual void sync(void); + + virtual bool serializeProperties(OSSerialize *s) const APPLE_KEXT_OVERRIDE; + virtual OSObject *copyProperty(const OSSymbol *aKey) const APPLE_KEXT_OVERRIDE; + virtual OSObject *copyProperty(const char *aKey) const APPLE_KEXT_OVERRIDE; + virtual OSObject *getProperty(const OSSymbol *aKey) const APPLE_KEXT_OVERRIDE; + virtual OSObject *getProperty(const char *aKey) const APPLE_KEXT_OVERRIDE; + virtual bool setProperty(const OSSymbol *aKey, OSObject *anObject) APPLE_KEXT_OVERRIDE; + virtual void removeProperty(const OSSymbol *aKey) APPLE_KEXT_OVERRIDE; + virtual IOReturn setProperties(OSObject *properties) APPLE_KEXT_OVERRIDE; + + virtual IOReturn readXPRAM(IOByteCount offset, UInt8 *buffer, + IOByteCount length); + virtual IOReturn writeXPRAM(IOByteCount offset, UInt8 *buffer, + IOByteCount length); + + virtual IOReturn readNVRAMProperty(IORegistryEntry *entry, + const OSSymbol **name, + OSData **value); + virtual IOReturn writeNVRAMProperty(IORegistryEntry *entry, + const OSSymbol *name, + OSData *value); + + virtual OSDictionary *getNVRAMPartitions(void); + + virtual IOReturn readNVRAMPartition(const OSSymbol *partitionID, + IOByteCount offset, UInt8 *buffer, + IOByteCount length); + + virtual IOReturn writeNVRAMPartition(const OSSymbol *partitionID, + IOByteCount offset, UInt8 *buffer, + IOByteCount length); + + virtual IOByteCount savePanicInfo(UInt8 *buffer, IOByteCount length); + virtual bool safeToSync(void); + void syncInternal(bool rateLimit); }; #endif /* __cplusplus */