diff options
Diffstat (limited to 'os_darwin.h')
-rw-r--r-- | os_darwin.h | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/os_darwin.h b/os_darwin.h new file mode 100644 index 0000000..a6b31a9 --- /dev/null +++ b/os_darwin.h @@ -0,0 +1,80 @@ +/* + * os_generic.h + * + * Home page of code is: http://www.smartmontools.org + * + * Copyright (C) 2004-8 Geoff Keating <geoffk@geoffk.org> + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef OS_DARWIN_H_ +#define OS_DARWIN_H_ + +#define OS_DARWIN_H_CVSID "$Id: os_darwin.h 5073 2020-06-24 08:08:38Z samm2 $\n" + +#define kIOATABlockStorageDeviceClass "IOATABlockStorageDevice" + +// Isn't in 10.3.9? + +#ifndef kIOPropertySMARTCapableKey +#define kIOPropertySMARTCapableKey "SMART Capable" +#endif + +// NVMe definitions based on Xcode SDK, see NVMeSMARTLibExternal.h +#define kIOPropertyNVMeSMARTCapableKey "NVMe SMART Capable" + +// Constant to init driver +#define kIONVMeSMARTUserClientTypeID CFUUIDGetConstantUUIDWithBytes(NULL, \ + 0xAA, 0x0F, 0xA6, 0xF9, 0xC2, 0xD6, 0x45, 0x7F, 0xB1, 0x0B, \ + 0x59, 0xA1, 0x32, 0x53, 0x29, 0x2F) + +// Constant to use plugin interface +#define kIONVMeSMARTInterfaceID CFUUIDGetConstantUUIDWithBytes(NULL, \ + 0xcc, 0xd1, 0xdb, 0x19, 0xfd, 0x9a, 0x4d, 0xaf, 0xbf, 0x95, \ + 0x12, 0x45, 0x4b, 0x23, 0xa, 0xb6) + +typedef struct IONVMeSMARTInterface +{ + IUNKNOWN_C_GUTS; + + UInt16 version; + UInt16 revision; + + // NVMe smart data, returns nvme_smart_log structure + IOReturn ( *SMARTReadData )( void * interface, + struct nvme_smart_log * NVMeSMARTData ); + + // NVMe IdentifyData, returns nvme_id_ctrl per namespace + IOReturn ( *GetIdentifyData )( void * interface, + struct nvme_id_ctrl * NVMeIdentifyControllerStruct, + unsigned int ns ); + UInt64 reserved0; + UInt64 reserved1; + + // NumDWords Number of dwords for log page data, zero based. + IOReturn ( *GetLogPage )( void * interface, void * data, unsigned int logPageId, unsigned int numDWords); + + UInt64 reserved2; + UInt64 reserved3; + UInt64 reserved4; + UInt64 reserved5; + UInt64 reserved6; + UInt64 reserved7; + UInt64 reserved8; + UInt64 reserved9; + UInt64 reserved10; + UInt64 reserved11; + UInt64 reserved12; + UInt64 reserved13; + UInt64 reserved14; + UInt64 reserved15; + UInt64 reserved16; + UInt64 reserved17; + UInt64 reserved18; + UInt64 reserved19; + +} IONVMeSMARTInterface; + + +#endif /* OS_DARWIN_H_ */ |