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