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