私がオンラインで見つけたほとんどすべての資料は、TananbaumのOSの本の下のコードを参照していました。しかし、なぜこれが最初の文字の代わりに文字列全体を印刷するのか、私は本当に理解していません。割り込み駆動型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'割り込みはありません。 –