【LwIP源码学习5】网口接收数据处理过程

前言

本文对lwip中TCPIP_MSG_INPKT类型消息的处理过程进行分析。

正文

【LwIP源码学习4】主线程tcpip_thread一文中提到。lwip主线程tcpip_thread会先从邮箱tcpip_mbox中取出消息,然后调用tcpip_thread_handle_msg函数根据消息类型对消息进行处理。

static void
tcpip_thread_handle_msg(struct tcpip_msg *msg)
{
   
   
  switch (msg->type) {
   
   
  ......
    case TCPIP_MSG_INPKT:
      LWIP_DEBUGF(TCPIP_DEBUG, ("tcpip_thread: PACKET %p\n", (void *)msg));
      if (msg->msg.inp.input_fn(msg->msg.inp.p, msg->msg.inp.netif) != ERR_OK) {
   
   
        pbuf_free(msg->msg.inp.p);
      }
      memp_free(MEMP_TCPIP_MSG_INPKT, msg);
      break;
  ......
  }
}

在判断到消息类型msg->typeTCPIP_MSG_INPKT时,会执行这个消息对应的msg->msg.inp.input_fn函数,并传入参数msg->msg.inp.pmsg->msg.inp.netif
TCPIP_MSG_INPKT类型的消息是在tcpip_inpkt函数中被创建的。

err_t
tcpip_inpkt(struct pbuf *p, struct netif *inp, netif_input_fn input_fn)
{
   
   
...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值