1.. include:: ../disclaimer-zh_CN.rst 2 3:Original: Documentation/core-api/kernel-api.rst 4 5:翻译: 6 7 司延腾 Yanteng Si <siyanteng@loongson.cn> 8 9.. _cn_kernel-api.rst: 10 11============ 12Linux内核API 13============ 14 15 16列表管理函数 17============ 18 19该API在以下内核代码中: 20 21include/linux/list.h 22 23基本的C库函数 24============= 25 26在编写驱动程序时,一般不能使用C库中的例程。部分函数通常很有用,它们在 27下面被列出。这些函数的行为可能会与ANSI定义的略有不同,这些偏差会在文中 28注明。 29 30字符串转换 31---------- 32 33该API在以下内核代码中: 34 35lib/vsprintf.c 36 37include/linux/kernel.h 38 39include/linux/kernel.h 40 41lib/kstrtox.c 42 43lib/string_helpers.c 44 45字符串处理 46---------- 47 48该API在以下内核代码中: 49 50lib/string.c 51 52include/linux/string.h 53 54mm/util.c 55 56基本的内核库函数 57================ 58 59Linux内核提供了很多实用的基本函数。 60 61位运算 62------ 63 64该API在以下内核代码中: 65 66include/asm-generic/bitops/instrumented-atomic.h 67 68include/asm-generic/bitops/instrumented-non-atomic.h 69 70include/asm-generic/bitops/instrumented-lock.h 71 72位图运算 73-------- 74 75该API在以下内核代码中: 76 77lib/bitmap.c 78 79include/linux/bitmap.h 80 81include/linux/bitmap.h 82 83include/linux/bitmap.h 84 85lib/bitmap.c 86 87lib/bitmap.c 88 89include/linux/bitmap.h 90 91命令行解析 92---------- 93 94该API在以下内核代码中: 95 96lib/cmdline.c 97 98排序 99---- 100 101该API在以下内核代码中: 102 103lib/sort.c 104 105lib/list_sort.c 106 107文本检索 108-------- 109 110该API在以下内核代码中: 111 112lib/textsearch.c 113 114lib/textsearch.c 115 116include/linux/textsearch.h 117 118Linux中的CRC和数学函数 119====================== 120 121 122CRC函数 123------- 124 125*译注:CRC,Cyclic Redundancy Check,循环冗余校验* 126 127该API在以下内核代码中: 128 129lib/crc4.c 130 131lib/crc7.c 132 133lib/crc8.c 134 135lib/crc16.c 136 137lib/crc32.c 138 139lib/crc-ccitt.c 140 141lib/crc-itu-t.c 142 143基数为2的对数和幂函数 144--------------------- 145 146该API在以下内核代码中: 147 148include/linux/log2.h 149 150整数幂函数 151---------- 152 153该API在以下内核代码中: 154 155lib/math/int_pow.c 156 157lib/math/int_sqrt.c 158 159除法函数 160-------- 161 162该API在以下内核代码中: 163 164include/asm-generic/div64.h 165 166include/linux/math64.h 167 168lib/math/div64.c 169 170lib/math/gcd.c 171 172UUID/GUID 173--------- 174 175该API在以下内核代码中: 176 177lib/uuid.c 178 179内核IPC设备 180=========== 181 182IPC实用程序 183----------- 184 185该API在以下内核代码中: 186 187ipc/util.c 188 189FIFO 缓冲区 190=========== 191 192kfifo接口 193--------- 194 195该API在以下内核代码中: 196 197include/linux/kfifo.h 198 199转发接口支持 200============ 201 202转发接口支持旨在为工具和设备提供一种有效的机制,将大量数据从内核空间 203转发到用户空间。 204 205转发接口 206-------- 207 208该API在以下内核代码中: 209 210kernel/relay.c 211 212kernel/relay.c 213 214模块支持 215======== 216 217模块加载 218-------- 219 220该API在以下内核代码中: 221 222kernel/kmod.c 223 224模块接口支持 225------------ 226 227更多信息请参考文件kernel/module.c。 228 229硬件接口 230======== 231 232 233该API在以下内核代码中: 234 235kernel/dma.c 236 237资源管理 238-------- 239 240该API在以下内核代码中: 241 242kernel/resource.c 243 244kernel/resource.c 245 246MTRR处理 247-------- 248 249该API在以下内核代码中: 250 251arch/x86/kernel/cpu/mtrr/mtrr.c 252 253安全框架 254======== 255 256该API在以下内核代码中: 257 258security/security.c 259 260security/inode.c 261 262审计接口 263======== 264 265该API在以下内核代码中: 266 267kernel/audit.c 268 269kernel/auditsc.c 270 271kernel/auditfilter.c 272 273核算框架 274======== 275 276该API在以下内核代码中: 277 278kernel/acct.c 279 280块设备 281====== 282 283该API在以下内核代码中: 284 285block/blk-core.c 286 287block/blk-core.c 288 289block/blk-map.c 290 291block/blk-sysfs.c 292 293block/blk-settings.c 294 295block/blk-exec.c 296 297block/blk-flush.c 298 299block/blk-lib.c 300 301block/blk-integrity.c 302 303kernel/trace/blktrace.c 304 305block/genhd.c 306 307block/genhd.c 308 309字符设备 310======== 311 312该API在以下内核代码中: 313 314fs/char_dev.c 315 316时钟框架 317======== 318 319时钟框架定义了编程接口,以支持系统时钟树的软件管理。该框架广泛用于系统级芯片(SOC)平 320台,以支持电源管理和各种可能需要自定义时钟速率的设备。请注意,这些 “时钟”与计时或实 321时时钟(RTC)无关,它们都有单独的框架。这些:c:type: `struct clk <clk>` 实例可用于管理 322各种时钟信号,例如一个96理例如96MHz的时钟信号,该信号可被用于总线或外设的数据交换,或以 323其他方式触发系统硬件中的同步状态机转换。 324 325通过明确的软件时钟门控来支持电源管理:未使用的时钟被禁用,因此系统不会因为改变不在使用 326中的晶体管的状态而浪费电源。在某些系统中,这可能是由硬件时钟门控支持的,其中时钟被门控 327而不在软件中被禁用。芯片的部分,在供电但没有时钟的情况下,可能会保留其最后的状态。这种 328低功耗状态通常被称为*保留模式*。这种模式仍然会产生漏电流,特别是在电路几何结构较细的情 329况下,但对于CMOS电路来说,电能主要是随着时钟翻转而被消耗的。 330 331电源感知驱动程序只有在其管理的设备处于活动使用状态时才会启用时钟。此外,系统睡眠状态通 332常根据哪些时钟域处于活动状态而有所不同:“待机”状态可能允许从多个活动域中唤醒,而 333"mem"(暂停到RAM)状态可能需要更全面地关闭来自高速PLL和振荡器的时钟,从而限制了可能 334的唤醒事件源的数量。驱动器的暂停方法可能需要注意目标睡眠状态的系统特定时钟约束。 335 336一些平台支持可编程时钟发生器。这些可以被各种外部芯片使用,如其他CPU、多媒体编解码器以 337及对接口时钟有严格要求的设备。 338 339该API在以下内核代码中: 340 341include/linux/clk.h 342 343同步原语 344======== 345 346读-复制-更新(RCU) 347------------------- 348 349该API在以下内核代码中: 350 351include/linux/rcupdate.h 352 353kernel/rcu/tree.c 354 355kernel/rcu/tree_exp.h 356 357kernel/rcu/update.c 358 359include/linux/srcu.h 360 361kernel/rcu/srcutree.c 362 363include/linux/rculist_bl.h 364 365include/linux/rculist.h 366 367include/linux/rculist_nulls.h 368 369include/linux/rcu_sync.h 370 371kernel/rcu/sync.c 372