gpt4 book ai didi

c - Linux skb 分配失败

转载 作者:行者123 更新时间:2023-11-30 17:14:26 25 4
gpt4 key购买 nike

当我与客户保持联系时,我会收到每个客户的报告。一段时间后,程序崩溃了,我收到一条错误消息:

skb allocation failed.

我能做什么?

最佳答案

您提供的信息太不完整,无法预测任何事情。但是,网络套接字的主要问题仍然在于缓冲区分配。 skbuffs 是 Linux 内核处理网络数据包的缓冲区。当您与客户端保持连接并接收数据包时,网卡在内部接收数据包,填充到 skbuff 中并传递到网络堆栈。

查看 alloc_skb() 返回的内容。阅读手册页可以知道,如果alloc_skb()返回NULL,则没有内存可以分配您想要的 block 。这可能是分配失败的情况之一。

顺便说一句,希望你能在中断的基础上驱动整个过程。 alloc_skb() 的手册页显示,

Buffers may only be allocated from interrupts using a gfp_mask of GFP_ATOMIC.

无论内存情况如何,传递数据的最佳选择是中断处理程序。可以在驱动程序加载时创建一个 skb 列表。并且,在中断期间,执行alloc_skb,如果失败,您始终可以使用预分配的缓冲区之一(如果有的话)来保存数据。为下一次中断发生补充缓冲区。

关于c - Linux skb 分配失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30339520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com