/* Copyright (C) 1996-2018 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 modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, see <http://www.gnu.org/licenses/>. */ #ifndef _SYS_IO_H #define _SYS_IO_H 1 #include <features.h> __BEGIN_DECLS /* 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. 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 (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 (int __level) __THROW; #if defined __GNUC__ && __GNUC__ >= 2 static __inline unsigned char inb (unsigned short int __port) { unsigned char _v; __asm__ __volatile__ ("inb %w1,%0":"=a" (_v):"Nd" (__port)); return _v; } static __inline unsigned char inb_p (unsigned short int __port) { unsigned char _v; __asm__ __volatile__ ("inb %w1,%0\noutb %%al,$0x80":"=a" (_v):"Nd" (__port)); return _v; } static __inline unsigned short int inw (unsigned short int __port) { unsigned short _v; __asm__ __volatile__ ("inw %w1,%0":"=a" (_v):"Nd" (__port)); return _v; } static __inline unsigned short int inw_p (unsigned short int __port) { unsigned short int _v; __asm__ __volatile__ ("inw %w1,%0\noutb %%al,$0x80":"=a" (_v):"Nd" (__port)); return _v; } static __inline unsigned int inl (unsigned short int __port) { unsigned int _v; __asm__ __volatile__ ("inl %w1,%0":"=a" (_v):"Nd" (__port)); return _v; } static __inline unsigned int inl_p (unsigned short int __port) { unsigned int _v; __asm__ __volatile__ ("inl %w1,%0\noutb %%al,$0x80":"=a" (_v):"Nd" (__port)); return _v; } static __inline void outb (unsigned char __value, unsigned short int __port) { __asm__ __volatile__ ("outb %b0,%w1": :"a" (__value), "Nd" (__port)); } static __inline void outb_p (unsigned char __value, unsigned short int __port) { __asm__ __volatile__ ("outb %b0,%w1\noutb %%al,$0x80": :"a" (__value), "Nd" (__port)); } static __inline void outw (unsigned short int __value, unsigned short int __port) { __asm__ __volatile__ ("outw %w0,%w1": :"a" (__value), "Nd" (__port)); } static __inline void outw_p (unsigned short int __value, unsigned short int __port) { __asm__ __volatile__ ("outw %w0,%w1\noutb %%al,$0x80": :"a" (__value), "Nd" (__port)); } static __inline void outl (unsigned int __value, unsigned short int __port) { __asm__ __volatile__ ("outl %0,%w1": :"a" (__value), "Nd" (__port)); } static __inline void outl_p (unsigned int __value, unsigned short int __port) { __asm__ __volatile__ ("outl %0,%w1\noutb %%al,$0x80": :"a" (__value), "Nd" (__port)); } static __inline void insb (unsigned short int __port, void *__addr, unsigned long int __count) { __asm__ __volatile__ ("cld ; rep ; insb":"=D" (__addr), "=c" (__count) :"d" (__port), "0" (__addr), "1" (__count)); } static __inline void insw (unsigned short int __port, void *__addr, unsigned long int __count) { __asm__ __volatile__ ("cld ; rep ; insw":"=D" (__addr), "=c" (__count) :"d" (__port), "0" (__addr), "1" (__count)); } static __inline void insl (unsigned short int __port, void *__addr, unsigned long int __count) { __asm__ __volatile__ ("cld ; rep ; insl":"=D" (__addr), "=c" (__count) :"d" (__port), "0" (__addr), "1" (__count)); } static __inline void outsb (unsigned short int __port, const void *__addr, unsigned long int __count) { __asm__ __volatile__ ("cld ; rep ; outsb":"=S" (__addr), "=c" (__count) :"d" (__port), "0" (__addr), "1" (__count)); } static __inline void outsw (unsigned short int __port, const void *__addr, unsigned long int __count) { __asm__ __volatile__ ("cld ; rep ; outsw":"=S" (__addr), "=c" (__count) :"d" (__port), "0" (__addr), "1" (__count)); } static __inline void outsl (unsigned short int __port, const void *__addr, unsigned long int __count) { __asm__ __volatile__ ("cld ; rep ; outsl":"=S" (__addr), "=c" (__count) :"d" (__port), "0" (__addr), "1" (__count)); } #endif /* GNU C */ __END_DECLS #endif /* _SYS_IO_H */
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
acct.h | File | 3.22 KB | 0644 |
|
auxv.h | File | 1.25 KB | 0644 |
|
bitypes.h | File | 86 B | 0644 |
|
cdefs.h | File | 17.21 KB | 0644 |
|
debugreg.h | File | 3.49 KB | 0644 |
|
dir.h | File | 921 B | 0644 |
|
elf.h | File | 1023 B | 0644 |
|
epoll.h | File | 4.31 KB | 0644 |
|
errno.h | File | 19 B | 0644 |
|
eventfd.h | File | 1.37 KB | 0644 |
|
fanotify.h | File | 1.26 KB | 0644 |
|
fcntl.h | File | 19 B | 0644 |
|
file.h | File | 1.68 KB | 0644 |
|
fsuid.h | File | 1.16 KB | 0644 |
|
gmon.h | File | 6.06 KB | 0644 |
|
gmon_out.h | File | 2.57 KB | 0644 |
|
inotify.h | File | 3.75 KB | 0644 |
|
io.h | File | 4.97 KB | 0644 |
|
ioctl.h | File | 1.7 KB | 0644 |
|
ipc.h | File | 1.43 KB | 0644 |
|
kd.h | File | 1.08 KB | 0644 |
|
klog.h | File | 1.17 KB | 0644 |
|
mman.h | File | 5.42 KB | 0644 |
|
mount.h | File | 5.48 KB | 0644 |
|
msg.h | File | 2.31 KB | 0644 |
|
mtio.h | File | 10.9 KB | 0644 |
|
param.h | File | 3.07 KB | 0644 |
|
pci.h | File | 922 B | 0644 |
|
perm.h | File | 1.1 KB | 0644 |
|
personality.h | File | 2.66 KB | 0644 |
|
poll.h | File | 2.49 KB | 0644 |
|
prctl.h | File | 1.03 KB | 0644 |
|
procfs.h | File | 4.87 KB | 0644 |
|
profil.h | File | 1.91 KB | 0644 |
|
ptrace.h | File | 5.85 KB | 0644 |
|
queue.h | File | 19.08 KB | 0644 |
|
quota.h | File | 5.05 KB | 0644 |
|
random.h | File | 1.41 KB | 0644 |
|
raw.h | File | 1.15 KB | 0644 |
|
reboot.h | File | 1.59 KB | 0644 |
|
reg.h | File | 1.78 KB | 0644 |
|
resource.h | File | 3.56 KB | 0644 |
|
select.h | File | 4.04 KB | 0644 |
|
sem.h | File | 1.99 KB | 0644 |
|
sendfile.h | File | 1.76 KB | 0644 |
|
shm.h | File | 1.83 KB | 0644 |
|
signal.h | File | 20 B | 0644 |
|
signalfd.h | File | 1.56 KB | 0644 |
|
socket.h | File | 9.96 KB | 0644 |
|
socketvar.h | File | 141 B | 0644 |
|
soundcard.h | File | 29 B | 0644 |
|
stat.h | File | 15.81 KB | 0644 |
|
statfs.h | File | 2.04 KB | 0644 |
|
statvfs.h | File | 2.75 KB | 0644 |
|
stropts.h | File | 21 B | 0644 |
|
swap.h | File | 1.55 KB | 0644 |
|
syscall.h | File | 1.3 KB | 0644 |
|
sysctl.h | File | 1.96 KB | 0644 |
|
sysinfo.h | File | 1.48 KB | 0644 |
|
syslog.h | File | 7.52 KB | 0644 |
|
sysmacros.h | File | 3.94 KB | 0644 |
|
termios.h | File | 74 B | 0644 |
|
time.h | File | 6.5 KB | 0644 |
|
timeb.h | File | 1.34 KB | 0644 |
|
timerfd.h | File | 1.83 KB | 0644 |
|
times.h | File | 1.56 KB | 0644 |
|
timex.h | File | 2.15 KB | 0644 |
|
ttychars.h | File | 2.44 KB | 0644 |
|
ttydefaults.h | File | 3.48 KB | 0644 |
|
types.h | File | 6.43 KB | 0644 |
|
ucontext.h | File | 5.62 KB | 0644 |
|
uio.h | File | 6.13 KB | 0644 |
|
un.h | File | 1.42 KB | 0644 |
|
unistd.h | File | 20 B | 0644 |
|
user.h | File | 5.08 KB | 0644 |
|
ustat.h | File | 1.11 KB | 0644 |
|
utsname.h | File | 2.42 KB | 0644 |
|
vfs.h | File | 161 B | 0644 |
|
vlimit.h | File | 1.83 KB | 0644 |
|
vm86.h | File | 1.17 KB | 0644 |
|
vt.h | File | 22 B | 0644 |
|
vtimes.h | File | 2.4 KB | 0644 |
|
wait.h | File | 5.19 KB | 0644 |
|
xattr.h | File | 4.17 KB | 0644 |
|