#include <hd.h>
Data Fields | |
s_hd_t * | next |
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] |
Hardware class list. (Internal) bitmask of hw classes. | |
char * | model |
Model name. | |
unsigned | attached_to |
Device this hardware is attached to. | |
char * | sysfs_id |
sysfs entry for this hardware, if any. | |
char * | sysfs_bus_id |
sysfs bus id for this hardware, if any. | |
char * | sysfs_device_link |
sysfs device link. | |
char * | unix_dev_name |
Special device file. | |
hd_dev_num_t | unix_dev_num |
Device type & number according to sysfs. | |
str_list_t * | unix_dev_names |
List of device names. | |
char * | unix_dev_name2 |
Special device file. | |
hd_dev_num_t | unix_dev_num2 |
Device type & number according to sysfs. | |
char * | rom_id |
BIOS/PROM id. | |
char * | udi |
HAL udi. | |
char * | parent_udi |
udi of parent (attached_to). | |
char * | unique_id |
Unique id for this hardware. | |
str_list_t * | unique_ids |
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_t * | res |
Device resources. | |
hd_detail_t * | detail |
Special info associated with this hardware. | |
str_list_t * | extra_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. | |
str_list_t * | drivers |
List of currently active drivers. | |
char * | old_unique_id |
Old unique_id for compatibility. | |
char * | parent_id |
unique_id of parent (attached_to). | |
str_list_t * | child_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_t * | driver_info |
str_list_t * | requires |
hal_prop_t * | hal_prop |
hal_prop_t * | persistent_prop |
char * | modalias |
unsigned | ref_cnt |
(Internal) memory reference count. | |
s_hd_t * | ref |
(Internal) if set, this is only a reference. | |
Data Structures | |
struct | is_s |
struct | tag_s |
Every hardware component gets an hd_t entry. A list of all hardware items is in hd_data_t::hd.
|
Device this hardware is attached to. Link to some 'parent' device. Use hd_get_device_by_idx() to get the corresponding hardware entry. |
|
Base class (id and name).
|
|
(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. |
|
Hardware appears to be broken in some way. This was used to indicate broken framebuffer support of some graphics cards. Currently unused. |
|
Bus type (id and name).
|
|
unique_ids of children (parent_id).
|
|
Device id and name of some compatible hardware. Used mainly for ISA-PnP devices. |
|
Vendor id and name of some compatible hardware. Used mainly for ISA-PnP devices. |
|
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. |
|
(Internal) Counter, used in combination with hd_t::module and hd_t::line.
|
|
Special info associated with this hardware.
|
|
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.
|
|
Currently active driver.
|
|
|
|
List of currently active drivers.
|
|
(Internal) Unspecific text info. It is used to track IDE interfaces and assign them to the correct IDE controllers. |
|
(PCI) function.
|
|
|
|
Hotplug controller for this device. It indicates what kind of hotplug device (if any) this is. |
|
Slot the hotplug device is connected to (e.g. PCMCIA socket).
|
|
Hardware class. Not to confuse with base_class! |
|
Hardware class list. (Internal) bitmask of hw classes. A device may belong to more than one hardware class. |
|
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! |
|
|
|
(Internal) Source code line where this entry was created.
|
|
|
|
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. |
|
(Internal) Probing module that created this entry.
|
|
Link to next hardware item.
|
|
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.) |
|
unique_id of parent (attached_to).
|
|
udi of parent (attached_to).
|
|
|
|
(PCI) programming interface (id and name).
|
|
(Internal) if set, this is only a reference.
|
|
(Internal) memory reference count.
|
|
|
|
Device resources.
|
|
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. |
|
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. |
|
Serial id.
|
|
Slot and bus number. Bits 0-7: slot number, 8-31 bus number. |
|
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. |
|
Sub class (id and name).
|
|
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. |
|
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. |
|
sysfs bus id for this hardware, if any.
|
|
sysfs device link.
|
|
sysfs entry for this hardware, if any.
|
|
|
|
HAL udi.
|
|
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. |
|
(Internal) location independent unique_id part. The speed up some internal searches, we store it here separately. |
|
|
|
Special device file. Device file name to access this hardware. Normally something below /dev. For network interfaces this is the interface name. |
|
Special device file. Device file name to access 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. |
|
List of device names. Device file names to access this hardware. Normally something below /dev. They should be all equivalent. The preferred name however is hd_t::unix_dev_name. |
|
Device type & number according to sysfs.
|
|
Device type & number according to sysfs.
|
|
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). |
|
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. |