pciconfig_read - システムコールの説明 - Linux コマンド集 一覧表
名前
pciconfig_read, pciconfig_write, pciconfig_iobase - pci デバイス情報を扱う
書式
#include <pci.h>
int pciconfig_read(unsigned long bus, unsigned long dfn, unsigned long off, unsigned long len, void *buf); int pciconfig_write(unsigned long bus, unsigned long dfn, unsigned long off, unsigned long len, void *buf); int pciconfig_iobase(long which, unsigned long bus, unsigned long devfn);
説明
PCI デバイスとのインタラクションは カーネル PCI レイヤで既に扱われているので、 通常はこららの関数をユーザ空間からアクセスする必要はない。
- pciconfig_read ()
- デバイス dev のオフセット off の値を buf に読み込む。
- pciconfig_write ()
- デバイス dev のオフセット off に buf の値を書き込む。
- pciconfig_iobase ()
-
bus/devfn ペアをこの関数に渡し、
メモリオフセット (prep のようなものでは、この値は 0xc0000000 である) と
PIO サイクルの IO ベースの物理アドレスを取得する。
また、もしあるならば ISA hole の物理アドレスを取得する。
返り値
- pciconfig_read ()
- 成功した場合、0 が返される。 エラーの場合、-1 が返され、errno が適切に設定される。
- pciconfig_write ()
- 成功した場合、0 が返される。 エラーの場合、-1 が返され、errno が適切に設定される。
- pciconfig_iobase ()
- which の値に基づいて、物理メモリ内の様々な I/O 領域の位置情報が返される。 which の値は、 IOBASE_BRIDGE_NUMBER, IOBASE_MEMORY, IOBASE_IO, IOBASE_ISA_IO, IOBASE_ISA_MEM である。
エラー
- EINVAL
- len の値が無効である。 これは pci_iobase には適用されない。
- EIO
- I/O エラー。
- ENODEV
- pci_iobase でホース (hose) の値が NULL である。 他の呼び出しで、スロット (slot) が見つからない。
- ENOSYS
- このシステムはこれらの呼び出しを実装していない。 (CONFIG_PCI が定義されていない)。
- EOPNOTSUPP
- この返り値は pci_iobase でのみ有効である。 これは which の値が無効であるときに返される。
- EPERM
- ユーザが CAP_SYS_ADMIN 権限を持っていない。 これは pci_iobase には適用されない。
準拠
これらの呼び出しは Linux 特有のものであり、 Linux 2.0.26/2.1.11 から使用可能である。