2007-06-20 Thomas Schwinge * lib/i386-io-hurd.h: Rewritten. diff --git a/lib/i386-io-hurd.h b/lib/i386-io-hurd.h index 334ce0a..b61d656 100644 --- a/lib/i386-io-hurd.h +++ b/lib/i386-io-hurd.h @@ -5,46 +5,23 @@ * Copyright (c) 2003 Martin Mares * Copyright (c) 2006 Samuel Thibault and * Thomas Schwinge + * Copyright (c) 2007 Thomas Schwinge * * Can be freely distributed and used under the terms of the GNU GPL. */ #include -#include -#include -#include - -#include - -static mach_port_t io_port; - static inline int -intel_setup_io(struct pci_access *a) +intel_setup_io(struct pci_access *a UNUSED) { - mach_port_t device; - - if ((errno = get_privileged_ports(NULL, &device))) - a->warning("i386-io-hurd: Can't get_privileged_ports(): %m"); - - if (!errno && (errno = device_open(device, D_READ | D_WRITE, "io", &io_port))) - a->warning("i386-io-hurd: Can't device_open(): %m"); - - mach_port_deallocate(mach_task_self(), device); - - if (!errno && (errno = i386_io_port_add(mach_thread_self(), io_port))) - a->warning("i386-io-hurd: Can't i386_io_port_add(): %m"); - - return errno ? 0 : 1; + return (ioperm (0, 65535, 1) == -1) ? 0 : 1; } static inline int -intel_cleanup_io(struct pci_access *a) +intel_cleanup_io(struct pci_access *a UNUSED) { - if ((errno = i386_io_port_remove(mach_thread_self(), io_port))) - a->warning("i386-io-hurd: Can't i386_io_port_remove(): %m"); - - mach_port_deallocate(mach_task_self(), io_port); + ioperm (0, 65535, 0); return -1; }