io.h 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. /* Copyright (C) 1999, 2000 Free Software Foundation, Inc.
  2. This file is part of the GNU C Library.
  3. Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
  4. The GNU C Library is free software; you can redistribute it and/or
  5. modify it under the terms of the GNU Lesser General Public
  6. License as published by the Free Software Foundation; either
  7. version 2.1 of the License, or (at your option) any later version.
  8. The GNU C Library is distributed in the hope that it will be useful,
  9. but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  11. Lesser General Public License for more details.
  12. You should have received a copy of the GNU Lesser General Public
  13. License along with the GNU C Library; if not, write to the Free
  14. Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  15. 02111-1307 USA. */
  16. #ifndef _SYS_IO_H
  17. #define _SYS_IO_H 1
  18. #include <features.h>
  19. __BEGIN_DECLS
  20. /* If TURN_ON is TRUE, request for permission to do direct i/o on the
  21. port numbers in the range [FROM,FROM+NUM-1]. Otherwise, turn I/O
  22. permission off for that range. This call requires root privileges.
  23. Portability note: not all Linux platforms support this call. Most
  24. platforms based on the PC I/O architecture probably will, however.
  25. E.g., Linux/Alpha for Alpha PCs supports this. */
  26. extern int ioperm (unsigned long int __from, unsigned long int __num,
  27. int __turn_on);
  28. libc_hidden_proto(ioperm)
  29. /* Set the I/O privilege level to LEVEL. If LEVEL>3, permission to
  30. access any I/O port is granted. This call requires root
  31. privileges. */
  32. extern int iopl (int __level);
  33. extern unsigned int _inb (unsigned long int __port);
  34. extern unsigned int _inb (unsigned long int __port);
  35. extern unsigned int _inw (unsigned long int __port);
  36. extern unsigned int _inl (unsigned long int __port);
  37. extern void _outb (unsigned char __val, unsigned long int __port);
  38. extern void _outw (unsigned short __val, unsigned long int __port);
  39. extern void _outl (unsigned int __val, unsigned long int __port);
  40. #define inb _inb
  41. #define inw _inw
  42. #define inl _inl
  43. #define outb _outb
  44. #define outw _outw
  45. #define outl _outl
  46. /* Access PCI space protected from machine checks. */
  47. extern int pciconfig_read (unsigned long int __bus, unsigned long int __dfn,
  48. unsigned long int __off, unsigned long int __len,
  49. unsigned char *__buf);
  50. extern int pciconfig_write (unsigned long int __bus, unsigned long int __dfn,
  51. unsigned long int __off, unsigned long int __len,
  52. unsigned char *__buf);
  53. __END_DECLS
  54. #endif /* _SYS_IO_H */