議論/カーネルフロー


Top / 議論 / カーネルフロー

カーネルフローについていろいろ

タイマ割り込み

ihandler.asm
;;; timer handler
;;; save all context to Kthread* current
arch_timerhandler:
  pushAll
  changeData
  call arch_save_thread_registers
  call timerHandler
  popAll
  iretd


ihandler.cpp
void timerHandler() 詳細コード省略
  tickを進める。
  bool isProcessChange = g_scheduler->schedule();
  ThreadOperation::switchThread(isProcessChange, 1);

FDC割り込み

ihandler.asm
;;; fdc handler
arch_fdchandler:
  pushAll
  changeData
  call MFDCHandler
  popAll
  iretd
void MFDCHandler(void)
{
  g_fdcdriver->interrupt();

  /* thx! K-tan */
  outportb(0x20, 0x66);

  int wakeupResult = g_scheduler->wakeup(g_fdcdriver->getWaitThread(), WAIT_FDC);

  if (wakeupResult != 0)
  {
    ThreadOperation::switchThread((wakeupResult == 1), 2);
  }
}

その他

MENU

now: 2

リンク


最新の20件
2018-05-03 2017-09-29 2017-04-25 2017-01-10 2016-12-11 2016-10-04 2016-08-14 2016-06-05 2016-05-29 2016-04-15 2015-12-28 2013-02-25 2013-02-21 2013-02-20 2013-02-12 2013-02-11 2013-02-10
最新の20件
2010-02-01 2010-01-31 2010-01-30 2010-01-29 2010-01-16

Counter: 3578, today: 1, yesterday: 0

リロード   新規 編集 凍結 差分 添付 複製 改名   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS

Last-modified: 2008-03-28 (金) 15:48:02 (3796d);  Modified by mona
PukiWiki 1.4.6 Copyright © 2001-2005 PukiWiki Developers Team. License is GPL.
Based on "PukiWiki" 1.3 by yu-ji
Powered by PHP 5.2.17
HTML convert time to 0.021 sec.