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