SMB(4) | FreeBSD Kernel Interfaces Manual | SMB(4) |
名称
smb — SMB 一般的な I/O デバイスドライバ書式
device smb解説
smb キャラクタデバイスドライバは、任意の smbus(4) インスタンスに一般的なの I/O を提供します。 SMB デバイスを制御するためには、下に記述された ioctl で /dev/smb? を使用します。これらの ioctl コマンドのうちのどれでもその引数として struct smbcmd へのポインタを取ります。
#include <sys/types.h> struct smbcmd { char cmd; int count; u_char slave; union { char byte; short word; char *byte_ptr; short *word_ptr; struct { short sdata; short *rdata; } process; } data; };
slave フィールドは、常に使用され、通信するための SMBus スレーブデバイスのアドレスを提供します。スレーブアドレスは、7 つの最上位ビット (すなわち、“左そろえ”) で指定されます。スレーブアドレスの最下位ビットは、0 でなければなりません。
ioctl | 説明
|
SMB_QUICK_WRITE | QuickWrite コマンドは、どんなデータも転送せずに、バスに書き込む目的でデバイスアドレスを単に発行します。 |
SMB_QUICK_READ | QuickRead コマンドは、どんなデータも転送せずに、バスに読み込む目的でデバイスアドレスを単に発行します。 |
SMB_SENDB | SendByte コマンドは、デバイスへ cmd フィールドで提供されるバイトを送信します。 |
SMB_RECVB | ReceiveByte コマンドは、 cmd フィールドで返されるデバイスから 1 バイトを読み込みます。 |
SMB_WRITEB | WriteByte コマンドは、最初に cmd フィールドからデバイスへバイトを送信し、続いて data.byte で与えられたバイトを送信します。 |
SMB_WRITEW | WriteWord コマンドは、最初に cmd フィールドからデバイスへバイトを送信し、続いて data.word で与えられたワードを送信します。 SMBus バイト順序は、定義によりリトルエンディアンであることに注意してください。 |
SMB_READB | ReadByte コマンドは、最初に cmd フィールドからデバイスへバイトを送信し、次に、デバイスから 1 バイトデータを読み込みます。返されたデータは、 data.byte_ptr によって指される位置に格納されます。 |
SMB_READW | ReadWord コマンドは、最初に cmd フィールドからデバイスへバイトを送信し、次に、デバイスから 1 ワードデータを読み込みます。返されたデータは、 data.word_ptr によって指される位置に格納されます。 |
SMB_PCALL | ProcedureCall コマンドは、最初に cmd フィールドからデバイスへバイトを送信し、続いて data.process.sdata で提供されるワードを送信します。その後、デバイスからデータの 1 つのワードを読み込み、 data.process.rdata によって指される位置にそれを返します。 |
SMB_BWRITE | BlockWrite コマンドは、最初に cmd フィールドからデバイスへバイトを送信し、続いて data.byte_ptr によって指されるバッファから得られる count バイトのデータを送信します。 SMBus 仕様は、単一のブロックの読み込み書き込みコマンドで高々 32 バイトのデータを転送することができる、と指図しています。この値として定数 SMB_MAXBLOCKSIZE が利用可能です。 |
SMB_BREAD | BlockRead コマンドは、最初に cmd フィールドからデバイスへバイトを送信し、次にデバイスから count バイトのデータを読み込みます。これらのデータは、 data.byte_ptr によって指されるバッファに返されます。 |
エラー
ioctl(2) コマンドは、次のドライバに特有のエラーを引き起こすかもしれません。- [ ENXIO]
- デバイスは、選択に応答しませんでした。
- [ EBUSY]
- デバイスは、まだ使用中です。
- [ ENODEV]
- (起こるとは思われなかった) デバイスによってサポートされない操作です。
- [ EINVAL]
- 一般的な引数エラーです。
- [ EWOULDBLOCK]
- SMBus トランザクション (処理) は、タイムアウトしました。
歴史
smb マニュアルページは、 FreeBSD 3.0 ではじめて登場しました。作者
このマニュアルページは、 によって書かれました。February 6, 2009 | FreeBSD |