libhd  5.0
Data Structures | Macros | Typedefs | Functions | Variables
hd.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <stdarg.h>
#include <fcntl.h>
#include <signal.h>
#include <ctype.h>
#include <errno.h>
#include <dirent.h>
#include <time.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <sys/time.h>
#include <sys/ioctl.h>
#include <sys/mount.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <sys/mman.h>
#include <linux/pci.h>
#include <linux/hdreg.h>
#include <linux/fs.h>
#include "hd.h"
#include "hddb.h"
#include "hd_int.h"
#include "smbios.h"
#include "memory.h"
#include "isapnp.h"
#include "monitor.h"
#include "cpu.h"
#include "misc.h"
#include "mouse.h"
#include "floppy.h"
#include "bios.h"
#include "serial.h"
#include "net.h"
#include "version.h"
#include "usb.h"
#include "modem.h"
#include "parallel.h"
#include "isa.h"
#include "isdn.h"
#include "kbd.h"
#include "prom.h"
#include "sbus.h"
#include "int.h"
#include "braille.h"
#include "sys.h"
#include "manual.h"
#include "fb.h"
#include "pppoe.h"
#include "pcmcia.h"
#include "s390.h"
#include "pci.h"
#include "block.h"
#include "edd.h"
#include "input.h"
#include "wlan.h"
#include "hal.h"
#include "klog.h"
#include "drm.h"

Data Structures

struct  disk_s
 
struct  pr_flags_t
 
struct  s_mod_names
 

Macros

#define _GNU_SOURCE   /* strcasestr() */
 
#define _LINUX_AUDIT_H_
 
#define _LINUX_PRIO_TREE_H
 
#define u64   uint64_t
 
#define BLKSSZGET   _IO(0x12,104) /* get block device sector size */
 
#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 struct disk_s disk_t
 

Functions

static pr_flags_tpr_flags_by_name (char *name)
 
static pr_flags_tpr_flags_by_id (enum probe_feature feature)
 
static int set_probe_val (hd_data_t *hd_data, enum probe_feature feature, char *val)
 
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)
 
int get_probe_val_int (hd_data_t *hd_data, enum probe_feature feature)
 
char * get_probe_val_str (hd_data_t *hd_data, enum probe_feature feature)
 
str_list_tget_probe_val_list (hd_data_t *hd_data, enum probe_feature feature)
 
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. More...
 
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(). More...
 
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 More...
 
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 hd_log (hd_data_t *hd_data, char *buf, ssize_t len)
 
void hd_log_printf (hd_data_t *hd_data, char *format,...)
 
void hd_log_hex (hd_data_t *hd_data, int with_ascii, unsigned data_len, unsigned char *data)
 
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)
 
str_list_tread_dir_canonical (char *dir_name, int type)
 
char * hd_read_sysfs_link (char *base_dir, char *link_name)
 
str_list_tsubcomponent_list (str_list_t *list, char *comp, int max)
 
int has_subcomponent (str_list_t *list, char *comp)
 
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)
 
 __attribute__ ((visibility("hidden")))
 
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)
 
char * get_sysfs_attr_by_path2 (const char *path, const char *attr, unsigned *len)
 
int hd_mod_cmp (char *str1, char *str2)
 
str_list_tsort_str_list (str_list_t *sl0, int(*cmp_func)(const void *, const void *))
 

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 pr_flags_t pr_flags []
 

Macro Definition Documentation

◆ _GNU_SOURCE

#define _GNU_SOURCE   /* strcasestr() */

◆ _LINUX_AUDIT_H_

#define _LINUX_AUDIT_H_

◆ _LINUX_PRIO_TREE_H

#define _LINUX_PRIO_TREE_H