Diff for /embedaddon/smartmontools/atacmds.h between versions 1.1.1.2 and 1.1.1.3

version 1.1.1.2, 2012/10/09 09:36:45 version 1.1.1.3, 2013/07/22 01:17:35
Line 13 Line 13
  * any later version.   * any later version.
  *   *
  * You should have received a copy of the GNU General Public License   * You should have received a copy of the GNU General Public License
 * (for example COPYING); if not, write to the Free * (for example COPYING); If not, see <http://www.gnu.org/licenses/>.
 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 
  *   *
  * This code was originally developed as a Senior Thesis by Michael Cornwell   * This code was originally developed as a Senior Thesis by Michael Cornwell
  * at the Concurrent Systems Laboratory (now part of the Storage Systems   * at the Concurrent Systems Laboratory (now part of the Storage Systems
Line 67  typedef enum { Line 66  typedef enum {
   WRITE_LOG    WRITE_LOG
 } smart_command_set;  } smart_command_set;
   
 // Possible values for fix_firmwarebug.  
 enum {  
   FIX_NOTSPECIFIED = 0,  
   FIX_NONE,  
   FIX_SAMSUNG,  
   FIX_SAMSUNG2,  
   FIX_SAMSUNG3  
 };  
   
 // ATA Specification Command Register Values (Commands)  // ATA Specification Command Register Values (Commands)
 #define ATA_CHECK_POWER_MODE            0xe5  #define ATA_CHECK_POWER_MODE            0xe5
Line 727  class ata_vendor_attr_defs (private) Line 718  class ata_vendor_attr_defs (private)
 };  };
   
   
   // Possible values for firmwarebugs
   enum firmwarebug_t {
     BUG_NONE = 0,
     BUG_NOLOGDIR,
     BUG_SAMSUNG,
     BUG_SAMSUNG2,
     BUG_SAMSUNG3,
     BUG_XERRORLBA
   };
   
   // Set of firmware bugs
   class firmwarebug_defs
   {
   public:
     firmwarebug_defs()
       : m_bugs(0) { }
   
     bool is_set(firmwarebug_t bug) const
       { return !!(m_bugs & (1 << bug)); }
   
     void set(firmwarebug_t bug)
       { m_bugs |= (1 << bug); }
   
     void set(firmwarebug_defs bugs)
       { m_bugs |= bugs.m_bugs; }
   
   private:
     unsigned m_bugs;
   };
   
   
 // Print ATA debug messages?  // Print ATA debug messages?
 extern unsigned char ata_debugmode;  extern unsigned char ata_debugmode;
   
Line 734  extern unsigned char ata_debugmode; Line 756  extern unsigned char ata_debugmode;
 extern bool dont_print_serial_number;  extern bool dont_print_serial_number;
   
 // Get information from drive  // Get information from drive
int ata_read_identity(ata_device * device, ata_identify_device * buf, bool fix_swapped_id);int ata_read_identity(ata_device * device, ata_identify_device * buf, bool fix_swapped_id,
                       unsigned char * raw_buf = 0);
 int ataCheckPowerMode(ata_device * device);  int ataCheckPowerMode(ata_device * device);
   
 // Issue a no-data ATA command with optional sector count register value  // Issue a no-data ATA command with optional sector count register value
Line 747  bool ata_set_features(ata_device * device, unsigned ch Line 770  bool ata_set_features(ata_device * device, unsigned ch
 int ataReadSmartValues(ata_device * device,struct ata_smart_values *);  int ataReadSmartValues(ata_device * device,struct ata_smart_values *);
 int ataReadSmartThresholds(ata_device * device, struct ata_smart_thresholds_pvt *);  int ataReadSmartThresholds(ata_device * device, struct ata_smart_thresholds_pvt *);
 int ataReadErrorLog (ata_device * device, ata_smart_errorlog *data,  int ataReadErrorLog (ata_device * device, ata_smart_errorlog *data,
                     unsigned char fix_firmwarebug);                     firmwarebug_defs firmwarebugs);
 int ataReadSelfTestLog(ata_device * device, ata_smart_selftestlog * data,  int ataReadSelfTestLog(ata_device * device, ata_smart_selftestlog * data,
                       unsigned char fix_firmwarebug);                       firmwarebug_defs firmwarebugs);
 int ataReadSelectiveSelfTestLog(ata_device * device, struct ata_selective_self_test_log *data);  int ataReadSelectiveSelfTestLog(ata_device * device, struct ata_selective_self_test_log *data);
 int ataSetSmartThresholds(ata_device * device, struct ata_smart_thresholds_pvt *);  
 int ataReadLogDirectory(ata_device * device, ata_smart_log_directory *, bool gpl);  int ataReadLogDirectory(ata_device * device, ata_smart_log_directory *, bool gpl);
   
 // Read GP Log page(s)  // Read GP Log page(s)
Line 763  bool ataReadSmartLog(ata_device * device, unsigned cha Line 785  bool ataReadSmartLog(ata_device * device, unsigned cha
                      void * data, unsigned nsectors);                       void * data, unsigned nsectors);
 // Read SMART Extended Comprehensive Error Log  // Read SMART Extended Comprehensive Error Log
 bool ataReadExtErrorLog(ata_device * device, ata_smart_exterrlog * log,  bool ataReadExtErrorLog(ata_device * device, ata_smart_exterrlog * log,
                        unsigned nsectors);                        unsigned nsectors, firmwarebug_defs firwarebugs);
 // Read SMART Extended Self-test Log  // Read SMART Extended Self-test Log
 bool ataReadExtSelfTestLog(ata_device * device, ata_smart_extselftestlog * log,  bool ataReadExtSelfTestLog(ata_device * device, ata_smart_extselftestlog * log,
                            unsigned nsectors);                             unsigned nsectors);
Line 799  int ataWriteSelectiveSelfTestLog(ata_device * device,  Line 821  int ataWriteSelectiveSelfTestLog(ata_device * device, 
                                  const ata_smart_values * sv, uint64_t num_sectors,                                   const ata_smart_values * sv, uint64_t num_sectors,
                                  const ata_selective_selftest_args * prev_spans = 0);                                   const ata_selective_selftest_args * prev_spans = 0);
   
 // Returns the latest compatibility of ATA/ATAPI Version the device  
 // supports. Returns -1 if Version command is not supported  
 int ataVersionInfo(const char ** description, const ata_identify_device * drive, unsigned short * minor);  
   
 // Get World Wide Name (WWN) fields.  // Get World Wide Name (WWN) fields.
 // Return NAA field or -1 if WWN is unsupported.  // Return NAA field or -1 if WWN is unsupported.
 int ata_get_wwn(const ata_identify_device * id, unsigned & oui, uint64_t & unique_id);  int ata_get_wwn(const ata_identify_device * id, unsigned & oui, uint64_t & unique_id);
   
   // Get nominal media rotation rate.
   // Returns: 0 = not reported, 1 = SSD, >1 = HDD rpm, < 0 = -(Unknown value)
   int ata_get_rotation_rate(const ata_identify_device * id);
   
 // If SMART supported, this is guaranteed to return 1 if SMART is enabled, else 0.  // If SMART supported, this is guaranteed to return 1 if SMART is enabled, else 0.
 int ataDoesSmartWork(ata_device * device);  int ataDoesSmartWork(ata_device * device);
   
Line 883  std::string ata_format_attr_raw_value(const ata_smart_ Line 905  std::string ata_format_attr_raw_value(const ata_smart_
   
 // Get attribute name  // Get attribute name
 std::string ata_get_smart_attr_name(unsigned char id,  std::string ata_get_smart_attr_name(unsigned char id,
                                    const ata_vendor_attr_defs & defs);                                    const ata_vendor_attr_defs & defs,
                                     int rpm = 0);
   
 // External handler function, for when a checksum is not correct.  Can  // External handler function, for when a checksum is not correct.  Can
 // simply return if no action is desired, or can print error messages  // simply return if no action is desired, or can print error messages
Line 899  int ata_find_attr_index(unsigned char id, const ata_sm Line 922  int ata_find_attr_index(unsigned char id, const ata_sm
 unsigned char ata_return_temperature_value(const ata_smart_values * data, const ata_vendor_attr_defs & defs);  unsigned char ata_return_temperature_value(const ata_smart_values * data, const ata_vendor_attr_defs & defs);
   
   
 // This are the meanings of the Self-test failure checkpoint byte.  
 // This is in the self-test log at offset 4 bytes into the self-test  
 // descriptor and in the SMART READ DATA structure at byte offset  
 // 371. These codes are not well documented.  The meanings returned by  
 // this routine are used (at least) by Maxtor and IBM. Returns NULL if  
 // not recognized.  
 const char *SelfTestFailureCodeName(unsigned char which);  
   
   
 #define MAX_ATTRIBUTE_NUM 256  #define MAX_ATTRIBUTE_NUM 256
   
 // Parse vendor attribute display def (-v option).  // Parse vendor attribute display def (-v option).
Line 924  unsigned char get_unc_attr_id(bool offline, const ata_ Line 938  unsigned char get_unc_attr_id(bool offline, const ata_
 // parse_attribute_def().  // parse_attribute_def().
 std::string create_vendor_attribute_arg_list();  std::string create_vendor_attribute_arg_list();
   
   // Parse firmwarebug def (-F option).
   // Return false on error.
   bool parse_firmwarebug_def(const char * opt, firmwarebug_defs & firmwarebugs);
   
   // Return a string of valid argument words for parse_firmwarebug_def()
   const char * get_valid_firmwarebug_args();
   
   
 // These are two of the functions that are defined in os_*.c and need  // These are two of the functions that are defined in os_*.c and need
 // to be ported to get smartmontools onto another OS.  // to be ported to get smartmontools onto another OS.
 // Moved to C++ interface  // Moved to C++ interface
Line 935  std::string create_vendor_attribute_arg_list(); Line 956  std::string create_vendor_attribute_arg_list();
 //int areca_command_interface(int fd, int disknum, smart_command_set command, int select, char *data);  //int areca_command_interface(int fd, int disknum, smart_command_set command, int select, char *data);
   
   
 // Optional functions of os_*.c  
 #ifdef HAVE_ATA_IDENTIFY_IS_CACHED  
 // Return true if OS caches the ATA identify sector  
 //int ata_identify_is_cached(int fd);  
 #endif  
   
 // This function is exported to give low-level capability  // This function is exported to give low-level capability
 int smartcommandhandler(ata_device * device, smart_command_set command, int select, char *data);  int smartcommandhandler(ata_device * device, smart_command_set command, int select, char *data);
   
Line 957  int ataPrintSmartSelfTestEntry(unsigned testnum, unsig Line 972  int ataPrintSmartSelfTestEntry(unsigned testnum, unsig
   
 // Print Smart self-test log, used by smartctl and smartd.  // Print Smart self-test log, used by smartctl and smartd.
 int ataPrintSmartSelfTestlog(const ata_smart_selftestlog * data, bool allentries,  int ataPrintSmartSelfTestlog(const ata_smart_selftestlog * data, bool allentries,
                             unsigned char fix_firmwarebug);                             firmwarebug_defs firmwarebugs);
   
 // Get capacity and sector sizes from IDENTIFY data  // Get capacity and sector sizes from IDENTIFY data
 struct ata_size_info  struct ata_size_info

Removed from v.1.1.1.2  
changed lines
  Added in v.1.1.1.3


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>