Annotation of embedaddon/smartmontools/smartctl.h, revision 1.1
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
! 16: * (for example COPYING); if not, write to the Free
! 17: * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
! 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:
! 29: #define SMARTCTL_H_CVSID "$Id: smartctl.h 3196 2010-10-28 21:31:49Z chrfranke $\n"
! 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>