首页 > 其他分享 >ida/idr-1—文档翻译

ida/idr-1—文档翻译

时间:2023-10-23 15:13:56浏览次数:36  
标签:IDR idr 分配 文档 func 使用 ID ida

一、msm-5.4/Documentation/core-api/idr.rst 翻译

概述
========

要解决的一个常见问题是分配标识符 (ID); 通常用很小的数字来标识一个事物。 示例包括文件描述符、进程 ID、网络协议中的数据包标识符、SCSI 标签和设备实例号。 IDR 和 IDA 为该问题提供了合理的解决方案,以避免每个人都发明自己的解决方案。 IDR 提供将 ID 映射到指针的功能,而 IDA 只提供 ID 分配,因此内存效率更高。


IDR使用
=========

首先初始化 IDR,使用:c:func:`DEFINE_IDR`(对于静态分配的 IDR)或使用:c:func:`idr_init`(对于动态分配的 IDR)。

您可以调用 :c:func:`idr_alloc` 来分配未使用的 ID。 通过调用 :c:func:`idr_find` 查找与 ID 关联的指针,并通过调用 :c:func:`idr_remove` 释放 ID。

如果需要更改与 ID 关联的指针,可以调用 :c:func:`idr_replace`。 这样做的一个常见原因是通过向分配函数传递“NULL”指针来保留 ID; 使用保留的ID初始化对象,最后将初始化的对象插入到IDR中。

有些用户需要分配大于``INT_MAX``的ID。 到目前为止,所有这些用户都满足于“UINT_MAX”限制,并且他们使用 :c:func:`idr_alloc_u32`。 如果您需要的 ID 不适合 u32,我们将与您合作来满足您的需求。

如果需要顺序分配 ID,可以使用 :c:func:idr_alloc_cyclic。 当处理较大的 ID 时,IDR 的效率会降低,因此使用此功能会产生轻微的成本。

要对 IDR 使用的所有指针执行操作,您可以使用基于回调的 idr_for_each 或迭代器样式 idr_for_each_entry。 您可能需要使用 :c:func:`idr_for_each_entry_continue` 来继续迭代。 如果迭代器不满足您的需求,您还可以使用 :c:func:`idr_get_next` 。

当您使用完 IDR 后,可以调用 :c:func:idr_destroy 来释放 IDR 使用的内存。 这不会释放 IDR 指向的对象; 如果您想这样做,请使用其中一个迭代器来完成。

您可以使用 :c:func:`idr_is_empty` 来查看当前是否有分配的 ID。

如果您在从 IDR 分配新 ID 时需要持锁,则可能需要传递一组限制性的 GFP 标志,这可能会导致 IDR 无法分配内存。 要解决此问题,您可以在持锁之前调用 :c:func:`idr_preload` ,然后在分配之后调用 :c:func:`idr_preload_end` 。 TODO:怎么实现的?

.. 内核文档:: include/linux/idr.h
:doc: IDR 同步


IDA使用
=========

.. 内核文档:: lib/idr.c
:doc: IDA 描述


函数与数据结构
=======================

.. 内核文档:: include/linux/idr.h
.. 内核文档:: lib/idr.c

 

标签:IDR,idr,分配,文档,func,使用,ID,ida
From: https://www.cnblogs.com/hellokitty2/p/17782492.html

相关文章

  • 安装dita-ot并使用dita-ot生成pdf和html文档
    java版本dita-ot版本测试文档生成的文件包可以在dita-ot官网下载1.安装jdkhttps://blog.csdn.net/bestsongs/article/details/1229390812.解压dita-ot的zip包就可以了3.使用方法输出的文件在......
  • BOSHIDA DC电源模块的数字电源优势有哪些?
    BOSHIDADC电源模块的数字电源优势有哪些?随着电子产品的日益普及,DC电源成为电子设备中不可或缺的一部分,而数字电源模块在DC电源中占据越来越重要的地位。数字电源模块相比传统的模拟电源具有很多优势,以下是其中的几点: 1.稳定性高:数字电源模块可以实现精确的电压/电流控制,具......
  • 良心软件!视频、音频、图片、文档等各种格式转换,甚至屏幕录像都支持!
    良心软件!视频、音频、图片、文档甚至录屏都支持!主打一个免费多功能的多媒体文件转换工具引言 温馨提示:上面视频中有3D环绕背景音乐,请带上耳机效果更好它能干些什么?看它自己做的自我介绍,它都有哪些功能,可以做什么事情: “ 支持各种类型的最新视频格式、音频格式......
  • 浅析“圆”在中国古典舞创作中的运用——以《踏歌》为例(文档)
    目录摘要IAbstractII一、绪论1(一)研究背景1(二)研究的目的及意义1(三)研究方法21.文献研究法22.经验总结法23.个案研究法2二、中国古典舞“圆”的概述3(一)中国古典舞中“圆”的认知3(二)中国古典舞中“圆”的表现形式31.静态造型中的“圆”32.动作呈现时的“圆”43.舞蹈动......
  • 从零用VitePress搭建博客教程(6) -– 第三方组件库的使用和VitePress搭建组件库文档
    接上一节:从零用VitePress搭建博客教程(5)-如何自定义页面模板、给页面添加独有的className和使页面标题变成侧边目录?九、第三方组件库的使用我们经常看见UI组件库的文档,这里我们就用element-plus第三方组件库为例子,搭建组件库文档examples:作为组件库示例目录,我们以Button组件......
  • golang validator 检验工具的使用指北
    golangvalidator包的使用指北原创阿兵云原生阿兵云原生2023-09-1009:27发表于广东看到validator咱们第一反应会想起啥?见名知意我就可以知道他是一个验证器,如果用过ginweb框架的同学,自然是用过gin里面的validator,只不过gin中使用的关键字是binding去做标识 ......
  • 内核文档翻译(chatgpt) —— Pathname lookup (路径名查找)
    原文:https://www.kernel.org/doc/html/latest/filesystems/path-lookup.html内核中文件系统相关的文档汇总:FilesystemsintheLinuxkernelThiswrite-upisbasedonthreearticlespublishedatlwn.net:PathnamelookupinLinuxRCU-walk:fasterpathnamelookupinLi......
  • 无法读取方案文档原因为 1) 无法找到文档; 2) 无法读取文档; 3) 文档的根元素不是 <xsd:s
    org.springframework.util.xml.SimpleSaxErrorHandler.warningIgnoredXMLvalidationwarningorg.xml.sax.SAXParseException;lineNumber:9;columnNumber:73;schema_reference.4:无法读取方案文档'http://www.springframework.org/schema/beans/spring-context.xsd......
  • 基于SpringBoot与Vue技术的高校毕设管理平台-计算机毕业设计源码+LW文档
    开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:Maven3.3.9浏览器:谷歌浏览器数据库部分表:DROPTABLEIFEXISTSbisheketi;/*!40101SET@saved_cs_client=@@characte......
  • 基于Springboot框架的优质衣产品系统-计算机毕业设计源码+LW文档
    开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:Maven3.3.9浏览器:谷歌浏览器前台用户模块涵盖了:用户登录、注册功能,包括消费者进行优质衣产品系统的登录可进行衣产品的选购等......