16ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh/****************************************************************************
26ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ****************************************************************************
36ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ***
46ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ***   This header was automatically generated from a Linux kernel header
56ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ***   of the same name, to make information necessary for userspace to
66ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ***   call into the kernel available to libc.  It contains only constants,
76ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ***   structures, and macros generated from the original header, and thus,
86ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ***   contains no copyrightable information.
96ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ***
106ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ****************************************************************************
116ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ****************************************************************************/
126ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#ifndef _LINUX_HDSMART_H
136ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define _LINUX_HDSMART_H
146ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
156ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define OFFLINE_FULL_SCAN 0
166ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define SHORT_SELF_TEST 1
176ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define EXTEND_SELF_TEST 2
186ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define SHORT_CAPTIVE_SELF_TEST 129
196ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define EXTEND_CAPTIVE_SELF_TEST 130
206ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
216ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehtypedef struct ata_smart_attribute_s {
226ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char id;
236ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned short status_flag;
246ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char normalized;
256ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char worse_normal;
266ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char raw[6];
276ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char reserv;
286ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh} __attribute__ ((packed)) ata_smart_attribute_t;
296ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
306ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehtypedef struct ata_smart_values_s {
316ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned short revnumber;
326ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ata_smart_attribute_t vendor_attributes [30];
336ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char offline_data_collection_status;
346ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char self_test_exec_status;
356ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned short total_time_to_complete_off_line;
366ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char vendor_specific_366;
376ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char offline_data_collection_capability;
386ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned short smart_capability;
396ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char errorlog_capability;
406ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char vendor_specific_371;
416ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char short_test_completion_time;
426ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char extend_test_completion_time;
436ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char reserved_374_385 [12];
446ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char vendor_specific_386_509 [125];
456ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char chksum;
466ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh} __attribute__ ((packed)) ata_smart_values_t;
476ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
486ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehtypedef struct ata_smart_threshold_entry_s {
496ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char id;
506ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char normalized_threshold;
516ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char reserved[10];
526ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh} __attribute__ ((packed)) ata_smart_threshold_entry_t;
536ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
546ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehtypedef struct ata_smart_thresholds_s {
556ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned short revnumber;
566ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ata_smart_threshold_entry_t thres_entries[30];
576ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char reserved[149];
586ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char chksum;
596ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh} __attribute__ ((packed)) ata_smart_thresholds_t;
606ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
616ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehtypedef struct ata_smart_errorlog_command_struct_s {
626ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char devicecontrolreg;
636ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char featuresreg;
646ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char sector_count;
656ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char sector_number;
666ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char cylinder_low;
676ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char cylinder_high;
686ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char drive_head;
696ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char commandreg;
706ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned int timestamp;
716ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh} __attribute__ ((packed)) ata_smart_errorlog_command_struct_t;
726ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
736ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehtypedef struct ata_smart_errorlog_error_struct_s {
746ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char error_condition;
756ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char extended_error[14];
766ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char state;
776ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned short timestamp;
786ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh} __attribute__ ((packed)) ata_smart_errorlog_error_struct_t;
796ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
806ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehtypedef struct ata_smart_errorlog_struct_s {
816ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ata_smart_errorlog_command_struct_t commands[6];
826ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ata_smart_errorlog_error_struct_t error_struct;
836ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh} __attribute__ ((packed)) ata_smart_errorlog_struct_t;
846ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
856ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehtypedef struct ata_smart_errorlog_s {
866ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char revnumber;
876ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char error_log_pointer;
886ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ata_smart_errorlog_struct_t errorlog_struct[5];
896ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned short ata_error_count;
906ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned short non_fatal_count;
916ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned short drive_timeout_count;
926ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char reserved[53];
936ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char chksum;
946ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh} __attribute__ ((packed)) ata_smart_errorlog_t;
956ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
966ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehtypedef struct ata_smart_selftestlog_struct_s {
976ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char selftestnumber;
986ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char selfteststatus;
996ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned short timestamp;
1006ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char selftestfailurecheckpoint;
1016ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned int lbafirstfailure;
1026ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char vendorspecific[15];
1036ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh} __attribute__ ((packed)) ata_smart_selftestlog_struct_t;
1046ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
1056ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehtypedef struct ata_smart_selftestlog_s {
1066ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned short revnumber;
1076ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ata_smart_selftestlog_struct_t selftest_struct[21];
1086ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char vendorspecific[2];
1096ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char mostrecenttest;
1106ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char resevered[2];
1116ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char chksum;
1126ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh} __attribute__ ((packed)) ata_smart_selftestlog_t;
1136ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
1146ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#endif
115