📄 sd25.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"><!-- This collection of hypertext pages is Copyright 1995-2005 by Steve Summit. --><!-- Content from the book "C Programming FAQs: Frequently Asked Questions" --><!-- (Addison-Wesley, 1995, ISBN 0-201-84519-9) is made available here by --><!-- permission of the author and the publisher as a service to the community. --><!-- It is intended to complement the use of the published text --><!-- and is protected by international copyright laws. --><!-- The on-line content may be accessed freely for personal use --><!-- but may not be published or retransmitted without explicit permission. --><!-- --><!-- this page built Sat Dec 24 21:47:47 2005 by faqproc version 2.7 --><!-- from source file osdepmisc.sgml dated Wed Dec 21 13:04:19 2005 --><!-- corresponding to FAQ list version 4.0 --><html><!-- Mirrored from c-faq.com/osdep/sd25.html by HTTrack Website Copier/3.x [XR&CO'2008], Sat, 14 Mar 2009 08:02:36 GMT --><head><meta name=GENERATOR content="faqproc"><link href="http://www.eskimo.com/notfound.html" rev=subdocument><title></title></head><body bgcolor="#ffffff"> <a href="../index-2.html"><img src="../images/buttontop.gif" alt="top/contents"></a><a href="../search.html"><img src="../images/buttonsrch.gif" alt="search"></a><hr>[This answer was contributed by Pedro Zorzenon Neto.]<br><br>The functions <TT>usleep</TT> and <TT>nanosleep</TT> do not work for small intervals,since the kernel [can] change to another task...<br><br>The solution comes out from I/O instructions.Writing to I/O ports in ISA addresses will cause the system to wait for 1 microsecondsincethe ISA bus access time is 1 microsecond.One I/O port that is never usedby the hardware in i386 machines is port 0x80.<br><br>So, writing one byte to I/O port 0x80 will result in a ``onemicrosecond delay''.This is not so accurate, but at least it will varyless than 2% (my tests) from a Pentium 100 and a Athlon 850.<br><br>Some GNU/Linux low-level drivers also use this ``feature'' of writtingto port 0x80.<br><br>Attached is<a href="microdelay.c">the program</a>[and <a href="microdelay.h">the header file</a>]that I used to do this (you can adapt it toMS-DOS, I think the functions are <TT>inportb</TT> and <TT>outportb</TT>, but not sure).<br><br>In GNU/Linux you will need root permissions to write to I/O ports.<hr><p><a href="subsecond.html" rev=subdocument>back</a></p><hr><p><a href="../questions.html"><img src="../images/buttontop.gif" alt="contents"></a><a href="../search.html"><img src="../images/buttonsrch.gif" alt="search"></a><br><a href="../about.html">about this FAQ list</a> <a href="../eskimo.html">about eskimo</a> <a href="../search.html">search</a> <a href="../feedback.html">feedback</a> <a href="copyright.html">copyright</a><p>Hosted by<a href="http://www.eskimo.com/"><img src="../../www.eskimo.com/img/link/eskitiny.gif" alt="Eskimo North"></a></p></body><!-- Mirrored from c-faq.com/osdep/sd25.html by HTTrack Website Copier/3.x [XR&CO'2008], Sat, 14 Mar 2009 08:02:47 GMT --></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -