smartmontools SVN Rev 5613
Utility to control and monitor storage systems with "S.M.A.R.T."
Public Member Functions | Protected Member Functions | Private Attributes | List of all members
scsi_device Class Referenceabstract

SCSI device access. More...

#include <dev_interface.h>

Collaboration diagram for scsi_device:
Collaboration graph

Public Member Functions

virtual bool scsi_pass_through (scsi_cmnd_io *iop)=0
 SCSI pass through.
bool scsi_pass_through_and_check (scsi_cmnd_io *iop, const char *msg="")
void set_rcap16_first ()
 Always try READ CAPACITY(10) (rcap10) first but once we know rcap16 is needed, use it instead.
bool use_rcap16 () const
void set_spc4_or_higher ()
bool is_spc4_or_higher () const
bool query_cmd_support ()
bool checked_cmd_support () const
enum scsi_cmd_support cmd_support_level (uint8_t opcode, bool sa_valid, uint16_t sa, bool for_lsense_spc=false) const
- Public Member Functions inherited from smart_device
virtual ~smart_device ()
bool is_ata () const
 Return true if ATA device.
bool is_scsi () const
 Return true if SCSI device.
bool is_nvme () const
 Return true if NVMe device.
ata_deviceto_ata ()
 Downcast to ATA device.
const ata_deviceto_ata () const
 Downcast to ATA device (const).
scsi_deviceto_scsi ()
 Downcast to SCSI device.
const scsi_deviceto_scsi () const
 Downcast to SCSI device (const).
nvme_deviceto_nvme ()
 Downcast to NVMe device.
const nvme_deviceto_nvme () const
 Downcast to NVMe device (const).
const device_infoget_info () const
 Get device info struct.
const char * get_dev_name () const
 Get device (path)name.
const char * get_info_name () const
 Get informal name.
const char * get_dev_type () const
 Get device type.
const char * get_req_type () const
 Get type requested by user, empty if none.
const error_infoget_err () const
 Get last error info struct.
int get_errno () const
 Get last error number.
const char * get_errmsg () const
 Get last error message.
virtual bool is_syscall_unsup () const
 Return true if last error indicates an unsupported system call.
bool set_err (int no, const char *msg,...) __attribute_format_printf(3
 Set last error number and message.
bool bool set_err (const error_info &err)
 Set last error info struct.
void clear_err ()
 Clear last error info.
bool set_err (int no)
 Set last error number and default message.
virtual bool is_open () const =0
 Return true if device is open.
virtual bool open ()=0
 Open device, return false on error.
virtual bool close ()=0
 Close device, return false on error.
virtual smart_deviceautodetect_open ()
 Open device with autodetection support.
virtual bool is_powered_down ()
 Early test if device is powered up or down.
virtual bool owns (const smart_device *dev) const
 Return true if other device is owned by this device.
virtual void release (const smart_device *dev)
 Release ownership of other device.

Protected Member Functions

void hide_scsi (bool hide=true)
 Hide/unhide SCSI interface.
 scsi_device ()
 Default constructor, registers device as SCSI.
- Protected Member Functions inherited from smart_device
 smart_device (smart_interface *intf, const char *dev_name, const char *dev_type, const char *req_type)
 Constructor to init interface and device info.
 smart_device (do_not_use_in_implementation_classes)
 Dummy constructor for abstract classes.
device_infoset_info ()
 R/W access to device info struct.
smart_interfacesmi ()
 Get interface which produced this object.
const smart_interfacesmi () const
 Get interface which produced this object (const).

Private Attributes

bool rcap16_first
bool spc4_or_above
bool rsoc_queried
scsi_cmd_support rsoc_sup
scsi_cmd_support logsense_sup
scsi_cmd_support logsense_spc_sup
scsi_cmd_support rcap16_sup
scsi_cmd_support rdefect10_sup
scsi_cmd_support rdefect12_sup

Additional Inherited Members

- Static Public Member Functions inherited from smart_device
static int get_num_objects ()
 Get current number of allocated 'smart_device' objects.
- Protected Types inherited from smart_device
enum  do_not_use_in_implementation_classes { never_called }
 Dummy enum for dummy constructor. More...

Detailed Description

SCSI device access.

Definition at line 586 of file dev_interface.h.

Constructor & Destructor Documentation

◆ scsi_device()

scsi_device::scsi_device ( )

Default constructor, registers device as SCSI.

Definition at line 624 of file dev_interface.h.

Member Function Documentation

◆ checked_cmd_support()

bool scsi_device::checked_cmd_support ( ) const

Definition at line 612 of file dev_interface.h.

◆ cmd_support_level()

enum scsi_cmd_support scsi_device::cmd_support_level ( uint8_t  opcode,
bool  sa_valid,
uint16_t  sa,
bool  for_lsense_spc = false 
) const

Definition at line 172 of file scsicmds.cpp.

◆ hide_scsi()

void scsi_device::hide_scsi ( bool  hide = true)

Hide/unhide SCSI interface.

Definition at line 620 of file dev_interface.h.

◆ is_spc4_or_higher()

bool scsi_device::is_spc4_or_higher ( ) const

Definition at line 608 of file dev_interface.h.

◆ query_cmd_support()

bool scsi_device::query_cmd_support ( )

Definition at line 80 of file scsicmds.cpp.

◆ scsi_pass_through()

virtual bool scsi_device::scsi_pass_through ( scsi_cmnd_io iop)
pure virtual

◆ scsi_pass_through_and_check()

bool scsi_device::scsi_pass_through_and_check ( scsi_cmnd_io iop,
const char *  msg = "" 

Definition at line 198 of file dev_interface.cpp.

◆ set_rcap16_first()

void scsi_device::set_rcap16_first ( )

Always try READ CAPACITY(10) (rcap10) first but once we know rcap16 is needed, use it instead.

Definition at line 600 of file dev_interface.h.

◆ set_spc4_or_higher()

void scsi_device::set_spc4_or_higher ( )

Definition at line 606 of file dev_interface.h.

◆ use_rcap16()

bool scsi_device::use_rcap16 ( ) const

Definition at line 603 of file dev_interface.h.

Member Data Documentation

◆ logsense_spc_sup

scsi_cmd_support scsi_device::logsense_spc_sup

Definition at line 644 of file dev_interface.h.

◆ logsense_sup

scsi_cmd_support scsi_device::logsense_sup

Definition at line 643 of file dev_interface.h.

◆ rcap16_first

bool scsi_device::rcap16_first

Definition at line 638 of file dev_interface.h.

◆ rcap16_sup

scsi_cmd_support scsi_device::rcap16_sup

Definition at line 645 of file dev_interface.h.

◆ rdefect10_sup

scsi_cmd_support scsi_device::rdefect10_sup

Definition at line 646 of file dev_interface.h.

◆ rdefect12_sup

scsi_cmd_support scsi_device::rdefect12_sup

Definition at line 647 of file dev_interface.h.

◆ rsoc_queried

bool scsi_device::rsoc_queried

Definition at line 641 of file dev_interface.h.

◆ rsoc_sup

scsi_cmd_support scsi_device::rsoc_sup

Definition at line 642 of file dev_interface.h.

◆ spc4_or_above

bool scsi_device::spc4_or_above

Definition at line 639 of file dev_interface.h.

The documentation for this class was generated from the following files: