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