私は、A13プロセッサを搭載したLinux(A13-OLinuXino-MICRO)のcで簡単なコードを書いています。私はgccコンパイラを使用しています。 1から100までカウントしている単純なループがあり、このループでできるだけ中断しないようにしたいとしましょう。私は可能な限り割り込みを無効にする(可能であればタイマーの割り込みさえも)ことができ、ループの後で有効にすることができます。私は私のプログラムに複数の場所を設け、これを強制する必要があります。誰も私に簡単なCコードを教えてもらえますか?ループは中断から保護されています。私は自分のプラットフォームでコンパイルして実行できますか?LinuxのCプログラムで割り込みを無効にする方法
EDIT:カーネルスレッドが答えかもしれません。カーネル権限で何かを実行するには?私は人々がdisable_local_interrupt()について話しているのを見ていますが、私はそれをどのように使用するのか分かりません。
編集:これは私が解決しようとしている実際の問題です。割り込みのない環境でアプリケーションを実行する必要があります。
編集:はい私は、Linuxが私の必要としているものだと確信しています。私は割り込みがOSにとって重要であることを知っています。なぜなら、それらを永久に無効にしたくないからです。私はこれを実行しているときに、OS上で何分の1秒間もno-interruptを強制したいだけです。また、私が解決する必要がある主要な問題はありません、これは私が解決する必要がある "問題"です、なぜ私はこれをやりたいのですか?
これを行う方法はありません。そのような低レベルでユーザーコードから変更を行うことについて考えるべきではありません(そして、カーネルコードでは非常に注意してください)。これはXYの問題です。これであなたが解決しようとしている**実際の**問題は何ですか? – Olaf
これが一般的に利用可能な機能だった場合、タスクスケジューリングはクロック生成割り込みに依存するため、誰かがプラグを物理的に引っ張るまで、システム全体をブロックするような無限ループのプログラムを書くことができます。 – zneak
割り込みを無効にするのはプロセッサ命令と同じくらい簡単です。通常、ニーモニックは 'cli'に似ています。しかし、それは特権命令であり、特権を持つ文脈でのみ実行可能である。 – SergeyA