ssclock.c
来自「TCP-IP红宝书源代码」· C语言 代码 · 共 54 行
C
54 行
/* ssclock.c - stopclk, strtclk */
#include <conf.h>
#include <kernel.h>
#include <proc.h>
#include <q.h>
#include <sleep.h>
#ifdef RTCLOCK
/*------------------------------------------------------------------------
* stopclk -- put the clock in defer mode
*------------------------------------------------------------------------
*/
stopclk()
{
defclk++;
}
/*------------------------------------------------------------------------
* strtclk -- take the clock out of defer mode
*------------------------------------------------------------------------
*/
strtclk()
{
STATWORD ps;
int makeup;
int next;
disable(ps);
if ( defclk<=0 || --defclk>0 ) {
restore(ps);
return;
}
makeup = clkdiff;
preempt -= makeup;
clkdiff = 0;
if ( slnempty ) {
for (next=firstid(clockq) ;
next < NPROC && q[next].qkey < makeup ;
next=q[next].qnext) {
makeup -= q[next].qkey;
q[next].qkey = 0;
}
if (next < NPROC)
q[next].qkey -= makeup;
wakeup();
}
if ( preempt <= 0 )
resched();
restore(ps);
}
#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?