198e39e09SMartin Mares /* 24284af58SMartin Mares * The PCI Utilities -- Declarations 398e39e09SMartin Mares * 4af34f014SMartin Mares * Copyright (c) 1997--2018 Martin Mares <[email protected]> 598e39e09SMartin Mares * 661829219SMartin Mares * Can be freely distributed and used under the terms of the GNU GPL v2+ 761829219SMartin Mares * 861829219SMartin Mares * SPDX-License-Identifier: GPL-2.0-or-later 998e39e09SMartin Mares */ 1098e39e09SMartin Mares 11727ce158SMartin Mares #include "lib/pci.h" 12489233b4SMartin Mares #include "lib/sysdep.h" 131ffd04a8SMartin Mares #include "bitops.h" 1498e39e09SMartin Mares 154658bfadSPali Rohár /* 164658bfadSPali Rohár * gcc predefines macro __MINGW32__ for all MinGW targets. 174658bfadSPali Rohár * Including some MinGW header (e.g. windef.h) defines additional 184658bfadSPali Rohár * macro __MINGW32_MAJOR_VERSION (available for all MinGW targets). 194658bfadSPali Rohár */ 204658bfadSPali Rohár #if defined(PCI_OS_WINDOWS) && defined(__MINGW32__) 214658bfadSPali Rohár #include <windef.h> 224658bfadSPali Rohár #endif 234658bfadSPali Rohár 244658bfadSPali Rohár /* 254658bfadSPali Rohár * On Windows only MinGW 3.0 and higher versions provides <getopt.h> 264658bfadSPali Rohár * header file. Older MinGW versions and MSVC do not have it. 27*370be0deSPali Rohár * DJGPP does not provide <getopt.h>. 284658bfadSPali Rohár */ 29*370be0deSPali Rohár #if defined(PCI_OS_DJGPP) || (defined(PCI_OS_WINDOWS) && !(defined(__MINGW32_MAJOR_VERSION) && __MINGW32_MAJOR_VERSION >= 3)) 30ee7d8384SMartin Mares #include "compat/getopt.h" 31a30f0839SMartin Mares #else 3237ccbb7eSMartin Mares #include <getopt.h> 33ee7d8384SMartin Mares #endif 34ee7d8384SMartin Mares 35727ce158SMartin Mares #define PCIUTILS_VERSION PCILIB_VERSION 36727ce158SMartin Mares 3781afa98cSMartin Mares extern const char program_name[]; 3881afa98cSMartin Mares 394f6b38caSMartin Mares void die(char *msg, ...) NONRET PCI_PRINTF(1,2); 40d1d7d88aSMartin Mares void *xmalloc(size_t howmuch); 41d1d7d88aSMartin Mares void *xrealloc(void *ptr, size_t howmuch); 42d1d7d88aSMartin Mares char *xstrdup(const char *str); 43af34f014SMartin Mares int parse_generic_option(int i, struct pci_access *pacc, char *arg); 44727ce158SMartin Mares 45489233b4SMartin Mares #ifdef PCI_HAVE_PM_INTEL_CONF 46727ce158SMartin Mares #define GENOPT_INTEL "H:" 47727ce158SMartin Mares #define GENHELP_INTEL "-H <mode>\tUse direct hardware access (<mode> = 1 or 2)\n" 48727ce158SMartin Mares #else 49727ce158SMartin Mares #define GENOPT_INTEL 50727ce158SMartin Mares #define GENHELP_INTEL 51727ce158SMartin Mares #endif 521b99a704SMartin Mares #if defined(PCI_HAVE_PM_DUMP) && !defined(PCIUTILS_SETPCI) 53727ce158SMartin Mares #define GENOPT_DUMP "F:" 541b99a704SMartin Mares #define GENHELP_DUMP "-F <file>\tRead PCI configuration dump from a given file\n" 55727ce158SMartin Mares #else 56727ce158SMartin Mares #define GENOPT_DUMP 57727ce158SMartin Mares #define GENHELP_DUMP 58fb38eee8SMartin Mares #endif 59fb38eee8SMartin Mares 60f2b31663SMartin Mares #define GENERIC_OPTIONS "A:GO:" GENOPT_INTEL GENOPT_DUMP 611b99a704SMartin Mares #define GENERIC_HELP \ 62a0407443SMartin Mares "-A <method>\tUse the specified PCI access method (see `-A help' for a list)\n" \ 631b99a704SMartin Mares "-O <par>=<val>\tSet PCI access parameter (see `-O help' for a list)\n" \ 64553d12c8SMartin Mares "-G\t\tEnable PCI access debugging\n" \ 651b99a704SMartin Mares GENHELP_INTEL GENHELP_DUMP 66