Newsgroups: fj.os.386bsd,fj.unix
Path: galaxy.trc.rwcp.or.jp!sparky!uunet!stanford.edu!sun-barr!sh.wide!wnoc-kyo!kuis!kmc-box2!pokota!ishii
From: ishii@kmc.kyoto-u.ac.jp (Ishii Masahiro)
Subject: softclock called from hardclock
Message-ID: <1992Dec10.212809.15083@box2.kmc.kyoto-u.ac.jp>
Followup-To: fj.os.386bsd
Sender: news@box2.kmc.kyoto-u.ac.jp (News system Manager #2)
Nntp-Posting-Host: pokota
Reply-To: ishii@kuee.kyoto-u.ac.jp
Organization: Kyoto University Microcomputer Club, Kyoto, JAPAN
Date: Thu, 10 Dec 1992 21:28:09 GMT
Lines: 88
Xref: galaxy.trc.rwcp.or.jp fj.os.386bsd:26 fj.unix:861
X-originally-archived-at: http://galaxy.rwcp.or.jp/text/cgi-bin/newsarticle2?ng=fj.unix&nb=861&hd=a
X-reformat-date: Mon, 18 Oct 2004 15:18:22 +0900
X-reformat-comment: Tabs were expanded into 4 column tabstops by the Galaxy's archiver. See http://katsu.watanabe.name/ancientfj/galaxy-format.html for more info.

  $B@P0f!w5~Bg%^%$%3%s%/%i%V$G$9!#$3$s$K$A$O!#(B(Followup-To: $B$O(B 
fj.os.386bsd$B$G$9!#(B)

Summary: kern_clock.c $B$N4X?t(B hardclock $B$+$i(B softclock $B$r8F$V;~!"(Bcpl$B$r(B
$B0lC62<$2$F$bNI$$$N$+(B ?

  386bsd(98)$B$N(B com.c $B$K(Bsoftware$B$G(BFIFO$B$rF~$l$k;n$_$r$7$F$$$^$9!#$3$l$O!"(B
1) comintr $B$G$O(B FIFO $B$K(Bdata$B$rF~$l$k$@$1!#(Bcomintr$B$r(Bttymask$B$+$i(B
   $B30$9$h$&$K$7$?!#(B
2) timeout() $B$G5/$-$k!"JL$N(Broutine$B$G(B
(*linesw[].l_rint)();
   $B$J$I!"(Bkernel$B$H$N$d$j$H$j$r9T$J$&!#(B
3) $B$?$@$7(B2)$B$O!"(Bcpl (current priority level)$B$,(Bttymask$B$K0z$C$+$+$C(B
   $B$F$$$J$$;~$@$19T$J$&!#(B
  $B$H$$$&6q9g$K$7$h$&$H$7$F$$$^$9!#(B

  $B$7$+$7!"(B3) $B$N>r7o$,$J$jN)$D$N$,0U30$K>/$J$/!"(Bcpl == 0xffff$B$K$J$C$F$$(B
$B$k$3$H$,B?$$$3$H$,J,$+$j$^$7$?!#860x$rD4$Y$k$H!"(B/sys/kern/kern_clock.c 
$B$N(B hardclock(frame) $B$H$$$&4X?t$G!"(B

-- $B0zMQ3+;O(B --
if (needsoft) {
if (CLKF_BASEPRI(&frame)) {
/*
 * Save the overhead of a software interrupt;
 * it will happen as soon as we return, so do it now.
 */
(void) splsoftclock();
softclock(frame);
} else
setsoftclock();
}
-- $B0zMQ=*$o$j(B --

  $B$H$J$C$F$$$^$9!#$3$3$G!"(Bhardclock $B$,8F$P$l$?;~$N(B cpl $B$O(B highmask
(==0xffff) $B$D$^$j!"A4It3d$j9~$_6X;_$K$J$C$F$$$^$9(B
(/sys/compile/*/vector.s)$B!#$3$N$?$a!"(Bsoftclock()$B$r8F$VA0$K(B
splsoftclock()$B$r<B9T$7$F$b!"M%@h=g0L$OJQ$o$j$^$;$s!#(B

  $B2?$@$+$*$+$7$$$J$H;W$C$F!X(BUNIX4.3BSD$B$N@_7W$H<BAu!Y$rD4$Y$F$_$k$H!"(B
p.53$B$K!"%?%$%`%"%&%HMW5a=hM}$r9T$J$&(Bsoftclock$B3d$j9~$_$,%O!<%I%/%m%C%/(B
$B3d$j9~$_I|5";~$KD>$A$K5/$3$k;~$K$O!"(B*$B<+J,$G%W%m%;%C%5M%@hEY$r2<$2(B*$B!"(B
softclock$B$r8F$S=P$9$H$$$&$h$&$K=q$$$F$"$j$^$9!#(B

  $B$=$l$J$i$P!"<!$N$h$&$K$7$?$i$$$$$N$G$O$H;W$$$^$7$?!#(B

--
if (needsoft) {
if (CLKF_BASEPRI(&frame)) {
/*
 * Save the overhead of a software interrupt;
 * it will happen as soon as we return, so do it now.
 */
#if defined(KMC_TEST)
{
extern short cpl;
asm("cli");
cpl = frame.if_ppl;
}
#endif
(void) splsoftclock();
#if defined(KMC_TEST)
asm("sti");
#endif
softclock(frame);
} else
setsoftclock();
}
--

  $B$3$N$h$&$JJQ99$r2C$($?$N$G$9$,!"0l1~(Bsystem$B$O@5>o$KF0$$$F$$$k$h$&$K8+(B
$B$($^$9!#$^$?!"(BSOFT_FIFO$B$N(Bcom$B$G(Btip$B$J$I$rF0$+$9$H!"(Bsilo overflow$B$NIQEY$,(B
$B$+$J$j2<$,$C$?$h$&$K;W$($^$9!#(B

# $B$?$@$7!"(Bmodem$B@)8f@~$,$i$_$G$N(Benbug$B$N$?$a$+!"(B386bsd(98)$BF1;N$NDL?.$d!"(B
#SLIP$B$,$&$^$/$$$-$^$;$s!#(B

  $B$=$3$G!"$3$N$h$&$JJQ99$,NI$$$N$+$I$&$+!"(Bsoftclock()$B$N;~$N(Bcpl$B$,K\Mh$I(B
$B$&$"$k$Y$-$+65$($FD:$-$?$$$N$G$9!#(B

  $B$"$k$$$O!"(Btimeout()$B0J30$G(Bthread$B$N$h$&$J$b$N$r:n$j=P$9J}K!$G$b9=$$$^(B
$B$;$s!#(B

  $B$h$m$7$/$*4j$$$7$^$9!#(B

-----------------------------------------------------------------
$B5~ETBg3X(B $BEE;R9)3X@l96(B $B;3ED8&(B M2 ishii@kuee.kyoto-u.ac.jp
$B5~Bg%^%$%3%s%/%i%V(B              ishii@kmc.kyoto-u.ac.jp  $B@P0f@59((B
