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