0001 .. include:: ../disclaimer-zh_CN.rst
0002
0003 :Original: Documentation/core-api/kernel-api.rst
0004
0005 :翻译:
0006
0007 司延腾 Yanteng Si <siyanteng@loongson.cn>
0008 周彬彬 Binbin Zhou <zhoubinbin@loongson.cn>
0009
0010 .. _cn_kernel-api.rst:
0011
0012 ============
0013 Linux内核API
0014 ============
0015
0016
0017 列表管理函数
0018 ============
0019
0020 该API在以下内核代码中:
0021
0022 include/linux/list.h
0023
0024 基本的C库函数
0025 =============
0026
0027 在编写驱动程序时,一般不能使用C库中的例程。部分函数通常很有用,它们在
0028 下面被列出。这些函数的行为可能会与ANSI定义的略有不同,这些偏差会在文中
0029 注明。
0030
0031 字符串转换
0032 ----------
0033
0034 该API在以下内核代码中:
0035
0036 lib/vsprintf.c
0037
0038 include/linux/kernel.h
0039
0040 include/linux/kernel.h
0041
0042 lib/kstrtox.c
0043
0044 lib/string_helpers.c
0045
0046 字符串处理
0047 ----------
0048
0049 该API在以下内核代码中:
0050
0051 lib/string.c
0052
0053 include/linux/string.h
0054
0055 mm/util.c
0056
0057 基本的内核库函数
0058 ================
0059
0060 Linux内核提供了很多实用的基本函数。
0061
0062 位运算
0063 ------
0064
0065 该API在以下内核代码中:
0066
0067 include/asm-generic/bitops/instrumented-atomic.h
0068
0069 include/asm-generic/bitops/instrumented-non-atomic.h
0070
0071 include/asm-generic/bitops/instrumented-lock.h
0072
0073 位图运算
0074 --------
0075
0076 该API在以下内核代码中:
0077
0078 lib/bitmap.c
0079
0080 include/linux/bitmap.h
0081
0082 include/linux/bitmap.h
0083
0084 include/linux/bitmap.h
0085
0086 lib/bitmap.c
0087
0088 lib/bitmap.c
0089
0090 include/linux/bitmap.h
0091
0092 命令行解析
0093 ----------
0094
0095 该API在以下内核代码中:
0096
0097 lib/cmdline.c
0098
0099 排序
0100 ----
0101
0102 该API在以下内核代码中:
0103
0104 lib/sort.c
0105
0106 lib/list_sort.c
0107
0108 文本检索
0109 --------
0110
0111 该API在以下内核代码中:
0112
0113 lib/textsearch.c
0114
0115 lib/textsearch.c
0116
0117 include/linux/textsearch.h
0118
0119 Linux中的CRC和数学函数
0120 ======================
0121
0122
0123 CRC函数
0124 -------
0125
0126 *译注:CRC,Cyclic Redundancy Check,循环冗余校验*
0127
0128 该API在以下内核代码中:
0129
0130 lib/crc4.c
0131
0132 lib/crc7.c
0133
0134 lib/crc8.c
0135
0136 lib/crc16.c
0137
0138 lib/crc32.c
0139
0140 lib/crc-ccitt.c
0141
0142 lib/crc-itu-t.c
0143
0144 基数为2的对数和幂函数
0145 ---------------------
0146
0147 该API在以下内核代码中:
0148
0149 include/linux/log2.h
0150
0151 整数幂函数
0152 ----------
0153
0154 该API在以下内核代码中:
0155
0156 lib/math/int_pow.c
0157
0158 lib/math/int_sqrt.c
0159
0160 除法函数
0161 --------
0162
0163 该API在以下内核代码中:
0164
0165 include/asm-generic/div64.h
0166
0167 include/linux/math64.h
0168
0169 lib/math/div64.c
0170
0171 lib/math/gcd.c
0172
0173 UUID/GUID
0174 ---------
0175
0176 该API在以下内核代码中:
0177
0178 lib/uuid.c
0179
0180 内核IPC设备
0181 ===========
0182
0183 IPC实用程序
0184 -----------
0185
0186 该API在以下内核代码中:
0187
0188 ipc/util.c
0189
0190 FIFO 缓冲区
0191 ===========
0192
0193 kfifo接口
0194 ---------
0195
0196 该API在以下内核代码中:
0197
0198 include/linux/kfifo.h
0199
0200 转发接口支持
0201 ============
0202
0203 转发接口支持旨在为工具和设备提供一种有效的机制,将大量数据从内核空间
0204 转发到用户空间。
0205
0206 转发接口
0207 --------
0208
0209 该API在以下内核代码中:
0210
0211 kernel/relay.c
0212
0213 kernel/relay.c
0214
0215 模块支持
0216 ========
0217
0218 模块加载
0219 --------
0220
0221 该API在以下内核代码中:
0222
0223 kernel/kmod.c
0224
0225 模块接口支持
0226 ------------
0227
0228 更多信息请参阅kernel/module/目录下的文件。
0229
0230 硬件接口
0231 ========
0232
0233
0234 该API在以下内核代码中:
0235
0236 kernel/dma.c
0237
0238 资源管理
0239 --------
0240
0241 该API在以下内核代码中:
0242
0243 kernel/resource.c
0244
0245 kernel/resource.c
0246
0247 MTRR处理
0248 --------
0249
0250 该API在以下内核代码中:
0251
0252 arch/x86/kernel/cpu/mtrr/mtrr.c
0253
0254 安全框架
0255 ========
0256
0257 该API在以下内核代码中:
0258
0259 security/security.c
0260
0261 security/inode.c
0262
0263 审计接口
0264 ========
0265
0266 该API在以下内核代码中:
0267
0268 kernel/audit.c
0269
0270 kernel/auditsc.c
0271
0272 kernel/auditfilter.c
0273
0274 核算框架
0275 ========
0276
0277 该API在以下内核代码中:
0278
0279 kernel/acct.c
0280
0281 块设备
0282 ======
0283
0284 该API在以下内核代码中:
0285
0286 include/linux/bio.h
0287
0288 block/blk-core.c
0289
0290 block/blk-core.c
0291
0292 block/blk-map.c
0293
0294 block/blk-sysfs.c
0295
0296 block/blk-settings.c
0297
0298 block/blk-flush.c
0299
0300 block/blk-lib.c
0301
0302 block/blk-integrity.c
0303
0304 kernel/trace/blktrace.c
0305
0306 block/genhd.c
0307
0308 block/genhd.c
0309
0310 字符设备
0311 ========
0312
0313 该API在以下内核代码中:
0314
0315 fs/char_dev.c
0316
0317 时钟框架
0318 ========
0319
0320 时钟框架定义了编程接口,以支持系统时钟树的软件管理。该框架广泛用于系统级芯片(SOC)平
0321 台,以支持电源管理和各种可能需要自定义时钟速率的设备。请注意,这些 “时钟”与计时或实
0322 时时钟(RTC)无关,它们都有单独的框架。这些:c:type: `struct clk <clk>` 实例可用于管理
0323 各种时钟信号,例如一个96理例如96MHz的时钟信号,该信号可被用于总线或外设的数据交换,或以
0324 其他方式触发系统硬件中的同步状态机转换。
0325
0326 通过明确的软件时钟门控来支持电源管理:未使用的时钟被禁用,因此系统不会因为改变不在使用
0327 中的晶体管的状态而浪费电源。在某些系统中,这可能是由硬件时钟门控支持的,其中时钟被门控
0328 而不在软件中被禁用。芯片的部分,在供电但没有时钟的情况下,可能会保留其最后的状态。这种
0329 低功耗状态通常被称为*保留模式*。这种模式仍然会产生漏电流,特别是在电路几何结构较细的情
0330 况下,但对于CMOS电路来说,电能主要是随着时钟翻转而被消耗的。
0331
0332 电源感知驱动程序只有在其管理的设备处于活动使用状态时才会启用时钟。此外,系统睡眠状态通
0333 常根据哪些时钟域处于活动状态而有所不同:“待机”状态可能允许从多个活动域中唤醒,而
0334 "mem"(暂停到RAM)状态可能需要更全面地关闭来自高速PLL和振荡器的时钟,从而限制了可能
0335 的唤醒事件源的数量。驱动器的暂停方法可能需要注意目标睡眠状态的系统特定时钟约束。
0336
0337 一些平台支持可编程时钟发生器。这些可以被各种外部芯片使用,如其他CPU、多媒体编解码器以
0338 及对接口时钟有严格要求的设备。
0339
0340 该API在以下内核代码中:
0341
0342 include/linux/clk.h
0343
0344 同步原语
0345 ========
0346
0347 读-复制-更新(RCU)
0348 -------------------
0349
0350 该API在以下内核代码中:
0351
0352 include/linux/rcupdate.h
0353
0354 kernel/rcu/tree.c
0355
0356 kernel/rcu/tree_exp.h
0357
0358 kernel/rcu/update.c
0359
0360 include/linux/srcu.h
0361
0362 kernel/rcu/srcutree.c
0363
0364 include/linux/rculist_bl.h
0365
0366 include/linux/rculist.h
0367
0368 include/linux/rculist_nulls.h
0369
0370 include/linux/rcu_sync.h
0371
0372 kernel/rcu/sync.c