17.13. 統(tǒng)計(jì)信息

2018-02-24 15:50 更新

17.13.?統(tǒng)計(jì)信息

驅(qū)動(dòng)需要的最后一個(gè)方法是 get_stats. 這個(gè)方法返回一個(gè)指向給設(shè)備的統(tǒng)計(jì)的指針. 它的實(shí)現(xiàn)非常簡(jiǎn)單; 展示過(guò)的這個(gè)即便在幾個(gè)接口由同一個(gè)驅(qū)動(dòng)管理時(shí)都好用, 因?yàn)榻y(tǒng)計(jì)量駐留于設(shè)備數(shù)據(jù)結(jié)構(gòu)內(nèi)部.


struct net_device_stats *snull_stats(struct net_device *dev)
{
    struct snull_priv *priv = netdev_priv(dev);
    return &priv->stats;
}

需要返回有意義統(tǒng)計(jì)的真正工作是分布在整個(gè)驅(qū)動(dòng)中的, 有各種成員量被更新. 下列列表展示了最有趣的結(jié)構(gòu) net_device_stats 中的成員:

unsigned long rx_packets;unsigned long tx_packets;
接口成功傳送的進(jìn)入和出去報(bào)文的總和.

unsigned long rx_bytes;unsigned long tx_bytes;
接口接收和發(fā)送的字節(jié)數(shù).

unsigned long rx_errors;unsigned long tx_errors;
接收和發(fā)送的錯(cuò)誤數(shù). 報(bào)文發(fā)送可能出錯(cuò)的事情是沒(méi)有結(jié)束的, net_device_stats 結(jié)構(gòu)包括 6 個(gè)計(jì)數(shù)器給特定的接收錯(cuò)誤以及有 5 個(gè)給發(fā)送錯(cuò)誤. 完整列表看 <<linux/netdevice.h>. 如果可能, 你的驅(qū)動(dòng)調(diào)用維護(hù)詳細(xì)的錯(cuò)誤統(tǒng)計(jì), 因?yàn)樗鼈兪菍?duì)系統(tǒng)管理員試圖追蹤問(wèn)題的最大幫助.

unsigned long rx_dropped;unsigned long tx_dropped;
在接收和發(fā)送中丟失的報(bào)文數(shù)目. 當(dāng)沒(méi)有可用內(nèi)存給報(bào)文數(shù)據(jù)時(shí)丟棄報(bào)文. tx_dropped 極少使用.

unsigned long collisions;
由于介質(zhì)擁塞引起的沖突數(shù)目.

unsigned long multicast;
收到的多播報(bào)文數(shù)目.

值得重復(fù)一下, get_stats 方法可以在任何時(shí)候調(diào)用 -- 即便在接口關(guān)閉時(shí) -- 因此只要 net_device 結(jié)構(gòu)存在驅(qū)動(dòng)必須保持統(tǒng)計(jì)信息.

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)