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