<HTML ><HEAD ><TITLE >$B9b$$@:EY$N%?%$%_%s%0@)8f(B</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.54"><LINK REL="HOME" TITLE="Linux I/O $B%]!<%H%W%m%0%i%_%s%0(B mini-HOWTO" HREF="index.html"><LINK REL="PREVIOUS" TITLE="$B3d$j9~$_(B (IRQ) $B$H(B DMA $B%"%/%;%9(B" HREF="irq.html"><LINK REL="NEXT" TITLE="$B$=$NB>$N%W%m%0%i%_%s%08@8l$K$D$$$F(B" HREF="other-prog.html"></HEAD ><BODY CLASS="SECT1" BGCOLOR="#FFFFFF" TEXT="#000000" ><DIV CLASS="NAVHEADER" ><TABLE WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="3" ALIGN="center" >Linux I/O $B%]!<%H%W%m%0%i%_%s%0(B mini-HOWTO</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="bottom" ><A HREF="irq.html" >Prev</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" ></TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="other-prog.html" >Next</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><DIV CLASS="SECT1" ><H1 CLASS="SECT1" ><A NAME="HIGH-RESOLUTION" >4. $B9b$$@:EY$N%?%$%_%s%0@)8f(B</A ></H1 ><DIV CLASS="SECT2" ><H2 CLASS="SECT2" ><A NAME="AEN128" >4.1. $B%G%#%l%$(B</A ></H2 ><P >$B$^$::G=i$KCG$C$F$*$-$^$9$,!"%f!<%6%W%m%0%i%`$K$*$$$F@53N$J%?%$%_%s%0J]>Z(B $B$r$9$k$3$H$O$G$-$^$;$s!#$3$l$O!"(BLinux $B$,%^%k%A%?%9%/!&%W%j%(%s%W%F%#%V(B $B$J%7%9%F%`$@$+$i$G$9!#$"$J$?$N%W%m%;%9$,!"Ls(B 10 $B%_%jIC$+$i?tIC(B($BHs>o$KIi2Y$N(B $B9b$$%7%9%F%`$J$I$G(B)$B$KEO$C$F$J$s$i$+$NM}M3$G%9%1%8%e!<%j%s%0BP>]$+$i30$5$l(B $B$k$3$H$O!"$$$D$G$b$"$jF@$^$9!#(B $B$7$+$7!"(BI/O $B%]!<%H$r;H$&$[$H$s$I$N%"%W%j%1!<%7%g%s$G$O!"$3$l$O<B:]$K$OLdBj(B $B$K$O$J$i$J$$$G$7$g$&!#(B $B$3$N;~4V$r$G$-$k$@$1>.$5$/$9$k$?$a$K$O!"(Bnice ($B%^%K%e%"%k%Z!<%8(B nice(2)$B$r(B $B;2>H$N$3$H(B) $B$r;H$C$F%W%m%;%9$NM%@h=g0L$r9b$/$7$?$j!"$^$?$O%j%"%k%?%$%`%9(B $B%1%8%e!<%k$N%7%9%F%`(B($B2<5-$r;2>H$N$3$H(B)$B$r;H$&$H$$$&$3$H$b$G$-$^$9!#(B ($BLuCm!'(Bnice $B$rM-8z$K;H$&$3$H$G!"%W%m%;%9$N;}$A;~4V$N:F7W;;$rIQHK$K9T$$!"(B $B$=$l$K$h$j$"$kDxEY!"M%@hE*$K%9%1%8%e!<%k$5$l$k$H$$$&8z2L$,$"$j$^$9!#(B)</P ><P >$BDL>o$N%f!<%6%b!<%I%W%m%;%9$G07$($kHO0O$h$j$b$C$H@::Y$J%?%$%_%s%0@)8f$r(B $B5a$a$k$N$J$i!"%f!<%6%b!<%I$G!V%j%"%k%?%$%`!W$r%5%]!<%H$9$k$?$a$NBP:v$b(B $B$"$j$^$9!#(B Linux 2.x $B%+!<%M%k$O%=%U%H%j%"%k%?%$%`$r%5%]!<%H$7$F$$$^$9!#(B $B>\:Y$O(B <TT CLASS="LITERAL" >sched_setscheduler(2)</TT > $B$N(B $B%^%K%e%"%k%Z!<%8$r;2>H$7$F$/$@$5$$!#(B $B%O!<%I%j%"%k%?%$%`$r%5%]!<%H$9$kFCJL$J%+!<%M%k$b$"$j$^$9!#(B $B$3$l$K$D$$$F$N$b$C$H>\$7$$>pJs$O(B <A HREF="http://luz.cs.nmt.edu/" TARGET="_top" >http://luz.cs.nmt.edu/</A > $B$r$4Mw$/$@$5$$!#(B ($BLuCm!'>e5-0J30$K$b%O!<%I%j%"%k%?%$%`$r%5%]!<%H$9$k<BAu$,B8:_$7$^$9!#(B $B>\:Y$O(B<A HREF="http://www.linux.or.jp/link/kernel.html#RT" TARGET="_top" >http://www.linux.or.jp/link/kernel.html#RT</A >$B$r;2>H$7$F$/$@$5$$!#(B)</P ><DIV CLASS="SECT3" ><H3 CLASS="SECT3" ><A NAME="AEN135" >4.1.1. $B%9%j!<%W!'(B<TT CLASS="FUNCTION" >sleep()</TT > $B$H(B <TT CLASS="FUNCTION" >usleep()</TT ></A ></H3 ><P >$B$5$F!"$b$C$H4JC1$J%?%$%_%s%0$K$D$$$F$*OC$7$^$7$g$&!#?tIC$N%G%#%l%$$,(B $BM_$7$$>l9g$K$O!"$*$=$i$/(B <TT CLASS="FUNCTION" >sleep()</TT > $B$,$$$$(B $B$G$7$g$&!#(B $B?t==%_%jIC0J>e$N%G%#%l%$(B($B:G>.$N%G%#%l%$$OLs(B 10 $B%_%jIC$N$h$&$G$9!#(B)$B$N(B $B>l9g$K$O(B <TT CLASS="FUNCTION" >usleep()</TT > $B$,$*A&$a$G$9!#(B $B$3$l$i$N4X?t$r8F$S=P$9$H!"(BCPU $B$OB>$N%W%m%;%9$K3d$jEv$F$i$l$^$9(B($B$D$^$j(B $B%W%m%;%9$,!VL2$k!W(B)$B$N$G!"(BCPU $B%?%$%`$,L5BL$K$J$k$3$H$O$"$j$^$;$s!#(B $B>\:Y$K$D$$$F$O(B <TT CLASS="LITERAL" >sleep(3)</TT > $B$H(B <TT CLASS="LITERAL" >usleep(3)</TT > $B$N%^%K%e%"%k%Z!<%8$r$4Mw$/$@(B $B$5$$!#(B</P ><P >$BLs(B 50 $B%_%jIC$h$j$b>.$5$$%G%#%l%$$K4X$7$F$O(B($B$*$=$i$/%W%m%;%C%5$d%^%7%s$N(B $BB.EY!"%7%9%F%`$NIi2Y$K$b0MB8$7$^$9$,(B)$B!">e$K=R$Y$?$h$&$J(B CPU $B$rJ|$7$F$7$^$&(B $B$H$$$&%"%W%m!<%A$G$O$&$^$/$$$-$^$;$s!#DL>o!"(BLinux $B$N%9%1%8%e!<%i$,$"$J$?$N(B $B%W%m%;%9$KBP$7$F@)8f$rLa$9A0$K(B(x86 $B%"!<%-%F%/%A%c$G$O(B)$B>/$J$/$H$b(B 10-30 $B%_(B $B%jIC$O$+$+$k$+$i$G$9!#(B $B$=$N$h$&$J$o$1$G!"(B<TT CLASS="LITERAL" >usleep(3)</TT > $B$K>.$5$$%G%#%l%$(B $B$r;XDj$9$k$HDL>o$O;XDj$7$?CM$r$A$g$C$H$@$11[$($k%G%#%l%$$,H/@8$7$^$9!#(B $B$^$?:G>.$NCM$OLs(B 10 $B%_%jIC$H$$$&$3$H$K$J$j$^$9!#(B</P ></DIV ><DIV CLASS="SECT3" ><H3 CLASS="SECT3" ><A NAME="AEN146" >4.1.2. <TT CLASS="FUNCTION" >nanosleep()</TT ></A ></H3 ><P >2.0.x $B%7%j!<%:$N(B Linux $B%+!<%M%k$K$O(B <TT CLASS="FUNCTION" >nanosleep()</TT > $B$H$$$&?7$?$J%7%9%F%`%3!<%k$,IU$12C$o$j$^$7$?!#(B($B>\:Y$O(B <TT CLASS="LITERAL" >nanosleep(2)</TT > $B$N%^%K%e%"%k%Z!<%8$r;2>H$7$F$/$@$5$$!#(B) $B$3$N%7%9%F%`%3!<%k$r;H$($P(B($B?t%^%$%/%mIC$H$$$C$?(B)$BC;$$;~4V$N%9%j!<%W$^$?$O(B $B%G%#%l%$$,2DG=$H$J$j$^$9!#(B</P ><P >$B%W%m%;%9$,(B (<TT CLASS="FUNCTION" >sched_setscheduler()</TT >$B$r(B $BMQ$$$F(B)$B%=%U%H%j%"%k%?%$%`%9%1%8%e!<%j%s%0$5$l$F$$$k>l9g!"(B2 $B%_%jIC0J2<$N(B $B%G%#%l%$$KBP$7$F$O!"(B<TT CLASS="FUNCTION" >nanosleep()</TT > $B$O%S%8!<%k(B $B!<%W$r;H$$$^$9!#(B $B$=$l0J>e$N%G%#%l%$$KBP$7$F$O(B <TT CLASS="FUNCTION" >usleep()</TT > $B$HF1MM(B $B%9%j!<%W$7$^$9!#(B ($BLuCm!'%=%U%H%j%"%k%?%$%`$G$J$1$l$P!"(B<TT CLASS="FUNCTION" >usleep()</TT > $B$HF1DxEY$N;~4VJ,2rG=$K$J$k$h$&$G$9!#(B)</P ><P >$B$3$N%S%8!<%k!<%W$O(B <TT CLASS="FUNCTION" >udelay()</TT > ($BB?$/$N%+!<%M%k(B $B%I%i%$%P$,;H$&%+!<%M%k$NFbIt%U%!%s%/%7%g%s(B)$B$r;H$C$F$$$F!"%k!<%W$ND9$5$O(B BogoMips $BCM$r;H$C$F7W;;$5$l$^$9!#(B ($B$3$N<j$N%S%8!<%k!<%W$NB.$5$J$I$O(B BogoMips $BCM$,@53N$KH?1G$5$l$k$b$N$NNc$G$9!#(B) $B$I$N$h$&$KF0:n$9$k$+$K$D$$$F>\:Y$O(B <TT CLASS="FILENAME" >/usr/include/asm/delay.h</TT > $B$r;2>H$7$F$/$@$5$$!#(B</P ></DIV ><DIV CLASS="SECT3" ><H3 CLASS="SECT3" ><A NAME="AEN160" >4.1.3. $B%]!<%H(BI/O$B$r;H$C$?%G%#%l%$(B</A ></H3 ><P >$B%]!<%H(B I/O $B$r;H$($P?t%^%$%/%mIC$N%G%#%l%$$,$^$?0c$C$?J}K!$G:n$l$^$9!#(B $B%]!<%H(B 0x80 $B$K2?$+%P%$%H%G!<%?$r=PNO$^$?$OF~NO$9$k$H!"%W%m%;%C%5$N<oN`$d(B $BB.EY$K4X78$J$/!"$[$\@53N$K(B 1 $B%^%$%/%mICBT$D$3$H$,$G$-$^$9!#(B ($BF~=PNO$NJ}K!$K$D$$$F$O!"A0$NJ}$rFI$s$G2<$5$$!#(B) $B$3$l$rI,MW$J2s?t7+$jJV$9$3$H$G?t%^%$%/%mICBT$D$3$H$b$G$-$^$9!#(B $BI8=`E*$J%^%7%s$G$O!"$3$N%]!<%H=PNO$K$h$C$F$J$K$+JQ$JI{:nMQ$,$"$C$?$j$7(B $B$J$$$O$:$G$9!#(B ($B%+!<%M%k%I%i%$%P$G$3$l$r;H$C$F$$$k$b$N$b$"$j$^$9$+$i!#(B) $B$3$NJ}K!$O(B <TT CLASS="FUNCTION" >{in|out}[bw]_p()</TT > $B$G$b%G%#%l%$$9$k$?$a$KDL>o$K;H$o$l$F$$$kJ}K!$G$9!#(B (<TT CLASS="FILENAME" >asm/io.h</TT > $B$r8+$F2<$5$$!#(B)</P ><P >$B%]!<%H%"%I%l%9(B 0-0x3ff $B$NHO0O$K$"$kBgDq$N%]!<%H$X$N(B I/O $BL?Na$O<B:]$N$H$3$m(B $B$[$\@53N$K(B 1 $B%^%$%/%mIC$+$+$j$^$9!#(B $B$@$+$iNc$($P%Q%i%l%k%]!<%H$rD>@\07$C$F$$$k>l9g$J$i!"%G%#%l%$$r:n$k$?$a$K$O(B $B$=$N%]!<%H$KBP$7$F(B <TT CLASS="FUNCTION" >inb()</TT > $B$r$$$/$D$+DI2C$9$k$@$1(B $B$G$$$$$o$1$G$9!#(B</P ></DIV ><DIV CLASS="SECT3" ><H3 CLASS="SECT3" ><A NAME="AEN167" >4.1.4. $B%"%;%s%V%iL?Na$K$h$k%G%#%l%$(B</A ></H3 ><P >$B$=$N%W%m%0%i%`$,Av$k%^%7%s$N%W%m%;%C%5$N<oN`$H%/%m%C%/B.EY$,$o$+$C$F$$$k(B $B>l9g$K$O!"FCDj$N%"%;%s%V%iL?Na$r%O!<%I%3!<%I$9$k$3$H$G!"$b$C$HC;$$%G%#%l%$(B $B$r<B8=$9$k$3$H$b$G$-$^$9!#(B ($B$7$+$7!"%W%m%;%9$,%9%1%8%e!<%j%s%0$+$i30$5$l!"%G%#%l%$$,D9$/$J$C$F$7$^$&(B $B$3$H$,$"$jF@$k$3$H$rK:$l$J$$$G2<$5$$!#(B) $B0J2<$NI=$G$O!"$=$l$>$l$NL?Na$G2?%/%m%C%/(B($BFbIt%/%m%C%/(B)$B>CHq$5$l$k$+$r<($7$F(B $B$$$^$9!#(B $B$3$l$K$h$C$F$I$l$/$i$$$N;~4V$r>CHq$9$k$+$rCN$k$3$H$,$G$-$^$9!#(B $BNc$($P(B 50MHz $B$N%W%m%;%C%5(B (486DX-50 $B$H$+!"(B486DX2-50) $B$N>l9g$K$O(B 1 $B%/%m%C%/$O(B 1/50000000 $BIC(B($B!a(B 200 $B%J%NIC(B)$B$G$9!#(B</P ><P > <TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><PRE CLASS="SCREEN" >Instruction i386 clock cycles i486 clock cycles xchg %bx,%bx 3 3 nop 3 1 or %ax,%ax 2 1 mov %ax,%ax 2 1 add %ax,0 2 1</PRE ></TD ></TR ></TABLE > </P ><P >Pentium $B$N%/%m%C%/?t$O(B i486 $B$HF1$8$K$J$k$O$:$G$9!#(B $B$?$@$7(B Pentium Pro/II $B$G$O0c$$$^$9!#(B $B$^$?(B <TT CLASS="FUNCTION" >add %ax, 0</TT > $B$OH>%/%m%C%/$7$+>CHq(B $B$7$^$;$s!#(B $B$3$NL?Na$O;~!9B>$NL?Na$H%Z%"$G<B9T$5$l$k$+$i$G$9!#(B (out-of-order $B<B9T$N$?$a!"AjJ}$OL?Na<B9T%9%H%j!<%`$N$9$0$*NY$NL?Na$G$"$k(B $BI,MW$O$J$$$N$G$9!#(B)</P ><P >$B>e$NI=$G!"(B<TT CLASS="LITERAL" >nop</TT > $B$H(B <TT CLASS="LITERAL" >xchg</TT > $B$O2?$bI{:nMQ$O$J$$$O$:$G$9!#(B $B$=$NB>$NL?Na$O%U%i%0%l%8%9%?$rJQ99$9$k2DG=@-$,$"$j$^$9!#(B $B$G$b!"(Bgcc $B$O$=$l$r8!=P$7$F$/$l$^$9$+$i!"LdBj$K$O$J$i$J$$$O$:$G$9!#(B <TT CLASS="LITERAL" >xchg %bx, %bx</TT > $B$,%G%#%l%$MQ$N(B $BL?Na$H$7$F$OL5Fq$JA*Br$H8@$($k$G$7$g$&!#(B</P ><P >$B$3$l$i$r;H$&$K$O!"%W%m%0%i%`$NCf$G(B <TT CLASS="FUNCTION" >asm("$BL?Na(B")</TT > $B$H$$$&=q<0$r;H$C$F!">e$NI=$NL?Na$rKd$a9~$_$^$9!#(B $B$R$H$D$N(B <TT CLASS="FUNCTION" >asm()</TT > $BJ8$GJ#?t$NL?Na$rKd$a9~$`(B $B$K$O%;%_%3%m%s$G3FL?Na$r$D$J$2$^$9!#(B $BNc$($P(B <TT CLASS="FUNCTION" >asm("nop ; nop ; nop ; nop")</TT > $B$O(B <TT CLASS="FUNCTION" >nop</TT > $BL?Na$r(B4$B2s<B9T$7$F!"(Bi486 $B$^$?$O(B Pentium $B%W%m%;%C%5$G$O(B 4 $B%/%m%C%/$N%G%#%l%$(B(i386 $B$G$O(B 12 $B%/%m%C%/(B)$B$K$J$j$^$9!#(B</P ><P ><TT CLASS="FUNCTION" >asm()</TT > $BJ8$O!"(Bgcc $B$K$h$C$F!"%$%s%i%$%s%"%;(B $B%s%V%i%3!<%I$KJQ49$5$l$k$N$G4X?t8F$S=P$7$N%*!<%P!<%X%C%I$O$"$j$^$;$s!#(B</P ><P >Intel x86 $B%"!<%-%F%/%A%c$G$O(B 1 $B%/%m%C%/$h$jC;$$%G%#%l%$$r:n$k$3$H$O(B $BIT2DG=$G$9!#(B</P ></DIV ><DIV CLASS="SECT3" ><H3 CLASS="SECT3" ><A NAME="AEN186" >4.1.5. Pentium$B$N(B<TT CLASS="LITERAL" >rdtsc</TT >$B$K$D$$$F(B</A ></H3 ><P >Pentium $B%W%m%;%C%5$G$O!"%j%V!<%H$+$i8=:_$^$G$N7P2a%/%m%C%/%5%$%/%k?t(B $B$rCN$k$3$H$,$G$-$^$9!#(B $B0J2<$N%3!<%I$G$9(B($B$3$N%3!<%I$O(B RDTSC $B$H$$$&(B CPU $BL?Na$r<B9T$7$F$$$^$9!#(B):</P ><P > <TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" > extern __inline__ unsigned long long int rdtsc() { unsigned long long int x; __asm__ volatile (".byte 0x0f, 0x31" : "=A" (x)); return x; }</PRE ></TD ></TR ></TABLE > </P ><P >$B$3$NCM$,%G%#%l%$$H$7$FI,MW$J?t$@$1JQ2=$9$k$N$r%S%8!<%k!<%WCf$G(B $B4F;k$9$l$P$h$$$G$7$g$&!#(B</P ></DIV ></DIV ><DIV CLASS="SECT2" ><H2 CLASS="SECT2" ><A NAME="AEN193" >4.2. $B;~4V$NB,Dj(B</A ></H2 ><P >1 $BIC$/$i$$$N@:EY$N;~4V$J$i$P!"(B<TT CLASS="FUNCTION" >time()</TT > $B$r;H$&$N$,0lHV4JC1$G$7$g$&!#(B $B$b$C$H@53N$J;~4V$,I,MW$J>l9g$K$O!"(B<TT CLASS="FUNCTION" >gettimeofday()</TT > $B$r;H$&$HBgBN!"%^%$%/%mIC$N@:EY$,$"$j$^$9!#(B ($B$G$b!"A0$NJ}$G=R$Y$?!"%9%1%8%e!<%j%s%0$N$3$H$OK:$l$J$$$G$/$@$5$$!#(B) Pentium $B$N>l9g$K$O!">e$N%3!<%I$r;H$&$H(B 1 $B%/%m%C%/%5%$%/%k$N@:EY$,=P$^$9!#(B</P ><P >$B%W%m%;%9$,!"$"$k;~4V7P2a$7$?8e$K%7%0%J%k$r<u$1<h$k$h$&$K$7$?$$>l9g$K$O!"(B <TT CLASS="FUNCTION" >setitimer()</TT > $B$+(B <TT CLASS="FUNCTION" >alarm()</TT > $B$r;H$$$^$9!#(B $B$3$N4X?t$N>\:Y$K$D$$$F$O%^%K%e%"%k%Z!<%8$r$4Mw$/$@$5$$!#(B</P ></DIV ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="irq.html" >Prev</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="index.html" >Home</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="other-prog.html" >Next</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >$B3d$j9~$_(B (IRQ) $B$H(B DMA $B%"%/%;%9(B</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" > </TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >$B$=$NB>$N%W%m%0%i%_%s%08@8l$K$D$$$F(B</TD ></TR ></TABLE ></DIV ></BODY ></HTML >