指定されたバス空間アドレスにあるデバイスをアクセスするのに必要なカーネル仮想アドレスであることがわかる。定義は次のとおりである。足したアドレスを読み込んでいるだけである。WindowsNTが各プラットフォームでどこまでドライバのソースを共有していたのかは定かではないが。arcのCPUであるMIPSにはi386のようなI/Oアドレス空間は存在しない。そのためISAのI/O空間もカーネルのメモリ空間上に配置されている。APIに処理を追加したものである。APIには定義されておらずあくまでもバス依存の記述である。多くの場合アクセスに用いるアドレスそのものである。アクセス系関数についてはここで挙げた2つのポートではいずれもすべてのバスで共通のマクロであったが、機種によってはバスごとに異なるアクセス用関数を持つようになっているものも存在する。2つの実装の紹介だけではまだまだイメージが湧かないかもしれないが、実装を追う場合の手順についてはわかってもらえたのではないかと思う。少なくともi386とarcという全く異なるマシンで同じデバイスに対するアクセスを同じソース記述で対応できるという原理の感触はつかめたのではないだろうか。NetBSDのページに戻るtsutsui@ceres.dti.ne.jp。