ブログってもしかたない

twitter始めました。 http://twitter.com/#!/chototsumoushin

全体表示

[ リスト ]

SolarisのUSBシリアルがSMP環境でフリーズする問題に対応するパッチを作成しました。

免責

このドライバーで発生するいかなる損害も補償しません。自己責任で使用して下さい。

ダウンロード

以下のURLからダウンロードして下さい。
http://chototsumoushinp.dip.jp/solaris/usbser.tar.bz2

バグの原因

usbser_tx_cbコールバック内でport_rq_threadと処理が重なった場合、port_wq_threadを起こさないケースがあります。このため書き込みがストールしてしまいます。

これはシングルプロセッサではまず発生しません。
しかしマルチプロセッサ環境ではport_rq_threadとport_wq_threadが同時に動くため、かなりの確率で発生するものと思われます。

疑問点

STREAMSのマニュアル(man srv)を読むと、サービス関数内ですべてのメッセージを処理しろと書かれています。
     Once the STREAMS scheduler calls a srv()  routine,  it  must
     process  all  messages on its queue. 

しかし、usbser_wsrv内ではqueueの中身を処理せず、port_wq_threadを起こすだけでreturnしてしまいます。
これで問題は起きないのでしょうか?STREAMSについてはあまり良く知らないため、これで良いのかどうか判断出来ません。
どなたかご教授願います。

閉じる コメント(1)

顔アイコン

忙しくてこの数日間、ブログを拝見してなかったのですが、いつの間に!凄いです!

これで昔年の恨みが解決しそう(笑)

試してみますね。

2008/8/25(月) 午後 11:11 [ 瀧 / 紅呪 ] 返信する

コメント投稿

顔アイコン

顔アイコン・表示画像の選択

名前パスワードブログ
絵文字
×
  • オリジナル
  • SoftBank1
  • SoftBank2
  • SoftBank3
  • SoftBank4
  • docomo1
  • docomo2
  • au1
  • au2
  • au3
  • au4
投稿

.


プライバシー -  利用規約 -  メディアステートメント -  ガイドライン -  順守事項 -  ご意見・ご要望 -  ヘルプ・お問い合わせ

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.

みんなの更新記事