中级会员
 
- 积分
- 239
- 金钱
- 239
- 注册时间
- 2018-6-16
- 在线时间
- 31 小时
|

楼主 |
发表于 2018-8-16 07:53:34
|
显示全部楼层
我看文档中介绍的netif_list是一个全局变量,指向该链表的头部,这个链表把所有网卡芯片的结构体链成一个链表进行管理,那上面图示中所示的两个链表有什么不同,是一样还是有区别的,请详细解释一下。我看的是LwIP协议栈源码详解.pdf中page18中的内容。
struct netif *
netif_add(struct netif *netif, struct ip_addr *ipaddr, struct ip_addr *netmask,
struct ip_addr *gw,
void *state,
err_t (* init)(struct netif *netif),
err_t (* input)(struct pbuf *p, struct netif *netif))
{
static u8_t netifnum = 0;
netif->ip_addr.addr = 0; //复位变量enc28j60中各字段的值
netif->netmask.addr = 0;
netif->gw.addr = 0;
netif->flags = 0; //该网卡不允许任何功能使能
netif->state = state; //指向用户关心的信息,这里为NULL
netif->num = netifnum++; //设置num字段,
netif->input = input; //如前所诉,input函数被赋值
netif_set_addr(netif, ipaddr, netmask, gw); //设置变量enc28j60的三个地址
if (init(netif) != ERR_OK) { //用户自己的底层接口初始化函数
return NULL;
}
netif->next = netif_list; //将初始化后的节点插入链表netif_list
netif_list = netif; // netif_list指向链表头
return netif;
}
|
|