示例
参见上一篇博文《onps栈移植说明(3)——添加网卡》 。
返回目录
ethernet_add功能
增加新的ethernet网卡到协议栈 。
原型
PST_NETIF ethernet_add(const CHAR *pszIfName,
const UCHAR ubaMacAddr[ETH_MAC_ADDR_LEN],
PST_IPV4 pstIPv4,
PFUN_EMAC_SEND pfunEmacSend,
void (*pfunStartTHEmacRecv)(void *pvParam),
PST_NETIF *ppstNetif,
EN_ONPSERR *penErr);
入口参数
- pszIfName:网卡名称
- ubaMacAddr:网卡 mac 地址
- pstIPv4:指向 ST_IPV4 结构体的指针(include/netif/netif.h) , 这个结构体保存用户指定的 ip地址、网关、dns、子网掩码等配置信息
- pfunEmacSend:函数指针 , 指向发送函数,函数原型为 INT(* PFUN_EMAC_SEND)(SHORT sBufListHead, UCHAR *pubErr),这个指针指向的其实就是网卡发送函数
- pfunStartTHEmacRecv:指向线程启动函数的指针,协议栈使用该指针指向的函数启动协议栈内部工作线程——ethernet网卡接收线程
- ppstNetif:二维指针,协议栈成功注册网卡后 ethernet_add()函数会返回一个 PST_NETIF 指针给调用者,这个参数指向这个指针 , 其最终会被协议栈通过 pvParam 参数传递给 pfunStartTHEmacRecv 指向的函数
- penErr:指向错误编码的指针 , 当函数执行失败,该参数用于接收实际的错误码
注册成功,返回一个 PST_NETIF 类型的指针,该指针指向新添加的网卡控制块 , 唯一的标识新添加的这块网卡;注册失败则返回 NULL,具体错误信息参见 penErr参数携带的错误码 。
示例
参见上一篇博文《onps栈移植说明(3)——添加网卡》 。
返回目录
ethernet_del功能
删除ethernet网卡 。
原型
void ethernet_del(PST_NETIF *ppstNetif);
入口参数
- ppstNetif:指向网卡控制块PST_NETIF指针的指针 , 其指向ethernet_add()函数返回的PST_NETIF指针的首地址
无
示例
略
返回目录
ethernet_put_packet功能
将收到的ethernet报文推送给协议栈 。
原型
void ethernet_put_packet(PST_NETIF pstNetif, PST_SLINKEDLIST_NODE pstNode);
入口参数
- pstNetif:指向网卡控制块ST_NETIF的指针
- pstNode:指向协议栈ethernet网卡接收链表节点的指针
无
示例
参见上一篇博文《onps栈移植说明(3)——添加网卡》 。
返回目录
netif_is_ready功能
检查网卡是否已进入或正处于正常工作状态 。
原型
BOOL netif_is_ready(const CHAR *pszIfName);
入口参数
- pszIfName:指向网卡名称的指针
返回TRUE,网卡已就绪;反之则返回FALSE 。
示例
略
返回目录
netif_get_by_name功能
通过网卡名称查找网卡 。
原型
PST_NETIF netif_get_by_name(const CHAR *pszIfName);
入口参数
- pszIfName:指向网卡名称的指针
存在则返回指向网卡控制块ST_NETIF的指针;否则返回NULL 。
示例
略
返回目录
buddy_alloc功能
向内存管理单元(mmu)申请一块指定大小的内存 。
原型
void *buddy_alloc(UINT unSize, EN_ONPSERR *penErr);
入口参数
- unSize:申请分配的内存大?。?单位:字节
- penErr:指向错误编码的指针 , 当函数执行失败,该参数用于接收实际的错误码
申请成功返回内存首地址;反之则返回NULL,具体错误信息参见 penErr参数携带的错误码 。
示例
参见buf_list_merge_packet函数示例或上一篇博文《onps栈移植说明(3)——添加网卡》 。
返回目录
buddy_free功能
归还(释放)先前通过buddy_alloc()函数申请的内存 。
原型
BOOL buddy_free(void *pvStart);
入口参数
- pvStart:指向要归还的内存首地址的指针
成功归还内存返回TRUE;当pvStart指向的并不是buddy_alloc()函数返回的内存首地址时则返回FALSE 。
示例
参见buf_list_merge_packet函数示例 。
返回目录
buf_list_get_next_node功能
按链接顺序从链表首部逐个取出链表节点 。
原型
void *buf_list_get_next_node(SHORT *psNextNode, USHORT *pusDataLen);
入口参数
- psNextNode:指向链表下一个节点的指针
- pusDataLen:指向数据长度的指针,出口参数 , 其用于接收节点携带的数据长度
如果尚未到达链表尾部,则返回当前链表节点携带的数据的首地址;反之则返回NULL 。
推荐阅读
- 索尼wf1000xm4怎么连接_索尼wf1000xm4使用说明
- 3 onps栈移植说明——添加网卡
- 2 onps栈移植说明——编译器及os适配层移植
- 1 onps栈移植说明——onps栈的配置及裁剪
- 开源网络协议栈onps诞生记
- <一>从指令角度了解函数堆栈调用过程
- 漫步者funbuds怎么配对_漫步者funbuds使用说明
- 3 Python全栈工程师之从网页搭建入门到Flask全栈项目实战 - 入门Flask微框架
- 都卷Java,你看看你得学多少技术栈才能工作!
- flutter系列之:flutter中可以建索引的栈布局IndexedStack