雑記帳
ここはhideyosiの雑記帳です。テケトーに書き散らしてるだけなので間違っていたりとは普通にしてます。信用度は相当低いことをあらかじめご了承を。またご覧のようにWikiを使ってますが、hideyosi意外は書き込めません。
2: 2007-01-26 (金) 23:41:45 ソース バックアップ No.2 を復元して編集 3: 2007-01-27 (土) 16:14:04 ソース バックアップ No.3 を復元して編集
Line 31: Line 31:
   タスク内のものなのかがわかる*/    タスク内のものなのかがわかる*/
-    for (i = 0; i < MAX_TASKS; i++) {+ /*↑・・・っと思い込んでたが大間違いだった。 
 + /*ここは、とにかくGDTの3(TASK_GDT0)〜最大数までのGDTテーブルを一気にtss化して 
 + /*予約してしまうのだ!さらに、taskctl内のtasks0[]と一対一に対応させちゃう。 
 + /*なので、以降は単に「どのtasks[?]が空いてるかな?」を探し、空きが見つかったら 
 + /*そのtasks0[?]に当て込めば自動的にtssも設定させると!。こういう仕掛けか! 
 + 
 +  for (i = 0; i < MAX_TASKS; i++) {
     taskctl->tasks0[i].flags = 0;      taskctl->tasks0[i].flags = 0;
     taskctl->tasks0[i].sel = (TASK_GDT0 + i) * 8;      taskctl->tasks0[i].sel = (TASK_GDT0 + i) * 8;
Line 38: Line 44:
 + /*上記のGDTの予約?のおかげで、もうGDTは気にしなくていいのだ!
 + /*以降は、task_allocさえすれば、自動的にタスクがすぐ走れる状態で
 + /*1個準備される。
 +
 + /*以下は、今動いている自分自身(HariMain。これまでの仮想的なtask_aのこと)を
 + /*ひとつのタスクとして登録しているだけ。
    task = task_alloc();     task = task_alloc();
Line 48: Line 60:
    timer_settime(task_timer, 2);     timer_settime(task_timer, 2);
    return task;     return task;
-}+ }