Implementation internals

various functions commmon to all probing modules More...


Modules

 Hardware abstraction (HAL) information
 Bus scanning code
 Device handling
 Information gathering
 Hardware DB (HDDB)
 Hardware DB functions.
 Hardware scan console output
 Hardware scan console output functions.
 Internal utilities
 Internal utility functions.
 UDI manual hardware
 Manual hardware information functions (/var/lib/hardware/udi/).

Data Structures

struct  disk_s
struct  s_mod_names
struct  s_pr_flags

Defines

#define u64   uint64_t
#define BLKSSZGET   _IO(0x12,104)
#define INT_CRC(a, b)   crc64(&a, &hd->b, sizeof hd->b);
#define STR_CRC(a, b)   if(hd->b) crc64(&a, hd->b, strlen(hd->b) + 1);

Typedefs

typedef disk_s disk_t

Functions

static struct s_pr_flagsget_pr_flags (enum probe_feature feature)
static void fix_probe_features (hd_data_t *hd_data)
static void set_probe_feature (hd_data_t *hd_data, enum probe_feature feature, unsigned val)
static void free_old_hd_entries (hd_data_t *hd_data)
static hd_tfree_hd_entry (hd_t *hd)
static hd_tadd_hd_entry2 (hd_t **hd, hd_t *new_hd)
static void timeout_alarm_handler (int signal)
static void get_probe_env (hd_data_t *hd_data)
static void hd_scan_xtra (hd_data_t *hd_data)
static hd_thd_get_device_by_id (hd_data_t *hd_data, char *id)
static int has_item (hd_hw_item_t *items, hd_hw_item_t item)
static int has_hw_class (hd_t *hd, hd_hw_item_t *items)
static void hd_scan_with_hal (hd_data_t *hd_data)
static void hd_scan_no_hal (hd_data_t *hd_data)
static void test_read_block0_open (void *arg)
static void get_kernel_version (hd_data_t *hd_data)
static int is_modem (hd_data_t *hd_data, hd_t *hd)
static int is_audio (hd_data_t *hd_data, hd_t *hd)
static int is_pppoe (hd_data_t *hd_data, hd_t *hd)
static void assign_hw_class (hd_data_t *hd_data, hd_t *hd)
static void short_vendor (char *vendor)
static void create_model_name (hd_data_t *hd_data, hd_t *hd)
static void copy_log2shm (hd_data_t *hd_data)
static void sigchld_handler (int)
static void sigusr1_handler (int)
static char * hd_shm_add_str (hd_data_t *hd_data, char *str)
static str_list_thd_shm_add_str_list (hd_data_t *hd_data, str_list_t *sl)
static hd_udevinfo_thd_free_udevinfo (hd_udevinfo_t *ui)
static hd_sysfsdrv_thd_free_sysfsdrv (hd_sysfsdrv_t *sf)
void hd_set_probe_feature (hd_data_t *hd_data, enum probe_feature feature)
void hd_clear_probe_feature (hd_data_t *hd_data, enum probe_feature feature)
int hd_probe_feature (hd_data_t *hd_data, enum probe_feature feature)
void hd_set_probe_feature_hw (hd_data_t *hd_data, hd_hw_item_t item)
hd_data_thd_free_hd_data (hd_data_t *hd_data)
 Free all data.
hal_prop_thd_free_hal_properties (hal_prop_t *prop)
hal_device_thd_free_hal_devices (hal_device_t *dev)
driver_info_tfree_driver_info (driver_info_t *di)
int exists_hd_entry (hd_data_t *hd_data, hd_t *old_hd, hd_t *hd_ex)
hd_thd_free_hd_list (hd_t *hd)
 Free hardware items returned by e.g. hd_list().
hd_detail_tfree_hd_detail (hd_detail_t *d)
misc_tfree_misc (misc_t *m)
scsi_tfree_scsi (scsi_t *scsi, int free_all)
hd_manual_thd_free_manual (hd_manual_t *manual)
void * new_mem (size_t size)
void * resize_mem (void *p, size_t n)
void * add_mem (void *p, size_t elem_size, size_t n)
char * new_str (const char *s)
void * free_mem (void *p)
void join_res_io (hd_res_t **res1, hd_res_t *res2)
void join_res_irq (hd_res_t **res1, hd_res_t *res2)
void join_res_dma (hd_res_t **res1, hd_res_t *res2)
int have_common_res (hd_res_t *res1, hd_res_t *res2)
hd_res_tfree_res_list (hd_res_t *res)
hd_res_tadd_res_entry (hd_res_t **res, hd_res_t *new_res)
hd_tadd_hd_entry (hd_data_t *hd_data, unsigned line, unsigned count)
void hd_scan (hd_data_t *hd_data)
 the actual hardware scan
char * isa_id2str (unsigned id)
char * eisa_vendor_str (unsigned v)
unsigned name2eisa_id (char *s)
char * canon_str (char *s, int len)
int hex (char *s, int n)
int str2float (char *s, int n)
char * float2str (int f, int n)
hd_thd_get_device_by_idx (hd_data_t *hd_data, unsigned idx)
char * mod_name_by_idx (unsigned idx)
void str_printf (char **buf, int offset, char *format,...)
void hexdump (char **buf, int with_ascii, unsigned data_len, unsigned char *data)
str_list_tread_file (char *file_name, unsigned start_line, unsigned lines)
str_list_tread_dir (char *dir_name, int type)
char * hd_read_sysfs_link (char *base_dir, char *link_name)
void progress (hd_data_t *hd_data, unsigned pos, unsigned count, char *msg)
enum probe_feature hd_probe_feature_by_name (char *name)
char * hd_probe_feature_by_value (enum probe_feature feature)
void remove_hd_entries (hd_data_t *hd_data)
void remove_tagged_hd_entries (hd_data_t *hd_data)
int hd_module_is_active (hd_data_t *hd_data, char *mod)
int hd_has_pcmcia (hd_data_t *hd_data)
int hd_apm_enabled (hd_data_t *hd_data)
int hd_usb_support (hd_data_t *hd_data)
int hd_smp_support (hd_data_t *hd_data)
int hd_color (hd_data_t *hd_data)
int hd_mac_color (hd_data_t *hd_data)
unsigned hd_display_adapter (hd_data_t *hd_data)
enum cpu_arch hd_cpu_arch (hd_data_t *hd_data)
enum boot_arch hd_boot_arch (hd_data_t *hd_data)
int hd_is_uml (hd_data_t *hd_data)
int hd_is_sgi_altix (hd_data_t *hd_data)
int hd_is_xen (hd_data_t *hd_data)
void hd_copy (hd_t *dst, hd_t *src)
hd_thd_list (hd_data_t *hd_data, hd_hw_item_t item, int rescan, hd_t *hd_old)
hd_thd_list_with_status (hd_data_t *hd_data, hd_hw_item_t item, hd_status_t status)
hd_thd_list2 (hd_data_t *hd_data, hd_hw_item_t *items, int rescan)
hd_thd_list_with_status2 (hd_data_t *hd_data, hd_hw_item_t *items, hd_status_t status)
hd_thd_base_class_list (hd_data_t *hd_data, unsigned base_class)
hd_thd_sub_class_list (hd_data_t *hd_data, unsigned base_class, unsigned sub_class)
hd_thd_bus_list (hd_data_t *hd_data, unsigned bus)
const char * hd_busid_to_hwcfg (int busid)
int hd_timeout (void(*func)(void *), void *arg, int timeout)
str_list_tread_kmods (hd_data_t *hd_data)
str_list_tget_cmdline (hd_data_t *hd_data, char *key)
char * get_cmd_param (hd_data_t *hd_data, int field)
unsigned get_disk_crc (unsigned char *data, unsigned len)
disk_tadd_disk_entry (disk_t **dl, disk_t *new_dl)
disk_tfree_disk_list (disk_t *dl)
int dev_name_duplicate (disk_t *dl, char *dev_name)
unsigned hd_boot_disk (hd_data_t *hd_data, int *matches)
void update_irq_usage (hd_data_t *hd_data)
int run_cmd (hd_data_t *hd_data, char *cmd)
int probe_module (hd_data_t *hd_data, char *module)
int load_module_with_params (hd_data_t *hd_data, char *module, char *params)
int load_module (hd_data_t *hd_data, char *module)
int unload_module (hd_data_t *hd_data, char *module)
int cmp_hd (hd_t *hd1, hd_t *hd2)
unsigned has_something_attached (hd_data_t *hd_data, hd_t *hd)
void crc64 (uint64_t *id, void *p, int len)
char * numid2str (uint64_t id, int len)
void hd_add_old_id (hd_t *hd)
void hd_add_id (hd_data_t *hd_data, hd_t *hd)
devtree_tfree_devtree (hd_data_t *hd_data)
unsigned char * read_block0 (hd_data_t *hd_data, char *dev, int *timeout)
char * vend_id2str (unsigned vend)
int hd_change_config_status (hd_data_t *hd_data, const char *id, hd_status_t status, const char *config_string)
int hd_change_status (const char *id, hd_status_t status, const char *config_string)
int hd_getdisksize (hd_data_t *hd_data, char *dev, int fd, hd_res_t **geo, hd_res_t **size)
str_list_thd_split (char del, const char *str)
char * hd_join (char *del, str_list_t *str)
int is_pcmcia_ctrl (hd_data_t *hd_data, hd_t *hd)
void hd_set_hw_class (hd_t *hd, hd_hw_item_t hw_class)
int hd_is_hw_class (hd_t *hd, hd_hw_item_t hw_class)
void hd_fork (hd_data_t *hd_data, int timeout, int total_timeout)
void hd_fork_done (hd_data_t *hd_data)
void hd_shm_init (hd_data_t *hd_data)
void hd_shm_clean (hd_data_t *hd_data)
void hd_shm_done (hd_data_t *hd_data)
void * hd_shm_add (hd_data_t *hd_data, void *ptr, unsigned len)
int hd_is_shm_ptr (hd_data_t *hd_data, void *ptr)
void hd_move_to_shm (hd_data_t *hd_data)
void read_udevinfo (hd_data_t *hd_data)
char * hd_version ()
hd_thd_find_sysfs_id (hd_data_t *hd_data, char *id)
hd_thd_find_sysfs_id_devname (hd_data_t *hd_data, char *id, char *devname)
void hd_sysfs_driver_list (hd_data_t *hd_data)
int hd_report_this (hd_data_t *hd_data, hd_t *hd)
str_list_thd_module_list (hd_data_t *hd_data, unsigned id)
int hd_read_mmap (hd_data_t *hd_data, char *name, unsigned char *buf, off_t start, unsigned size)
char * hd_get_hddb_dir ()
char * hd_get_hddb_path (char *sub)
int hd_attr_uint (char *attr, uint64_t *u, int base)
str_list_thd_attr_list (char *str)
char * hd_sysfs_id (char *path)
char * hd_sysfs_name2_dev (char *str)
char * hd_sysfs_dev2_name (char *str)
char * get_sysfs_attr (const char *bus, const char *device, const char *attr)
char * get_sysfs_attr_by_path (const char *path, const char *attr)
int hd_mod_cmp (char *str1, char *str2)
str_list_ts_str_list_t::search_str_list (str_list_t *sl, char *str)
str_list_ts_str_list_t::add_str_list (str_list_t **sl, char *str)
str_list_ts_str_list_t::free_str_list (str_list_t *list)
str_list_ts_str_list_t::reverse_str_list (str_list_t *list)

Variables

static pid_t child_id
static volatile pid_t child
static hd_data_thd_data_sig
static struct s_mod_names pr_modules []
static struct s_pr_flags pr_flags []

Detailed Description

various functions commmon to all probing modules


Define Documentation

#define BLKSSZGET   _IO(0x12,104)
 

#define INT_CRC a,
 )     crc64(&a, &hd->b, sizeof hd->b);
 

#define STR_CRC a,
 )     if(hd->b) crc64(&a, hd->b, strlen(hd->b) + 1);
 

#define u64   uint64_t
 


Typedef Documentation

typedef struct disk_s disk_t
 


Function Documentation

disk_t* add_disk_entry disk_t **  dl,
disk_t new_dl
 

hd_t* add_hd_entry hd_data_t hd_data,
unsigned  line,
unsigned  count
 

hd_t * add_hd_entry2 hd_t **  hd,
hd_t new_hd
[static]
 

void* add_mem void *  p,
size_t  elem_size,
size_t  n
 

hd_res_t* add_res_entry hd_res_t **  res,
hd_res_t new_res
 

str_list_t * add_str_list str_list_t **  sl,
char *  str
[related, inherited]
 

Add a string to a string list.

The new string (str) will be *copied*!

void assign_hw_class hd_data_t hd_data,
hd_t hd
[static]
 

char* canon_str char *  s,
int  len
 

int cmp_hd hd_t hd1,
hd_t hd2
 

void copy_log2shm hd_data_t hd_data  )  [static]
 

void crc64 uint64_t *  id,
void *  p,
int  len
 

void create_model_name hd_data_t hd_data,
hd_t hd
[static]
 

int dev_name_duplicate disk_t dl,
char *  dev_name
 

char* eisa_vendor_str unsigned  v  ) 
 

int exists_hd_entry hd_data_t hd_data,
hd_t old_hd,
hd_t hd_ex
 

void fix_probe_features hd_data_t hd_data  )  [static]
 

char* float2str int  f,
int  n
 

devtree_t* free_devtree hd_data_t hd_data  ) 
 

disk_t* free_disk_list disk_t dl  ) 
 

driver_info_t* free_driver_info driver_info_t di  ) 
 

hd_detail_t* free_hd_detail hd_detail_t d  ) 
 

hd_t * free_hd_entry hd_t hd  )  [static]
 

void* free_mem void *  p  ) 
 

misc_t* free_misc misc_t m  ) 
 

void free_old_hd_entries hd_data_t hd_data  )  [static]
 

hd_res_t* free_res_list hd_res_t res  ) 
 

scsi_t* free_scsi scsi_t scsi,
int  free_all
 

str_list_t * free_str_list str_list_t list  )  [related, inherited]
 

Free the memory allocated by a string list.

char* get_cmd_param hd_data_t hd_data,
int  field
 

str_list_t* get_cmdline hd_data_t hd_data,
char *  key
 

unsigned get_disk_crc unsigned char *  data,
unsigned  len
 

void get_kernel_version hd_data_t hd_data  )  [static]
 

struct s_pr_flags * get_pr_flags enum probe_feature  feature  )  [static]
 

void get_probe_env hd_data_t hd_data  )  [static]
 

char* get_sysfs_attr const char *  bus,
const char *  device,
const char *  attr
 

char* get_sysfs_attr_by_path const char *  path,
const char *  attr
 

int has_hw_class hd_t hd,
hd_hw_item_t items
[static]
 

int has_item hd_hw_item_t items,
hd_hw_item_t  item
[static]
 

unsigned has_something_attached hd_data_t hd_data,
hd_t hd
 

int have_common_res hd_res_t res1,
hd_res_t res2
 

void hd_add_id hd_data_t hd_data,
hd_t hd
 

void hd_add_old_id hd_t hd  ) 
 

int hd_apm_enabled hd_data_t hd_data  ) 
 

str_list_t* hd_attr_list char *  str  ) 
 

int hd_attr_uint char *  attr,
uint64_t *  u,
int  base
 

hd_t* hd_base_class_list hd_data_t hd_data,
unsigned  base_class
 

enum boot_arch hd_boot_arch hd_data_t hd_data  ) 
 

unsigned hd_boot_disk hd_data_t hd_data,
int *  matches
 

hd_t* hd_bus_list hd_data_t hd_data,
unsigned  bus
 

const char* hd_busid_to_hwcfg int  busid  ) 
 

int hd_change_config_status hd_data_t hd_data,
const char *  id,
hd_status_t  status,
const char *  config_string
 

int hd_change_status const char *  id,
hd_status_t  status,
const char *  config_string
 

void hd_clear_probe_feature hd_data_t hd_data,
enum probe_feature  feature
 

int hd_color hd_data_t hd_data  ) 
 

void hd_copy hd_t dst,
hd_t src
 

enum cpu_arch hd_cpu_arch hd_data_t hd_data  ) 
 

unsigned hd_display_adapter hd_data_t hd_data  ) 
 

hd_t* hd_find_sysfs_id hd_data_t hd_data,
char *  id
 

hd_t* hd_find_sysfs_id_devname hd_data_t hd_data,
char *  id,
char *  devname
 

void hd_fork hd_data_t hd_data,
int  timeout,
int  total_timeout
 

void hd_fork_done hd_data_t hd_data  ) 
 

hal_device_t* hd_free_hal_devices hal_device_t dev  ) 
 

hal_prop_t* hd_free_hal_properties hal_prop_t prop  ) 
 

hd_data_t* hd_free_hd_data hd_data_t hd_data  ) 
 

Free all data.

hd_t* hd_free_hd_list hd_t hd  ) 
 

Free hardware items returned by e.g. hd_list().

Note:
This may not free it.

hd_manual_t* hd_free_manual hd_manual_t manual  ) 
 

hd_sysfsdrv_t * hd_free_sysfsdrv hd_sysfsdrv_t sf  )  [static]
 

hd_udevinfo_t * hd_free_udevinfo hd_udevinfo_t ui  )  [static]
 

hd_t * hd_get_device_by_id hd_data_t hd_data,
char *  id
[static]
 

hd_t* hd_get_device_by_idx hd_data_t hd_data,
unsigned  idx
 

char* hd_get_hddb_dir void   ) 
 

char* hd_get_hddb_path char *  sub  ) 
 

int hd_getdisksize hd_data_t hd_data,
char *  dev,
int  fd,
hd_res_t **  geo,
hd_res_t **  size
 

int hd_has_pcmcia hd_data_t hd_data  ) 
 

int hd_is_hw_class hd_t hd,
hd_hw_item_t  hw_class
 

int hd_is_sgi_altix hd_data_t hd_data  ) 
 

int hd_is_shm_ptr hd_data_t hd_data,
void *  ptr
 

int hd_is_uml hd_data_t hd_data  ) 
 

int hd_is_xen hd_data_t hd_data  ) 
 

char* hd_join char *  del,
str_list_t str
 

hd_t* hd_list hd_data_t hd_data,
hd_hw_item_t  item,
int  rescan,
hd_t hd_old
 

hd_t* hd_list2 hd_data_t hd_data,
hd_hw_item_t items,
int  rescan
 

hd_t* hd_list_with_status hd_data_t hd_data,
hd_hw_item_t  item,
hd_status_t  status
 

hd_t* hd_list_with_status2 hd_data_t hd_data,
hd_hw_item_t items,
hd_status_t  status
 

int hd_mac_color hd_data_t hd_data  ) 
 

int hd_mod_cmp char *  str1,
char *  str2
 

int hd_module_is_active hd_data_t hd_data,
char *  mod
 

str_list_t* hd_module_list hd_data_t hd_data,
unsigned  id
 

void hd_move_to_shm hd_data_t hd_data  ) 
 

int hd_probe_feature hd_data_t hd_data,
enum probe_feature  feature
 

enum probe_feature hd_probe_feature_by_name char *  name  ) 
 

char* hd_probe_feature_by_value enum probe_feature  feature  ) 
 

int hd_read_mmap hd_data_t hd_data,
char *  name,
unsigned char *  buf,
off_t  start,
unsigned  size
 

char* hd_read_sysfs_link char *  base_dir,
char *  link_name
 

int hd_report_this hd_data_t hd_data,
hd_t hd
 

void hd_scan hd_data_t hd_data  ) 
 

the actual hardware scan

void hd_scan_no_hal hd_data_t hd_data  )  [static]
 

void hd_scan_with_hal hd_data_t hd_data  )  [static]
 

void hd_scan_xtra hd_data_t hd_data  )  [static]
 

void hd_set_hw_class hd_t hd,
hd_hw_item_t  hw_class
 

void hd_set_probe_feature hd_data_t hd_data,
enum probe_feature  feature
 

void hd_set_probe_feature_hw hd_data_t hd_data,
hd_hw_item_t  item
 

void* hd_shm_add hd_data_t hd_data,
void *  ptr,
unsigned  len
 

char * hd_shm_add_str hd_data_t hd_data,
char *  str
[static]
 

str_list_t * hd_shm_add_str_list hd_data_t hd_data,
str_list_t sl
[static]
 

void hd_shm_clean hd_data_t hd_data  ) 
 

void hd_shm_done hd_data_t hd_data  ) 
 

void hd_shm_init hd_data_t hd_data  ) 
 

int hd_smp_support hd_data_t hd_data  ) 
 

str_list_t* hd_split char  del,
const char *  str
 

hd_t* hd_sub_class_list hd_data_t hd_data,
unsigned  base_class,
unsigned  sub_class
 

char* hd_sysfs_dev2_name char *  str  ) 
 

void hd_sysfs_driver_list hd_data_t hd_data  ) 
 

char* hd_sysfs_id char *  path  ) 
 

char* hd_sysfs_name2_dev char *  str  ) 
 

int hd_timeout void(*)(void *)  func,
void *  arg,
int  timeout
 

int hd_usb_support hd_data_t hd_data  ) 
 

char* hd_version void   ) 
 

int hex char *  s,
int  n
 

void hexdump char **  buf,
int  with_ascii,
unsigned  data_len,
unsigned char *  data
 

int is_audio hd_data_t hd_data,
hd_t hd
[static]
 

int is_modem hd_data_t hd_data,
hd_t hd
[static]
 

int is_pcmcia_ctrl hd_data_t hd_data,
hd_t hd
 

int is_pppoe hd_data_t hd_data,
hd_t hd
[static]
 

char* isa_id2str unsigned  id  ) 
 

void join_res_dma hd_res_t **  res1,
hd_res_t res2
 

void join_res_io hd_res_t **  res1,
hd_res_t res2
 

void join_res_irq hd_res_t **  res1,
hd_res_t res2
 

int load_module hd_data_t hd_data,
char *  module
 

int load_module_with_params hd_data_t hd_data,
char *  module,
char *  params
 

char* mod_name_by_idx unsigned  idx  ) 
 

unsigned name2eisa_id char *  s  ) 
 

void* new_mem size_t  size  ) 
 

char* new_str const char *  s  ) 
 

char* numid2str uint64_t  id,
int  len
 

int probe_module hd_data_t hd_data,
char *  module
 

void progress hd_data_t hd_data,
unsigned  pos,
unsigned  count,
char *  msg
 

unsigned char* read_block0 hd_data_t hd_data,
char *  dev,
int *  timeout
 

str_list_t* read_dir char *  dir_name,
int  type
 

str_list_t* read_file char *  file_name,
unsigned  start_line,
unsigned  lines
 

str_list_t* read_kmods hd_data_t hd_data  ) 
 

void read_udevinfo hd_data_t hd_data  ) 
 

void remove_hd_entries hd_data_t hd_data  ) 
 

void remove_tagged_hd_entries hd_data_t hd_data  ) 
 

void* resize_mem void *  p,
size_t  n
 

str_list_t * reverse_str_list str_list_t list  )  [related, inherited]
 

Reverse string list.

int run_cmd hd_data_t hd_data,
char *  cmd
 

str_list_t * search_str_list str_list_t sl,
char *  str
[related, inherited]
 

Search a string list for a string.

void set_probe_feature hd_data_t hd_data,
enum probe_feature  feature,
unsigned  val
[static]
 

void short_vendor char *  vendor  )  [static]
 

void sigchld_handler int   )  [static]
 

void sigusr1_handler int   )  [static]
 

int str2float char *  s,
int  n
 

void str_printf char **  buf,
int  offset,
char *  format,
  ...
 

void test_read_block0_open void *  arg  )  [static]
 

void timeout_alarm_handler int  signal  )  [static]
 

int unload_module hd_data_t hd_data,
char *  module
 

void update_irq_usage hd_data_t hd_data  ) 
 

char* vend_id2str unsigned  vend  ) 
 


Variable Documentation

volatile pid_t child [static]
 

pid_t child_id [static]
 

hd_data_t* hd_data_sig [static]
 

struct s_pr_flags pr_flags[] [static]
 

struct s_mod_names pr_modules[] [static]