libhd  5.0
hd_int.h
Go to the documentation of this file.
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