ZBLOG

请逐步讲解代码: static int pmd_load_queues_and_ports(struct dp_netdev_pmd_thread *pmd, struct polled_queue **ppoll_list) { struct polled_queue *poll_list = *ppoll_list; struct rxq_poll *poll; int i; ovs_mutex_lo...

该函数通过加载队列和端口来初始化一个DPDK网络设备线程。下面是代码的逐步解释:

  1. 定义函数pmd_load_queues_and_ports,参数为指向dp_netdev_pmd_thread类型的指针pmd和指向polled_queue类型指针的指针ppoll_list

  2. 定义结构体指针poll_list并将其初始化为*ppoll_list(即该函数的输入参数)。

  3. 定义结构体指针poll和整型变量i

  4. 上锁pmd->port_mutex,以确保在操作端口时不会发生冲突。

  5. 调用xrealloc函数对poll_list进行重新分配内存的操作,使其大小等于pmd->poll_list中元素数量的大小乘以sizeof *poll_list。返回值为重新分配后的poll_list

  6. 初始化变量i为0。

  7. 使用宏HMAP_FOR_EACH遍历pmd->poll_list中的每个元素(poll),使用node作为迭代器。

  8. 对于每个poll,将其相关信息赋值给poll_list数组的第i个元素:poll_list[i].rxqpoll->rxqpoll_list[i].port_nopoll->rxq->port->port_nopoll_list[i].emc_enabledpoll->rxq->port->emc_enabledpoll_list[i].rxq_enablednetdev_rxq_enabled(poll->rxq->rx)poll_list[i].change_seqnetdev_get_change_seq(poll->rxq->port->netdev)

  9. 调用函数pmd_load_cached_ports(pmd),该函数将缓存的端口添加到pmd->port_list中。

  10. 解锁pmd->port_mutex

  11. poll_list赋值给*ppoll_list,即将更新后的队列列表返回给调用者。

  12. 返回队列数目i

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=120

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?