X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=lib%2Fi386-io-windows.h;h=d5823eed19bb215c81caf2bbe1c5c96ab65ba2ba;hb=8b122188dfd404984eb360e8d876682fe7eb1613;hp=c875a7d1dcb8e29c6d94a6cedcce08f37d3b6c93;hpb=1c5cc9b5b323c84179cad9d90e86600d3c0cdfb6;p=pciutils.git diff --git a/lib/i386-io-windows.h b/lib/i386-io-windows.h index c875a7d..d5823ee 100644 --- a/lib/i386-io-windows.h +++ b/lib/i386-io-windows.h @@ -2,14 +2,25 @@ * The PCI Library -- Access to i386 I/O ports on Windows * * Copyright (c) 2004 Alexander Stock + * Copyright (c) 2006 Martin Mares * * Can be freely distributed and used under the terms of the GNU GPL. */ #include -#include #include +#ifndef __GNUC__ +#include +#else +int _outp(unsigned short port, int databyte); +unsigned short _outpw(unsigned short port, unsigned short dataword); +unsigned long _outpd(unsigned short port, unsigned long dataword); +int _inp(unsigned short port); +unsigned short _inpw(unsigned short port); +unsigned long _inpd(unsigned short port); +#endif + #define outb(x,y) _outp(y,x) #define outw(x,y) _outpw(y,x) #define outl(x,y) _outpd(y,x) @@ -18,49 +29,49 @@ #define inw(x) _inpw(x) #define inl(x) _inpd(x) -static int intel_iopl_set = -1; - static int -intel_setup_io(void) +intel_setup_io(struct pci_access *a) { - if (intel_iopl_set < 0) + typedef int (*MYPROC)(void); + MYPROC InitializeWinIo; + HMODULE lib; + + lib = LoadLibrary("WinIo.dll"); + if (!lib) { - typedef int (*MYPROC)(void); - MYPROC InitializeWinIo; - HMODULE lib; + a->warning("i386-io-windows: Couldn't load WinIo.dll."); + return 0; + } + /* XXX: Is this really needed? --mj */ + GetProcAddress(lib, "InitializeWinIo"); - intel_iopl_set = 0; + InitializeWinIo = (MYPROC) GetProcAddress(lib, "InitializeWinIo"); + if (!InitializeWinIo) + { + a->warning("i386-io-windows: Couldn't find InitializeWinIo function."); + return 0; + } - lib = LoadLibrary("WinIo.dll"); - if (!lib) - { - fprintf(stderr, "libpci: Couldn't load WinIo.dll.\n"); - return 0; - } - /* XXX: Is this really needed? --mj */ - GetProcAddress(lib, "InitializeWinIo"); + if (!InitializeWinIo()) + { + a->warning("i386-io-windows: InitializeWinIo() failed."); + return 0; + } - InitializeWinIo = (MYPROC) GetProcAddress(lib, "InitializeWinIo"); - if (!InitializeWinIo) - { - fprintf(stderr, "libpci: Couldn't find InitializeWinIo function.\n"); - return 0; - } + return 1; +} - if (!InitializeWinIo()) - { - fprintf(stderr, "libpci: InitializeWinIo() failed.\n"); - return 0; - } +static inline int +intel_cleanup_io(struct pci_access *a UNUSED) +{ + //TODO: DeInitializeWinIo! + return 1; +} - intel_iopl_set = 1; - } - return intel_iopl_set; +static inline void intel_io_lock(void) +{ } -static inline void -intel_cleanup_io(void) +static inline void intel_io_unlock(void) { - //TODO: DeInitializeWinIo! - //intel_iopl_set = -1; }