libhd 5.0
hd_int.h
Go to the documentation of this file.
1#define PROC_CMDLINE "/proc/cmdline"
2#define PROC_PCI_DEVICES "/proc/bus/pci/devices"
3#define PROC_PCI_BUS "/proc/bus/pci"
4#define PROC_CPUINFO "/proc/cpuinfo"
5#define PROC_IOPORTS "/proc/ioports"
6#define PROC_DMA "/proc/dma"
7#define PROC_INTERRUPTS "/proc/interrupts"
8#define PROC_NVRAM_22 "/proc/driver/nvram"
9#define PROC_NVRAM_24 "/proc/nvram"
10#define PROC_IDE "/proc/ide"
11#define PROC_SCSI "/proc/scsi"
12#define PROC_CDROM_INFO "/proc/sys/dev/cdrom/info"
13#define PROC_NET_IF_INFO "/proc/net/dev"
14#define PROC_MODULES "/proc/modules"
15#define PROC_DRIVER_SERIAL "/proc/tty/driver/serial"
16#define PROC_DRIVER_MACSERIAL "/proc/tty/driver/macserial"
17#define PROC_PARPORT_22 "/proc/parport/" /* Final '/' is essential! */
18#define PROC_PARPORT_24 "/proc/sys/dev/parport/parport"
19#define PROC_KCORE "/proc/kcore"
20// #define PROC_USB_DEVICES "/proc/bus/usb/devices"
21#define PROC_USB_DEVICES "/proc/bus/usb/devices_please-use-sysfs-instead"
22#define PROC_PROM "/proc/device-tree"
23#define PROC_MEMINFO "/proc/meminfo"
24#define PROC_VERSION "/proc/version"
25#define PROC_ISAPNP "/proc/isapnp"
26#define PROC_PARTITIONS "/proc/partitions"
27#define PROC_APM "/proc/apm"
28#define PROC_XEN_BALLOON "/proc/xen/balloon"
29
30#define DEV_NVRAM "/dev/nvram"
31#define DEV_PSAUX "/dev/psaux"
32#define DEV_ADBMOUSE "/dev/adbmouse"
33#define DEV_MEM "/dev/mem"
34#define DEV_KBD "/dev/kbd"
35#define DEV_CONSOLE "/dev/console"
36#define DEV_OPENPROM "/dev/openprom"
37#define DEV_SUNMOUSE "/dev/sunmouse"
38#define DEV_MICE "/dev/input/mice"
39#define DEV_FB "/dev/fb"
40#define DEV_FB0 "/dev/fb0"
41
42#define PROG_MODPROBE "/sbin/modprobe"
43#define PROG_RMMOD "/sbin/rmmod"
44#define PROG_CARDCTL "/sbin/cardctl"
45#define PROG_UDEVINFO "/bin/udevinfo"
46#define PROG_UDEVADM "/usr/bin/udevadm"
47
48#define KLOG_BOOT "/var/log/boot.msg"
49#define ISAPNP_CONF "/etc/isapnp.conf"
50
51#define KERNEL_22 0x020200
52#define KERNEL_24 0x020400
53#define KERNEL_26 0x020600
54
55#if defined(__s390__) || defined(__s390x__) || defined(__alpha__) || defined(LIBHD_TINY)
56#define WITH_ISDN 0
57#else
58#define WITH_ISDN 1
59#endif
60
61// maximum attribute size in sysfs we expect
62// (this is to avoid accidentally reading unlimited data)
63#define MAX_ATTR_SIZE 0x10000
64
65#define PROGRESS(a, b, c) progress(hd_data, a, b, c)
66#define ADD2LOG(a...) hd_log_printf(hd_data, a)
67
68/*
69 * define to make (hd_t).unique_id a hex string, otherwise it is a
70 * base64-like string
71 */
72#undef NUMERIC_UNIQUE_ID
73
74/*
75 * Internal probing module numbers. Use mod_name_by_idx() outside of libhd.
76 */
77enum mod_idx {
84};
85
86void *new_mem(size_t size);
87void *resize_mem(void *, size_t);
88void *add_mem(void *, size_t, size_t);
89char *new_str(const char *);
90void *free_mem(void *);
91int have_common_res(hd_res_t *res1, hd_res_t *res2);
92void join_res_io(hd_res_t **res1, hd_res_t *res2);
93void join_res_irq(hd_res_t **res1, hd_res_t *res2);
94void join_res_dma(hd_res_t **res1, hd_res_t *res2);
96hd_res_t *add_res_entry(hd_res_t **res, hd_res_t *new_res);
97hd_t *add_hd_entry(hd_data_t *hd_data, unsigned line, unsigned count);
99scsi_t *free_scsi(scsi_t *scsi, int free_all);
102void hd_add_id(hd_data_t *hd_data, hd_t *hd);
103
104char *isa_id2str(unsigned);
105char *eisa_vendor_str(unsigned);
106unsigned name2eisa_id(char *);
107char *canon_str(char *, int);
108
109int hex(char *string, int digits);
110
111void hd_log(hd_data_t *hd_data, char *buf, ssize_t len);
112void hd_log_printf(hd_data_t *hd_data, char *format, ...) __attribute__ ((format (printf, 2, 3)));
113void hd_log_hex(hd_data_t *hd_data, int with_ascii, unsigned data_len, unsigned char *data);
114
115void str_printf(char **buf, int offset, char *format, ...) __attribute__ ((format (printf, 3, 4)));
116void hexdump(char **buf, int with_ascii, unsigned data_len, unsigned char *data);
121str_list_t *read_file(char *file_name, unsigned start_line, unsigned lines);
122str_list_t *read_dir(char *dir_name, int type);
123str_list_t *read_dir_canonical(char *dir_name, int type);
124char *hd_read_sysfs_link(char *base_dir, char *link_name);
125str_list_t *subcomponent_list(str_list_t *list, char *comp, int max);
126int has_subcomponent(str_list_t *list, char *comp);
127void progress(hd_data_t *hd_data, unsigned pos, unsigned count, char *msg);
128
131
133
134int str2float(char *s, int n);
135char *float2str(int i, int n);
136
137/* return the file name of a module */
138char *mod_name_by_idx(unsigned idx);
139
140int hd_timeout(void(*func)(void *), void *arg, int timeout);
141
143char *get_cmd_param(hd_data_t *hd_data, int field);
144
145#ifdef __i386__
146/* smp/smp.c */
147int detectSMP(void);
148#endif
149
151int run_cmd(hd_data_t *hd_data, char *cmd);
152int load_module_with_params(hd_data_t *hd_data, char *module, char *params);
156
157int cmp_hd(hd_t *hd1, hd_t *hd2);
159
161
164
165unsigned char *read_block0(hd_data_t *hd_data, char *dev, int *timeout);
166
167void hd_copy(hd_t *dst, hd_t *src);
168
169/* parameter for gather_resources(,,, which) */
170#define W_IO (1 << 0)
171#define W_DMA (1 << 1)
172#define W_IRQ (1 << 2)
173
174void gather_resources(misc_t *m, hd_res_t **r, char *name, unsigned which);
175
176char *vend_id2str(unsigned vend);
177
178int hd_getdisksize(hd_data_t *hd_data, char *dev, int fd, hd_res_t **geo, hd_res_t **size);
179
180str_list_t *hd_split(char del, const char *str);
181char *hd_join(char *del, str_list_t *str);
182
183int is_pnpinfo(ser_device_t *mi, int ofs);
184
186
187void hd_fork(hd_data_t *hd_data, int timeout, int total_timeout);
192void *hd_shm_add(hd_data_t *hd_data, void *ptr, unsigned len);
193int hd_is_shm_ptr(hd_data_t *hd_data, void *ptr);
195
197
199hd_t *hd_find_sysfs_id_devname(hd_data_t *hd_data, char *id, char *devname);
200int hd_attr_uint(char* attr, uint64_t* u, int base);
201str_list_t *hd_attr_list(char *str);
202char *hd_sysfs_id(char *path);
203char *hd_sysfs_name2_dev(char *str);
204char *hd_sysfs_dev2_name(char *str);
206char *hd_sysfs_find_driver(hd_data_t *hd_data, char *sysfs_id, int exact);
209
210char* get_sysfs_attr(const char* bus, const char* device, const char* attr);
211char *get_sysfs_attr_by_path(const char *path, const char *attr);
212char *get_sysfs_attr_by_path2(const char *path, const char *attr, unsigned *len);
213
214void hd_pci_complete_data(hd_t *hd);
216
218char *hd_hal_print_prop(hal_prop_t *prop);
219
220void hal_invalidate(hal_prop_t *prop);
221void hal_invalidate_all(hal_prop_t *prop, const char *key);
222hal_prop_t *hal_get_any(hal_prop_t *prop, const char *key);
223hal_prop_t *hal_get_bool(hal_prop_t *prop, const char *key);
224hal_prop_t *hal_get_int32(hal_prop_t *prop, const char *key);
225hal_prop_t *hal_get_str(hal_prop_t *prop, const char *key);
226hal_prop_t *hal_get_list(hal_prop_t *prop, const char *key);
227char *hal_get_useful_str(hal_prop_t *prop, const char *key);
228
231
232char *hd_get_hddb_dir(void);
233char *hd_get_hddb_path(char *sub);
234
235int hd_mod_cmp(char *str1, char *str2);
236
240
241str_list_t *sort_str_list(str_list_t *sl0, int (*cmp_func)(const void *, const void *));
242
243
244#ifdef __cplusplus
245}
246#endif
247
static char line[1024]
Definition cdbisdn.c:29
char * hd_sysfs_find_driver(hd_data_t *hd_data, char *sysfs_id, int exact)
Definition block.c:423
hal_prop_t * hal_get_bool(hal_prop_t *prop, const char *key)
Definition hal.c:289
hal_device_t * hal_find_device(hd_data_t *hd_data, char *udi)
Definition hal.c:248
void hal_invalidate_all(hal_prop_t *prop, const char *key)
Definition hal.c:271
hal_prop_t * hal_get_str(hal_prop_t *prop, const char *key)
Definition hal.c:309
hal_prop_t * hal_get_int32(hal_prop_t *prop, const char *key)
Definition hal.c:299
hal_prop_t * hal_get_any(hal_prop_t *prop, const char *key)
Definition hal.c:279
hal_prop_t * hal_get_list(hal_prop_t *prop, const char *key)
Definition hal.c:338
char * hal_get_useful_str(hal_prop_t *prop, const char *key)
Definition hal.c:319
void hal_invalidate(hal_prop_t *prop)
Definition hal.c:262
hal_prop_t * hal_add_new(hal_prop_t **prop)
Definition hal.c:348
char * hd_hal_print_prop(hal_prop_t *prop)
Definition hal.c:439
void gather_resources(misc_t *m, hd_res_t **r, char *name, unsigned which)
Definition misc.c:603
int is_pnpinfo(ser_device_t *mi, int ofs)
Definition modem.c:852
void hd_pci_complete_data(hd_t *hd)
Definition pci.c:479
void hd_pci_read_data(hd_data_t *hd_data)
Definition pci.c:144
probe_feature
flags to control the probing.
Definition hd.h:112
hal_device_t * hd_free_hal_devices(hal_device_t *dev)
Definition hd.c:1109
char * hd_join(char *del, str_list_t *str)
Definition hd.c:5216
void hd_sysfs_driver_list(hd_data_t *hd_data)
Definition hd.c:5854
char * hd_get_hddb_path(char *sub)
Definition hd.c:6045
str_list_t * read_kmods(hd_data_t *hd_data)
Definition hd.c:3628
char * get_sysfs_attr(const char *bus, const char *device, const char *attr)
Definition hd.c:6140
char * mod_name_by_idx(unsigned idx)
Definition hd.c:2345
int probe_module(hd_data_t *hd_data, char *module)
Definition hd.c:3898
void hd_shm_init(hd_data_t *hd_data)
Definition hd.c:5502
void join_res_irq(hd_res_t **res1, hd_res_t *res2)
Definition hd.c:1670
void hd_fork_done(hd_data_t *hd_data)
Definition hd.c:5446
int run_cmd(hd_data_t *hd_data, char *cmd)
Definition hd.c:3877
void hd_move_to_shm(hd_data_t *hd_data)
Definition hd.c:5635
int load_module(hd_data_t *hd_data, char *module)
Definition hd.c:3936
int str2float(char *s, int n)
Definition hd.c:2254
void update_irq_usage(hd_data_t *hd_data)
Definition hd.c:3850
str_list_t * subcomponent_list(str_list_t *list, char *comp, int max)
Definition hd.c:2701
driver_info_t * free_driver_info(driver_info_t *di)
Definition hd.c:1128
int hd_getdisksize(hd_data_t *hd_data, char *dev, int fd, hd_res_t **geo, hd_res_t **size)
Definition hd.c:5077
char * hd_get_hddb_dir(void)
Definition hd.c:6034
void * free_mem(void *)
Definition hd.c:1615
hd_res_t * free_res_list(hd_res_t *res)
Definition hd.c:1747
int hd_attr_uint(char *attr, uint64_t *u, int base)
Definition hd.c:6058
str_list_t * hd_split(char del, const char *str)
Definition hd.c:5197
char * float2str(int i, int n)
Definition hd.c:2285
char * hd_sysfs_id(char *path)
Definition hd.c:6089
void hd_shm_clean(hd_data_t *hd_data)
Definition hd.c:5542
char * vend_id2str(unsigned vend)
Definition hd.c:4490
int hex(char *string, int digits)
Definition hd.c:2240
void * add_mem(void *, size_t, size_t)
Definition hd.c:1584
char * get_sysfs_attr_by_path2(const char *path, const char *attr, unsigned *len)
Definition hd.c:6165
int hd_timeout(void(*func)(void *), void *arg, int timeout)
Definition hd.c:3575
char * get_cmd_param(hd_data_t *hd_data, int field)
Definition hd.c:3708
void remove_tagged_hd_entries(hd_data_t *hd_data)
Definition hd.c:2819
unsigned has_something_attached(hd_data_t *hd_data, hd_t *hd)
Definition hd.c:4184
char * eisa_vendor_str(unsigned)
Definition hd.c:2175
void hd_shm_done(hd_data_t *hd_data)
Definition hd.c:5564
char * hd_sysfs_name2_dev(char *str)
Definition hd.c:6101
int unload_module(hd_data_t *hd_data, char *module)
Definition hd.c:3941
unsigned char * read_block0(hd_data_t *hd_data, char *dev, int *timeout)
Definition hd.c:4409
str_list_t * hd_module_list(hd_data_t *hd_data, unsigned id)
Definition hd.c:5938
int cmp_hd(hd_t *hd1, hd_t *hd2)
Definition hd.c:3960
void void hexdump(char **buf, int with_ascii, unsigned data_len, unsigned char *data)
Definition hd.c:2461
str_list_t * read_dir_canonical(char *dir_name, int type)
Definition hd.c:2658
str_list_t * read_file(char *file_name, unsigned start_line, unsigned lines)
Definition hd.c:2548
unsigned name2eisa_id(char *)
Definition hd.c:2191
char * hd_read_sysfs_link(char *base_dir, char *link_name)
Definition hd.c:2674
void * new_mem(size_t size)
Definition hd.c:1556
char * new_str(const char *)
Definition hd.c:1598
int have_common_res(hd_res_t *res1, hd_res_t *res2)
Definition hd.c:1713
str_list_t * sort_str_list(str_list_t *sl0, int(*cmp_func)(const void *, const void *))
Definition hd.c:6226
int is_pcmcia_ctrl(hd_data_t *hd_data, hd_t *hd)
Definition hd.c:5247
hd_t * hd_find_sysfs_id(hd_data_t *hd_data, char *id)
Definition hd.c:5798
void hd_fork(hd_data_t *hd_data, int timeout, int total_timeout)
Definition hd.c:5349
str_list_t * get_probe_val_list(hd_data_t *hd_data, enum probe_feature feature)
Definition hd.c:436
void void hd_log_hex(hd_data_t *hd_data, int with_ascii, unsigned data_len, unsigned char *data)
Definition hd.c:2398
void hd_copy(hd_t *dst, hd_t *src)
Definition hd.c:3271
hd_detail_t * free_hd_detail(hd_detail_t *d)
Definition hd.c:1234
char * get_sysfs_attr_by_path(const char *path, const char *attr)
Definition hd.c:6156
scsi_t * free_scsi(scsi_t *scsi, int free_all)
Definition hd.c:1493
char * isa_id2str(unsigned)
Definition hd.c:2160
void join_res_io(hd_res_t **res1, hd_res_t *res2)
Definition hd.c:1622
hd_t * hd_find_sysfs_id_devname(hd_data_t *hd_data, char *id, char *devname)
Definition hd.c:5812
void hd_log(hd_data_t *hd_data, char *buf, ssize_t len)
Definition hd.c:2356
hd_res_t * add_res_entry(hd_res_t **res, hd_res_t *new_res)
Definition hd.c:1790
str_list_t * hd_attr_list(char *str)
Definition hd.c:6076
void * hd_shm_add(hd_data_t *hd_data, void *ptr, unsigned len)
Definition hd.c:5577
int get_probe_val_int(hd_data_t *hd_data, enum probe_feature feature)
Definition hd.c:406
int load_module_with_params(hd_data_t *hd_data, char *module, char *params)
Definition hd.c:3917
int hd_report_this(hd_data_t *hd_data, hd_t *hd)
Definition hd.c:5928
hd_t * add_hd_entry(hd_data_t *hd_data, unsigned line, unsigned count)
Definition hd.c:1798
void progress(hd_data_t *hd_data, unsigned pos, unsigned count, char *msg)
Definition hd.c:2742
void read_udevinfo(hd_data_t *hd_data)
Definition hd.c:5701
char * canon_str(char *, int)
Definition hd.c:2212
int hd_mod_cmp(char *str1, char *str2)
Definition hd.c:6206
int hd_is_shm_ptr(hd_data_t *hd_data, void *ptr)
Definition hd.c:5601
char * hd_sysfs_dev2_name(char *str)
Definition hd.c:6122
misc_t * free_misc(misc_t *m)
Definition hd.c:1460
void remove_hd_entries(hd_data_t *hd_data)
Definition hd.c:2801
void hd_add_id(hd_data_t *hd_data, hd_t *hd)
Definition hd.c:4296
void * resize_mem(void *, size_t)
Definition hd.c:1572
devtree_t * free_devtree(hd_data_t *hd_data)
Definition hd.c:4365
int has_subcomponent(str_list_t *list, char *comp)
Definition hd.c:2728
str_list_t * read_dir(char *dir_name, int type)
Definition hd.c:2597
void join_res_dma(hd_res_t **res1, hd_res_t *res2)
Definition hd.c:1690
char * get_probe_val_str(hd_data_t *hd_data, enum probe_feature feature)
Definition hd.c:421
str_list_t * get_cmdline(hd_data_t *hd_data, char *key)
Definition hd.c:3653
void hd_log_printf(hd_data_t *hd_data, char *format,...) __attribute__((format(printf
mod_idx
Definition hd_int.h:77
@ mod_scsi
Definition hd_int.h:79
@ mod_parallel
Definition hd_int.h:80
@ mod_usb
Definition hd_int.h:80
@ mod_floppy
Definition hd_int.h:79
@ mod_none
Definition hd_int.h:78
@ mod_hal
Definition hd_int.h:83
@ mod_mouse
Definition hd_int.h:79
@ mod_bios
Definition hd_int.h:79
@ mod_cpu
Definition hd_int.h:79
@ mod_manual
Definition hd_int.h:82
@ mod_memory
Definition hd_int.h:78
@ mod_int
Definition hd_int.h:81
@ mod_braille
Definition hd_int.h:81
@ mod_net
Definition hd_int.h:78
@ mod_serial
Definition hd_int.h:80
@ mod_isdn
Definition hd_int.h:80
@ mod_dsl
Definition hd_int.h:83
@ mod_sys
Definition hd_int.h:81
@ mod_isapnp
Definition hd_int.h:78
@ mod_sysfs
Definition hd_int.h:83
@ mod_adb
Definition hd_int.h:80
@ mod_misc
Definition hd_int.h:79
@ mod_prom
Definition hd_int.h:81
@ mod_fb
Definition hd_int.h:82
@ mod_monitor
Definition hd_int.h:79
@ mod_sbus
Definition hd_int.h:81
@ mod_modem
Definition hd_int.h:80
@ mod_pnpdump
Definition hd_int.h:78
@ mod_isa
Definition hd_int.h:80
@ mod_pci
Definition hd_int.h:78
@ mod_veth
Definition hd_int.h:82
@ mod_edd
Definition hd_int.h:83
@ mod_block
Definition hd_int.h:83
@ mod_xtra
Definition hd_int.h:81
@ mod_pcmcia
Definition hd_int.h:82
@ mod_pppoe
Definition hd_int.h:82
@ mod_kbd
Definition hd_int.h:81
@ mod_wlan
Definition hd_int.h:83
@ mod_input
Definition hd_int.h:83
@ mod_s390
Definition hd_int.h:82
void str_printf(char **buf, int offset, char *format,...) __attribute__((format(printf
str_list_t * add_str_list(str_list_t **sl, char *str)
int detect_smp_prom(hd_data_t *hd_data)
str_list_t * reverse_str_list(str_list_t *list)
str_list_t * search_str_list(str_list_t *sl, char *str)
str_list_t * free_str_list(str_list_t *list)
int detect_smp_bios(hd_data_t *hd_data)
@ module
Definition isdn_cdb_def.h:22
@ feature
Definition isdn_cdb_def.h:25
@ device
Definition isdn_cdb_def.h:6
static hd_data_t * hd_data
Definition pppoe.c:30
PROM tree on PPC.
Definition hd.h:1182
HAL device.
Definition hd.h:1630
HAL device properties.
Definition hd.h:1612
Holds all data accumulated during hardware probing.
Definition hd.h:2610
Definition hd.h:1877
Individual hardware item.
Definition hd.h:2202
Serial device configuration information.
Definition hd.h:1900
String list type.
Definition hd.h:411
raw SCSI data
Definition hd.h:1145
Definition hd.h:2047
Definition hd.h:2147
libhd resource union
Definition hd.h:1828