abortboot

//在bootdelay时长内循环检测是否有任意键按下,如果有则立即退出

static __inline__ int abortboot(int bootdelay)  
{
int abort = 0;

#ifdef CONFIG_MENUPROMPT
printf(CONFIG_MENUPROMPT, bootdelay);
#else
printf("Hit any key to stop autoboot: %2d ", bootdelay); //打印提示信息
#endif

#if defined CONFIG_ZERO_BOOTDELAY_CHECK
/*
* Check if key already pressed
* Don't check if bootdelay < 0
*/
if (bootdelay >= 0) {
   if (tstc()) { /* we got a key press */     //有键被按下
    (void) getc(); /* consume input */    //读按键,清缓冲区,以便下次使用
    puts ("\b\b\b 0");
    abort = 1; /* don't auto boot */     //退出,不自启动
   }
}
#endif

while ((bootdelay > 0) && (!abort)) {     //没有键按下,循环等待bootdelay时长
   int i;

   --bootdelay;
   /* delay 100 * 10ms */
   for (i=0; !abort && i<100; ++i) {
    if (tstc()) { /* we got a key press */     //有键按下
     abort = 1; /* don't auto boot */           //终止循环
     bootdelay = 0; /* no more delay */
# ifdef CONFIG_MENUKEY
     menukey = getc();
# else
     (void) getc(); /* consume input */   //清缓存
# endif
     break;
    }
    udelay(10000);      //没有键被按下,延时10ms
   }

   printf("\b\b\b%2d ", bootdelay);    //打印剩余时间
}

putc('\n');

#ifdef CONFIG_SILENT_CONSOLE
if (abort)
   gd->flags &= ~GD_FLG_SILENT;
#endif

return abort;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值