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 ============ 13 Linux内核API 14 ============ 15 16 17 列表管理函数 18 ============ 19 20 该API在以下内核代码中: 21 22 include/linux/list.h 23 24 基本的C库函数 25 ============= 26 27 在编写驱动程序时,一般不能使用C库中的例程。部分函数通常很有用,它们在 28 下面被列出。这些函数的行为可能会与ANSI定义的略有不同,这些偏差会在文中 29 注明。 30 31 字符串转换 32 ---------- 33 34 该API在以下内核代码中: 35 36 lib/vsprintf.c 37 38 include/linux/kernel.h 39 40 include/linux/kernel.h 41 42 lib/kstrtox.c 43 44 lib/string_helpers.c 45 46 字符串处理 47 ---------- 48 49 该API在以下内核代码中: 50 51 include/linux/fortify-string.h 52 53 lib/string.c 54 55 include/linux/string.h 56 57 mm/util.c 58 59 基本的内核库函数 60 ================ 61 62 Linux内核提供了很多实用的基本函数。 63 64 位运算 65 ------ 66 67 该API在以下内核代码中: 68 69 include/asm-generic/bitops/instrumented-atomic.h 70 71 include/asm-generic/bitops/instrumented-non-atomic.h 72 73 include/asm-generic/bitops/instrumented-lock.h 74 75 位图运算 76 -------- 77 78 该API在以下内核代码中: 79 80 lib/bitmap.c 81 82 include/linux/bitmap.h 83 84 include/linux/bitmap.h 85 86 include/linux/bitmap.h 87 88 lib/bitmap.c 89 90 lib/bitmap.c 91 92 include/linux/bitmap.h 93 94 命令行解析 95 ---------- 96 97 该API在以下内核代码中: 98 99 lib/cmdline.c 100 101 排序 102 ---- 103 104 该API在以下内核代码中: 105 106 lib/sort.c 107 108 lib/list_sort.c 109 110 文本检索 111 -------- 112 113 该API在以下内核代码中: 114 115 lib/textsearch.c 116 117 lib/textsearch.c 118 119 include/linux/textsearch.h 120 121 Linux中的CRC和数学函数 122 ====================== 123 124 算术溢出检查 125 ------------ 126 127 该API在以下内核代码中: 128 129 include/linux/overflow.h 130 131 CRC函数 132 ------- 133 134 *译注:CRC,Cyclic Redundancy Check,循环冗余校验* 135 136 该API在以下内核代码中: 137 138 lib/crc4.c 139 140 lib/crc7.c 141 142 lib/crc8.c 143 144 lib/crc16.c 145 146 lib/crc32.c 147 148 lib/crc-ccitt.c 149 150 lib/crc-itu-t.c 151 152 基数为2的对数和幂函数 153 --------------------- 154 155 该API在以下内核代码中: 156 157 include/linux/log2.h 158 159 整数幂函数 160 ---------- 161 162 该API在以下内核代码中: 163 164 lib/math/int_pow.c 165 166 lib/math/int_sqrt.c 167 168 除法函数 169 -------- 170 171 该API在以下内核代码中: 172 173 include/asm-generic/div64.h 174 175 include/linux/math64.h 176 177 lib/math/gcd.c 178 179 UUID/GUID 180 --------- 181 182 该API在以下内核代码中: 183 184 lib/uuid.c 185 186 内核IPC设备 187 =========== 188 189 IPC实用程序 190 ----------- 191 192 该API在以下内核代码中: 193 194 ipc/util.c 195 196 FIFO 缓冲区 197 =========== 198 199 kfifo接口 200 --------- 201 202 该API在以下内核代码中: 203 204 include/linux/kfifo.h 205 206 转发接口支持 207 ============ 208 209 转发接口支持旨在为工具和设备提供一种有效的机制,将大量数据从内核空间 210 转发到用户空间。 211 212 转发接口 213 -------- 214 215 该API在以下内核代码中: 216 217 kernel/relay.c 218 219 kernel/relay.c 220 221 模块支持 222 ======== 223 224 模块加载 225 -------- 226 227 该API在以下内核代码中: 228 229 kernel/module/kmod.c 230 231 模块接口支持 232 ------------ 233 234 更多信息请参阅kernel/module/目录下的文件。 235 236 硬件接口 237 ======== 238 239 240 该API在以下内核代码中: 241 242 kernel/dma.c 243 244 资源管理 245 -------- 246 247 该API在以下内核代码中: 248 249 kernel/resource.c 250 251 kernel/resource.c 252 253 MTRR处理 254 -------- 255 256 该API在以下内核代码中: 257 258 arch/x86/kernel/cpu/mtrr/mtrr.c 259 260 安全框架 261 ======== 262 263 该API在以下内核代码中: 264 265 security/security.c 266 267 security/inode.c 268 269 审计接口 270 ======== 271 272 该API在以下内核代码中: 273 274 kernel/audit.c 275 276 kernel/auditsc.c 277 278 kernel/auditfilter.c 279 280 核算框架 281 ======== 282 283 该API在以下内核代码中: 284 285 kernel/acct.c 286 287 块设备 288 ====== 289 290 该API在以下内核代码中: 291 292 include/linux/bio.h 293 294 block/blk-core.c 295 296 block/blk-core.c 297 298 block/blk-map.c 299 300 block/blk-sysfs.c 301 302 block/blk-settings.c 303 304 block/blk-flush.c 305 306 block/blk-lib.c 307 308 block/blk-integrity.c 309 310 kernel/trace/blktrace.c 311 312 block/genhd.c 313 314 block/genhd.c 315 316 字符设备 317 ======== 318 319 该API在以下内核代码中: 320 321 fs/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 348 include/linux/clk.h 349 350 同步原语 351 ======== 352 353 读-复制-更新(RCU) 354 ------------------- 355 356 该API在以下内核代码中: 357 358 include/linux/rcupdate.h 359 360 kernel/rcu/tree.c 361 362 kernel/rcu/tree_exp.h 363 364 kernel/rcu/update.c 365 366 include/linux/srcu.h 367 368 kernel/rcu/srcutree.c 369 370 include/linux/rculist_bl.h 371 372 include/linux/rculist.h 373 374 include/linux/rculist_nulls.h 375 376 include/linux/rcu_sync.h 377 378 kernel/rcu/sync.c
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.