- 1、本文档共31页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
lwip中各种函数,标志位的总结
mem_init( ) 内存堆的初始化函数,主要是告知内存堆的起止地址,以及初始化空闲表,由lwip 初始化时自己调用,该接口为内部私有接口,不对用户层开放mem_malloc( ) 申请分配内存。将总共需要的字节数作为参数传递给该函数,返回值是指向必威体育精装版分配的内存的指针,而如果内存没有分配好,则返回值是NULLmem_calloc( ) 是对mem_malloc( )函数的简单包装,他有两个参数,分别为元素的数目和每个元素的大小,这两个参数的乘积就是要分配的内存空间的大小,与mem_malloc()不同的是它会把动态分配的内存清零。有经验的程序员更喜欢使用mem_ calloc (),memp_num:这个静态数组用于保存各种类型缓冲池的成员数目memp_sizes:这个静态数组用于保存各种类型缓冲池的结构大小memp_tab:这个指针数组用于指向各种类型缓冲池当前空闲节点memp_init():内存池的初始化,主要是为每种内存池建立链表memp_tab,其链表是逆序的,此外,如果有统计功能使能的话,也把记录了各种内存池的数目。memp_malloc():如果相应的memp_tab链表还有空闲的节点,则从中切出一个节点返回,否则返回空。memp_free()把释放的节点添加到相应的链表memp_tab头上。系统是调用内存堆分配函数mem_malloc进行内存分配的。分配空间的大小包括pbuf结构头大小SIZEOF_STRUCT_PBUF,需要的数据存储空间大小length,还有一个offset系统是调用内存堆分配函数mem_malloc进行内存分配的。段区域的offset的大小,这段区域用来存储数据的包头,如TCP包头,IP包头等pbuf_free(A)函数来删除pbuf结构PBUF_POOL 类型和PBUF_ROM类型、PBUF_REF类型需要通过memp_free()函数删除,PBUF_RAM类型需要通过mem_free()函数删除memp_memory是缓冲池的起始地址,前面已有所讨论;MEMP_MAX是POOL 类型数; memp_tab 用于指向某类POOL 空闲链表的起始节点;memp_num表示各种类型POOL的个数;memp_sizes表示各种类型单个POOL的大小,对于MEMP_PBUF_POOL和MEMP_PBUF型的POOL,其大小是pbuf头和pbuf可装载数据大小的总和。网络接口在LWIP中,是通过一个叫做netif的网络结构体来描述一个硬件网络接口的struct netif { struct netif *next; // 指向下一个netif结构的指针 struct ip_addr ip_addr; // IP 地址相关配置struct ip_addr netmask; struct ip_addr gw; err_t (* input)(struct pbuf *p, struct netif *inp); //调用这个函数可以从网卡上取得一个数据包 err_t (* output)(struct netif *netif, struct pbuf *p, // IP 层调用这个函数可以向网卡发送 structip_addr*ipaddr); //一个数据包 err_t (* linkoutput)(struct netif *netif, struct pbuf *p); // ARP模块调用这个函数向网卡发送一个数据包void *state; // 用户可以独立发挥该指针,用于指向用户关心的网卡信息 u8_t hwaddr_len; // 硬件地址长度,对于以太网就是MAC地址长度,为6各字节 u8_t hwaddr[NETIF_MAX_HWADDR_LEN]; //MAC 地址 u16_t mtu; // 一次可以传送的最大字节数,对于以太网一般设为1500 u8_t flags; // 网卡状态信息标志位 char name[2]; // 网络接口使用的设备驱动类型的种类 u8_t num; // 用来标示使用同种驱动类型的不同网络接口};output字段向一个函数该函数的三个参数是pbuf类型、netif类型和ip_addr类型,返回参数是err_t类型。其中pbuf代表要发送的数据包。ipaddr 代表网卡需要将该数据包发送到的地址,该地址应该是接收实际的链路层帧的主机的 Ip地址ethernetif_init底层接口初始化函数tcpip_input 函数是向IP层递交数据包的函数netif-next
您可能关注的文档
- gcc常用参数(静动态链接优化调试).doc
- GCMS内标定量法.doc
- ghost112图文教程.doc
- GM(1,1)和马氏链模型预测图书馆借阅量.doc
- GOLF-703整套资料(中文).doc
- GE德士古气化炉.doc
- GPIO模拟SPI.doc
- GPO设计.docx
- Google 中英文版.doc
- grub2必威体育精装版全面学习资料.doc
- 2024年中国钽材市场调查研究报告.docx
- 2024年中国不锈钢清洗车市场调查研究报告.docx
- 2024年中国分类垃圾箱市场调查研究报告.docx
- 2024年中国水气电磁阀市场调查研究报告.docx
- 2024年中国绿藻片市场调查研究报告.docx
- 2010-2023历年初中毕业升学考试(青海西宁卷)数学(带解析).docx
- 2010-2023历年福建厦门高一下学期质量检测地理卷.docx
- 2010-2023历年初中数学单元提优测试卷公式法(带解析).docx
- 2010-2023历年初中毕业升学考试(山东德州卷)化学(带解析).docx
- 2010-2023历年初中毕业升学考试(四川省泸州卷)化学(带解析).docx
文档评论(0)