高度な検索
Developer Connection
Member Login ログイン | ご入会 ADC連絡先



*NW 42 T_DATA_REQ および M_DATA TPI メッセージ・ブロック

(96 年 11 月 27 日更新)

Q: 現在、TPI (Transport Provider Interface) に準拠する Open Transport モジュールを開発しています。ところで、PRIM_typeT_DATA_REQ である M_PROTO メッセージ・ブロックではなく、M_DATA メッセージ・ブロックを使って、OT が開発中の TPI にデータを渡していることに気づきました。これはどういうことなのでしょうか?

A: この質問に対する回答は、『STREAMS Modules and Drivers』(Unix Press, ISBN 0-13-066879-6) 「Appendix A-2」の、T_DATA_REQ(7tpi)の説明の最後にあります。

転送プロバイダは、T_DATA_REQ プリミティブのように、先行する M_PROTO メッセージ・ブロックがなくても、1 つまたは複数の M_DATA メッセージを認識しなければなりません。このメッセージ・タイプは、write (BA_OS) オペレーティング・システム・サービス・ルーチンにより初期化されます。

OT では、慎重に検討した結果、この動作を最適なものとして採用しています。M_DATA を使うことにより、OT は M_PROTO ヘッダ用のバッファの割り当てを回避します。メモリ割り当てのための時間を節約できるため、この対処方法によりシステムの処理速度が向上します。

この動作は送信データには見られません。この仕様は T_EXDATA_REQ の最適化には許可されていないためです。

--Quinn "The Eskimo!"
devsupport@apple.com

[ Technical Q&A's : Communications & Collaboration : Networking : NW42 ]