Linuxを実行している閉じた環境でAutopilotを実行しており、優先順位を変更する必要があるカーネルスレッドがあります。私はこれのためにカーネルをパッチしたくありません。このスレッドは、SPIドライバがハードウェアを検出したときに最初に作成され、名前はspi0です。この質問を2つの部分に分けることができます。 [spi0]というスレッドのPIDを取得するのに助けが必要です。chrt
PIDがあればそれをSCHED_FIFOとしてマークし、それに応じて優先順位を設定するのは簡単です。
$ ps -ef | grep '\[spi0\]'
root 203 2 2 Aug28 ? 00:59:19 [spi0]
答え1
Unix Stack Exchangeでタグを検索しながら、pidof
およびpgrep
。シェルスクリプトにキャプチャされたこの出力ははるかに簡単です。
$ pidof -s spi0
203
または、プロセス名と正確に一致するものを取得し、そのプロセスのPIDを返します。最も古い一致プロセスはpgrep
、
$ pgrep -x -o spi0
203
したがって、スケジューラ全体の調整は次のようになります。
$ sudo chrt -f -p 10 "$(pidof -s spi0)"
$ sudo chrt -p "$(pidof -s spi0)"
pid 203's current scheduling policy: SCHED_FIFO
pid 203's current scheduling priority: 10