linux内核源码分析--通用函数指针

除了稍早讨论net_device 结构的列表管理字段还有一些字段用于管理一些结构确保这些结构在不需要予以删除

atomic_t refcnt

引用计数计数器变为零之前设备无法除名参见第八章

int watchdog_timeo

struct timer_list watchdog_timer

配合先前讨论tx_timeout变量这些字段实现第十一章 看门狗定时器一节讨论定时器

int (*poll)(...)

struct list_head poll_list

int quota

int weight

NAPI 功能使用对此第十章予以描述

const struct iw_handler_def *wireless_handlers

struct iw_public_data *wireless_data

其他无线设备使用参数函数指针还可以参见get_wireless_stats

struct list_head todo_list

网络设备注册除名两步骤进行todo_list用于处理第二步骤参见第八章

struct class_device class_dev

通用内核驱动程序基础架构使用

函数指针

我们在第一章看到网络代码大量使用了函数指针net_device数据结构也有不少函数指针这类函数主要用于

传输接收

在缓冲区添加或者解析链路层报头

改变配置一部分

获取统计数据

特定功能交互

前几节说明完成特定任务所需字段已经介绍了一些函数指针以下通用函数指针

struct ethtool_ops *ethtool_ops

指向一组函数指针指针用于设置或者取出不同设备参数配置参见第八章Ethtool 一节

int (*init)(...)

void (*uninit)(...)

void (*destructor)(...)

int (*open)(...)

int (*stop)(...)

同于初始化清理销毁开启以及关闭一个设备不是所有函数都会被用到参见第八章

struct net_device_stats * (*get_stats)(...)

struct iw_statistics* (*get)wireless_stats)(...)

设备驱动程序所收集一些统计数据可以使用用户空间应用程序予以显示ifconfigip

其他统计数据严格内核使用贲张稍早设备状态一节对此已经讨论这两种方法用于收集统计数据get_stats 针对一般设备get_wireless_stats 针对无线设备还可以参见稍早统计数据一节

int (*hard_start_xmit)(...)

用于传输一个参见十一章

int (*hard_header)(...)

int (*rebuild_header)(...)

int (*hard_header_cache)(...)

void (*header_cache_update)(...)

int (*hard)header_parse)(...)

int (*neigh_setup)(...)

邻居层使用参见二十七设备驱动程序提供方法以及邻居初始化两节

int (*do_ioctl)()

ioctl系统调用用于设备发出命令调用方法可以处理一些ioctl命令

void (*set_multicast_list)(...)

链路层多播一节已经知道mc_listmc_count用于管理L2多播地址列表, 这个方法用于要求设备驱动程序配置设备坚挺这些地址通常不会直接调用方法而是通过包裹函数dev_mc_upload 或者无锁版本__dev_mc_upload 一个设备无法安装多播地址列表只会将其全部开启

int (*set_mac_address)(...)

改变设备mac地址设备没有提供功能就会NULL

int (*set_config)(...)

配置驱动参数比如硬件参数irq, io_addr以及以及if_port, 较高分层参数do_ioctl 来处理使用方法设备不是很多特别是实现探测函数新设备可以drivers/net/sis900.csis900_set_config 一个好的例子及其说明

int (*change_mtu)(...)

改变设备MTU改变字段对设备驱动程序没有影响只是强制内核软件接受新的MTU根据处理分段

void (*tx_timeout)(...)

再看门定时器到期时候调用这个函数用于确认传送事都花了一段可能很长时间才完成只有定义了方法看门狗定时器才会启动参见第十一章 看门狗定时器一节更多信息

int (*accept_fastpath)(...)

快速交换一种内核功能, 允许设备驱动程序终端期间使用一个缓存路由输入流量也称为fastroute

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值