summaryrefslogtreecommitdiffstats
path: root/libc/kernel/common/linux/hdsmart.h
blob: 6cbc6538b55e26304fa4859358d532edd4ce87b9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
/****************************************************************************
 ****************************************************************************
 ***
 ***   This header was automatically generated from a Linux kernel header
 ***   of the same name, to make information necessary for userspace to
 ***   call into the kernel available to libc.  It contains only constants,
 ***   structures, and macros generated from the original header, and thus,
 ***   contains no copyrightable information.
 ***
 ****************************************************************************
 ****************************************************************************/
#ifndef _LINUX_HDSMART_H
#define _LINUX_HDSMART_H

#define OFFLINE_FULL_SCAN 0
#define SHORT_SELF_TEST 1
#define EXTEND_SELF_TEST 2
#define SHORT_CAPTIVE_SELF_TEST 129
#define EXTEND_CAPTIVE_SELF_TEST 130

typedef struct ata_smart_attribute_s {
 unsigned char id;
 unsigned short status_flag;
 unsigned char normalized;
 unsigned char worse_normal;
 unsigned char raw[6];
 unsigned char reserv;
} __attribute__ ((packed)) ata_smart_attribute_t;

typedef struct ata_smart_values_s {
 unsigned short revnumber;
 ata_smart_attribute_t vendor_attributes [30];
 unsigned char offline_data_collection_status;
 unsigned char self_test_exec_status;
 unsigned short total_time_to_complete_off_line;
 unsigned char vendor_specific_366;
 unsigned char offline_data_collection_capability;
 unsigned short smart_capability;
 unsigned char errorlog_capability;
 unsigned char vendor_specific_371;
 unsigned char short_test_completion_time;
 unsigned char extend_test_completion_time;
 unsigned char reserved_374_385 [12];
 unsigned char vendor_specific_386_509 [125];
 unsigned char chksum;
} __attribute__ ((packed)) ata_smart_values_t;

typedef struct ata_smart_threshold_entry_s {
 unsigned char id;
 unsigned char normalized_threshold;
 unsigned char reserved[10];
} __attribute__ ((packed)) ata_smart_threshold_entry_t;

typedef struct ata_smart_thresholds_s {
 unsigned short revnumber;
 ata_smart_threshold_entry_t thres_entries[30];
 unsigned char reserved[149];
 unsigned char chksum;
} __attribute__ ((packed)) ata_smart_thresholds_t;

typedef struct ata_smart_errorlog_command_struct_s {
 unsigned char devicecontrolreg;
 unsigned char featuresreg;
 unsigned char sector_count;
 unsigned char sector_number;
 unsigned char cylinder_low;
 unsigned char cylinder_high;
 unsigned char drive_head;
 unsigned char commandreg;
 unsigned int timestamp;
} __attribute__ ((packed)) ata_smart_errorlog_command_struct_t;

typedef struct ata_smart_errorlog_error_struct_s {
 unsigned char error_condition;
 unsigned char extended_error[14];
 unsigned char state;
 unsigned short timestamp;
} __attribute__ ((packed)) ata_smart_errorlog_error_struct_t;

typedef struct ata_smart_errorlog_struct_s {
 ata_smart_errorlog_command_struct_t commands[6];
 ata_smart_errorlog_error_struct_t error_struct;
} __attribute__ ((packed)) ata_smart_errorlog_struct_t;

typedef struct ata_smart_errorlog_s {
 unsigned char revnumber;
 unsigned char error_log_pointer;
 ata_smart_errorlog_struct_t errorlog_struct[5];
 unsigned short ata_error_count;
 unsigned short non_fatal_count;
 unsigned short drive_timeout_count;
 unsigned char reserved[53];
 unsigned char chksum;
} __attribute__ ((packed)) ata_smart_errorlog_t;

typedef struct ata_smart_selftestlog_struct_s {
 unsigned char selftestnumber;
 unsigned char selfteststatus;
 unsigned short timestamp;
 unsigned char selftestfailurecheckpoint;
 unsigned int lbafirstfailure;
 unsigned char vendorspecific[15];
} __attribute__ ((packed)) ata_smart_selftestlog_struct_t;

typedef struct ata_smart_selftestlog_s {
 unsigned short revnumber;
 ata_smart_selftestlog_struct_t selftest_struct[21];
 unsigned char vendorspecific[2];
 unsigned char mostrecenttest;
 unsigned char resevered[2];
 unsigned char chksum;
} __attribute__ ((packed)) ata_smart_selftestlog_t;

#endif