WinixJ---kernel/clock.c文件详解

WinixJ---kernel/clock.c文件详解
该部分的代码比较简单,如下:

 1  // 设置时钟中断发生的频率
 2  // 默认HZ为100,在编译内核前可自行调整
 3  static   void  set_clock_freq()
 4  {
 5      out_byte(TIMER_MODE, SQUARE_WAVE);
 6      out_byte(COUNTER0, (uint8)(TIMER_FREQ  /  HZ));
 7      out_byte(COUNTER0, (uint8)((TIMER_FREQ  /  HZ)  >>   8 ));
 8  }
 9 
10  void  init_clock()
11  {
12      boot_heartbeat  =   0 ;
13      set_clock_freq();
14      install_int_handler(CLOCK_IV, ( void   * )int_clock);
15      enable_hwint(CLOCK_IV);     // 打开8259A主片的irq0,以允许时钟中断
16  }

该文件功能就是设置时钟中断频率为HZ(默认100),然后安装时钟中断句柄为int_clock,这样当时钟中断发生时会进入时钟中断处理程序int_clock。然后打开主8259A的irq0,以允许接受时钟中断(因为我们初始化8259A的时候把所有中断都屏蔽掉了)。

你可能感兴趣的:(WinixJ---kernel/clock.c文件详解)