Annotation of embedaddon/smartmontools/smartctl.h, revision 1.1.1.2
1.1 misho 1: /*
2: * smartctl.h
3: *
4: * Home page of code is: http://smartmontools.sourceforge.net
5: *
6: * Copyright (C) 2002-10 Bruce Allen <smartmontools-support@lists.sourceforge.net>
7: * Copyright (C) 2008-10 Christian Franke <smartmontools-support@lists.sourceforge.net>
8: * Copyright (C) 2000 Michael Cornwell <cornwell@acm.org>
9: *
10: * This program is free software; you can redistribute it and/or modify
11: * it under the terms of the GNU General Public License as published by
12: * the Free Software Foundation; either version 2, or (at your option)
13: * any later version.
14: *
15: * You should have received a copy of the GNU General Public License
1.1.1.2 ! misho 16: * (for example COPYING); if not, write to the Free Software Foundation,
! 17: * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
1.1 misho 18: *
19: * This code was originally developed as a Senior Thesis by Michael Cornwell
20: * at the Concurrent Systems Laboratory (now part of the Storage Systems
21: * Research Center), Jack Baskin School of Engineering, University of
22: * California, Santa Cruz. http://ssrc.soe.ucsc.edu/
23: *
24: */
25:
26: #ifndef SMARTCTL_H_
27: #define SMARTCTL_H_
28:
1.1.1.2 ! misho 29: #define SMARTCTL_H_CVSID "$Id: smartctl.h 3727 2012-12-13 17:23:06Z samm2 $\n"
1.1 misho 30:
31: // Return codes (bitmask)
32:
33: // command line did not parse, or internal error occured in smartctl
34: #define FAILCMD (0x01<<0)
35:
36: // device open failed
37: #define FAILDEV (0x01<<1)
38:
39: // device is in low power mode and -n option requests to exit
40: #define FAILPOWER (0x01<<1)
41:
42: // read device identity (ATA only) failed
43: #define FAILID (0x01<<1)
44:
45: // smart command failed, or ATA identify device structure missing information
46: #define FAILSMART (0x01<<2)
47:
48: // SMART STATUS returned FAILURE
49: #define FAILSTATUS (0x01<<3)
50:
51: // Attributes found <= threshold with prefail=1
52: #define FAILATTR (0x01<<4)
53:
54: // SMART STATUS returned GOOD but age attributes failed or prefail
55: // attributes have failed in the past
56: #define FAILAGE (0x01<<5)
57:
58: // Device had Errors in the error log
59: #define FAILERR (0x01<<6)
60:
61: // Device had Errors in the self-test log
62: #define FAILLOG (0x01<<7)
63:
64: // Classes of SMART commands. Here 'mandatory' means "Required by the
65: // ATA/ATAPI-5 Specification if the device implements the S.M.A.R.T.
66: // command set." The 'mandatory' S.M.A.R.T. commands are: (1)
67: // Enable/Disable Attribute Autosave, (2) Enable/Disable S.M.A.R.T.,
68: // and (3) S.M.A.R.T. Return Status. All others are optional.
69: enum failure_type {
70: OPTIONAL_CMD,
71: MANDATORY_CMD,
72: };
73:
74: // Globals to set failuretest() policy
75: extern bool failuretest_conservative;
76: extern unsigned char failuretest_permissive;
77:
78: // Compares failure type to policy in effect, and either exits or
79: // simply returns to the calling routine.
80: void failuretest(failure_type type, int returnvalue);
81:
82: // Globals to control printing
83: extern bool printing_is_switchable;
84: extern bool printing_is_off;
85:
86: // Printing control functions
87: inline void print_on()
88: {
89: if (printing_is_switchable)
90: printing_is_off = false;
91: }
92: inline void print_off()
93: {
94: if (printing_is_switchable)
95: printing_is_off = true;
96: }
97:
98: #endif
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>