1

コードの 2 つのポイントの間で、プロセスがカーネルによってプリエンプトされたかどうか、またはその間に同じプロセッサで他のコードが実行されたかどうかを知ることができますか?

//Point A
some_type capture = some_capture();
.
.
.
//Point B
if( interrupted( capture ) )

some_captureandを実装できるsyscall、またはできれば読み取ることができるユーザー空間変数はありinterruptedますか?

ベンチマーク コードの一部を改善しようとしており、そのようなサンプルを除外したいと考えています。多くの場合、FIFO スレッドを使用できますが、使用できない場合もあります。一般に、私がタイミングを計っているものは、タイム スライスよりもはるかに少なく、ブロックしない傾向があるため、それらがいつ実行されるかを測定しても、分離された機能時間の正確な測定値ではありません。

4

1 に答える 1

0

私はあなたがそれをすることができるとは思いませんが、代わりに、あなたはsched_setscheduler()あなたのプロセスSCHED_FIFOスケジューリングポリシーと適切な(ゼロ以外の)優先順位を与えるために呼び出すことができます。これにより、別の優先度の高いリアルタイムタスク(おそらく存在しない)を除いて中断できないリアルタイムタスクになります。

于 2012-04-27T06:47:26.523 に答える