This commit was manufactured by cvs2svn to create tag
[opensuse:hwinfo.git] / src / hd / hd_int.h
1 #include <sysfs/dlist.h>
2 #include <sysfs/libsysfs.h>
3
4 #define PROC_CMDLINE            "/proc/cmdline"
5 #define PROC_PCI_DEVICES        "/proc/bus/pci/devices"
6 #define PROC_PCI_BUS            "/proc/bus/pci"
7 #define PROC_CPUINFO            "/proc/cpuinfo"
8 #define PROC_IOPORTS            "/proc/ioports"
9 #define PROC_DMA                "/proc/dma"
10 #define PROC_INTERRUPTS         "/proc/interrupts"
11 #define PROC_NVRAM_22           "/proc/driver/nvram"
12 #define PROC_NVRAM_24           "/proc/nvram"
13 #define PROC_IDE                "/proc/ide"
14 #define PROC_SCSI               "/proc/scsi"
15 #define PROC_CDROM_INFO         "/proc/sys/dev/cdrom/info"
16 #define PROC_NET_IF_INFO        "/proc/net/dev"
17 #define PROC_MODULES            "/proc/modules"
18 #define PROC_DRIVER_SERIAL      "/proc/tty/driver/serial"
19 #define PROC_DRIVER_MACSERIAL   "/proc/tty/driver/macserial"
20 #define PROC_PARPORT_22         "/proc/parport/"                        /* Final '/' is essential! */
21 #define PROC_PARPORT_24         "/proc/sys/dev/parport/parport"
22 #define PROC_KCORE              "/proc/kcore"
23 // #define PROC_USB_DEVICES     "/proc/bus/usb/devices"
24 #define PROC_USB_DEVICES        "/proc/bus/usb/devices_please-use-sysfs-instead"
25 #define PROC_PROM               "/proc/device-tree"
26 #define PROC_MEMINFO            "/proc/meminfo"
27 #define PROC_VERSION            "/proc/version"
28 #define PROC_ISAPNP             "/proc/isapnp"
29 #define PROC_ISERIES            "/proc/iSeries"
30 #define PROC_ISERIES_VETH       "/proc/iSeries/veth"
31 #define PROC_PARTITIONS         "/proc/partitions"
32 #define PROC_APM                "/proc/apm"
33
34 #define DEV_NVRAM               "/dev/nvram"
35 #define DEV_PSAUX               "/dev/psaux"
36 #define DEV_ADBMOUSE            "/dev/adbmouse"
37 #define DEV_MEM                 "/dev/mem"
38 #define DEV_KBD                 "/dev/kbd"
39 #define DEV_CONSOLE             "/dev/console"
40 #define DEV_OPENPROM            "/dev/openprom"
41 #define DEV_SUNMOUSE            "/dev/sunmouse"
42 #define DEV_MICE                "/dev/input/mice"
43 #define DEV_FB                  "/dev/fb"
44
45 #define PROG_MODPROBE           "/sbin/modprobe"
46 #define PROG_RMMOD              "/sbin/rmmod"
47 #define PROG_CARDCTL            "/sbin/cardctl"
48 #define PROG_UDEVINFO           "/usr/bin/udevinfo"
49
50 #define KLOG_BOOT               "/var/log/boot.msg"
51 #define ISAPNP_CONF             "/etc/isapnp.conf"
52
53 #define ID_LIST                 HARDWARE_DIR "/hd.ids"
54 #define LIB_CMDLINE             HARDWARE_DIR "/cmdline"
55
56 #define KERNEL_22               0x020200
57 #define KERNEL_24               0x020400
58 #define KERNEL_26               0x020600
59
60 #if defined(__s390__) || defined(__s390x__) || defined(__alpha__) || defined(LIBHD_TINY)
61 #define WITH_ISDN       0
62 #else
63 #define WITH_ISDN       1
64 #endif
65
66 #define PROGRESS(a, b, c) progress(hd_data, a, b, c)
67 #define ADD2LOG(a...) str_printf(&hd_data->log, -2, a)
68
69 #undef LIBHD_MEMCHECK
70
71 #if defined(__i386__) || defined(__PPC__)
72 /*
73  * f: function we are in
74  * a: first argument
75  */
76
77 #ifdef __i386__
78 #define CALLED_FROM(f, a) ((void *) ((unsigned *) &a)[-1] - 5)
79 #endif
80
81 #ifdef __PPC__
82 /* (1-arg funcs only) #define CALLED_FROM(f, a) ((void *) *((unsigned *) ((void *) &a - ((short *) f)[1] - 4)) - 4) */
83 static inline void *getr1() { void *p; asm("mr %0,1" : "=r" (p) :); return p; }
84 #define CALLED_FROM(f, a) ((void *) ((unsigned *) (getr1() - ((short *) f)[1]))[1] - 4)
85 #endif
86 #else
87 #undef LIBHD_MEMCHECK
88 #endif
89
90 #ifdef LIBHD_MEMCHECK
91 FILE *libhd_log;
92 #endif
93
94
95 /*
96  * define to make (hd_t).unique_id a hex string, otherwise it is a
97  * base64-like string
98  */
99 #undef NUMERIC_UNIQUE_ID
100
101 /*
102  * Internal probing module numbers. Use mod_name_by_idx() outside of libhd.
103  */
104 enum mod_idx {
105   mod_none, mod_memory, mod_pci, mod_isapnp, mod_pnpdump, mod_net,
106   mod_floppy, mod_misc, mod_bios, mod_cpu, mod_monitor, mod_mouse, mod_scsi,
107   mod_serial, mod_usb, mod_adb, mod_modem, mod_parallel, mod_isa, mod_isdn,
108   mod_kbd, mod_prom, mod_sbus, mod_int, mod_braille, mod_xtra, mod_sys,
109   mod_manual, mod_fb, mod_veth, mod_pppoe, mod_pcmcia, mod_s390,
110   mod_sysfs, mod_dsl, mod_block, mod_edd, mod_input
111 };
112
113 void *new_mem(size_t size);
114 void *resize_mem(void *, size_t);
115 void *add_mem(void *, size_t, size_t);
116 char *new_str(const char *);
117 void *free_mem(void *);
118 int have_common_res(hd_res_t *res1, hd_res_t *res2);
119 void join_res_io(hd_res_t **res1, hd_res_t *res2);
120 void join_res_irq(hd_res_t **res1, hd_res_t *res2);
121 void join_res_dma(hd_res_t **res1, hd_res_t *res2);
122 hd_res_t *free_res_list(hd_res_t *res);
123 hd_res_t *add_res_entry(hd_res_t **res, hd_res_t *new_res);
124 hd_t *add_hd_entry(hd_data_t *hd_data, unsigned line, unsigned count);
125 misc_t *free_misc(misc_t *m);
126 scsi_t *free_scsi(scsi_t *scsi, int free_all);
127 hd_detail_t *free_hd_detail(hd_detail_t *d);
128 devtree_t *free_devtree(hd_data_t *hd_data);
129 void hd_add_id(hd_data_t *hd_data, hd_t *hd);
130
131 char *isa_id2str(unsigned);
132 char *eisa_vendor_str(unsigned);
133 unsigned name2eisa_id(char *);
134 char *canon_str(char *, int);
135
136 int hex(char *string, int digits);
137
138 void str_printf(char **buf, int offset, char *format, ...) __attribute__ ((format (printf, 3, 4)));
139 void hexdump(char **buf, int with_ascii, unsigned data_len, unsigned char *data);
140 str_list_t *search_str_list(str_list_t *sl, char *str);
141 str_list_t *add_str_list(str_list_t **sl, char *str);
142 str_list_t *free_str_list(str_list_t *list);
143 str_list_t *read_file(char *file_name, unsigned start_line, unsigned lines);
144 str_list_t *read_dir(char *dir_name, int type);
145 char *hd_read_symlink(char *link_name);
146 void progress(hd_data_t *hd_data, unsigned pos, unsigned count, char *msg);
147
148 void remove_hd_entries(hd_data_t *hd_data);
149 void remove_tagged_hd_entries(hd_data_t *hd_data);
150
151 driver_info_t *free_driver_info(driver_info_t *di);
152
153 int str2float(char *s, int n);
154 char *float2str(int i, int n);
155
156 /* return the file name of a module */
157 char *mod_name_by_idx(unsigned idx);
158
159 int hd_timeout(void(*func)(void *), void *arg, int timeout);
160
161 str_list_t *read_kmods(hd_data_t *hd_data);
162 char *get_cmd_param(hd_data_t *hd_data, int field);
163
164 #ifdef __i386__
165 /* smp/smp.c */
166 int detectSMP(void);
167 #endif
168
169 void update_irq_usage(hd_data_t *hd_data);
170 int run_cmd(hd_data_t *hd_data, char *cmd);
171 int load_module_with_params(hd_data_t *hd_data, char *module, char *params);
172 int load_module(hd_data_t *hd_data, char *module);
173 int unload_module(hd_data_t *hd_data, char *module);
174 int probe_module(hd_data_t *hd_data, char *module);
175
176 int cmp_hd(hd_t *hd1, hd_t *hd2);
177 unsigned has_something_attached(hd_data_t *hd_data, hd_t *hd);
178
179 str_list_t *get_cmdline(hd_data_t *hd_data, char *key);
180
181 int detect_smp_bios(hd_data_t *hd_data);
182 int detect_smp_prom(hd_data_t *hd_data);
183
184 unsigned char *read_block0(hd_data_t *hd_data, char *dev, int *timeout);
185
186 void hd_copy(hd_t *dst, hd_t *src);
187
188 /* parameter for gather_resources(,,, which) */
189 #define W_IO    (1 << 0)
190 #define W_DMA   (1 << 1)
191 #define W_IRQ   (1 << 2)
192
193 void gather_resources(misc_t *m, hd_res_t **r, char *name, unsigned which);
194
195 char *vend_id2str(unsigned vend);
196
197 int hd_getdisksize(hd_data_t *hd_data, char *dev, int fd, hd_res_t **geo, hd_res_t **size);
198
199 str_list_t *hd_split(char del, char *str);
200 char *hd_join(char *del, str_list_t *str);
201
202 int is_pnpinfo(ser_device_t *mi, int ofs);
203
204 int is_pcmcia_ctrl(hd_data_t *hd_data, hd_t *hd);
205
206 void hd_fork(hd_data_t *hd_data, int timeout, int total_timeout);
207 void hd_fork_done(hd_data_t *hd_data);
208 void hd_shm_init(hd_data_t *hd_data);
209 void hd_shm_clean(hd_data_t *hd_data);
210 void hd_shm_done(hd_data_t *hd_data);
211 void *hd_shm_add(hd_data_t *hd_data, void *ptr, unsigned len);
212 int hd_is_shm_ptr(hd_data_t *hd_data, void *ptr);
213 void hd_move_to_shm(hd_data_t *hd_data);
214
215 void read_udevinfo(hd_data_t *hd_data);
216
217 hd_t *hd_find_sysfs_id(hd_data_t *hd_data, char *id);
218 int hd_attr_uint(struct sysfs_attribute *attr, uint64_t *u, int base);
219 char *hd_attr_str(struct sysfs_attribute *attr);
220 char *hd_sysfs_id(char *path);
221 char *hd_sysfs_name2_dev(char *str);
222 char *hd_sysfs_dev2_name(char *str);
223 void hd_sysfs_driver_list(hd_data_t *hd_data);
224 char *hd_sysfs_find_driver(hd_data_t *hd_data, char *sysfs_id, int exact);
225 int hd_report_this(hd_data_t *hd_data, hd_t *hd);
226 str_list_t *hd_module_list(hd_data_t *hd_data, unsigned id);
227
228 int hd_is_sgi_altix(hd_data_t *hd_data);
229 int hd_is_iseries(hd_data_t *hd_data);
230
231
232 #ifdef __cplusplus
233 }
234 #endif
235