1f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner/**************************************************************************** 2f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner **************************************************************************** 3f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner *** 4f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner *** This header was automatically generated from a Linux kernel header 5f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner *** of the same name, to make information necessary for userspace to 6f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner *** call into the kernel available to libc. It contains only constants, 7f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner *** structures, and macros generated from the original header, and thus, 8f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner *** contains no copyrightable information. 9f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner *** 10f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner **************************************************************************** 11f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner ****************************************************************************/ 12f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner#ifndef _LINUX_HDSMART_H 13f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner#define _LINUX_HDSMART_H 14f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner 15f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner#define OFFLINE_FULL_SCAN 0 16f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner#define SHORT_SELF_TEST 1 17f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner#define EXTEND_SELF_TEST 2 18f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner#define SHORT_CAPTIVE_SELF_TEST 129 19f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner#define EXTEND_CAPTIVE_SELF_TEST 130 20f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner 21f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turnertypedef struct ata_smart_attribute_s { 22f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned char id; 23f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned short status_flag; 24f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned char normalized; 25f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned char worse_normal; 26f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned char raw[6]; 27f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned char reserv; 28f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner} __attribute__ ((packed)) ata_smart_attribute_t; 29f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner 30f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turnertypedef struct ata_smart_values_s { 31f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned short revnumber; 32f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner ata_smart_attribute_t vendor_attributes [30]; 33f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned char offline_data_collection_status; 34f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned char self_test_exec_status; 35f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned short total_time_to_complete_off_line; 36f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned char vendor_specific_366; 37f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned char offline_data_collection_capability; 38f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned short smart_capability; 39f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned char errorlog_capability; 40f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned char vendor_specific_371; 41f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned char short_test_completion_time; 42f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned char extend_test_completion_time; 43f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned char reserved_374_385 [12]; 44f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned char vendor_specific_386_509 [125]; 45f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned char chksum; 46f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner} __attribute__ ((packed)) ata_smart_values_t; 47f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner 48f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turnertypedef struct ata_smart_threshold_entry_s { 49f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned char id; 50f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned char normalized_threshold; 51f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned char reserved[10]; 52f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner} __attribute__ ((packed)) ata_smart_threshold_entry_t; 53f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner 54f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turnertypedef struct ata_smart_thresholds_s { 55f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned short revnumber; 56f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner ata_smart_threshold_entry_t thres_entries[30]; 57f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned char reserved[149]; 58f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned char chksum; 59f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner} __attribute__ ((packed)) ata_smart_thresholds_t; 60f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner 61f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turnertypedef struct ata_smart_errorlog_command_struct_s { 62f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned char devicecontrolreg; 63f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned char featuresreg; 64f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned char sector_count; 65f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned char sector_number; 66f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned char cylinder_low; 67f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned char cylinder_high; 68f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned char drive_head; 69f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned char commandreg; 70f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned int timestamp; 71f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner} __attribute__ ((packed)) ata_smart_errorlog_command_struct_t; 72f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner 73f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turnertypedef struct ata_smart_errorlog_error_struct_s { 74f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned char error_condition; 75f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned char extended_error[14]; 76f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned char state; 77f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned short timestamp; 78f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner} __attribute__ ((packed)) ata_smart_errorlog_error_struct_t; 79f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner 80f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turnertypedef struct ata_smart_errorlog_struct_s { 81f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner ata_smart_errorlog_command_struct_t commands[6]; 82f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner ata_smart_errorlog_error_struct_t error_struct; 83f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner} __attribute__ ((packed)) ata_smart_errorlog_struct_t; 84f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner 85f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turnertypedef struct ata_smart_errorlog_s { 86f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned char revnumber; 87f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned char error_log_pointer; 88f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner ata_smart_errorlog_struct_t errorlog_struct[5]; 89f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned short ata_error_count; 90f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned short non_fatal_count; 91f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned short drive_timeout_count; 92f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned char reserved[53]; 93f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned char chksum; 94f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner} __attribute__ ((packed)) ata_smart_errorlog_t; 95f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner 96f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turnertypedef struct ata_smart_selftestlog_struct_s { 97f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned char selftestnumber; 98f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned char selfteststatus; 99f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned short timestamp; 100f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned char selftestfailurecheckpoint; 101f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned int lbafirstfailure; 102f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned char vendorspecific[15]; 103f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner} __attribute__ ((packed)) ata_smart_selftestlog_struct_t; 104f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner 105f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turnertypedef struct ata_smart_selftestlog_s { 106f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned short revnumber; 107f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner ata_smart_selftestlog_struct_t selftest_struct[21]; 108f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned char vendorspecific[2]; 109f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned char mostrecenttest; 110f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned char resevered[2]; 111f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner unsigned char chksum; 112f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner} __attribute__ ((packed)) ata_smart_selftestlog_t; 113f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner 114f13db29e2847a3760e403332ea3243915e0f4bf3David 'Digit' Turner#endif 115