zynq Lwip学习笔记-tcp_arg函数

前言

最近在学习zynq中的lwip协议族,找不到很好的记笔记的地方,所以就用csdn记录一下自己的学习过程。现在对lwip不熟悉,只是把官方的lwip echo server例程跑了一下,能跑通就一点点的照着学了,笔记都是根据自己的理解写的,而且部分内容可能也只针对lwip echo server例程有效,笔记可以供有缘人参考,但不敢保证全对,有不对的地方也期待有高人指点一二。
————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.youkuaiyun.com/weixin_40356705/article/details/136824649

一、概述

  • 原型
void tcp_arg(struct tcp_pcb *pcb, void *arg)
  • 参数
    struct tcp_pcb *pcb : 表示一个指向tcp_pcb结构的指针(代表TCP连接控制块)
    void *arg :一个void型指针,代表要传递给回调函数的参数
  • 作用
    tcp_arg函数用于设置TCP连接的回调函数参数。这样,当与该连接相关的回调函数(如接收回调或错误回调)被调用时,它们可以访问这个参数。这在实现需要跨多个回调函数共享状态或数据的程序时非常有用。

二、函数体

void tcp_arg(struct tcp_pcb *pcb, void *arg)
{
LWIP_ASSERT_CORE_LOCKED();

//调用LWIP_ASSERT_CORE_LOCKED宏。这通常用于确保核心(或关键部分)在调用这个函数时是锁定的,以防止并发访问导致的问题。

/* This function is allowed to be called for both listen pcbs and connection pcbs. */

//注释:这个函数既可用于监听PCB(即尚未接受连接的PCB),也可用于已建立的连接PCB。

if (pcb != NULL) {

//检查pcb参数是否为NULL。确保在尝试访问其成员之前,它是一个有效的指针。

pcb->callback_arg = arg;

//如果pcb不是NULL,则将其callback_arg成员设置为传入的arg参数。这样,当回调函数被调用时,它们可以访问这个参数。

}
}

三、调用关系

被accept_callback调用,没有调用其他函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值