Blame view

Documentation/DocBook/kernel-api.tmpl 8.91 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
  <?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
  	"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []>
  
  <book id="LinuxKernelAPI">
   <bookinfo>
    <title>The Linux Kernel API</title>
    
    <legalnotice>
     <para>
       This documentation is free software; you can redistribute
       it and/or modify it under the terms of the GNU General Public
       License as published by the Free Software Foundation; either
       version 2 of the License, or (at your option) any later
       version.
     </para>
        
     <para>
       This program is distributed in the hope that it will be
       useful, but WITHOUT ANY WARRANTY; without even the implied
       warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
       See the GNU General Public License for more details.
     </para>
        
     <para>
       You should have received a copy of the GNU General Public
       License along with this program; if not, write to the Free
       Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
       MA 02111-1307 USA
     </para>
        
     <para>
       For more details see the file COPYING in the source
       distribution of Linux.
     </para>
    </legalnotice>
   </bookinfo>
  
  <toc></toc>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
    <chapter id="adt">
       <title>Data Types</title>
       <sect1><title>Doubly Linked Lists</title>
  !Iinclude/linux/list.h
       </sect1>
    </chapter>
  
    <chapter id="libc">
       <title>Basic C Library Functions</title>
  
       <para>
         When writing drivers, you cannot in general use routines which are
         from the C Library.  Some of the functions have been found generally
         useful and they are listed below.  The behaviour of these functions
         may vary slightly from those defined by ANSI, and these deviations
         are noted in the text.
       </para>
  
       <sect1><title>String Conversions</title>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
59
60
61
  !Elib/vsprintf.c
       </sect1>
       <sect1><title>String Manipulation</title>
4dc3b16ba   Pavel Pisa   [PATCH] DocBook: ...
62
63
64
  <!-- All functions are exported at now
  X!Ilib/string.c
   -->
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
65
66
67
  !Elib/string.c
       </sect1>
       <sect1><title>Bit Operations</title>
a1a739c56   Randy Dunlap   docbooks: fix fat...
68
  !Iarch/x86/include/asm/bitops.h
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
69
       </sect1>
28e83baac   Randy Dunlap   [PATCH] kernel-do...
70
71
72
73
74
75
76
77
    </chapter>
  
    <chapter id="kernel-lib">
       <title>Basic Kernel Library Functions</title>
  
       <para>
         The Linux kernel provides more basic utility functions.
       </para>
6e1907ffd   Randy Dunlap   [PATCH] kernel-do...
78
79
80
81
       <sect1><title>Bitmap Operations</title>
  !Elib/bitmap.c
  !Ilib/bitmap.c
       </sect1>
28e83baac   Randy Dunlap   [PATCH] kernel-do...
82
83
84
85
  
       <sect1><title>Command-line Parsing</title>
  !Elib/cmdline.c
       </sect1>
2f72100c0   Randy Dunlap   [PATCH] kernel-do...
86

ad241528c   Jan Nikitenko   CRC7 support
87
88
       <sect1 id="crc"><title>CRC Functions</title>
  !Elib/crc7.c
2f72100c0   Randy Dunlap   [PATCH] kernel-do...
89
  !Elib/crc16.c
ad241528c   Jan Nikitenko   CRC7 support
90
  !Elib/crc-itu-t.c
2f72100c0   Randy Dunlap   [PATCH] kernel-do...
91
92
93
  !Elib/crc32.c
  !Elib/crc-ccitt.c
       </sect1>
56083ab17   Randy Dunlap   docbook: add idr/...
94
95
96
97
98
99
  
       <sect1 id="idr"><title>idr/ida Functions</title>
  !Pinclude/linux/idr.h idr sync
  !Plib/idr.c IDA description
  !Elib/idr.c
       </sect1>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
100
101
102
103
104
    </chapter>
  
    <chapter id="mm">
       <title>Memory Management in Linux</title>
       <sect1><title>The Slab Cache</title>
800590f52   Paul Drynoff   [PATCH] slab: kma...
105
  !Iinclude/linux/slab.h
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
106
107
108
  !Emm/slab.c
       </sect1>
       <sect1><title>User Space Memory Access</title>
a1a739c56   Randy Dunlap   docbooks: fix fat...
109
  !Iarch/x86/include/asm/uaccess_32.h
f3cf31ad1   Randy Dunlap   docbook/kernel-ap...
110
  !Earch/x86/lib/usercopy_32.c
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
111
       </sect1>
4dc3b16ba   Pavel Pisa   [PATCH] DocBook: ...
112
       <sect1><title>More Memory Management Functions</title>
4dc3b16ba   Pavel Pisa   [PATCH] DocBook: ...
113
114
115
116
  !Emm/readahead.c
  !Emm/filemap.c
  !Emm/memory.c
  !Emm/vmalloc.c
88ca3b94e   Randy Dunlap   [PATCH] page_allo...
117
  !Imm/page_alloc.c
4dc3b16ba   Pavel Pisa   [PATCH] DocBook: ...
118
  !Emm/mempool.c
a80a438bd   Randy Dunlap   docbook: dmapool:...
119
  !Emm/dmapool.c
4dc3b16ba   Pavel Pisa   [PATCH] DocBook: ...
120
121
122
123
124
125
126
127
128
129
130
131
  !Emm/page-writeback.c
  !Emm/truncate.c
       </sect1>
    </chapter>
  
  
    <chapter id="ipc">
       <title>Kernel IPC facilities</title>
  
       <sect1><title>IPC utilities</title>
  !Iipc/util.c
       </sect1>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
132
133
134
135
136
137
    </chapter>
  
    <chapter id="kfifo">
       <title>FIFO Buffer</title>
       <sect1><title>kfifo interface</title>
  !Iinclude/linux/kfifo.h
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
138
139
       </sect1>
    </chapter>
4c78a6639   Randy Dunlap   [PATCH] kernel-do...
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
    <chapter id="relayfs">
       <title>relay interface support</title>
  
       <para>
  	Relay interface support
  	is designed to provide an efficient mechanism for tools and
  	facilities to relay large amounts of data from kernel space to
  	user space.
       </para>
  
       <sect1><title>relay interface</title>
  !Ekernel/relay.c
  !Ikernel/relay.c
       </sect1>
    </chapter>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
    <chapter id="modload">
       <title>Module Support</title>
       <sect1><title>Module Loading</title>
  !Ekernel/kmod.c
       </sect1>
       <sect1><title>Inter Module support</title>
          <para>
             Refer to the file kernel/module.c for more information.
          </para>
  <!-- FIXME: Removed for now since no structured comments in source
  X!Ekernel/module.c
  -->
       </sect1>
    </chapter>
  
    <chapter id="hardware">
       <title>Hardware Interfaces</title>
       <sect1><title>Interrupt Handling</title>
8f2709b54   Randy Dunlap   [PATCH] kernel-do...
173
  !Ekernel/irq/manage.c
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
174
       </sect1>
eed34d0fc   Randy Dunlap   [PATCH] kernel-do...
175
176
177
       <sect1><title>DMA Channels</title>
  !Ekernel/dma.c
       </sect1>
4dc3b16ba   Pavel Pisa   [PATCH] DocBook: ...
178
       <sect1><title>Resources Management</title>
2b54960bd   Randy Dunlap   [PATCH] fix kerne...
179
  !Ikernel/resource.c
e1ca66d1b   Randy Dunlap   [PATCH] kernel-do...
180
  !Ekernel/resource.c
4dc3b16ba   Pavel Pisa   [PATCH] DocBook: ...
181
       </sect1>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
182
       <sect1><title>MTRR Handling</title>
f3cf31ad1   Randy Dunlap   docbook/kernel-ap...
183
  !Earch/x86/kernel/cpu/mtrr/main.c
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
184
       </sect1>
b0ef371e3   Randy Dunlap   [PATCH] DMI: clea...
185

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
186
187
       <sect1><title>PCI Support Library</title>
  !Edrivers/pci/pci.c
4dc3b16ba   Pavel Pisa   [PATCH] DocBook: ...
188
189
  !Edrivers/pci/pci-driver.c
  !Edrivers/pci/remove.c
d75763d24   Randy Dunlap   [PATCH] pci/searc...
190
  !Edrivers/pci/search.c
4dc3b16ba   Pavel Pisa   [PATCH] DocBook: ...
191
192
  !Edrivers/pci/msi.c
  !Edrivers/pci/bus.c
cffb2fafb   Randy Dunlap   docbooks: add/fix...
193
194
195
  !Edrivers/pci/access.c
  !Edrivers/pci/irq.c
  !Edrivers/pci/htirq.c
f05aab8ef   Randy Dunlap   [PATCH] kernel-do...
196
197
198
  <!-- FIXME: Removed for now since no structured comments in source
  X!Edrivers/pci/hotplug.c
  -->
4dc3b16ba   Pavel Pisa   [PATCH] DocBook: ...
199
  !Edrivers/pci/probe.c
cffb2fafb   Randy Dunlap   docbooks: add/fix...
200
  !Edrivers/pci/slot.c
4dc3b16ba   Pavel Pisa   [PATCH] DocBook: ...
201
  !Edrivers/pci/rom.c
15b49bee3   Yu Zhao   PCI: manual for S...
202
  !Edrivers/pci/iov.c
cffb2fafb   Randy Dunlap   docbooks: add/fix...
203
  !Idrivers/pci/pci-sysfs.c
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
204
205
206
207
208
209
210
       </sect1>
       <sect1><title>PCI Hotplug Support Library</title>
  !Edrivers/pci/hotplug/pci_hotplug_core.c
       </sect1>
       <sect1><title>MCA Architecture</title>
  	<sect2><title>MCA Device Functions</title>
             <para>
f3cf31ad1   Randy Dunlap   docbook/kernel-ap...
211
                Refer to the file arch/x86/kernel/mca_32.c for more information.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
212
213
             </para>
  <!-- FIXME: Removed for now since no structured comments in source
f3cf31ad1   Randy Dunlap   docbook/kernel-ap...
214
  X!Earch/x86/kernel/mca_32.c
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
215
216
217
  -->
  	</sect2>
  	<sect2><title>MCA Bus DMA</title>
a1a739c56   Randy Dunlap   docbooks: fix fat...
218
  !Iarch/x86/include/asm/mca_dma.h
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
219
220
221
  	</sect2>
       </sect1>
    </chapter>
b0ef371e3   Randy Dunlap   [PATCH] DMI: clea...
222
223
224
225
226
    <chapter id="firmware">
       <title>Firmware Interfaces</title>
       <sect1><title>DMI Interfaces</title>
  !Edrivers/firmware/dmi_scan.c
       </sect1>
6e8c81882   Randy Dunlap   [PATCH] docbook: ...
227
228
229
       <sect1><title>EDD Interfaces</title>
  !Idrivers/firmware/edd.c
       </sect1>
b0ef371e3   Randy Dunlap   [PATCH] DMI: clea...
230
    </chapter>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
231
232
    <chapter id="security">
       <title>Security Framework</title>
20510f2f4   James Morris   security: Convert...
233
  !Isecurity/security.c
3f23d815c   Randy Dunlap   security: add/fix...
234
  !Esecurity/inode.c
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
235
    </chapter>
862f5f013   Randy Dunlap   [PATCH] Doc: add ...
236
237
238
239
240
241
242
243
244
245
246
    <chapter id="audit">
       <title>Audit Interfaces</title>
  !Ekernel/audit.c
  !Ikernel/auditsc.c
  !Ikernel/auditfilter.c
    </chapter>
  
    <chapter id="accounting">
       <title>Accounting Framework</title>
  !Ikernel/acct.c
    </chapter>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
247
248
    <chapter id="blkdev">
       <title>Block Devices</title>
caf03feb6   Randy Dunlap   docbook: fix bloc...
249
  !Eblock/blk-core.c
5d87a052c   Randy Dunlap   block: fix kernel...
250
  !Iblock/blk-core.c
caf03feb6   Randy Dunlap   docbook: fix bloc...
251
252
253
254
  !Eblock/blk-map.c
  !Iblock/blk-sysfs.c
  !Eblock/blk-settings.c
  !Eblock/blk-exec.c
4d1529043   Mike Snitzer   Added blk-lib.c a...
255
256
  !Eblock/blk-flush.c
  !Eblock/blk-lib.c
caf03feb6   Randy Dunlap   docbook: fix bloc...
257
  !Eblock/blk-tag.c
5d87a052c   Randy Dunlap   block: fix kernel...
258
  !Iblock/blk-tag.c
710027a48   Randy Dunlap   Add some block/ s...
259
  !Eblock/blk-integrity.c
88cacbb21   Randy Dunlap   docbook: fix fata...
260
  !Ikernel/trace/blktrace.c
710027a48   Randy Dunlap   Add some block/ s...
261
262
  !Iblock/genhd.c
  !Eblock/genhd.c
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
263
    </chapter>
cf3e43dbe   Jonathan Corbet   [PATCH] cdev docu...
264
265
266
267
    <chapter id="chrdev">
  	<title>Char devices</title>
  !Efs/char_dev.c
    </chapter>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
268
269
270
271
    <chapter id="miscdev">
       <title>Miscellaneous Devices</title>
  !Edrivers/char/misc.c
    </chapter>
e275ac477   David Brownell   kerneldoc for <li...
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
    <chapter id="clk">
       <title>Clock Framework</title>
  
       <para>
  	The clock framework defines programming interfaces to support
  	software management of the system clock tree.
  	This framework is widely used with System-On-Chip (SOC) platforms
  	to support power management and various devices which may need
  	custom clock rates.
  	Note that these "clocks" don't relate to timekeeping or real
  	time clocks (RTCs), each of which have separate frameworks.
  	These <structname>struct clk</structname> instances may be used
  	to manage for example a 96 MHz signal that is used to shift bits
  	into and out of peripherals or busses, or otherwise trigger
  	synchronous state machine transitions in system hardware.
       </para>
  
       <para>
  	Power management is supported by explicit software clock gating:
  	unused clocks are disabled, so the system doesn't waste power
  	changing the state of transistors that aren't in active use.
  	On some systems this may be backed by hardware clock gating,
  	where clocks are gated without being disabled in software.
  	Sections of chips that are powered but not clocked may be able
  	to retain their last state.
  	This low power state is often called a <emphasis>retention
  	mode</emphasis>.
  	This mode still incurs leakage currents, especially with finer
  	circuit geometries, but for CMOS circuits power is mostly used
  	by clocked state changes.
       </para>
  
       <para>
  	Power-aware drivers only enable their clocks when the device
  	they manage is in active use.  Also, system sleep states often
  	differ according to which clock domains are active:  while a
  	"standby" state may allow wakeup from several active domains, a
  	"mem" (suspend-to-RAM) state may require a more wholesale shutdown
  	of clocks derived from higher speed PLLs and oscillators, limiting
  	the number of possible wakeup event sources.  A driver's suspend
  	method may need to be aware of system-specific clock constraints
  	on the target sleep state.
       </para>
  
       <para>
          Some platforms support programmable clock generators.  These
  	can be used by external chips of various kinds, such as other
  	CPUs, multimedia codecs, and devices with strict requirements
  	for interface clocking.
       </para>
  
  !Iinclude/linux/clk.h
    </chapter>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
325
  </book>