Back to home page

OSCL-LXR

 
 

    


0001 ====================
0002 The Linux Kernel API
0003 ====================
0004 
0005 
0006 List Management Functions
0007 =========================
0008 
0009 .. kernel-doc:: include/linux/list.h
0010    :internal:
0011 
0012 Basic C Library Functions
0013 =========================
0014 
0015 When writing drivers, you cannot in general use routines which are from
0016 the C Library. Some of the functions have been found generally useful
0017 and they are listed below. The behaviour of these functions may vary
0018 slightly from those defined by ANSI, and these deviations are noted in
0019 the text.
0020 
0021 String Conversions
0022 ------------------
0023 
0024 .. kernel-doc:: lib/vsprintf.c
0025    :export:
0026 
0027 .. kernel-doc:: include/linux/kstrtox.h
0028    :functions: kstrtol kstrtoul
0029 
0030 .. kernel-doc:: lib/kstrtox.c
0031    :export:
0032 
0033 .. kernel-doc:: lib/string_helpers.c
0034    :export:
0035 
0036 String Manipulation
0037 -------------------
0038 
0039 .. kernel-doc:: lib/string.c
0040    :export:
0041 
0042 .. kernel-doc:: include/linux/string.h
0043    :internal:
0044 
0045 .. kernel-doc:: mm/util.c
0046    :functions: kstrdup kstrdup_const kstrndup kmemdup kmemdup_nul memdup_user
0047                vmemdup_user strndup_user memdup_user_nul
0048 
0049 Basic Kernel Library Functions
0050 ==============================
0051 
0052 The Linux kernel provides more basic utility functions.
0053 
0054 Bit Operations
0055 --------------
0056 
0057 .. kernel-doc:: include/asm-generic/bitops/instrumented-atomic.h
0058    :internal:
0059 
0060 .. kernel-doc:: include/asm-generic/bitops/instrumented-non-atomic.h
0061    :internal:
0062 
0063 .. kernel-doc:: include/asm-generic/bitops/instrumented-lock.h
0064    :internal:
0065 
0066 Bitmap Operations
0067 -----------------
0068 
0069 .. kernel-doc:: lib/bitmap.c
0070    :doc: bitmap introduction
0071 
0072 .. kernel-doc:: include/linux/bitmap.h
0073    :doc: declare bitmap
0074 
0075 .. kernel-doc:: include/linux/bitmap.h
0076    :doc: bitmap overview
0077 
0078 .. kernel-doc:: include/linux/bitmap.h
0079    :doc: bitmap bitops
0080 
0081 .. kernel-doc:: lib/bitmap.c
0082    :export:
0083 
0084 .. kernel-doc:: lib/bitmap.c
0085    :internal:
0086 
0087 .. kernel-doc:: include/linux/bitmap.h
0088    :internal:
0089 
0090 Command-line Parsing
0091 --------------------
0092 
0093 .. kernel-doc:: lib/cmdline.c
0094    :export:
0095 
0096 Sorting
0097 -------
0098 
0099 .. kernel-doc:: lib/sort.c
0100    :export:
0101 
0102 .. kernel-doc:: lib/list_sort.c
0103    :export:
0104 
0105 Text Searching
0106 --------------
0107 
0108 .. kernel-doc:: lib/textsearch.c
0109    :doc: ts_intro
0110 
0111 .. kernel-doc:: lib/textsearch.c
0112    :export:
0113 
0114 .. kernel-doc:: include/linux/textsearch.h
0115    :functions: textsearch_find textsearch_next \
0116                textsearch_get_pattern textsearch_get_pattern_len
0117 
0118 CRC and Math Functions in Linux
0119 ===============================
0120 
0121 CRC Functions
0122 -------------
0123 
0124 .. kernel-doc:: lib/crc4.c
0125    :export:
0126 
0127 .. kernel-doc:: lib/crc7.c
0128    :export:
0129 
0130 .. kernel-doc:: lib/crc8.c
0131    :export:
0132 
0133 .. kernel-doc:: lib/crc16.c
0134    :export:
0135 
0136 .. kernel-doc:: lib/crc32.c
0137 
0138 .. kernel-doc:: lib/crc-ccitt.c
0139    :export:
0140 
0141 .. kernel-doc:: lib/crc-itu-t.c
0142    :export:
0143 
0144 Base 2 log and power Functions
0145 ------------------------------
0146 
0147 .. kernel-doc:: include/linux/log2.h
0148    :internal:
0149 
0150 Integer power Functions
0151 -----------------------
0152 
0153 .. kernel-doc:: lib/math/int_pow.c
0154    :export:
0155 
0156 .. kernel-doc:: lib/math/int_sqrt.c
0157    :export:
0158 
0159 Division Functions
0160 ------------------
0161 
0162 .. kernel-doc:: include/asm-generic/div64.h
0163    :functions: do_div
0164 
0165 .. kernel-doc:: include/linux/math64.h
0166    :internal:
0167 
0168 .. kernel-doc:: lib/math/div64.c
0169    :functions: div_s64_rem div64_u64_rem div64_u64 div64_s64
0170 
0171 .. kernel-doc:: lib/math/gcd.c
0172    :export:
0173 
0174 UUID/GUID
0175 ---------
0176 
0177 .. kernel-doc:: lib/uuid.c
0178    :export:
0179 
0180 Kernel IPC facilities
0181 =====================
0182 
0183 IPC utilities
0184 -------------
0185 
0186 .. kernel-doc:: ipc/util.c
0187    :internal:
0188 
0189 FIFO Buffer
0190 ===========
0191 
0192 kfifo interface
0193 ---------------
0194 
0195 .. kernel-doc:: include/linux/kfifo.h
0196    :internal:
0197 
0198 relay interface support
0199 =======================
0200 
0201 Relay interface support is designed to provide an efficient mechanism
0202 for tools and facilities to relay large amounts of data from kernel
0203 space to user space.
0204 
0205 relay interface
0206 ---------------
0207 
0208 .. kernel-doc:: kernel/relay.c
0209    :export:
0210 
0211 .. kernel-doc:: kernel/relay.c
0212    :internal:
0213 
0214 Module Support
0215 ==============
0216 
0217 Module Loading
0218 --------------
0219 
0220 .. kernel-doc:: kernel/kmod.c
0221    :export:
0222 
0223 Inter Module support
0224 --------------------
0225 
0226 Refer to the files in kernel/module/ for more information.
0227 
0228 Hardware Interfaces
0229 ===================
0230 
0231 DMA Channels
0232 ------------
0233 
0234 .. kernel-doc:: kernel/dma.c
0235    :export:
0236 
0237 Resources Management
0238 --------------------
0239 
0240 .. kernel-doc:: kernel/resource.c
0241    :internal:
0242 
0243 .. kernel-doc:: kernel/resource.c
0244    :export:
0245 
0246 MTRR Handling
0247 -------------
0248 
0249 .. kernel-doc:: arch/x86/kernel/cpu/mtrr/mtrr.c
0250    :export:
0251 
0252 Security Framework
0253 ==================
0254 
0255 .. kernel-doc:: security/security.c
0256    :internal:
0257 
0258 .. kernel-doc:: security/inode.c
0259    :export:
0260 
0261 Audit Interfaces
0262 ================
0263 
0264 .. kernel-doc:: kernel/audit.c
0265    :export:
0266 
0267 .. kernel-doc:: kernel/auditsc.c
0268    :internal:
0269 
0270 .. kernel-doc:: kernel/auditfilter.c
0271    :internal:
0272 
0273 Accounting Framework
0274 ====================
0275 
0276 .. kernel-doc:: kernel/acct.c
0277    :internal:
0278 
0279 Block Devices
0280 =============
0281 
0282 .. kernel-doc:: include/linux/bio.h
0283 .. kernel-doc:: block/blk-core.c
0284    :export:
0285 
0286 .. kernel-doc:: block/blk-core.c
0287    :internal:
0288 
0289 .. kernel-doc:: block/blk-map.c
0290    :export:
0291 
0292 .. kernel-doc:: block/blk-sysfs.c
0293    :internal:
0294 
0295 .. kernel-doc:: block/blk-settings.c
0296    :export:
0297 
0298 .. kernel-doc:: block/blk-flush.c
0299    :export:
0300 
0301 .. kernel-doc:: block/blk-lib.c
0302    :export:
0303 
0304 .. kernel-doc:: block/blk-integrity.c
0305    :export:
0306 
0307 .. kernel-doc:: kernel/trace/blktrace.c
0308    :internal:
0309 
0310 .. kernel-doc:: block/genhd.c
0311    :internal:
0312 
0313 .. kernel-doc:: block/genhd.c
0314    :export:
0315 
0316 .. kernel-doc:: block/bdev.c
0317    :export:
0318 
0319 Char devices
0320 ============
0321 
0322 .. kernel-doc:: fs/char_dev.c
0323    :export:
0324 
0325 Clock Framework
0326 ===============
0327 
0328 The clock framework defines programming interfaces to support software
0329 management of the system clock tree. This framework is widely used with
0330 System-On-Chip (SOC) platforms to support power management and various
0331 devices which may need custom clock rates. Note that these "clocks"
0332 don't relate to timekeeping or real time clocks (RTCs), each of which
0333 have separate frameworks. These :c:type:`struct clk <clk>`
0334 instances may be used to manage for example a 96 MHz signal that is used
0335 to shift bits into and out of peripherals or busses, or otherwise
0336 trigger synchronous state machine transitions in system hardware.
0337 
0338 Power management is supported by explicit software clock gating: unused
0339 clocks are disabled, so the system doesn't waste power changing the
0340 state of transistors that aren't in active use. On some systems this may
0341 be backed by hardware clock gating, where clocks are gated without being
0342 disabled in software. Sections of chips that are powered but not clocked
0343 may be able to retain their last state. This low power state is often
0344 called a *retention mode*. This mode still incurs leakage currents,
0345 especially with finer circuit geometries, but for CMOS circuits power is
0346 mostly used by clocked state changes.
0347 
0348 Power-aware drivers only enable their clocks when the device they manage
0349 is in active use. Also, system sleep states often differ according to
0350 which clock domains are active: while a "standby" state may allow wakeup
0351 from several active domains, a "mem" (suspend-to-RAM) state may require
0352 a more wholesale shutdown of clocks derived from higher speed PLLs and
0353 oscillators, limiting the number of possible wakeup event sources. A
0354 driver's suspend method may need to be aware of system-specific clock
0355 constraints on the target sleep state.
0356 
0357 Some platforms support programmable clock generators. These can be used
0358 by external chips of various kinds, such as other CPUs, multimedia
0359 codecs, and devices with strict requirements for interface clocking.
0360 
0361 .. kernel-doc:: include/linux/clk.h
0362    :internal:
0363 
0364 Synchronization Primitives
0365 ==========================
0366 
0367 Read-Copy Update (RCU)
0368 ----------------------
0369 
0370 .. kernel-doc:: include/linux/rcupdate.h
0371 
0372 .. kernel-doc:: kernel/rcu/tree.c
0373 
0374 .. kernel-doc:: kernel/rcu/tree_exp.h
0375 
0376 .. kernel-doc:: kernel/rcu/update.c
0377 
0378 .. kernel-doc:: include/linux/srcu.h
0379 
0380 .. kernel-doc:: kernel/rcu/srcutree.c
0381 
0382 .. kernel-doc:: include/linux/rculist_bl.h
0383 
0384 .. kernel-doc:: include/linux/rculist.h
0385 
0386 .. kernel-doc:: include/linux/rculist_nulls.h
0387 
0388 .. kernel-doc:: include/linux/rcu_sync.h
0389 
0390 .. kernel-doc:: kernel/rcu/sync.c