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