diff options
Diffstat (limited to 'man2/outb.2')
-rw-r--r-- | man2/outb.2 | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/man2/outb.2 b/man2/outb.2 new file mode 100644 index 0000000..4a3f877 --- /dev/null +++ b/man2/outb.2 @@ -0,0 +1,84 @@ +.\" Copyright (c) 1995 Paul Gortmaker +.\" (gpg109@rsphy1.anu.edu.au) +.\" Wed Nov 29 10:58:54 EST 1995 +.\" +.\" SPDX-License-Identifier: GPL-2.0-or-later +.\" +.TH outb 2 2023-03-30 "Linux man-pages 6.05.01" +.SH NAME +outb, outw, outl, outsb, outsw, outsl, +inb, inw, inl, insb, insw, insl, +outb_p, outw_p, outl_p, inb_p, inw_p, inl_p \- port I/O +.SH LIBRARY +Standard C library +.RI ( libc ", " \-lc ) +.SH SYNOPSIS +.nf +.B #include <sys/io.h> +.PP +.BI "unsigned char inb(unsigned short " port ); +.BI "unsigned char inb_p(unsigned short " port ); +.BI "unsigned short inw(unsigned short " port ); +.BI "unsigned short inw_p(unsigned short " port ); +.BI "unsigned int inl(unsigned short " port ); +.BI "unsigned int inl_p(unsigned short " port ); +.PP +.BI "void outb(unsigned char " value ", unsigned short " port ); +.BI "void outb_p(unsigned char " value ", unsigned short " port ); +.BI "void outw(unsigned short " value ", unsigned short " port ); +.BI "void outw_p(unsigned short " value ", unsigned short " port ); +.BI "void outl(unsigned int " value ", unsigned short " port ); +.BI "void outl_p(unsigned int " value ", unsigned short " port ); +.PP +.BI "void insb(unsigned short " port ", void " addr [. count ], +.BI " unsigned long " count ); +.BI "void insw(unsigned short " port ", void " addr [. count ], +.BI " unsigned long " count ); +.BI "void insl(unsigned short " port ", void " addr [. count ], +.BI " unsigned long " count ); +.BI "void outsb(unsigned short " port ", const void " addr [. count ], +.BI " unsigned long " count ); +.BI "void outsw(unsigned short " port ", const void " addr [. count ], +.BI " unsigned long " count ); +.BI "void outsl(unsigned short " port ", const void " addr [. count ], +.BI " unsigned long " count ); +.fi +.SH DESCRIPTION +This family of functions is used to do low-level port input and output. +The out* functions do port output, the in* functions do port input; +the b-suffix functions are byte-width and the w-suffix functions +word-width; the _p-suffix functions pause until the I/O completes. +.PP +They are primarily designed for internal kernel use, +but can be used from user space. +.\" , given the following information +.\" in addition to that given in +.\" .BR outb (9). +.PP +You must compile with \fB\-O\fP or \fB\-O2\fP or similar. +The functions +are defined as inline macros, and will not be substituted in without +optimization enabled, causing unresolved references at link time. +.PP +You use +.BR ioperm (2) +or alternatively +.BR iopl (2) +to tell the kernel to allow the user space application to access the +I/O ports in question. +Failure to do this will cause the application +to receive a segmentation fault. +.SH VERSIONS +.BR outb () +and friends are hardware-specific. +The +.I value +argument is passed first and the +.I port +argument is passed second, +which is the opposite order from most DOS implementations. +.SH STANDARDS +None. +.SH SEE ALSO +.BR ioperm (2), +.BR iopl (2) |