Main Page | Modules | Data Structures | File List | Data Fields | Globals | Related Pages

s_hd_t Struct Reference

Individual hardware item. More...

#include <hd.h>


Data Fields

s_hd_tnext
 Link to next hardware item.

unsigned idx
 Unique index, starting at 1.

unsigned broken:1
 Hardware appears to be broken in some way.

hd_id_t bus
 Bus type (id and name).

unsigned slot
 Slot and bus number.

unsigned func
 (PCI) function.

hd_id_t base_class
 Base class (id and name).

hd_id_t sub_class
 Sub class (id and name).

hd_id_t prog_if
 (PCI) programming interface (id and name).

hd_id_t vendor
 Vendor id and name.

hd_id_t device
 Device id and name.

hd_id_t sub_vendor
 Subvendor id and name.

hd_id_t sub_device
 Subdevice id and name.

hd_id_t revision
 Revision id or string.

char * serial
 Serial id.

hd_id_t compat_vendor
 Vendor id and name of some compatible hardware.

hd_id_t compat_device
 Device id and name of some compatible hardware.

hd_hw_item_t hw_class
 Hardware class.

unsigned char hw_class_list [(hw_all+7)/8]
 (Internal) bitmask of hw classes

char * model
 Model name.

unsigned attached_to
 Device this hardware is attached to.

char * unix_dev_name
 Special device file.

char * unix_dev_name2
 Special device file.

char * rom_id
 BIOS/PROM id.

char * unique_id
 Unique id for this hardware.

unsigned module
 (Internal) Probing module that created this entry.

unsigned line
 (Internal) Source code line where this entry was created.

unsigned count
 (Internal) Counter, used in combination with hd_t::module and hd_t::line.

hd_res_tres
 Device resources.

hd_detail_tdetail
 Special info associated with this hardware.

str_list_textra_info
 (Internal) Unspecific text info.

hd_status_t status
 Hardware status (if available).

char * config_string
 Some config info.

hd_hotplug_t hotplug
 Hotplug controller for this device.

unsigned hotplug_slot
 Slot the hotplug device is connected to (e.g.

s_hd_t::is_s is
s_hd_t::tag_s tag
unsigned char * block0
 (Internal) First 512 bytes of block devices.

char * driver
 Currently active driver.

char * old_unique_id
 Old unique_id for compatibility.

char * parent_id
 unique_id of parent (attached_to).

str_list_tchild_ids
 unique_ids of children (parent_id).

char * unique_id1
 (Internal) location independent unique_id part.

char * usb_guid
 USB Global Unique Identifier.

driver_info_tdriver_info
str_list_trequires
unsigned ref_cnt
 (Internal) memory reference count

s_hd_tref
 (Internal) if set, this is only a reference


Detailed Description

Individual hardware item.

Every hardware component gets an hd_t entry. A list of all hardware items is in hd_data_t::hd.


Field Documentation

unsigned s_hd_t::attached_to
 

Device this hardware is attached to.

Link to some 'parent' device. Use hd_get_device_by_idx() to get the corresponding hardware entry.

hd_id_t s_hd_t::base_class
 

Base class (id and name).

unsigned char* s_hd_t::block0
 

(Internal) First 512 bytes of block devices.

To check accessibility of block devices we read the first block. The data is used to identify the boot device.

unsigned s_hd_t::broken
 

Hardware appears to be broken in some way.

This was used to indicate broken framebuffer support of some graphics cards. Currently unused.

hd_id_t s_hd_t::bus
 

Bus type (id and name).

str_list_t* s_hd_t::child_ids
 

unique_ids of children (parent_id).

Note:
Please do not use it for now.

hd_id_t s_hd_t::compat_device
 

Device id and name of some compatible hardware.

Used mainly for ISA-PnP devices.

hd_id_t s_hd_t::compat_vendor
 

Vendor id and name of some compatible hardware.

Used mainly for ISA-PnP devices.

char* s_hd_t::config_string
 

Some config info.

Every hardware item may get some string assigned. This string is stored in files below /var/lib/hardware/unique-keys/. There is no meaning associated with this string.

unsigned s_hd_t::count
 

(Internal) Counter, used in combination with hd_t::module and hd_t::line.

hd_detail_t* s_hd_t::detail
 

Special info associated with this hardware.

Note:
This is going to change!

hd_id_t s_hd_t::device
 

Device id and name.

Id is actually a combination of some tag to differentiate the various id types and the real id. Use the ID_VALUE macro to get e.g. the real PCI id value for a PCI device.

Note:
If you're looking or something printable, you might want to use hd_t::model instead.

char* s_hd_t::driver
 

Currently active driver.

driver_info_t* s_hd_t::driver_info
 

str_list_t* s_hd_t::extra_info
 

(Internal) Unspecific text info.

It is used to track IDE interfaces and assign them to the correct IDE controllers.

unsigned s_hd_t::func
 

(PCI) function.

hd_hotplug_t s_hd_t::hotplug
 

Hotplug controller for this device.

It indicates what kind of hotplug device (if any) this is.

unsigned s_hd_t::hotplug_slot
 

Slot the hotplug device is connected to (e.g.

PCMCIA socket).

Note:
hotplug_slot counts 1-based (0: no information available).

hd_hw_item_t s_hd_t::hw_class
 

Hardware class.

Not to confuse with base_class!

unsigned char s_hd_t::hw_class_list[(hw_all + 7) / 8]
 

(Internal) bitmask of hw classes

A device may belong to more than one hardware class.

unsigned s_hd_t::idx
 

Unique index, starting at 1.

Use hd_get_device_by_idx() to look up an hardware entry by index. And don't free the result!

struct s_hd_t::is_s s_hd_t::is
 

unsigned s_hd_t::line
 

(Internal) Source code line where this entry was created.

char* s_hd_t::model
 

Model name.

This is a combination of vendor and device names. Some heuristics is used to make it more presentable. Use this instead of hd_t::vendor and hd_t::device.

unsigned s_hd_t::module
 

(Internal) Probing module that created this entry.

struct s_hd_t* s_hd_t::next
 

Link to next hardware item.

char* s_hd_t::old_unique_id
 

Old unique_id for compatibility.

The calculation of unique ids has changed in libhd v3.17. Basically we no longer use the vendor/%device names if there are vendor/%device ids. (Otherwise a simple device name database update would change the id, which is really not what you want.)

char* s_hd_t::parent_id
 

unique_id of parent (attached_to).

Note:
Please do not use it for now.

hd_id_t s_hd_t::prog_if
 

(PCI) programming interface (id and name).

struct s_hd_t* s_hd_t::ref
 

(Internal) if set, this is only a reference

unsigned s_hd_t::ref_cnt
 

(Internal) memory reference count

str_list_t* s_hd_t::requires
 

hd_res_t* s_hd_t::res
 

Device resources.

hd_id_t s_hd_t::revision
 

Revision id or string.

If revision is numerical (e.g. PCI) hd_id_t::id is used. If revision is some char data (e.g. disk drives) it is stored in hd_id_t::name.

char* s_hd_t::rom_id
 

BIOS/PROM id.

Where appropriate, this is a special BIOS/PROM id (e.g. "0x80" for the first harddisk on Intel-PCs). CHPID for s390.

char* s_hd_t::serial
 

Serial id.

unsigned s_hd_t::slot
 

Slot and bus number.

Bits 0-7: slot number, 8-31 bus number.

hd_status_t s_hd_t::status
 

Hardware status (if available).

The status is stored in files below /var/lib/hardware/unique-keys/. Every hardware item gets a file there with its unique id as file name.

hd_id_t s_hd_t::sub_class
 

Sub class (id and name).

hd_id_t s_hd_t::sub_device
 

Subdevice id and name.

Id is actually a combination of some tag to differentiate the various id types and the real id. Use the ID_VALUE macro to get e.g. the real PCI id value for a PCI device.

hd_id_t s_hd_t::sub_vendor
 

Subvendor id and name.

Id is actually a combination of some tag to differentiate the various id types and the real id. Use the ID_VALUE macro to get e.g. the real PCI id value for a PCI device.

struct s_hd_t::tag_s s_hd_t::tag
 

char* s_hd_t::unique_id
 

Unique id for this hardware.

A unique string identifying this hardware. The string consists of two parts separated by a dot ("."). The part before the dot describes the location (where the hardware is attached in the system). The part after the dot identifies the hardware itself. The string must not contain slashes ("/") because we're going to create files with this id as name. Apart from this there are no restrictions on the form of this string.

char* s_hd_t::unique_id1
 

(Internal) location independent unique_id part.

The speed up some internal searches, we store it here separately.

char* s_hd_t::unix_dev_name
 

Special device file.

Device file name to acces this hardware. Normally something below /dev. For network interfaces this is the interface name.

char* s_hd_t::unix_dev_name2
 

Special device file.

Device file name to acces this hardware. Most hardware only has one device name stored in hd_t::unix_dev_name. But in some cases there's an alternative name.

char* s_hd_t::usb_guid
 

USB Global Unique Identifier.

Available for USB devices. This may even be set if hd_t::bus is not bus_usb (e.g. USB storage devices will have hd_t::bus set to bus_scsi due to SCSI emulation).

hd_id_t s_hd_t::vendor
 

Vendor id and name.

Id is actually a combination of some tag to differentiate the various id types and the real id. Use the ID_VALUE macro to get e.g. the real PCI id value for a PCI device.


The documentation for this struct was generated from the following file: