05-设备驱动功能层
16.1.3 设备驱动功能层
net_device结构体的成员(属性和函数指针)需要被设备驱动功能层的具体数值和函数赋予。对于具体的设备xxx,工程师应该编写设备驱动功能层的函数,这些函数形如xxx_open()、xxx_stop()、xxx_tx()、xxx_hard_header()、xxx_get_stats()、xxx_tx_timeout()等。
由于网络数据包的接收可由中断引发,设备驱动功能层中另一个主体部分将是中断处理函数,它负责读取硬件上接收的数据包并传送给上层协议,可能包含xxx_interrupt()和xxx_rx()函数,前者完成中断类型判断等基本的工作,后者则需完成数据包的生成和递交上层等复杂工作。
16.2~16.8节将对上述函数进行详细分析并给出参考设计模板。
对于特定的设备,我们还可以定义其相关私有数据和操作,并封装为一个私有信息结构体xxx_private,让其指针被赋值给net_device的priv成员。xxx_private结构体中可包含设备特殊的属性和操作、自旋锁与信号量、定时器以及统计信息等,由工程师自定义。