4

私は組み込み Linux プラットフォームに取り組んでいます。

「echo "mem" > /sys/power/state」を実行すると、システムがサスペンドします。

カーネルとドライバーは、サスペンド操作が近づいていることを認識できることを知っています。しかし、ユーザー空間のプロセスまたはアプリケーションが、システムが中断するという通知を受け取る可能性はありますか? どのように?

たとえば、デバイス ドライバによって開始アドレスが指定されたバッファに連続して「A」を書き込むアプリケーションがあります。システムが一時停止することをこのアプリケーションに通知して、このバッファーをすべて 'B' に置き換え、ドライバーが再開されたときにドライバーが認識するのはすべて 'B' になるようにすることは可能でしょうか?

どうもありがとう。

4

2 に答える 2

0

同じものを探していました。残念ながら、サスペンド/レジューム中にユーザー空間の通知は見つかりませんでした。アプリケーションは冷蔵/冷凍されているだけで、一時停止されていることを知ることはありません。

ただし、可能なアプローチの 1 つは、変更可能な任意のドライバーの中断/再開機能から送信または uevent を送信する一般的な netlink メッセージを追加することです。それでも、アプリケーションがフリーズする前に処理するのに十分な時間が得られず、競合状態が発生する可能性があります。サスペンド メッセージを受信し、それを処理する前にフリーズしたとします。再開されると、一時停止メッセージが処理されます。

IMO、ドライバーでシナリオを処理することをお勧めします。ユーザースペースはそのままにしておきます。

于 2016-05-03T04:59:45.670 に答える