情けないドライバの実装を見た

切なくなりました。

ストレージのドライバで、

  • 初期化
  • セクタリード
  • セクタライト

だけを実装するタイプです。ファイルシステムはOSが面倒見てくれるというものです。ドライバの雛形もOSの開発キットにあるので、それを手直しして作ってあります。

セクタリードとセクタライトの実装を見て驚愕しました。関数のエントリ直後に、『割り込み禁止マクロ』、returnの直前に『割り込み禁止解除マクロ』が書いてあるのです。

そんなマクロあったっけ?と首をひねってみると、ソースの先頭にexternがあり、さらに雛形ドライバにはないアセンブラのソースがついていました。

アセンブラソースの中を見ると、割り込み制御ビットをセット/リセットするという、5行ずつの清く正しい割り込み禁止・解除のコードになっていました。このCPUのアセンブラはあまり詳しくないのでアレですが、このことによって、アプリケーションやOSがストレージにアクセスすると、OSのスケジューリングが止まります。ていうか、他のドライバも止まりますよね。

いや、他のデバイスから上がる割り込みが割り込み禁止中に無視されるんじゃないですかね。そこはプロセッサのデータシートを読まねばはっきりしたことは分かりません。1回分くらいは覚えておいてくれる場合もあります。

デバイスコントローラのREADY待ちのポーリング中も、ず~~~っと割り込み禁止。何かの冗談ですよネ。

なお、搭載されているOSは一応RTOSに分類されるものです。しかしこんな割り込み制御してたら、リアルタイムもクソもありません。

これが、エンジニアリングでコンサルやらいろいろやってる世界的な会社が作って、金かけて性能テストまでしてあるというのですから、世の中詐欺師ばっかりということですね。たぶん性能が出ないことをテストしてあるのでしょう。

そして、時給850円のごみためまんがそれを通りすがりに直すわけです。いや、いろいろ苦労して直します。何しろ彼らと違って道具も時間も足りませんからね。さらにちょっとした不具合でもエンバグしたと非難されるのです。彼らはあ~でもないこ~でもないと能書きばかりで修正するのに金と工数を分捕ります。

挙句の果てに、修正しても見た目には数%しか性能改善しないため、

劇的な性能向上がないならドライバなんか触らないでくれますか

などと言われたりします。

数十%の性能改善というのは、ソースの1箇所を直してパパっとできるものではありません。数十個の実装がそれぞれ1%ずつ無駄にした性能をかき集めて達成されるものです

最初から性能を意識して作れば何も苦労は無いわけですが、マヌケがマヌケを雇って、クソからカレーを作れば何でもまずくなるという例でしかありません。

そんなヒドイ開発をするドライバ会社の名前を知りたい人は、中華丼をカレー皿に盛った『牛バラ・ライス』で有名なラーメン屋台『ガ~ミ~』へどうぞ。

切ない初冬の一日です。