求助大神,最近基于rhel5 内核版本2.6.18在做东西。出现在skb_put()系统崩溃,查看alloc_skb() 分配之后tail指针地址与head,data不同,并且end指针一直为0x0000000,强制改掉tail指针依旧出现系统崩溃问题。并且通过grep找不到__alloc_skb() 的具体实现。
关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
__alloc_skb()分配内存问题
收起
- 写回答
- 好问题 0 提建议
- 关注问题
微信扫一扫点击复制链接分享
- 邀请回答
- 编辑 收藏 删除 结题
- 收藏 举报
1条回答 默认 最新
- 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
dabocaiqq 2018-09-01 15:47关注本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报
微信扫一扫点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容
报告相同问题?
提交
- 2025-03-20 11:50TJ_Dream的博客 分配内存:为sk_buff结构体和数据缓冲区(存储实际网络数据包分配内存)初始化结构:设置sk_buff的元数据(如指针、长度、协议类型等)预留头部空间:在数据缓冲区中预留空间,以便后续协议层(如IP、TCP添加头部)...
- 2025-03-09 10:17TJ_Dream的博客 alloc_skb时Linux内核网络子系统中最基础的内存分配接口,用于创建和管理网络数据包的缓冲区。合理使用GFP_ATOMIC和GFP_KERNEL、正确处理缓冲区生命周期,可避免内核崩溃或性能瓶颈。
- 2025-03-09 10:17协议栈在构造TCP/IP等控制报文或应用层通过socket发送数据时,也需调用alloc_skb分配sk_buff存放数据。网络设备在发送数据前可能需要克隆或扩展sk_buff,此时也会调用alloc_skb来分配新的缓冲区。 alloc_skb函数与...
- 2019-10-07 06:56dengdun6257的博客 alloc_skb()用于分配缓冲区的函数。由于"数据缓冲区"和"缓冲区的描述结构"(sk_buff结构)是两种不同的实体,这就意味着,在分配一个缓冲区时,需要分配两块内存(一个是缓冲区,一个是缓冲区的描述结构sk_buff)。 ...
- 2017-09-16 02:10weixin_30539625的博客 alloc_skb--分配skb dev_alloc_skb--分配skb,通常被设备驱动用在中断上下文中,它是alloc_skb的封装函数,因为在中断处理函数中被调用,因此要求原子操作(GFP_ATOMIC) kfree_skb--减少skb引用,为0则释放,用于...
- 2021-01-15 11:10老王不让用的博客 因为 sk_buff 结构是比较复杂的(并不是其本身结构复杂,而是其所指的数据区以及分片结构等,合在一起就变复杂了),所以在内存申请和释放时,就要搞清楚什么函数对应的申请分配或释放什么结构内存。这里不提倡自己...
- 2012-10-27 17:20swq1982的博客 (1) alloc_skb函数 static inline struct sk_buff *alloc_skb(unsigned intsize,gfp_t priority) { return__alloc_skb(size, priority, 0, -1);...__alloc_skb函数定义于文件,它分配sk_bu
- 2020-10-08 18:10zhenghuaduo的博客 在socket的结构体里有一个sk_wmem_alloc字段,该字段表示已经提交到ip层,但还没有从本机发送出去的skb占用空间大小。 分配时机 当tcp层封装好skb数据后,会调用tcp_transmit_skb,在该函数会根据skb的长度相应...
- 2024-05-28 17:50sz66cm的博客 内核 内存分配 page_frag_alloc
- 2019-03-20 20:13redwingz的博客 在应用层创建套接口时,内核将新分配的套接口结构的成员变量sk_wmem_alloc初始化为1。 struct sock *sk_alloc(struct net *net, int family, gfp_t priority, struct proto *prot, int kern) { ...
- 2021-05-12 14:32weixin_39842611的博客 alloc_skb()函数分配一个套接字缓冲区和一个数据缓冲区, 参数 len为数据缓冲区 的空间大小,以16字节对齐,参数priority为内存分配的优先级。 dev_alloc_skb()函数只是以 GFP_ATOMIC优先级(代表分配过程不能被...
- 2023-08-05 13:05to_be_better_wen的博客 } 从函数实现可知,skb_put函数将skb->tail加了len,表示将skb的实际负载数据的长度加len,要实现这一点,alloc_skb分配的len减去skb_reserve的len应该要大于等于skb_put的len,这样才能保证skb_put函数运行没问题。...
- 2010-11-12 10:47cxw06023273的博客 [code="java"] /***********************... * dev_alloc_skb - 分配内存为接受的包 * @length: 分配的长度 * GFP_ATOMIC:原子类型,此函数经常用于终端上下文中 *******************************...
- 2025-11-24 22:49qweasdfdf的博客 linux内核网络协议栈 skb结构体分析
- 2022-08-22 02:10不悔哥的博客 协议栈skb _buff
- 2025-03-12 02:15109702008的博客 是一个用于分配和初始化网络设备的通用函数。它创建并初始化一个net_device结构体,同时可以设置相关的私有数据。:私有数据的大小,若无需私有数据,可设为 0。name:设备名称格式字符串,如 "eth%d"。setup:初始...
- 2017-03-27 21:02Farmwang的博客 数据缓存区和SKB描述符是两个不同的实体,这就意味着,在分配一个SKB时,需要分配两块内存,一块是数据缓存区,一块是SKB描述符。__alloc_skb()调用kmem_cache_alloc_node()从高速缓存中获取一个sk_buff结构的空间,...
- 2024-12-06 10:33109702008的博客 sock_queue_rcv_skb 是 Linux 内核中的一个函数,它用于将接收的数据包排队到套接字的接收队列中。这个函数在网络子系统中被广泛使用,特别是在处理接收到的数据包时。
- 2019-03-25 19:28redwingz的博客 sk_forward_alloc预分配额度 接收路径中使用函数sk_rmem_schedule分配缓存额度,使用宏SK_MEM_RECV表示此次是为接收而分配。如果请求的缓存大小在预分配额度之内,可马上进行正常分配,否则,由__sk_mem_schedul...
- 没有解决我的问题, 去提问