news 2026/7/15 0:00:10

[Linux]学习笔记系列 -- hashtable

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
[Linux]学习笔记系列 -- hashtable

title: hashtable
categories:

  • linux
  • include
    tags:
  • linux
  • include
    abbrlink: 14dfa8ed
    date: 2025-10-03 09:01:49

https://github.com/wdfk-prog/linux-study

文章目录

  • include/linux/hashtable.h
    • DEFINE_HASHTABLE 定义哈希表
    • hlist_for_each_entry 遍历哈希表
    • hash_add 将一个对象添加到哈希表

include/linux/hashtable.h

DEFINE_HASHTABLE 定义哈希表

#defineDEFINE_HASHTABLE(name,bits)\structhlist_headname[1<<(bits)]=\{[0...((1<<(bits))-1)]=HLIST_HEAD_INIT}

hlist_for_each_entry 遍历哈希表

#definehlist_entry(ptr,type,member)container_of(ptr,type,member)#definehlist_for_each(pos,head)\for(pos=(head)->first;pos;pos=pos->next)#definehlist_for_each_safe(pos,n,head)\for(pos=(head)->first;pos&&({n=pos->next;1;});\pos=n)#definehlist_entry_safe(ptr,type,member)\({typeof(ptr)____ptr=(ptr);\____ptr?hlist_entry(____ptr,type,member):NULL;\})/** * hlist_for_each_entry - 遍历给定类型的列表 * @pos: 用作循环游标的类型 *。 * @head: 您列表的开头。 * @member: 结构体内 hlist_node 的名称。 */#definehlist_for_each_entry(pos,head,member)\for(pos=hlist_entry_safe((head)->first,typeof(*(pos)),member);\pos;\pos=hlist_entry_safe((pos)->member.next,typeof(*(pos)),member))/** * hash_for_each_possible - 遍历所有可能哈希到同一桶的对象 * @name: 要遍历的哈希表 * @obj: 用作每个条目的循环游标的类型* * @member: 结构体内 hlist_node 的名称 * @key: 要遍历的对象的键 */#definehash_for_each_possible(name,obj,member,key)\hlist_for_each_entry(obj,&name[hash_min(key,HASH_BITS(name))],member)

hash_add 将一个对象添加到哈希表

/** * hlist_add_head - add a new entry at the beginning of the hlist * @n: new entry to be added * @h: hlist head to add it after * * Insert a new entry after the specified head. * This is good for implementing stacks. */staticinlinevoidhlist_add_head(structhlist_node*n,structhlist_head*h){structhlist_node*first=h->first;WRITE_ONCE(n->next,first);if(first)WRITE_ONCE(first->pprev,&n->next);WRITE_ONCE(h->first,n);WRITE_ONCE(n->pprev,&h->first);}/** * hash_add - 将一个对象添加到哈希表 * @hashtable: 要添加到的哈希表 * @node: 要添加的对象的 &struct hlist_node * @key: 要添加的对象的键 */#definehash_add(hashtable,node,key)\hlist_add_head(node,&hashtable[hash_min(key,HASH_BITS(hashtable))])
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/11 6:26:53

PLIP蛋白质配体相互作用分析从入门到精通指南

PLIP蛋白质配体相互作用分析从入门到精通指南 【免费下载链接】plip Protein-Ligand Interaction Profiler - Analyze and visualize non-covalent protein-ligand interactions in PDB files according to &#x1f4dd; Adasme et al. (2021), https://doi.org/10.1093/nar/g…

作者头像 李华
网站建设 2026/7/11 6:25:27

VibeVoice-TTS方言适配:区域口音模拟部署实战

VibeVoice-TTS方言适配&#xff1a;区域口音模拟部署实战 1. 引言&#xff1a;从多说话人对话到区域口音模拟的工程需求 随着语音合成技术的发展&#xff0c;用户对TTS&#xff08;Text-to-Speech&#xff09;系统的要求已不再局限于“能发声”&#xff0c;而是追求自然度、表…

作者头像 李华
网站建设 2026/7/14 0:02:26

HunyuanVideo-Foley vs Adobe Audition:AI与传统工具谁更强

HunyuanVideo-Foley vs Adobe Audition&#xff1a;AI与传统工具谁更强 1. 引言&#xff1a;音效生成的技术演进与场景需求 随着短视频、影视制作和内容创作的爆发式增长&#xff0c;音效在提升视听体验中的作用愈发关键。传统音效制作依赖专业音频工程师在如Adobe Audition等…

作者头像 李华
网站建设 2026/7/2 3:04:20

VibeVoice-TTS网页推理入口:点击即用的便捷部署模式

VibeVoice-TTS网页推理入口&#xff1a;点击即用的便捷部署模式 1. 背景与技术价值 随着语音合成技术的快速发展&#xff0c;传统文本转语音&#xff08;TTS&#xff09;系统在生成长篇、多角色对话内容时暴露出诸多局限。例如&#xff0c;说话人一致性难以维持、对话轮次转换…

作者头像 李华