libhd
5.0
|
00001 #define PROC_CMDLINE "/proc/cmdline" 00002 #define PROC_PCI_DEVICES "/proc/bus/pci/devices" 00003 #define PROC_PCI_BUS "/proc/bus/pci" 00004 #define PROC_CPUINFO "/proc/cpuinfo" 00005 #define PROC_IOPORTS "/proc/ioports" 00006 #define PROC_DMA "/proc/dma" 00007 #define PROC_INTERRUPTS "/proc/interrupts" 00008 #define PROC_NVRAM_22 "/proc/driver/nvram" 00009 #define PROC_NVRAM_24 "/proc/nvram" 00010 #define PROC_IDE "/proc/ide" 00011 #define PROC_SCSI "/proc/scsi" 00012 #define PROC_CDROM_INFO "/proc/sys/dev/cdrom/info" 00013 #define PROC_NET_IF_INFO "/proc/net/dev" 00014 #define PROC_MODULES "/proc/modules" 00015 #define PROC_DRIVER_SERIAL "/proc/tty/driver/serial" 00016 #define PROC_DRIVER_MACSERIAL "/proc/tty/driver/macserial" 00017 #define PROC_PARPORT_22 "/proc/parport/" /* Final '/' is essential! */ 00018 #define PROC_PARPORT_24 "/proc/sys/dev/parport/parport" 00019 #define PROC_KCORE "/proc/kcore" 00020 // #define PROC_USB_DEVICES "/proc/bus/usb/devices" 00021 #define PROC_USB_DEVICES "/proc/bus/usb/devices_please-use-sysfs-instead" 00022 #define PROC_PROM "/proc/device-tree" 00023 #define PROC_MEMINFO "/proc/meminfo" 00024 #define PROC_VERSION "/proc/version" 00025 #define PROC_ISAPNP "/proc/isapnp" 00026 #define PROC_PARTITIONS "/proc/partitions" 00027 #define PROC_APM "/proc/apm" 00028 #define PROC_XEN_BALLOON "/proc/xen/balloon" 00029 00030 #define DEV_NVRAM "/dev/nvram" 00031 #define DEV_PSAUX "/dev/psaux" 00032 #define DEV_ADBMOUSE "/dev/adbmouse" 00033 #define DEV_MEM "/dev/mem" 00034 #define DEV_KBD "/dev/kbd" 00035 #define DEV_CONSOLE "/dev/console" 00036 #define DEV_OPENPROM "/dev/openprom" 00037 #define DEV_SUNMOUSE "/dev/sunmouse" 00038 #define DEV_MICE "/dev/input/mice" 00039 #define DEV_FB "/dev/fb" 00040 #define DEV_FB0 "/dev/fb0" 00041 00042 #define PROG_MODPROBE "/sbin/modprobe" 00043 #define PROG_RMMOD "/sbin/rmmod" 00044 #define PROG_CARDCTL "/sbin/cardctl" 00045 #define PROG_UDEVINFO "/usr/bin/udevinfo" 00046 #define PROG_UDEVADM "/sbin/udevadm" 00047 00048 #define KLOG_BOOT "/var/log/boot.msg" 00049 #define ISAPNP_CONF "/etc/isapnp.conf" 00050 00051 #define KERNEL_22 0x020200 00052 #define KERNEL_24 0x020400 00053 #define KERNEL_26 0x020600 00054 00055 #if defined(__s390__) || defined(__s390x__) || defined(__alpha__) || defined(LIBHD_TINY) 00056 #define WITH_ISDN 0 00057 #else 00058 #define WITH_ISDN 1 00059 #endif 00060 00061 #define PROGRESS(a, b, c) progress(hd_data, a, b, c) 00062 #define ADD2LOG(a...) hd_log_printf(hd_data, a) 00063 00064 /* 00065 * define to make (hd_t).unique_id a hex string, otherwise it is a 00066 * base64-like string 00067 */ 00068 #undef NUMERIC_UNIQUE_ID 00069 00070 /* 00071 * Internal probing module numbers. Use mod_name_by_idx() outside of libhd. 00072 */ 00073 enum mod_idx { 00074 mod_none, mod_memory, mod_pci, mod_isapnp, mod_pnpdump, mod_net, 00075 mod_floppy, mod_misc, mod_bios, mod_cpu, mod_monitor, mod_mouse, mod_scsi, 00076 mod_serial, mod_usb, mod_adb, mod_modem, mod_parallel, mod_isa, mod_isdn, 00077 mod_kbd, mod_prom, mod_sbus, mod_int, mod_braille, mod_xtra, mod_sys, 00078 mod_manual, mod_fb, mod_veth, mod_pppoe, mod_pcmcia, mod_s390, 00079 mod_sysfs, mod_dsl, mod_block, mod_edd, mod_input, mod_wlan, mod_hal 00080 }; 00081 00082 void *new_mem(size_t size); 00083 void *resize_mem(void *, size_t); 00084 void *add_mem(void *, size_t, size_t); 00085 char *new_str(const char *); 00086 void *free_mem(void *); 00087 int have_common_res(hd_res_t *res1, hd_res_t *res2); 00088 void join_res_io(hd_res_t **res1, hd_res_t *res2); 00089 void join_res_irq(hd_res_t **res1, hd_res_t *res2); 00090 void join_res_dma(hd_res_t **res1, hd_res_t *res2); 00091 hd_res_t *free_res_list(hd_res_t *res); 00092 hd_res_t *add_res_entry(hd_res_t **res, hd_res_t *new_res); 00093 hd_t *add_hd_entry(hd_data_t *hd_data, unsigned line, unsigned count); 00094 misc_t *free_misc(misc_t *m); 00095 scsi_t *free_scsi(scsi_t *scsi, int free_all); 00096 hd_detail_t *free_hd_detail(hd_detail_t *d); 00097 devtree_t *free_devtree(hd_data_t *hd_data); 00098 void hd_add_id(hd_data_t *hd_data, hd_t *hd); 00099 00100 char *isa_id2str(unsigned); 00101 char *eisa_vendor_str(unsigned); 00102 unsigned name2eisa_id(char *); 00103 char *canon_str(char *, int); 00104 00105 int hex(char *string, int digits); 00106 00107 void hd_log(hd_data_t *hd_data, char *buf, ssize_t len); 00108 void hd_log_printf(hd_data_t *hd_data, char *format, ...) __attribute__ ((format (printf, 2, 3))); 00109 void hd_log_hex(hd_data_t *hd_data, int with_ascii, unsigned data_len, unsigned char *data); 00110 00111 void str_printf(char **buf, int offset, char *format, ...) __attribute__ ((format (printf, 3, 4))); 00112 void hexdump(char **buf, int with_ascii, unsigned data_len, unsigned char *data); 00113 str_list_t *search_str_list(str_list_t *sl, char *str); 00114 str_list_t *add_str_list(str_list_t **sl, char *str); 00115 str_list_t *free_str_list(str_list_t *list); 00116 str_list_t *reverse_str_list(str_list_t *list); 00117 str_list_t *read_file(char *file_name, unsigned start_line, unsigned lines); 00118 str_list_t *read_dir(char *dir_name, int type); 00119 char *hd_read_sysfs_link(char *base_dir, char *link_name); 00120 void progress(hd_data_t *hd_data, unsigned pos, unsigned count, char *msg); 00121 00122 void remove_hd_entries(hd_data_t *hd_data); 00123 void remove_tagged_hd_entries(hd_data_t *hd_data); 00124 00125 driver_info_t *free_driver_info(driver_info_t *di); 00126 00127 int str2float(char *s, int n); 00128 char *float2str(int i, int n); 00129 00130 /* return the file name of a module */ 00131 char *mod_name_by_idx(unsigned idx); 00132 00133 int hd_timeout(void(*func)(void *), void *arg, int timeout); 00134 00135 str_list_t *read_kmods(hd_data_t *hd_data); 00136 char *get_cmd_param(hd_data_t *hd_data, int field); 00137 00138 #ifdef __i386__ 00139 /* smp/smp.c */ 00140 int detectSMP(void); 00141 #endif 00142 00143 void update_irq_usage(hd_data_t *hd_data); 00144 int run_cmd(hd_data_t *hd_data, char *cmd); 00145 int load_module_with_params(hd_data_t *hd_data, char *module, char *params); 00146 int load_module(hd_data_t *hd_data, char *module); 00147 int unload_module(hd_data_t *hd_data, char *module); 00148 int probe_module(hd_data_t *hd_data, char *module); 00149 00150 int cmp_hd(hd_t *hd1, hd_t *hd2); 00151 unsigned has_something_attached(hd_data_t *hd_data, hd_t *hd); 00152 00153 str_list_t *get_cmdline(hd_data_t *hd_data, char *key); 00154 00155 int detect_smp_bios(hd_data_t *hd_data); 00156 int detect_smp_prom(hd_data_t *hd_data); 00157 00158 unsigned char *read_block0(hd_data_t *hd_data, char *dev, int *timeout); 00159 00160 void hd_copy(hd_t *dst, hd_t *src); 00161 00162 /* parameter for gather_resources(,,, which) */ 00163 #define W_IO (1 << 0) 00164 #define W_DMA (1 << 1) 00165 #define W_IRQ (1 << 2) 00166 00167 void gather_resources(misc_t *m, hd_res_t **r, char *name, unsigned which); 00168 00169 char *vend_id2str(unsigned vend); 00170 00171 int hd_getdisksize(hd_data_t *hd_data, char *dev, int fd, hd_res_t **geo, hd_res_t **size); 00172 00173 str_list_t *hd_split(char del, const char *str); 00174 char *hd_join(char *del, str_list_t *str); 00175 00176 int is_pnpinfo(ser_device_t *mi, int ofs); 00177 00178 int is_pcmcia_ctrl(hd_data_t *hd_data, hd_t *hd); 00179 00180 void hd_fork(hd_data_t *hd_data, int timeout, int total_timeout); 00181 void hd_fork_done(hd_data_t *hd_data); 00182 void hd_shm_init(hd_data_t *hd_data); 00183 void hd_shm_clean(hd_data_t *hd_data); 00184 void hd_shm_done(hd_data_t *hd_data); 00185 void *hd_shm_add(hd_data_t *hd_data, void *ptr, unsigned len); 00186 int hd_is_shm_ptr(hd_data_t *hd_data, void *ptr); 00187 void hd_move_to_shm(hd_data_t *hd_data); 00188 00189 void read_udevinfo(hd_data_t *hd_data); 00190 00191 hd_t *hd_find_sysfs_id(hd_data_t *hd_data, char *id); 00192 hd_t *hd_find_sysfs_id_devname(hd_data_t *hd_data, char *id, char *devname); 00193 int hd_attr_uint(char* attr, uint64_t* u, int base); 00194 str_list_t *hd_attr_list(char *str); 00195 char *hd_sysfs_id(char *path); 00196 char *hd_sysfs_name2_dev(char *str); 00197 char *hd_sysfs_dev2_name(char *str); 00198 void hd_sysfs_driver_list(hd_data_t *hd_data); 00199 char *hd_sysfs_find_driver(hd_data_t *hd_data, char *sysfs_id, int exact); 00200 int hd_report_this(hd_data_t *hd_data, hd_t *hd); 00201 str_list_t *hd_module_list(hd_data_t *hd_data, unsigned id); 00202 00203 char* get_sysfs_attr(const char* bus, const char* device, const char* attr); 00204 char *get_sysfs_attr_by_path(const char *path, const char *attr); 00205 char *get_sysfs_attr_by_path2(const char *path, const char *attr, unsigned *len); 00206 00207 void hd_pci_complete_data(hd_t *hd); 00208 void hd_pci_read_data(hd_data_t *hd_data); 00209 00210 hal_device_t *hd_free_hal_devices(hal_device_t *dev); 00211 char *hd_hal_print_prop(hal_prop_t *prop); 00212 00213 void hal_invalidate(hal_prop_t *prop); 00214 void hal_invalidate_all(hal_prop_t *prop, const char *key); 00215 hal_prop_t *hal_get_any(hal_prop_t *prop, const char *key); 00216 hal_prop_t *hal_get_bool(hal_prop_t *prop, const char *key); 00217 hal_prop_t *hal_get_int32(hal_prop_t *prop, const char *key); 00218 hal_prop_t *hal_get_str(hal_prop_t *prop, const char *key); 00219 hal_prop_t *hal_get_list(hal_prop_t *prop, const char *key); 00220 char *hal_get_useful_str(hal_prop_t *prop, const char *key); 00221 00222 hal_device_t *hal_find_device(hd_data_t *hd_data, char *udi); 00223 hal_prop_t *hal_add_new(hal_prop_t **prop); 00224 00225 char *hd_get_hddb_dir(void); 00226 char *hd_get_hddb_path(char *sub); 00227 00228 int hd_mod_cmp(char *str1, char *str2); 00229 00230 int get_probe_val_int(hd_data_t *hd_data, enum probe_feature feature); 00231 char *get_probe_val_str(hd_data_t *hd_data, enum probe_feature feature); 00232 str_list_t *get_probe_val_list(hd_data_t *hd_data, enum probe_feature feature); 00233 00234 str_list_t *sort_str_list(str_list_t *sl0, int (*cmp_func)(const void *, const void *)); 00235 00236 00237 #ifdef __cplusplus 00238 } 00239 #endif 00240