ディバイスドライバを ..
[
2ch
|
▼Menu
]
■コピペモード
□
スレを通常表示
□
オプションモード
□このスレッドのURL
■項目テキスト
140:login:Penguin 03/02/20 22:11 +wCEK+nh >>137 デッドロックが起きる。 spinlock を獲得したままスリープすると、そのプロセスが目覚めるまで 同じ spinlock を獲得しようとするプロセスがビジーウェイトし続ける。 141:137 03/02/21 03:18 qmT4Thn5 >> 140 どうもです。 自作基板に載っているPCIバスブリッジのDMAを叩くのに、複数プロセスからDMA転送を 同時に行うことはできないのでspinlockにぎらせてwait_event_interruptibleか何かを コールしようとたくらんでました。 DMA転送が終われば必ず割り込みで叩き起こされるのでそこでspin_unlockすれば 問題ないかなと思ったのですが、間違いですか? その間ビジーウェイトし続けるのがもったいないということであればsemaphoreで ブロックするべきでしょうか。 142:login:Penguin 03/02/21 05:38 wCxVa5I1 >>141 だめ。 プロセスAのカーネル内: 獲得 -> sleep プロセスBのカーネル内: 獲得に失敗してビジーウェイト なのだけど、カーネル内では、ページフォルトとか明示的にschedule()呼ぶと かしないとスイッチはおこらないので、単一プロセッサシステムだと絶対死亡。 SMPだとか、2.5のプリエンプションカーネルだと、大丈夫かもね。 終了割込みで起こされる処理なら、sleep と wakeupを使うのが普通じゃない?
次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
レスジャンプ
mixiチェック!
Twitterに投稿
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch
5391日前に更新/265 KB
担当:undef