smartmontools SVN Rev 5388
Utility to control and monitor storage systems with "S.M.A.R.T."
Classes | Macros | Functions | Variables
ataprint.cpp File Reference
#include "config.h"
#include <ctype.h>
#include <errno.h>
#include <inttypes.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "atacmdnames.h"
#include "atacmds.h"
#include "ataidentify.h"
#include "dev_interface.h"
#include "ataprint.h"
#include "smartctl.h"
#include "sg_unaligned.h"
#include "utility.h"
#include "knowndrives.h"
Include dependency graph for ataprint.cpp:

Go to the source code of this file.

Classes

struct  devstat_entry_info
 

Macros

#define __STDC_FORMAT_MACROS   1
 
#define P(n)   (' ' <= p[n] && p[n] <= '~' ? (int)p[n] : '.')
 

Functions

static const char * infofound (const char *output)
 
static bool is_permissive ()
 
static std::string format_st_er_desc (unsigned char CR, unsigned char FR, unsigned char ST, unsigned char ER, unsigned short SC, const ata_smart_errorlog_error_struct *lba28_regs, const ata_smart_exterrlog_error *lba48_regs)
 
static std::string format_st_er_desc (const ata_smart_errorlog_struct *data)
 
static std::string format_st_er_desc (const ata_smart_exterrlog_error_log *data)
 
static const char * get_form_factor (unsigned short word168)
 
static int find_msb (unsigned short word)
 
static const char * get_ata_major_version (const ata_identify_device *drive)
 
static const char * get_ata_minor_version (const ata_identify_device *drive)
 
static const char * get_pata_version (unsigned short word222, char(&buf)[32])
 
static const char * get_sata_version (unsigned short word222)
 
static const char * get_sata_speed (int speed)
 
static void jset_sata_speed (const char *key, int value, int speed, const char *str)
 
static void print_sata_version_and_speed (unsigned short word222, unsigned short word076, unsigned short word077)
 
static void print_drive_info (const ata_identify_device *drive, const ata_size_info &sizes, int rpm, const drive_settings *dbentry, const char *dbversion)
 
static const char * OfflineDataCollectionStatus (unsigned char status_byte)
 
static void PrintSmartOfflineStatus (const ata_smart_values *data)
 
static void PrintSmartSelfExecStatus (const ata_smart_values *data, firmwarebug_defs firmwarebugs)
 
static void PrintSmartTotalTimeCompleteOffline (const ata_smart_values *data)
 
static void PrintSmartOfflineCollectCap (const ata_smart_values *data)
 
static void PrintSmartCapability (const ata_smart_values *data)
 
static void PrintSmartErrorLogCapability (const ata_smart_values *data, const ata_identify_device *identity)
 
static void PrintSmartShortSelfTestPollingTime (const ata_smart_values *data)
 
static void PrintSmartExtendedSelfTestPollingTime (const ata_smart_values *data)
 
static void PrintSmartConveyanceSelfTestPollingTime (const ata_smart_values *data)
 
static int find_failed_attr (const ata_smart_values *data, const ata_smart_thresholds_pvt *thresholds, const ata_vendor_attr_defs &defs, int onlyfailed)
 
static void set_json_globals_from_smart_attrib (int id, const char *name, const ata_vendor_attr_defs &defs, uint64_t rawval)
 
static void PrintSmartAttribWithThres (const ata_smart_values *data, const ata_smart_thresholds_pvt *thresholds, const ata_vendor_attr_defs &defs, int rpm, int onlyfailed, unsigned char format)
 
static void ataPrintSCTCapability (const ata_identify_device *drive)
 
static void PrintGeneralSmartValues (const ata_smart_values *data, const ata_identify_device *drive, firmwarebug_defs firmwarebugs)
 
static unsigned GetNumLogSectors (const ata_smart_log_directory *logdir, unsigned logaddr, bool gpl)
 
static const char * GetLogName (unsigned logaddr)
 
static const char * get_log_rw (unsigned logaddr)
 
const ata_smart_log_directoryfake_logdir (ata_smart_log_directory *logdir, const ata_print_options &options)
 
static void PrintLogDirectories (const ata_smart_log_directory *gplogdir, const ata_smart_log_directory *smartlogdir)
 
static void PrintLogPages (const char *type, const unsigned char *data, unsigned char logaddr, unsigned page, unsigned num_pages, unsigned max_pages)
 
static const char * get_device_statistics_page_name (int page)
 
static void set_json_globals_from_device_statistics (int page, int offset, int64_t val)
 
static void print_device_statistics_page (const json::ref &jref, const unsigned char *data, int page)
 
static bool print_device_statistics (ata_device *device, unsigned nsectors, const std::vector< int > &single_pages, bool all_pages, bool ssd_page, bool use_gplog)
 
static bool print_pending_defects_log (ata_device *device, unsigned nsectors, unsigned max_entries)
 
static void PrintSataPhyEventCounters (const unsigned char *data, bool reset)
 
static std::string format_milliseconds (unsigned msec)
 
static const char * get_error_log_state_desc (unsigned state)
 
static int PrintSmartErrorlog (const ata_smart_errorlog *data, firmwarebug_defs firmwarebugs)
 
static int PrintSmartExtErrorLog (ata_device *device, const firmwarebug_defs &firmwarebugs, const ata_smart_exterrlog *log, unsigned nsectors, unsigned max_errors)
 
static int ataPrintSmartSelfTestEntry (const json::ref &jref, unsigned testnum, unsigned char test_type, unsigned char test_status, unsigned short timestamp, uint64_t failing_lba, bool print_error_only, bool &print_header)
 
static int ataPrintSmartSelfTestlog (const ata_smart_selftestlog *log, bool allentries, firmwarebug_defs firmwarebugs)
 
static int PrintSmartExtSelfTestLog (const ata_smart_extselftestlog *log, unsigned nsectors, unsigned max_entries)
 
static void ataPrintSelectiveSelfTestLog (const ata_selective_self_test_log *log, const ata_smart_values *sv)
 
static const char * sct_ptemp (signed char x, char(&buf)[20])
 
static void sct_jtemp2 (const json::ref &jref, const char *name, signed char x)
 
static const char * sct_pbar (int x, char(&buf)[64])
 
static const char * sct_device_state_msg (unsigned char state)
 
static int ataPrintSCTStatus (const ata_sct_status_response *sts)
 
static int ataPrintSCTTempHist (const ata_sct_temperature_history_table *tmh)
 
static void ataPrintSCTErrorRecoveryControl (bool set, unsigned short read_timer, unsigned short write_timer, bool power_on, bool mfg_default=false)
 
static void print_aam_level (const char *msg, int level, int recommended=-1)
 
static void print_apm_level (const char *msg, int level)
 
static void print_ata_security_status (const char *msg, unsigned short state, unsigned short master_password_id)
 
static void print_standby_timer (const char *msg, int timer, const ata_identify_device &drive)
 
int ataPrintMain (ata_device *device, const ata_print_options &options)
 

Variables

const char * ataprint_cpp_cvsid
 
const devstat_entry_info devstat_info_0x00 []
 
const devstat_entry_info devstat_info_0x01 []
 
const devstat_entry_info devstat_info_0x02 []
 
const devstat_entry_info devstat_info_0x03 []
 
const devstat_entry_info devstat_info_0x04 []
 
const devstat_entry_info devstat_info_0x05 []
 
const devstat_entry_info devstat_info_0x06 []
 
const devstat_entry_info devstat_info_0x07 []
 
const devstat_entry_infodevstat_infos []
 
const int num_devstat_infos = sizeof(devstat_infos)/sizeof(devstat_infos[0])
 

Macro Definition Documentation

◆ __STDC_FORMAT_MACROS

#define __STDC_FORMAT_MACROS   1

Definition at line 14 of file ataprint.cpp.

◆ P

#define P (   n)    (' ' <= p[n] && p[n] <= '~' ? (int)p[n] : '.')

Function Documentation

◆ ataPrintMain()

int ataPrintMain ( ata_device device,
const ata_print_options options 
)

Definition at line 3337 of file ataprint.cpp.

◆ ataPrintSCTCapability()

static void ataPrintSCTCapability ( const ata_identify_device drive)
static

Definition at line 1346 of file ataprint.cpp.

◆ ataPrintSCTErrorRecoveryControl()

static void ataPrintSCTErrorRecoveryControl ( bool  set,
unsigned short  read_timer,
unsigned short  write_timer,
bool  power_on,
bool  mfg_default = false 
)
static

Definition at line 3154 of file ataprint.cpp.

◆ ataPrintSCTStatus()

static int ataPrintSCTStatus ( const ata_sct_status_response sts)
static

Definition at line 2997 of file ataprint.cpp.

◆ ataPrintSCTTempHist()

static int ataPrintSCTTempHist ( const ata_sct_temperature_history_table tmh)
static

Definition at line 3082 of file ataprint.cpp.

◆ ataPrintSelectiveSelfTestLog()

static void ataPrintSelectiveSelfTestLog ( const ata_selective_self_test_log log,
const ata_smart_values sv 
)
static

Definition at line 2802 of file ataprint.cpp.

◆ ataPrintSmartSelfTestEntry()

static int ataPrintSmartSelfTestEntry ( const json::ref jref,
unsigned  testnum,
unsigned char  test_type,
unsigned char  test_status,
unsigned short  timestamp,
uint64_t  failing_lba,
bool  print_error_only,
bool &  print_header 
)
static

Definition at line 2555 of file ataprint.cpp.

◆ ataPrintSmartSelfTestlog()

static int ataPrintSmartSelfTestlog ( const ata_smart_selftestlog log,
bool  allentries,
firmwarebug_defs  firmwarebugs 
)
static

Definition at line 2650 of file ataprint.cpp.

◆ fake_logdir()

const ata_smart_log_directory * fake_logdir ( ata_smart_log_directory logdir,
const ata_print_options options 
)

Definition at line 1510 of file ataprint.cpp.

◆ find_failed_attr()

static int find_failed_attr ( const ata_smart_values data,
const ata_smart_thresholds_pvt thresholds,
const ata_vendor_attr_defs defs,
int  onlyfailed 
)
static

Definition at line 1114 of file ataprint.cpp.

◆ find_msb()

static int find_msb ( unsigned short  word)
static

Definition at line 425 of file ataprint.cpp.

◆ format_milliseconds()

static std::string format_milliseconds ( unsigned  msec)
static

Definition at line 2146 of file ataprint.cpp.

◆ format_st_er_desc() [1/3]

static std::string format_st_er_desc ( const ata_smart_errorlog_struct data)
inlinestatic

Definition at line 380 of file ataprint.cpp.

◆ format_st_er_desc() [2/3]

static std::string format_st_er_desc ( const ata_smart_exterrlog_error_log data)
inlinestatic

Definition at line 392 of file ataprint.cpp.

◆ format_st_er_desc() [3/3]

static std::string format_st_er_desc ( unsigned char  CR,
unsigned char  FR,
unsigned char  ST,
unsigned char  ER,
unsigned short  SC,
const ata_smart_errorlog_error_struct lba28_regs,
const ata_smart_exterrlog_error lba48_regs 
)
static

Definition at line 64 of file ataprint.cpp.

◆ get_ata_major_version()

static const char * get_ata_major_version ( const ata_identify_device drive)
static

Definition at line 433 of file ataprint.cpp.

◆ get_ata_minor_version()

static const char * get_ata_minor_version ( const ata_identify_device drive)
static

Definition at line 459 of file ataprint.cpp.

◆ get_device_statistics_page_name()

static const char * get_device_statistics_page_name ( int  page)
static

Definition at line 1749 of file ataprint.cpp.

◆ get_error_log_state_desc()

static const char * get_error_log_state_desc ( unsigned  state)
static

Definition at line 2165 of file ataprint.cpp.

◆ get_form_factor()

static const char * get_form_factor ( unsigned short  word168)
static

Definition at line 405 of file ataprint.cpp.

◆ get_log_rw()

static const char * get_log_rw ( unsigned  logaddr)
static

Definition at line 1483 of file ataprint.cpp.

◆ get_pata_version()

static const char * get_pata_version ( unsigned short  word222,
char(&)  buf[32] 
)
static

Definition at line 538 of file ataprint.cpp.

◆ get_sata_speed()

static const char * get_sata_speed ( int  speed)
static

Definition at line 575 of file ataprint.cpp.

◆ get_sata_version()

static const char * get_sata_version ( unsigned short  word222)
static

Definition at line 551 of file ataprint.cpp.

◆ GetLogName()

static const char * GetLogName ( unsigned  logaddr)
static

Definition at line 1418 of file ataprint.cpp.

◆ GetNumLogSectors()

static unsigned GetNumLogSectors ( const ata_smart_log_directory logdir,
unsigned  logaddr,
bool  gpl 
)
static

Definition at line 1402 of file ataprint.cpp.

◆ infofound()

static const char * infofound ( const char *  output)
static

Definition at line 37 of file ataprint.cpp.

◆ is_permissive()

static bool is_permissive ( )
static

Definition at line 43 of file ataprint.cpp.

◆ jset_sata_speed()

static void jset_sata_speed ( const char *  key,
int  value,
int  speed,
const char *  str 
)
static

Definition at line 594 of file ataprint.cpp.

◆ OfflineDataCollectionStatus()

static const char * OfflineDataCollectionStatus ( unsigned char  status_byte)
static

Definition at line 824 of file ataprint.cpp.

◆ print_aam_level()

static void print_aam_level ( const char *  msg,
int  level,
int  recommended = -1 
)
static

Definition at line 3179 of file ataprint.cpp.

◆ print_apm_level()

static void print_apm_level ( const char *  msg,
int  level 
)
static

Definition at line 3210 of file ataprint.cpp.

◆ print_ata_security_status()

static void print_ata_security_status ( const char *  msg,
unsigned short  state,
unsigned short  master_password_id 
)
static

Definition at line 3240 of file ataprint.cpp.

◆ print_device_statistics()

static bool print_device_statistics ( ata_device device,
unsigned  nsectors,
const std::vector< int > &  single_pages,
bool  all_pages,
bool  ssd_page,
bool  use_gplog 
)
static

Definition at line 1892 of file ataprint.cpp.

◆ print_device_statistics_page()

static void print_device_statistics_page ( const json::ref jref,
const unsigned char *  data,
int  page 
)
static

Definition at line 1781 of file ataprint.cpp.

◆ print_drive_info()

static void print_drive_info ( const ata_identify_device drive,
const ata_size_info sizes,
int  rpm,
const drive_settings dbentry,
const char *  dbversion 
)
static

Definition at line 636 of file ataprint.cpp.

◆ print_pending_defects_log()

static bool print_pending_defects_log ( ata_device device,
unsigned  nsectors,
unsigned  max_entries 
)
static

Definition at line 2009 of file ataprint.cpp.

◆ print_sata_version_and_speed()

static void print_sata_version_and_speed ( unsigned short  word222,
unsigned short  word076,
unsigned short  word077 
)
static

Definition at line 613 of file ataprint.cpp.

◆ print_standby_timer()

static void print_standby_timer ( const char *  msg,
int  timer,
const ata_identify_device drive 
)
static

Definition at line 3303 of file ataprint.cpp.

◆ PrintGeneralSmartValues()

static void PrintGeneralSmartValues ( const ata_smart_values data,
const ata_identify_device drive,
firmwarebug_defs  firmwarebugs 
)
static

Definition at line 1366 of file ataprint.cpp.

◆ PrintLogDirectories()

static void PrintLogDirectories ( const ata_smart_log_directory gplogdir,
const ata_smart_log_directory smartlogdir 
)
static

Definition at line 1526 of file ataprint.cpp.

◆ PrintLogPages()

static void PrintLogPages ( const char *  type,
const unsigned char *  data,
unsigned char  logaddr,
unsigned  page,
unsigned  num_pages,
unsigned  max_pages 
)
static

Definition at line 1615 of file ataprint.cpp.

◆ PrintSataPhyEventCounters()

static void PrintSataPhyEventCounters ( const unsigned char *  data,
bool  reset 
)
static

Definition at line 2072 of file ataprint.cpp.

◆ PrintSmartAttribWithThres()

static void PrintSmartAttribWithThres ( const ata_smart_values data,
const ata_smart_thresholds_pvt thresholds,
const ata_vendor_attr_defs defs,
int  rpm,
int  onlyfailed,
unsigned char  format 
)
static

Definition at line 1189 of file ataprint.cpp.

◆ PrintSmartCapability()

static void PrintSmartCapability ( const ata_smart_values data)
static

Definition at line 1039 of file ataprint.cpp.

◆ PrintSmartConveyanceSelfTestPollingTime()

static void PrintSmartConveyanceSelfTestPollingTime ( const ata_smart_values data)
static

Definition at line 1098 of file ataprint.cpp.

◆ PrintSmartErrorlog()

static int PrintSmartErrorlog ( const ata_smart_errorlog data,
firmwarebug_defs  firmwarebugs 
)
static

Definition at line 2181 of file ataprint.cpp.

◆ PrintSmartErrorLogCapability()

static void PrintSmartErrorLogCapability ( const ata_smart_values data,
const ata_identify_device identity 
)
static

Definition at line 1064 of file ataprint.cpp.

◆ PrintSmartExtendedSelfTestPollingTime()

static void PrintSmartExtendedSelfTestPollingTime ( const ata_smart_values data)
static

Definition at line 1085 of file ataprint.cpp.

◆ PrintSmartExtErrorLog()

static int PrintSmartExtErrorLog ( ata_device device,
const firmwarebug_defs firmwarebugs,
const ata_smart_exterrlog log,
unsigned  nsectors,
unsigned  max_errors 
)
static

Definition at line 2335 of file ataprint.cpp.

◆ PrintSmartExtSelfTestLog()

static int PrintSmartExtSelfTestLog ( const ata_smart_extselftestlog log,
unsigned  nsectors,
unsigned  max_entries 
)
static

print_error_only

Definition at line 2718 of file ataprint.cpp.

◆ PrintSmartOfflineCollectCap()

static void PrintSmartOfflineCollectCap ( const ata_smart_values data)
static

Definition at line 989 of file ataprint.cpp.

◆ PrintSmartOfflineStatus()

static void PrintSmartOfflineStatus ( const ata_smart_values data)
static

Definition at line 854 of file ataprint.cpp.

◆ PrintSmartSelfExecStatus()

static void PrintSmartSelfExecStatus ( const ata_smart_values data,
firmwarebug_defs  firmwarebugs 
)
static

Definition at line 882 of file ataprint.cpp.

◆ PrintSmartShortSelfTestPollingTime()

static void PrintSmartShortSelfTestPollingTime ( const ata_smart_values data)
static

Definition at line 1072 of file ataprint.cpp.

◆ PrintSmartTotalTimeCompleteOffline()

static void PrintSmartTotalTimeCompleteOffline ( const ata_smart_values data)
static

Definition at line 979 of file ataprint.cpp.

◆ sct_device_state_msg()

static const char * sct_device_state_msg ( unsigned char  state)
static

Definition at line 2983 of file ataprint.cpp.

◆ sct_jtemp2()

static void sct_jtemp2 ( const json::ref jref,
const char *  name,
signed char  x 
)
static

Definition at line 2953 of file ataprint.cpp.

◆ sct_pbar()

static const char * sct_pbar ( int  x,
char(&)  buf[64] 
)
static

Definition at line 2961 of file ataprint.cpp.

◆ sct_ptemp()

static const char * sct_ptemp ( signed char  x,
char(&)  buf[20] 
)
static

Definition at line 2945 of file ataprint.cpp.

◆ set_json_globals_from_device_statistics()

static void set_json_globals_from_device_statistics ( int  page,
int  offset,
int64_t  val 
)
static

Definition at line 1758 of file ataprint.cpp.

◆ set_json_globals_from_smart_attrib()

static void set_json_globals_from_smart_attrib ( int  id,
const char *  name,
const ata_vendor_attr_defs defs,
uint64_t  rawval 
)
static

Definition at line 1135 of file ataprint.cpp.

Variable Documentation

◆ ataprint_cpp_cvsid

const char* ataprint_cpp_cvsid
Initial value:
= "$Id: ataprint.cpp 5384 2022-05-22 13:08:08Z chrfranke $"
#define ATAPRINT_H_CVSID
Definition: ataprint.h:16

Definition at line 33 of file ataprint.cpp.

◆ devstat_info_0x00

const devstat_entry_info devstat_info_0x00[]
Initial value:
= {
{ 2, "List of supported log pages" },
{ 0, 0 }
}

Definition at line 1651 of file ataprint.cpp.

◆ devstat_info_0x01

const devstat_entry_info devstat_info_0x01[]
Initial value:
= {
{ 2, "General Statistics" },
{ 4, "Lifetime Power-On Resets" },
{ 4, "Power-on Hours" },
{ 6, "Logical Sectors Written" },
{ 6, "Number of Write Commands" },
{ 6, "Logical Sectors Read" },
{ 6, "Number of Read Commands" },
{ 6, "Date and Time TimeStamp" },
{ 4, "Pending Error Count" },
{ 2, "Workload Utilization" },
{ 6, "Utilization Usage Rate" },
{ 7, "Resource Availability" },
{ 1, "Random Write Resources Used" },
{ 0, 0 }
}

Definition at line 1656 of file ataprint.cpp.

◆ devstat_info_0x02

const devstat_entry_info devstat_info_0x02[]
Initial value:
= {
{ 2, "Free-Fall Statistics" },
{ 4, "Number of Free-Fall Events Detected" },
{ 4, "Overlimit Shock Events" },
{ 0, 0 }
}

Definition at line 1673 of file ataprint.cpp.

◆ devstat_info_0x03

const devstat_entry_info devstat_info_0x03[]
Initial value:
= {
{ 2, "Rotating Media Statistics" },
{ 4, "Spindle Motor Power-on Hours" },
{ 4, "Head Flying Hours" },
{ 4, "Head Load Events" },
{ 4, "Number of Reallocated Logical Sectors" },
{ 4, "Read Recovery Attempts" },
{ 4, "Number of Mechanical Start Failures" },
{ 4, "Number of Realloc. Candidate Logical Sectors" },
{ 4, "Number of High Priority Unload Events" },
{ 0, 0 }
}

Definition at line 1680 of file ataprint.cpp.

◆ devstat_info_0x04

const devstat_entry_info devstat_info_0x04[]
Initial value:
= {
{ 2, "General Errors Statistics" },
{ 4, "Number of Reported Uncorrectable Errors" },
{ 4, "Resets Between Cmd Acceptance and Completion" },
{ 4, "Physical Element Status Changed" },
{ 0, 0 }
}

Definition at line 1693 of file ataprint.cpp.

◆ devstat_info_0x05

const devstat_entry_info devstat_info_0x05[]
Initial value:
= {
{ 2, "Temperature Statistics" },
{ -1, "Current Temperature" },
{ -1, "Average Short Term Temperature" },
{ -1, "Average Long Term Temperature" },
{ -1, "Highest Temperature" },
{ -1, "Lowest Temperature" },
{ -1, "Highest Average Short Term Temperature" },
{ -1, "Lowest Average Short Term Temperature" },
{ -1, "Highest Average Long Term Temperature" },
{ -1, "Lowest Average Long Term Temperature" },
{ 4, "Time in Over-Temperature" },
{ -1, "Specified Maximum Operating Temperature" },
{ 4, "Time in Under-Temperature" },
{ -1, "Specified Minimum Operating Temperature" },
{ 0, 0 }
}

Definition at line 1702 of file ataprint.cpp.

◆ devstat_info_0x06

const devstat_entry_info devstat_info_0x06[]
Initial value:
= {
{ 2, "Transport Statistics" },
{ 4, "Number of Hardware Resets" },
{ 4, "Number of ASR Events" },
{ 4, "Number of Interface CRC Errors" },
{ 0, 0 }
}

Definition at line 1720 of file ataprint.cpp.

◆ devstat_info_0x07

const devstat_entry_info devstat_info_0x07[]
Initial value:
= {
{ 2, "Solid State Device Statistics" },
{ 1, "Percentage Used Endurance Indicator" },
{ 0, 0 }
}

Definition at line 1728 of file ataprint.cpp.

◆ devstat_infos

const devstat_entry_info* devstat_infos[]
Initial value:
= {
}
const devstat_entry_info devstat_info_0x04[]
Definition: ataprint.cpp:1693
const devstat_entry_info devstat_info_0x01[]
Definition: ataprint.cpp:1656
const devstat_entry_info devstat_info_0x03[]
Definition: ataprint.cpp:1680
const devstat_entry_info devstat_info_0x02[]
Definition: ataprint.cpp:1673
const devstat_entry_info devstat_info_0x07[]
Definition: ataprint.cpp:1728
const devstat_entry_info devstat_info_0x00[]
Definition: ataprint.cpp:1651
const devstat_entry_info devstat_info_0x05[]
Definition: ataprint.cpp:1702
const devstat_entry_info devstat_info_0x06[]
Definition: ataprint.cpp:1720

Definition at line 1734 of file ataprint.cpp.

◆ num_devstat_infos

const int num_devstat_infos = sizeof(devstat_infos)/sizeof(devstat_infos[0])

Definition at line 1747 of file ataprint.cpp.