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