linux/Documentation/core-api/kernel-api.rst
<<
>>
Prefs
   1====================
   2The Linux Kernel API
   3====================
   4
   5
   6List Management Functions
   7=========================
   8
   9.. kernel-doc:: include/linux/list.h
  10   :internal:
  11
  12Basic C Library Functions
  13=========================
  14
  15When writing drivers, you cannot in general use routines which are from
  16the C Library. Some of the functions have been found generally useful
  17and they are listed below. The behaviour of these functions may vary
  18slightly from those defined by ANSI, and these deviations are noted in
  19the text.
  20
  21String Conversions
  22------------------
  23
  24.. kernel-doc:: lib/vsprintf.c
  25   :export:
  26
  27.. kernel-doc:: include/linux/kstrtox.h
  28   :functions: kstrtol kstrtoul
  29
  30.. kernel-doc:: lib/kstrtox.c
  31   :export:
  32
  33.. kernel-doc:: lib/string_helpers.c
  34   :export:
  35
  36String Manipulation
  37-------------------
  38
  39.. kernel-doc:: lib/string.c
  40   :export:
  41
  42.. kernel-doc:: include/linux/string.h
  43   :internal:
  44
  45.. kernel-doc:: mm/util.c
  46   :functions: kstrdup kstrdup_const kstrndup kmemdup kmemdup_nul memdup_user
  47               vmemdup_user strndup_user memdup_user_nul
  48
  49Basic Kernel Library Functions
  50==============================
  51
  52The Linux kernel provides more basic utility functions.
  53
  54Bit Operations
  55--------------
  56
  57.. kernel-doc:: include/asm-generic/bitops/instrumented-atomic.h
  58   :internal:
  59
  60.. kernel-doc:: include/asm-generic/bitops/instrumented-non-atomic.h
  61   :internal:
  62
  63.. kernel-doc:: include/asm-generic/bitops/instrumented-lock.h
  64   :internal:
  65
  66Bitmap Operations
  67-----------------
  68
  69.. kernel-doc:: lib/bitmap.c
  70   :doc: bitmap introduction
  71
  72.. kernel-doc:: include/linux/bitmap.h
  73   :doc: declare bitmap
  74
  75.. kernel-doc:: include/linux/bitmap.h
  76   :doc: bitmap overview
  77
  78.. kernel-doc:: include/linux/bitmap.h
  79   :doc: bitmap bitops
  80
  81.. kernel-doc:: lib/bitmap.c
  82   :export:
  83
  84.. kernel-doc:: lib/bitmap.c
  85   :internal:
  86
  87.. kernel-doc:: include/linux/bitmap.h
  88   :internal:
  89
  90Command-line Parsing
  91--------------------
  92
  93.. kernel-doc:: lib/cmdline.c
  94   :export:
  95
  96Sorting
  97-------
  98
  99.. kernel-doc:: lib/sort.c
 100   :export:
 101
 102.. kernel-doc:: lib/list_sort.c
 103   :export:
 104
 105Text Searching
 106--------------
 107
 108.. kernel-doc:: lib/textsearch.c
 109   :doc: ts_intro
 110
 111.. kernel-doc:: lib/textsearch.c
 112   :export:
 113
 114.. kernel-doc:: include/linux/textsearch.h
 115   :functions: textsearch_find textsearch_next \
 116               textsearch_get_pattern textsearch_get_pattern_len
 117
 118CRC and Math Functions in Linux
 119===============================
 120
 121CRC Functions
 122-------------
 123
 124.. kernel-doc:: lib/crc4.c
 125   :export:
 126
 127.. kernel-doc:: lib/crc7.c
 128   :export:
 129
 130.. kernel-doc:: lib/crc8.c
 131   :export:
 132
 133.. kernel-doc:: lib/crc16.c
 134   :export:
 135
 136.. kernel-doc:: lib/crc32.c
 137
 138.. kernel-doc:: lib/crc-ccitt.c
 139   :export:
 140
 141.. kernel-doc:: lib/crc-itu-t.c
 142   :export:
 143
 144Base 2 log and power Functions
 145------------------------------
 146
 147.. kernel-doc:: include/linux/log2.h
 148   :internal:
 149
 150Integer power Functions
 151-----------------------
 152
 153.. kernel-doc:: lib/math/int_pow.c
 154   :export:
 155
 156.. kernel-doc:: lib/math/int_sqrt.c
 157   :export:
 158
 159Division Functions
 160------------------
 161
 162.. kernel-doc:: include/asm-generic/div64.h
 163   :functions: do_div
 164
 165.. kernel-doc:: include/linux/math64.h
 166   :internal:
 167
 168.. kernel-doc:: lib/math/div64.c
 169   :functions: div_s64_rem div64_u64_rem div64_u64 div64_s64
 170
 171.. kernel-doc:: lib/math/gcd.c
 172   :export:
 173
 174UUID/GUID
 175---------
 176
 177.. kernel-doc:: lib/uuid.c
 178   :export:
 179
 180Kernel IPC facilities
 181=====================
 182
 183IPC utilities
 184-------------
 185
 186.. kernel-doc:: ipc/util.c
 187   :internal:
 188
 189FIFO Buffer
 190===========
 191
 192kfifo interface
 193---------------
 194
 195.. kernel-doc:: include/linux/kfifo.h
 196   :internal:
 197
 198relay interface support
 199=======================
 200
 201Relay interface support is designed to provide an efficient mechanism
 202for tools and facilities to relay large amounts of data from kernel
 203space to user space.
 204
 205relay interface
 206---------------
 207
 208.. kernel-doc:: kernel/relay.c
 209   :export:
 210
 211.. kernel-doc:: kernel/relay.c
 212   :internal:
 213
 214Module Support
 215==============
 216
 217Module Loading
 218--------------
 219
 220.. kernel-doc:: kernel/kmod.c
 221   :export:
 222
 223Inter Module support
 224--------------------
 225
 226Refer to the file kernel/module.c for more information.
 227
 228Hardware Interfaces
 229===================
 230
 231DMA Channels
 232------------
 233
 234.. kernel-doc:: kernel/dma.c
 235   :export:
 236
 237Resources Management
 238--------------------
 239
 240.. kernel-doc:: kernel/resource.c
 241   :internal:
 242
 243.. kernel-doc:: kernel/resource.c
 244   :export:
 245
 246MTRR Handling
 247-------------
 248
 249.. kernel-doc:: arch/x86/kernel/cpu/mtrr/mtrr.c
 250   :export:
 251
 252Security Framework
 253==================
 254
 255.. kernel-doc:: security/security.c
 256   :internal:
 257
 258.. kernel-doc:: security/inode.c
 259   :export:
 260
 261Audit Interfaces
 262================
 263
 264.. kernel-doc:: kernel/audit.c
 265   :export:
 266
 267.. kernel-doc:: kernel/auditsc.c
 268   :internal:
 269
 270.. kernel-doc:: kernel/auditfilter.c
 271   :internal:
 272
 273Accounting Framework
 274====================
 275
 276.. kernel-doc:: kernel/acct.c
 277   :internal:
 278
 279Block Devices
 280=============
 281
 282.. kernel-doc:: block/blk-core.c
 283   :export:
 284
 285.. kernel-doc:: block/blk-core.c
 286   :internal:
 287
 288.. kernel-doc:: block/blk-map.c
 289   :export:
 290
 291.. kernel-doc:: block/blk-sysfs.c
 292   :internal:
 293
 294.. kernel-doc:: block/blk-settings.c
 295   :export:
 296
 297.. kernel-doc:: block/blk-exec.c
 298   :export:
 299
 300.. kernel-doc:: block/blk-flush.c
 301   :export:
 302
 303.. kernel-doc:: block/blk-lib.c
 304   :export:
 305
 306.. kernel-doc:: block/blk-integrity.c
 307   :export:
 308
 309.. kernel-doc:: kernel/trace/blktrace.c
 310   :internal:
 311
 312.. kernel-doc:: block/genhd.c
 313   :internal:
 314
 315.. kernel-doc:: block/genhd.c
 316   :export:
 317
 318.. kernel-doc:: block/bdev.c
 319   :export:
 320
 321Char devices
 322============
 323
 324.. kernel-doc:: fs/char_dev.c
 325   :export:
 326
 327Clock Framework
 328===============
 329
 330The clock framework defines programming interfaces to support software
 331management of the system clock tree. This framework is widely used with
 332System-On-Chip (SOC) platforms to support power management and various
 333devices which may need custom clock rates. Note that these "clocks"
 334don't relate to timekeeping or real time clocks (RTCs), each of which
 335have separate frameworks. These :c:type:`struct clk <clk>`
 336instances may be used to manage for example a 96 MHz signal that is used
 337to shift bits into and out of peripherals or busses, or otherwise
 338trigger synchronous state machine transitions in system hardware.
 339
 340Power management is supported by explicit software clock gating: unused
 341clocks are disabled, so the system doesn't waste power changing the
 342state of transistors that aren't in active use. On some systems this may
 343be backed by hardware clock gating, where clocks are gated without being
 344disabled in software. Sections of chips that are powered but not clocked
 345may be able to retain their last state. This low power state is often
 346called a *retention mode*. This mode still incurs leakage currents,
 347especially with finer circuit geometries, but for CMOS circuits power is
 348mostly used by clocked state changes.
 349
 350Power-aware drivers only enable their clocks when the device they manage
 351is in active use. Also, system sleep states often differ according to
 352which clock domains are active: while a "standby" state may allow wakeup
 353from several active domains, a "mem" (suspend-to-RAM) state may require
 354a more wholesale shutdown of clocks derived from higher speed PLLs and
 355oscillators, limiting the number of possible wakeup event sources. A
 356driver's suspend method may need to be aware of system-specific clock
 357constraints on the target sleep state.
 358
 359Some platforms support programmable clock generators. These can be used
 360by external chips of various kinds, such as other CPUs, multimedia
 361codecs, and devices with strict requirements for interface clocking.
 362
 363.. kernel-doc:: include/linux/clk.h
 364   :internal:
 365
 366Synchronization Primitives
 367==========================
 368
 369Read-Copy Update (RCU)
 370----------------------
 371
 372.. kernel-doc:: include/linux/rcupdate.h
 373
 374.. kernel-doc:: kernel/rcu/tree.c
 375
 376.. kernel-doc:: kernel/rcu/tree_exp.h
 377
 378.. kernel-doc:: kernel/rcu/update.c
 379
 380.. kernel-doc:: include/linux/srcu.h
 381
 382.. kernel-doc:: kernel/rcu/srcutree.c
 383
 384.. kernel-doc:: include/linux/rculist_bl.h
 385
 386.. kernel-doc:: include/linux/rculist.h
 387
 388.. kernel-doc:: include/linux/rculist_nulls.h
 389
 390.. kernel-doc:: include/linux/rcu_sync.h
 391
 392.. kernel-doc:: kernel/rcu/sync.c
 393