-1

私はcでゼロからカーネルを作成しています(Linuxではありません。完全にゼロから)、少し問題が発生しました。私はこのコードを持っています:

#include "timer.h"
int ms = 0;
void timer_handler(struct regs *r){
    ms++;
    println("I print every tick");
}
void sleep(int ticks){
    unsigned long eticks;

    eticks = ms + ticks;
    while(ms < eticks);
}

また、timer_handler は IRQ0 (The PIT) に接続されており、完全に正常に動作します。「すべてのティックを印刷する」というprintlnは問題なく機能し、コードでms変数を印刷すると、正しい量が印刷されます。しかし、sleep 関数を呼び出すと、timer_handler の起動が停止し、無限ループに陥ります。while ループ中に割り込みを発生させる方法はありますか?

残りのコード: https://github.com/Codepixl/CodeOS

4

2 に答える 2

0

It was just virtualbox for some reason, it works on my actual PC.

于 2015-07-09T15:35:29.723 に答える