Oracle® Solaris 11.2 デバイスドライバの記述

印刷ビューの終了

更新: 2014 年 9 月
 
 

scsi_device 構造体

ホストバスアダプタドライバは、probe(9E) または attach(9E) ルーチンのいずれかが呼び出される前に、ターゲットドライバの scsi_device(9S) 構造体を割り当てて初期化します。この構造体には、一般的な情報とデバイス固有の情報を含む情報領域を指すポインタなど、各 SCSI 論理ユニットに関する情報が格納されます。システムに接続されている論理ユニットごとに 1 つの scsi_device(9S) 構造体が存在します。ターゲットドライバは、ddi_get_driver_private(9F) を呼び出すことで、この構造体へのポインタを取得できます。


Caution

注意  - ホストバスアダプタドライバは、ターゲットデバイスの dev_info 構造体内にある非公開フィールドを使用するため、ターゲットドライバが ddi_set_driver_private(9F) を使用してはいけません。


scsi_device(9S) 構造体には、次のフィールドがあります。

struct scsi_device {
    struct scsi_address           sd_address;    /* opaque address */
    dev_info_t                    *sd_dev;       /* device node */
    kmutex_t                      sd_mutex;
    void                          *sd_reserved;
    struct scsi_inquiry           *sd_inq;
    struct scsi_extended_sense    *sd_sense;
    caddr_t                       sd_private;
};

ここでは:

sd_address

SCSI リソースの割り当てのためのルーチンに渡されるデータ構造体です。

sd_dev

ターゲットの dev_info 構造体を指すポインタです。

sd_mutex

ターゲットドライバが使用する mutex です。この mutex はホストバスアダプタドライバによって初期化され、ターゲットドライバによって、デバイスごとの mutex として使用できます。この mutex は、scsi_transport (9F) または scsi_poll (9F) への呼び出しにわたって保持しないでください。mutex の詳細については、Chapter 3, Multithreadingを参照してください。

sd_inq

ターゲットデバイスの SCSI 照会データへのポインタです。scsi_probe(9F) ルーチンは、バッファーを割り当て、照会データでそのバッファーを満たして、このフィールドに追加します。

sd_sense

デバイスから送られた SCSI 要求検知データを収めるバッファーを指すポインタです。ターゲットドライバは、このバッファーを割り当てて管理する必要があります。attach() Entry Point (SCSI Target Drivers)を参照してください。

sd_private

ターゲットドライバが使用するポインタフィールドです。このフィールドは、ターゲットドライバの非公開の状態構造体を指すポインタの格納によく使われます。