123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396 |
- ====================
- The Linux Kernel API
- ====================
- List Management Functions
- =========================
- .. kernel-doc:: include/linux/list.h
- :internal:
- Basic C Library Functions
- =========================
- 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.
- String Conversions
- ------------------
- .. kernel-doc:: lib/vsprintf.c
- :export:
- .. kernel-doc:: include/linux/kstrtox.h
- :functions: kstrtol kstrtoul
- .. kernel-doc:: lib/kstrtox.c
- :export:
- .. kernel-doc:: lib/string_helpers.c
- :export:
- String Manipulation
- -------------------
- .. kernel-doc:: lib/string.c
- :export:
- .. kernel-doc:: include/linux/string.h
- :internal:
- .. kernel-doc:: mm/util.c
- :functions: kstrdup kstrdup_const kstrndup kmemdup kmemdup_nul memdup_user
- vmemdup_user strndup_user memdup_user_nul
- Basic Kernel Library Functions
- ==============================
- The Linux kernel provides more basic utility functions.
- Bit Operations
- --------------
- .. kernel-doc:: include/asm-generic/bitops/instrumented-atomic.h
- :internal:
- .. kernel-doc:: include/asm-generic/bitops/instrumented-non-atomic.h
- :internal:
- .. kernel-doc:: include/asm-generic/bitops/instrumented-lock.h
- :internal:
- Bitmap Operations
- -----------------
- .. kernel-doc:: lib/bitmap.c
- :doc: bitmap introduction
- .. kernel-doc:: include/linux/bitmap.h
- :doc: declare bitmap
- .. kernel-doc:: include/linux/bitmap.h
- :doc: bitmap overview
- .. kernel-doc:: include/linux/bitmap.h
- :doc: bitmap bitops
- .. kernel-doc:: lib/bitmap.c
- :export:
- .. kernel-doc:: lib/bitmap.c
- :internal:
- .. kernel-doc:: include/linux/bitmap.h
- :internal:
- Command-line Parsing
- --------------------
- .. kernel-doc:: lib/cmdline.c
- :export:
- Sorting
- -------
- .. kernel-doc:: lib/sort.c
- :export:
- .. kernel-doc:: lib/list_sort.c
- :export:
- Text Searching
- --------------
- .. kernel-doc:: lib/textsearch.c
- :doc: ts_intro
- .. kernel-doc:: lib/textsearch.c
- :export:
- .. kernel-doc:: include/linux/textsearch.h
- :functions: textsearch_find textsearch_next \
- textsearch_get_pattern textsearch_get_pattern_len
- CRC and Math Functions in Linux
- ===============================
- Arithmetic Overflow Checking
- ----------------------------
- .. kernel-doc:: include/linux/overflow.h
- :internal:
- CRC Functions
- -------------
- .. kernel-doc:: lib/crc4.c
- :export:
- .. kernel-doc:: lib/crc7.c
- :export:
- .. kernel-doc:: lib/crc8.c
- :export:
- .. kernel-doc:: lib/crc16.c
- :export:
- .. kernel-doc:: lib/crc32.c
- .. kernel-doc:: lib/crc-ccitt.c
- :export:
- .. kernel-doc:: lib/crc-itu-t.c
- :export:
- Base 2 log and power Functions
- ------------------------------
- .. kernel-doc:: include/linux/log2.h
- :internal:
- Integer power Functions
- -----------------------
- .. kernel-doc:: lib/math/int_pow.c
- :export:
- .. kernel-doc:: lib/math/int_sqrt.c
- :export:
- Division Functions
- ------------------
- .. kernel-doc:: include/asm-generic/div64.h
- :functions: do_div
- .. kernel-doc:: include/linux/math64.h
- :internal:
- .. kernel-doc:: lib/math/div64.c
- :functions: div_s64_rem div64_u64_rem div64_u64 div64_s64
- .. kernel-doc:: lib/math/gcd.c
- :export:
- UUID/GUID
- ---------
- .. kernel-doc:: lib/uuid.c
- :export:
- Kernel IPC facilities
- =====================
- IPC utilities
- -------------
- .. kernel-doc:: ipc/util.c
- :internal:
- FIFO Buffer
- ===========
- kfifo interface
- ---------------
- .. kernel-doc:: include/linux/kfifo.h
- :internal:
- relay interface support
- =======================
- 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.
- relay interface
- ---------------
- .. kernel-doc:: kernel/relay.c
- :export:
- .. kernel-doc:: kernel/relay.c
- :internal:
- Module Support
- ==============
- Module Loading
- --------------
- .. kernel-doc:: kernel/kmod.c
- :export:
- Inter Module support
- --------------------
- Refer to the files in kernel/module/ for more information.
- Hardware Interfaces
- ===================
- DMA Channels
- ------------
- .. kernel-doc:: kernel/dma.c
- :export:
- Resources Management
- --------------------
- .. kernel-doc:: kernel/resource.c
- :internal:
- .. kernel-doc:: kernel/resource.c
- :export:
- MTRR Handling
- -------------
- .. kernel-doc:: arch/x86/kernel/cpu/mtrr/mtrr.c
- :export:
- Security Framework
- ==================
- .. kernel-doc:: security/security.c
- :internal:
- .. kernel-doc:: security/inode.c
- :export:
- Audit Interfaces
- ================
- .. kernel-doc:: kernel/audit.c
- :export:
- .. kernel-doc:: kernel/auditsc.c
- :internal:
- .. kernel-doc:: kernel/auditfilter.c
- :internal:
- Accounting Framework
- ====================
- .. kernel-doc:: kernel/acct.c
- :internal:
- Block Devices
- =============
- .. kernel-doc:: include/linux/bio.h
- .. kernel-doc:: block/blk-core.c
- :export:
- .. kernel-doc:: block/blk-core.c
- :internal:
- .. kernel-doc:: block/blk-map.c
- :export:
- .. kernel-doc:: block/blk-sysfs.c
- :internal:
- .. kernel-doc:: block/blk-settings.c
- :export:
- .. kernel-doc:: block/blk-flush.c
- :export:
- .. kernel-doc:: block/blk-lib.c
- :export:
- .. kernel-doc:: block/blk-integrity.c
- :export:
- .. kernel-doc:: kernel/trace/blktrace.c
- :internal:
- .. kernel-doc:: block/genhd.c
- :internal:
- .. kernel-doc:: block/genhd.c
- :export:
- .. kernel-doc:: block/bdev.c
- :export:
- Char devices
- ============
- .. kernel-doc:: fs/char_dev.c
- :export:
- Clock Framework
- ===============
- 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 :c:type:`struct clk <clk>`
- 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.
- 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 *retention mode*. This mode still incurs leakage currents,
- especially with finer circuit geometries, but for CMOS circuits power is
- mostly used by clocked state changes.
- 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.
- 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.
- .. kernel-doc:: include/linux/clk.h
- :internal:
- Synchronization Primitives
- ==========================
- Read-Copy Update (RCU)
- ----------------------
- .. kernel-doc:: include/linux/rcupdate.h
- .. kernel-doc:: kernel/rcu/tree.c
- .. kernel-doc:: kernel/rcu/tree_exp.h
- .. kernel-doc:: kernel/rcu/update.c
- .. kernel-doc:: include/linux/srcu.h
- .. kernel-doc:: kernel/rcu/srcutree.c
- .. kernel-doc:: include/linux/rculist_bl.h
- .. kernel-doc:: include/linux/rculist.h
- .. kernel-doc:: include/linux/rculist_nulls.h
- .. kernel-doc:: include/linux/rcu_sync.h
- .. kernel-doc:: kernel/rcu/sync.c
|