]> git.ipfire.org Git - thirdparty/pciutils.git/blame - lib/internal.h
Released as 3.2.0.
[thirdparty/pciutils.git] / lib / internal.h
CommitLineData
727ce158 1/*
489233b4 2 * The PCI Library -- Internal Stuff
727ce158 3 *
fa182368 4 * Copyright (c) 1997--2008 Martin Mares <mj@ucw.cz>
727ce158
MM
5 *
6 * Can be freely distributed and used under the terms of the GNU GPL.
7 */
8
59a0211a
MM
9#include "config.h"
10
11#ifdef PCI_SHARED_LIB
2f421184 12#define PCI_ABI __attribute__((visibility("default")))
89c51b98
MM
13#define STATIC_ALIAS(_decl, _for)
14#define DEFINE_ALIAS(_decl, _for) extern _decl __attribute__((alias(#_for)))
15#define SYMBOL_VERSION(_int, _ext) asm(".symver " #_int "," #_ext)
16#else
17#define STATIC_ALIAS(_decl, _for) _decl { return _for; }
18#define DEFINE_ALIAS(_decl, _for)
19#define SYMBOL_VERSION(_int, _ext)
2f421184
MM
20#endif
21
727ce158 22#include "pci.h"
489233b4 23#include "sysdep.h"
727ce158
MM
24
25struct pci_methods {
26 char *name;
9ff67879 27 char *help;
727ce158
MM
28 void (*config)(struct pci_access *);
29 int (*detect)(struct pci_access *);
30 void (*init)(struct pci_access *);
31 void (*cleanup)(struct pci_access *);
32 void (*scan)(struct pci_access *);
e95c8373 33 int (*fill_info)(struct pci_dev *, int flags);
727ce158
MM
34 int (*read)(struct pci_dev *, int pos, byte *buf, int len);
35 int (*write)(struct pci_dev *, int pos, byte *buf, int len);
52c81519 36 int (*read_vpd)(struct pci_dev *, int pos, byte *buf, int len);
727ce158
MM
37 void (*init_dev)(struct pci_dev *);
38 void (*cleanup_dev)(struct pci_dev *);
39};
40
6d5e39ac 41/* generic.c */
14d6c0a3 42void pci_generic_scan_bus(struct pci_access *, byte *busmap, int bus);
727ce158 43void pci_generic_scan(struct pci_access *);
e95c8373 44int pci_generic_fill_info(struct pci_dev *, int flags);
727ce158
MM
45int pci_generic_block_read(struct pci_dev *, int pos, byte *buf, int len);
46int pci_generic_block_write(struct pci_dev *, int pos, byte *buf, int len);
47
6d5e39ac 48/* init.c */
727ce158
MM
49void *pci_malloc(struct pci_access *, int);
50void pci_mfree(void *);
fa182368 51char *pci_strdup(struct pci_access *a, char *s);
727ce158 52
6d5e39ac 53/* access.c */
727ce158
MM
54struct pci_dev *pci_alloc_dev(struct pci_access *);
55int pci_link_dev(struct pci_access *, struct pci_dev *);
56
89c51b98
MM
57int pci_fill_info_v30(struct pci_dev *, int flags) PCI_ABI;
58int pci_fill_info_v31(struct pci_dev *, int flags) PCI_ABI;
dbe1e0a6 59int pci_fill_info_v32(struct pci_dev *, int flags) PCI_ABI;
89c51b98 60
6d5e39ac 61/* params.c */
0f24ef6f 62void pci_define_param(struct pci_access *acc, char *param, char *val, char *help);
98ccf6d6 63int pci_set_param_internal(struct pci_access *acc, char *param, char *val, int copy);
d6dcc545 64void pci_free_params(struct pci_access *acc);
fa182368 65
6d5e39ac
MM
66/* caps.c */
67unsigned int pci_scan_caps(struct pci_dev *, unsigned int want_fields);
68void pci_free_caps(struct pci_dev *);
69
727ce158 70extern struct pci_methods pm_intel_conf1, pm_intel_conf2, pm_linux_proc,
94db5c82 71 pm_fbsd_device, pm_aix_device, pm_nbsd_libpci, pm_obsd_device,
b6359063 72 pm_dump, pm_linux_sysfs;