私は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 ループ中に割り込みを発生させる方法はありますか?