summaryrefslogtreecommitdiffstats
path: root/man2/outb.2
diff options
context:
space:
mode:
Diffstat (limited to 'man2/outb.2')
-rw-r--r--man2/outb.284
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)