0
我在網上找到的幾乎所有材料都參考了Tananbaum的操作系統手冊中的代碼。但我不明白爲什麼這會打印整個字符串而不是隻打印第一個字符。爲什麼要在中斷驅動的IO中打印字符串,只需要複製第一個字符?
是否因爲中斷會以遞歸方式生成?但是這不會花費很多資源嗎?或者我錯過了什麼?
我真的很困惑。任何幫助,將不勝感激。當打印系統調用時將執行
代碼:
copy_from_user (buffer, p, count);
enable_interrupts();
while (*printer_status_reg !=READY);
*printer_data_register = p[0];
scheduler();
中斷處理程序:
if (count == 0) {
unblock_user();
} else {
*printer_data_register = p[i];
count = count – 1;
i++;
}
acknowledge_interrupt();
return_from_interrupt();
如果尚未傳輸數據,則需要通過顯式加載第一個字節的tx寄存器來「發送」中斷。除非你這樣做,否則不會發送'tx register empty'中斷來發送陣列的其餘部分。 –