1951a39d68df598db08dfced8b4707755864a0492Ying Wang/**************************************************************************** 2951a39d68df598db08dfced8b4707755864a0492Ying Wang **************************************************************************** 3951a39d68df598db08dfced8b4707755864a0492Ying Wang *** 4951a39d68df598db08dfced8b4707755864a0492Ying Wang *** This header was automatically generated from a Linux kernel header 5951a39d68df598db08dfced8b4707755864a0492Ying Wang *** of the same name, to make information necessary for userspace to 6951a39d68df598db08dfced8b4707755864a0492Ying Wang *** call into the kernel available to libc. It contains only constants, 7951a39d68df598db08dfced8b4707755864a0492Ying Wang *** structures, and macros generated from the original header, and thus, 8951a39d68df598db08dfced8b4707755864a0492Ying Wang *** contains no copyrightable information. 9951a39d68df598db08dfced8b4707755864a0492Ying Wang *** 10951a39d68df598db08dfced8b4707755864a0492Ying Wang **************************************************************************** 11951a39d68df598db08dfced8b4707755864a0492Ying Wang ****************************************************************************/ 12951a39d68df598db08dfced8b4707755864a0492Ying Wang#ifndef _LINUX_HDSMART_H 13951a39d68df598db08dfced8b4707755864a0492Ying Wang#define _LINUX_HDSMART_H 14951a39d68df598db08dfced8b4707755864a0492Ying Wang 15951a39d68df598db08dfced8b4707755864a0492Ying Wang#define OFFLINE_FULL_SCAN 0 16951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SHORT_SELF_TEST 1 17951a39d68df598db08dfced8b4707755864a0492Ying Wang#define EXTEND_SELF_TEST 2 18951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SHORT_CAPTIVE_SELF_TEST 129 19951a39d68df598db08dfced8b4707755864a0492Ying Wang#define EXTEND_CAPTIVE_SELF_TEST 130 20951a39d68df598db08dfced8b4707755864a0492Ying Wang 21951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef struct ata_smart_attribute_s { 22951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char id; 23951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned short status_flag; 24951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char normalized; 25951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char worse_normal; 26951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char raw[6]; 27951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char reserv; 28951a39d68df598db08dfced8b4707755864a0492Ying Wang} __attribute__ ((packed)) ata_smart_attribute_t; 29951a39d68df598db08dfced8b4707755864a0492Ying Wang 30951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef struct ata_smart_values_s { 31951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned short revnumber; 32951a39d68df598db08dfced8b4707755864a0492Ying Wang ata_smart_attribute_t vendor_attributes [30]; 33951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char offline_data_collection_status; 34951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char self_test_exec_status; 35951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned short total_time_to_complete_off_line; 36951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char vendor_specific_366; 37951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char offline_data_collection_capability; 38951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned short smart_capability; 39951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char errorlog_capability; 40951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char vendor_specific_371; 41951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char short_test_completion_time; 42951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char extend_test_completion_time; 43951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char reserved_374_385 [12]; 44951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char vendor_specific_386_509 [125]; 45951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char chksum; 46951a39d68df598db08dfced8b4707755864a0492Ying Wang} __attribute__ ((packed)) ata_smart_values_t; 47951a39d68df598db08dfced8b4707755864a0492Ying Wang 48951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef struct ata_smart_threshold_entry_s { 49951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char id; 50951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char normalized_threshold; 51951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char reserved[10]; 52951a39d68df598db08dfced8b4707755864a0492Ying Wang} __attribute__ ((packed)) ata_smart_threshold_entry_t; 53951a39d68df598db08dfced8b4707755864a0492Ying Wang 54951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef struct ata_smart_thresholds_s { 55951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned short revnumber; 56951a39d68df598db08dfced8b4707755864a0492Ying Wang ata_smart_threshold_entry_t thres_entries[30]; 57951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char reserved[149]; 58951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char chksum; 59951a39d68df598db08dfced8b4707755864a0492Ying Wang} __attribute__ ((packed)) ata_smart_thresholds_t; 60951a39d68df598db08dfced8b4707755864a0492Ying Wang 61951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef struct ata_smart_errorlog_command_struct_s { 62951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char devicecontrolreg; 63951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char featuresreg; 64951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char sector_count; 65951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char sector_number; 66951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char cylinder_low; 67951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char cylinder_high; 68951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char drive_head; 69951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char commandreg; 70951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned int timestamp; 71951a39d68df598db08dfced8b4707755864a0492Ying Wang} __attribute__ ((packed)) ata_smart_errorlog_command_struct_t; 72951a39d68df598db08dfced8b4707755864a0492Ying Wang 73951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef struct ata_smart_errorlog_error_struct_s { 74951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char error_condition; 75951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char extended_error[14]; 76951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char state; 77951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned short timestamp; 78951a39d68df598db08dfced8b4707755864a0492Ying Wang} __attribute__ ((packed)) ata_smart_errorlog_error_struct_t; 79951a39d68df598db08dfced8b4707755864a0492Ying Wang 80951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef struct ata_smart_errorlog_struct_s { 81951a39d68df598db08dfced8b4707755864a0492Ying Wang ata_smart_errorlog_command_struct_t commands[6]; 82951a39d68df598db08dfced8b4707755864a0492Ying Wang ata_smart_errorlog_error_struct_t error_struct; 83951a39d68df598db08dfced8b4707755864a0492Ying Wang} __attribute__ ((packed)) ata_smart_errorlog_struct_t; 84951a39d68df598db08dfced8b4707755864a0492Ying Wang 85951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef struct ata_smart_errorlog_s { 86951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char revnumber; 87951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char error_log_pointer; 88951a39d68df598db08dfced8b4707755864a0492Ying Wang ata_smart_errorlog_struct_t errorlog_struct[5]; 89951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned short ata_error_count; 90951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned short non_fatal_count; 91951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned short drive_timeout_count; 92951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char reserved[53]; 93951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char chksum; 94951a39d68df598db08dfced8b4707755864a0492Ying Wang} __attribute__ ((packed)) ata_smart_errorlog_t; 95951a39d68df598db08dfced8b4707755864a0492Ying Wang 96951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef struct ata_smart_selftestlog_struct_s { 97951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char selftestnumber; 98951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char selfteststatus; 99951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned short timestamp; 100951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char selftestfailurecheckpoint; 101951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned int lbafirstfailure; 102951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char vendorspecific[15]; 103951a39d68df598db08dfced8b4707755864a0492Ying Wang} __attribute__ ((packed)) ata_smart_selftestlog_struct_t; 104951a39d68df598db08dfced8b4707755864a0492Ying Wang 105951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef struct ata_smart_selftestlog_s { 106951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned short revnumber; 107951a39d68df598db08dfced8b4707755864a0492Ying Wang ata_smart_selftestlog_struct_t selftest_struct[21]; 108951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char vendorspecific[2]; 109951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char mostrecenttest; 110951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char resevered[2]; 111951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char chksum; 112951a39d68df598db08dfced8b4707755864a0492Ying Wang} __attribute__ ((packed)) ata_smart_selftestlog_t; 113951a39d68df598db08dfced8b4707755864a0492Ying Wang 114951a39d68df598db08dfced8b4707755864a0492Ying Wang#endif 115