This is the mail archive of the libc-alpha@sourceware.cygnus.com mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

question + patch: Inclusion of <asm/io.h> in <sys/io.h>



What's the reason that we include <asm/io.h> in <sys/io.h>?

<sys/io.h> has:
/* Get constants from kernel header files. */
#include <asm/io.h>

But I don't know which constants we need.  <asm/io.h> on Intel doesn't
seem to have any usable constants.  The Linux/Arm specific file
doesn't include <asm/io.h> at all.  Or is the comment misleading and
we need some other stuff?

I'm proposing the appended patch for glibc 2.2 which removes the
inclusion and cleans up the files a bit.

Andreas

1999-12-29  Andreas Jaeger  <aj@suse.de>

	* sysdeps/unix/sysv/linux/alpha/sys/io.h: Don't include
	<asm/io.h>; remove K&R compatibility; add missing ints.

	* sysdeps/unix/sysv/linux/arm/sys/io.h: Remove K&R compatibility,
	add missing ints.

	* sysdeps/unix/sysv/linux/sys/io.h: Don't include <asm/io.h>.

============================================================
Index: sysdeps/unix/sysv/linux/alpha/sys/io.h
--- sysdeps/unix/sysv/linux/alpha/sys/io.h	1996/11/28 04:16:03	1.3
+++ sysdeps/unix/sysv/linux/alpha/sys/io.h	1999/12/29 16:43:05
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1999 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -23,9 +23,6 @@
 
 __BEGIN_DECLS
 
-/* Get constants from kernel header files. */
-#include <asm/io.h>
-
 /* If TURN_ON is TRUE, request for permission to do direct i/o on the
    port numbers in the range [FROM,FROM+NUM-1].  Otherwise, turn I/O
    permission off for that range.  This call requires root privileges.
@@ -33,39 +30,39 @@
    Portability note: not all Linux platforms support this call.  Most
    platforms based on the PC I/O architecture probably will, however.
    E.g., Linux/Alpha for Alpha PCs supports this.  */
-extern int ioperm __P ((unsigned long int __from, unsigned long int __num,
-			int __turn_on));
+extern int ioperm (unsigned long int __from, unsigned long int __num,
+		   int __turn_on) __THROW;
 
 /* Set the I/O privilege level to LEVEL.  If LEVEL>3, permission to
    access any I/O port is granted.  This call requires root
    privileges. */
-extern int iopl __P ((int __level));
+extern int iopl (int __level) __THROW;
 
 /* Return the physical address of the DENSE I/O memory or NULL if none
    is available (e.g. on a jensen).  */
-extern unsigned long _bus_base __P ((void)) __attribute__ ((const));
-extern unsigned long bus_base __P ((void)) __attribute__ ((const));
+extern unsigned long int _bus_base (void) __THROW __attribute__ ((const));
+extern unsigned long int bus_base (void) __THROW __attribute__ ((const));
 
 /* Return the physical address of the SPARSE I/O memory.  */
-extern unsigned long _bus_base_sparse __P ((void)) __attribute__ ((const));
-extern unsigned long bus_base_sparse __P ((void)) __attribute__ ((const));
+extern unsigned long _bus_base_sparse (void) __THROW __attribute__ ((const));
+extern unsigned long bus_base_sparse (void) __THROW __attribute__ ((const));
 
 /* Return the HAE shift used by the SPARSE I/O memory.  */
-extern int _hae_shift __P ((void)) __attribute__ ((const));
-extern int hae_shift __P ((void)) __attribute__ ((const));
+extern int _hae_shift (void) __THROW __attribute__ ((const));
+extern int hae_shift (void) __THROW __attribute__ ((const));
 
 /* Access PCI space protected from machine checks.  */
-extern int pciconfig_read __P ((unsigned long int __bus,
-				unsigned long int __dfn,
-				unsigned long int __off,
-				unsigned long int __len,
-				unsigned char *__buf));
-
-extern int pciconfig_write __P ((unsigned long int __bus,
-				 unsigned long int __dfn,
-				 unsigned long int __off,
-				 unsigned long int __len,
-				 unsigned char *__buf));
+extern int pciconfig_read (unsigned long int __bus,
+			   unsigned long int __dfn,
+			   unsigned long int __off,
+			   unsigned long int __len,
+			   unsigned char *__buf) __THROW;
+
+extern int pciconfig_write (unsigned long int __bus,
+			    unsigned long int __dfn,
+			    unsigned long int __off,
+			    unsigned long int __len,
+			    unsigned char *__buf) __THROW;
 
 __END_DECLS
 
============================================================
Index: sysdeps/unix/sysv/linux/arm/sys/io.h
--- sysdeps/unix/sysv/linux/arm/sys/io.h	1998/12/22 17:27:23	1.1
+++ sysdeps/unix/sysv/linux/arm/sys/io.h	1999/12/29 16:43:05
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1998, 1999 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -26,22 +26,22 @@
 /* If TURN_ON is TRUE, request for permission to do direct i/o on the
    port numbers in the range [FROM,FROM+NUM-1].  Otherwise, turn I/O
    permission off for that range.  This call requires root privileges.  */
-extern int ioperm __P ((unsigned long int __from, unsigned long int __num,
-			int __turn_on));
+extern int ioperm (unsigned long int __from, unsigned long int __num,
+		   int __turn_on) __THROW;
 
 /* Set the I/O privilege level to LEVEL.  If LEVEL is nonzero,
    permission to access any I/O port is granted.  This call requires
    root privileges. */
-extern int iopl __P ((int __level));
+extern int iopl (int __level) __THROW;
 
 /* The functions that actually perform reads and writes.  */
-extern unsigned char inb (unsigned long port);
-extern unsigned short inw (unsigned long port);
-extern unsigned long inl (unsigned long port);
-
-extern void outb (unsigned char value, unsigned long port);
-extern void outw (unsigned short value, unsigned long port);
-extern void outl (unsigned long value, unsigned long port);
+extern unsigned char inb (unsigned long int port) __THROW;
+extern unsigned short int inw (unsigned long int port) __THROW;
+extern unsigned long int inl (unsigned long int port) __THROW;
+
+extern void outb (unsigned char value, unsigned long int port) __THROW;
+extern void outw (unsigned short value, unsigned long int port) __THROW;
+extern void outl (unsigned long value, unsigned long int port) __THROW;
 
 __END_DECLS
 
============================================================
Index: sysdeps/unix/sysv/linux/sys/io.h
--- sysdeps/unix/sysv/linux/sys/io.h	1999/10/19 03:05:21	1.5
+++ sysdeps/unix/sysv/linux/sys/io.h	1999/12/29 16:43:05
@@ -23,9 +23,6 @@
 
 __BEGIN_DECLS
 
-/* Get constants from kernel header files. */
-#include <asm/io.h>
-
 /* If TURN_ON is TRUE, request for permission to do direct i/o on the
    port numbers in the range [FROM,FROM+NUM-1].  Otherwise, turn I/O
    permission off for that range.  This call requires root privileges.

-- 
 Andreas Jaeger
  SuSE Labs aj@suse.de
   private aj@arthur.rhein-neckar.de

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]