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

印刷ビューの終了

更新: 2014 年 9 月
 
 

GLDv3 のネットワーク統計情報

デバイスドライバは、管理対象のデバイスインスタンスに関する一連の統計情報を管理します。MAC 層は、ドライバの mc_getstat(9E) エントリポイントを介してこれらの統計情報を照会します。

int mc_getstat(void *driver_handle, uint_t stat, uint64_t *stat_value);

GLDv3 フレームワークは stat を使用して、照会する統計情報を指定します。ドライバは stat_value を使用して、stat で指定された統計情報の値を返します。統計情報の値が返された場合、mc_getstat() は 0 を返す必要があります。stat の統計情報がドライバでサポートされていない場合、mc_getstat()ENOTSUP を返す必要があります。

GLDv3 でサポートされる統計情報は、汎用の MAC 統計情報と Ethernet 固有の統計情報を合わせたものです。サポートされる統計情報の完全な一覧については、mc_getstat(9E) のマニュアルページを参照してください。

使用例 19-7  mc_getstat() エントリポイント
int
xx_m_getstat(void *arg, uint_t stat, uint64_t *val)
{
        xx_t    *xxp = arg;

        mutex_enter(&xxp->xx_xmtlock);
        if ((xxp->xx_flags & (XX_RUNNING|XX_SUSPENDED)) == XX_RUNNING)
                xx_reclaim(xxp);
        mutex_exit(&xxp->xx_xmtlock);

        switch (stat) {
        case MAC_STAT_MULTIRCV:
                *val = xxp->xx_multircv;
                break;
        /* ... */
        case ETHER_STAT_MACRCV_ERRORS:
                *val = xxp->xx_macrcv_errors;
                break;
        /* ... */
        default:
                return (ENOTSUP);
        }
        return (0);
}

mri_stat() リングエントリポイントは、リング機能をサポートするすべてのデバイスドライバで実装する必要のある必須のリングエントリポイントです。このエントリポイントは、ハードウェア送信リングおよび受信リングのそれぞれに維持された統計のクエリーを行うために、フレームワークによって使用されます。

ハードウェア送信リングの場合、フレームワークは次の統計のクエリーを行います。

  • MAC_STAT_OERRORS

  • MAC_STAT_OBYTES

  • MAC_STAT_OPACKETS

ハードウェア受信リングの場合、フレームワークは次の統計のクエリーを行います。

  • MAC_STAT_IERRORS

  • MAC_STAT_RBYTES

  • MAC_STAT_IPACKETS