linux内核之hlist哈希链表的应用---C语言代码实现(内核态)

本文介绍了Linux内核中hlist哈希链表的应用,包括数据类型定义、初始化、查找、增加、删除节点等操作,并强调了内核编程中的一些注意事项,如避免使用指针、遵循函数参数约定、正确处理中断和可重入问题。
摘要由CSDN通过智能技术生成

        本来很久前就应该写这篇博文的,但因为工作原因拖到现在。本文是继linux内核之链表操作解析 之后对linux内核中链表和哈希链表的操作宏以及操作函数的一个应用。这是工作中的一段代码(是linux内核网络代码),稍微修改了下。在文章也会穿插些内核编程需要注意的事项

        第一步:是定义数据类型,主要是哈希链表,因为用的是拉链法(也叫数组链表)处理碰撞,所以也可以当作是链表的一个应用。对哈希链表来说除了定义数据项节点外还要定义个哈希表。对数据项解释下,hNode是链表连接的,key是真正的数据。key是个比较复杂的结构体,姑且认为他里面有个整型成员,作为关键字,其他成员不管。注意点:数据项节点中的成员尽量都不要用指针(尤其时hNode成员一定不能用指针),因为:第一、在用container_of()宏获取到数据项节点指针时,数据项节点成员若是指针那获取将会失败,具体的可以查看linux内核之container_of应用。第二、如果定义了指针,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值