The Linux Kernel API
Web
gnugeneration.com
Legal Notice
*** Now online
:
Kernel 2.6.20 API reference
Table of Contents
Driver Basics
Driver Entry and Exit points
module_init
-- driver initialization entry point
module_exit
-- driver exit entry point
Atomic and pointer manipulation
atomic_read
-- read atomic variable
atomic_set
-- set atomic variable
atomic_add
-- add integer to atomic variable
atomic_sub
-- subtract the atomic variable
atomic_sub_and_test
-- subtract value from variable and test result
atomic_inc
-- increment atomic variable
atomic_dec
-- decrement atomic variable
atomic_dec_and_test
-- decrement and test
atomic_inc_and_test
-- increment and test
atomic_add_negative
-- add and test if negative
get_unaligned
-- get value from possibly mis-aligned location
put_unaligned
-- put value to a possibly mis-aligned location
Data Types
Doubly Linked Lists
list_add
-- add a new entry
list_add_tail
-- add a new entry
list_add_rcu
-- add a new entry to rcu-protected list
list_add_tail_rcu
-- add a new entry to rcu-protected list
list_del
-- deletes entry from list.
list_del_rcu
-- deletes entry from list without re-initialization
list_del_init
-- deletes entry from list and reinitialize it.
list_move
-- delete from one list and add as another's head
list_move_tail
-- delete from one list and add as another's tail
list_empty
-- tests whether a list is empty
list_empty_careful
-- tests whether a list is
list_splice
-- join two lists
list_splice_init
-- join two lists and reinitialise the emptied list.
list_entry
-- get the struct for this entry
list_for_each
-- iterate over a list
__list_for_each
-- iterate over a list
list_for_each_prev
-- iterate over a list backwards
list_for_each_safe
-- iterate over a list safe against removal of list entry
list_for_each_entry
-- iterate over list of given type
list_for_each_entry_reverse
-- iterate backwards over list of given type.
list_prepare_entry
-- prepare a pos entry for use as a start point in
list_for_each_entry_continue
-- iterate over list of given type
list_for_each_entry_safe
-- iterate over list of given type safe against removal of list entry
list_for_each_rcu
-- iterate over an rcu-protected list
list_for_each_safe_rcu
-- iterate over an rcu-protected list safe
list_for_each_entry_rcu
-- iterate over rcu list of given type
list_for_each_continue_rcu
-- iterate over an rcu-protected list
hlist_del_rcu
-- deletes entry from hash list without re-initialization
hlist_for_each_entry
-- iterate over list of given type
hlist_for_each_entry_continue
-- iterate over a hlist continuing after existing point
hlist_for_each_entry_from
-- iterate over a hlist continuing from existing point
hlist_for_each_entry_safe
-- iterate over list of given type safe against removal of list entry
Basic C Library Functions
String Conversions
simple_strtoll
-- convert a string to a signed long long
simple_strtoul
-- convert a string to an unsigned long
simple_strtol
-- convert a string to a signed long
simple_strtoull
-- convert a string to an unsigned long long
vsnprintf
-- Format a string and place it in a buffer
vscnprintf
-- Format a string and place it in a buffer
snprintf
-- Format a string and place it in a buffer
scnprintf
-- Format a string and place it in a buffer
vsprintf
-- Format a string and place it in a buffer
sprintf
-- Format a string and place it in a buffer
vsscanf
-- Unformat a buffer into a list of arguments
sscanf
-- Unformat a buffer into a list of arguments
String Manipulation
strcpy
-- Copy a
NUL
terminated string
strncpy
-- Copy a length-limited,
NUL-terminated
string
strcat
-- Append one
NUL-terminated
string to another
strncat
-- Append a length-limited,
NUL-terminated
string to another
strcmp
-- Compare two strings
strncmp
-- Compare two length-limited strings
strchr
-- Find the first occurrence of a character in a string
strrchr
-- Find the last occurrence of a character in a string
strnchr
-- Find a character in a length limited string
strlen
-- Find the length of a string
strnlen
-- Find the length of a length-limited string
strcspn
-- Calculate the length of the initial substring of
s
which does
strpbrk
-- Find the first occurrence of a set of characters
memset
-- Fill a region of memory with the given value
bcopy
-- Copy one area of memory to another
memcpy
-- Copy one area of memory to another
memmove
-- Copy one area of memory to another
memcmp
-- Compare two areas of memory
memscan
-- Find a character in an area of memory.
strstr
-- Find the first substring in a
NUL
terminated string
memchr
-- Find a character in an area of memory.
strnicmp
-- Case insensitive, length-limited string comparison
strlcpy
-- Copy a
NUL
terminated string into a sized buffer
strlcat
-- Append a length-limited,
NUL-terminated
string to another
strspn
-- Calculate the length of the initial substring of
s
which only
strsep
-- Split a string into tokens
Bit Operations
set_bit
-- Atomically set a bit in memory
__set_bit
-- Set a bit in memory
clear_bit
-- Clears a bit in memory
__change_bit
-- Toggle a bit in memory
change_bit
-- Toggle a bit in memory
test_and_set_bit
-- Set a bit and return its old value
__test_and_set_bit
-- Set a bit and return its old value
test_and_clear_bit
-- Clear a bit and return its old value
__test_and_clear_bit
-- Clear a bit and return its old value
test_and_change_bit
-- Change a bit and return its new value
test_bit
-- Determine whether a bit is set
find_first_zero_bit
-- find the first zero bit in a memory region
find_first_bit
-- find the first set bit in a memory region
find_next_zero_bit
-- find the first zero bit in a memory region
find_next_bit
-- find the first set bit in a memory region
ffz
-- find first zero in word.
__ffs
-- find first bit in word.
ffs
-- find first bit set
hweight32
-- returns the hamming weight of a N-bit word
Memory Management in Linux
The Slab Cache
kmem_cache_create
-- Create a cache.
kmem_cache_shrink
-- Shrink a cache.
kmem_cache_destroy
-- delete a cache
kmem_cache_alloc
-- Allocate an object
__kmalloc
-- allocate memory
__alloc_percpu
-- allocate one copy of the object for every present
kmem_cache_free
-- Deallocate an object
kfree
-- free previously allocated memory
free_percpu
-- free previously allocated percpu memory
User Space Memory Access
access_ok
-- Checks if a user space pointer is valid
verify_area
-- Obsolete, use
access_ok
get_user
-- Get a simple variable from user space.
put_user
-- Write a simple value into user space.
__get_user
-- Get a simple variable from user space, with less checking.
__put_user
-- Write a simple value into user space, with less checking.
__copy_to_user
-- Copy a block of data into user space, with less checking.
__copy_from_user
-- Copy a block of data from user space, with less checking.
copy_to_user
-- Copy a block of data into user space.
copy_from_user
-- Copy a block of data from user space.
strlen_user
-- Get the size of a string in user space.
__strncpy_from_user
-- Copy a NUL terminated string from userspace, with less checking.
strncpy_from_user
-- Copy a NUL terminated string from userspace.
clear_user
-- Zero a block of memory in user space.
__clear_user
-- Zero a block of memory in user space, with less checking.
strnlen_user
-- Get the size of a string in user space.
The proc filesystem
sysctl interface
register_sysctl_table
-- register a sysctl hierarchy
unregister_sysctl_table
-- unregister a sysctl table hierarchy
proc_dostring
-- read a string sysctl
proc_dointvec
-- read a vector of integers
proc_dointvec_minmax
-- read a vector of integers with min/max values
proc_doulongvec_minmax
-- read a vector of long integers with min/max values
proc_doulongvec_ms_jiffies_minmax
-- read a vector of millisecond values with min/max values
proc_dointvec_jiffies
-- read a vector of integers as seconds
proc_dointvec_userhz_jiffies
-- read a vector of integers as 1/USER_HZ seconds
The Linux VFS
The Directory Cache
d_invalidate
-- invalidate a dentry
d_find_alias
-- grab a hashed alias of inode
shrink_dcache_sb
-- shrink dcache for a superblock
have_submounts
-- check for mounts over a dentry
shrink_dcache_parent
-- prune dcache
shrink_dcache_anon
-- further prune the cache
d_alloc
-- allocate a dcache entry
d_instantiate
-- fill in inode information for a dentry
d_alloc_root
-- allocate root dentry
d_alloc_anon
-- allocate an anonymous dentry
d_splice_alias
-- splice a disconnected dentry into the tree if one exists
d_lookup
-- search for a dentry
d_validate
-- verify dentry provided from insecure source
d_delete
-- delete a dentry
d_rehash
-- add an entry back to the hash
d_move
-- move a dentry
is_subdir
-- is new dentry a subdirectory of old_dentry
find_inode_number
-- check for dentry with name
__d_drop
-- drop a dentry
d_add
-- add dentry to hash queues
dget
-- get a reference to a dentry
d_unhashed
-- is dentry hashed
Inode Handling
clear_inode
-- clear an inode
invalidate_inodes
-- discard the inodes on a device
new_inode
-- obtain an inode
iunique
-- get a unique inode number
ilookup5
-- search for an inode in the inode cache
ilookup
-- search for an inode in the inode cache
iget5_locked
-- obtain an inode from a mounted file system
iget_locked
-- obtain an inode from a mounted file system
__insert_inode_hash
-- hash an inode
remove_inode_hash
-- remove an inode from the hash
iput
-- put an inode
bmap
-- find a block number in a file
update_atime
-- update the access time
inode_update_time
-- update mtime and ctime time
make_bad_inode
-- mark an inode bad due to an I/O error
is_bad_inode
-- is an inode errored
Registration and Superblocks
deactivate_super
-- drop an active reference to superblock
generic_shutdown_super
-- common helper for ->
kill_sb
sget
-- find or create a superblock
get_super
-- get the superblock of a device
File Locks
posix_lock_file
-- Apply a POSIX-style lock to a file
locks_mandatory_area
-- Check for a conflicting lock
__break_lease
-- revoke all outstanding leases on file
lease_get_mtime
--
posix_block_lock
-- blocks waiting for a file lock
posix_unblock_lock
-- stop waiting for a file lock
lock_may_read
-- checks that the region is free of locks
lock_may_write
-- checks that the region is free of locks
locks_mandatory_locked
-- Check for an active lock
fcntl_getlease
-- Enquire what lease is currently active
fcntl_setlease
-- sets a lease on an open file
sys_flock
--
flock
system call.
get_locks_status
-- reports lock usage in /proc/locks
Linux Networking
Socket Buffer Functions
struct sk_buff
-- socket buffer
skb_queue_empty
-- check if a queue is empty
skb_get
-- reference buffer
kfree_skb
-- free an sk_buff
skb_cloned
-- is the buffer a clone
skb_shared
-- is the buffer shared
skb_share_check
-- check if buffer is shared and if so clone it
skb_unshare
-- make a copy of a shared buffer
skb_peek
--
skb_peek_tail
--
skb_queue_len
-- get queue length
__skb_queue_head
-- queue a buffer at the list head
skb_queue_head
-- queue a buffer at the list head
__skb_queue_tail
-- queue a buffer at the list tail
skb_queue_tail
-- queue a buffer at the list tail
__skb_dequeue
-- remove from the head of the queue
skb_dequeue
-- remove from the head of the queue
skb_insert
-- insert a buffer
skb_append
-- append a buffer
skb_unlink
-- remove a buffer from a list
__skb_dequeue_tail
-- remove from the tail of the queue
skb_dequeue_tail
-- remove from the tail of the queue
skb_put
-- add data to a buffer
skb_push
-- add data to the start of a buffer
skb_pull
-- remove data from the start of a buffer
skb_headroom
-- bytes at buffer head
skb_tailroom
-- bytes at buffer end
skb_reserve
-- adjust headroom
skb_trim
-- remove end from a buffer
skb_orphan
-- orphan a buffer
skb_queue_purge
-- empty a list
__skb_queue_purge
-- empty a list
__dev_alloc_skb
-- allocate an skbuff for sending
dev_alloc_skb
-- allocate an skbuff for sending
skb_cow
-- copy header of skb when it is required
skb_padto
-- pad an skbuff up to a minimal size
skb_over_panic
-- private function
skb_under_panic
-- private function
alloc_skb
-- allocate a network buffer
__kfree_skb
-- private function
skb_clone
-- duplicate an sk_buff
skb_copy
-- create private copy of an sk_buff
pskb_copy
-- create copy of an sk_buff with private head.
pskb_expand_head
-- reallocate header of
sk_buff
skb_copy_expand
-- copy and expand sk_buff
skb_pad
-- zero pad the tail of an skb
__pskb_pull_tail
-- advance tail of skb header
Socket Filter
sk_run_filter
-- run a filter on a socket
sk_chk_filter
-- verify socket filter code
Network device support
Driver Support
alloc_etherdev
-- Allocates and sets up an ethernet device
alloc_fddidev
-- Register FDDI device
alloc_hippi_dev
-- Register HIPPI device
alloc_trdev
-- Register token ring device
alloc_fcdev
-- Register fibre channel device
dev_add_pack
-- add packet handler
__dev_remove_pack
-- remove packet handler
dev_remove_pack
-- remove packet handler
netdev_boot_setup_check
-- check boot time settings
__dev_get_by_name
-- find a device by its name
dev_get_by_name
-- find a device by its name
__dev_get
-- test if a device exists
__dev_get_by_index
-- find a device by its ifindex
dev_get_by_index
-- find a device by its ifindex
dev_getbyhwaddr
-- find a device by its hardware address
dev_get_by_flags
-- find any device with given flags
__dev_get_by_flags
-- find any device with given flags
dev_alloc_name
-- allocate a name for a device
netdev_state_change
-- device changes state
dev_load
-- load a network module
dev_open
-- prepare an interface for use.
dev_close
-- shutdown an interface.
register_netdevice_notifier
-- register a network notifier block
unregister_netdevice_notifier
-- unregister a network notifier block
call_netdevice_notifiers
-- call all network notifier blocks
dev_queue_xmit
-- transmit a buffer
netif_rx
-- post buffer to the network code
register_gifconf
-- register a SIOCGIF handler
netdev_set_master
-- set up master/slave pair
dev_set_promiscuity
-- update promiscuity count on a device
dev_set_allmulti
-- update allmulti count on a device
dev_ioctl
-- network device ioctl
dev_new_index
-- allocate an ifindex
register_netdevice
-- register a network device
free_netdev
-- free network device
unregister_netdevice
-- remove device from the kernel
8390 Based Network Cards
ei_open
-- Open/initialize the board.
ei_close
-- shut down network device
ei_tx_timeout
-- handle transmit time out condition
ei_interrupt
-- handle the interrupts from an 8390
__alloc_ei_netdev
-- alloc_etherdev counterpart for 8390
NS8390_init
-- initialize 8390 hardware
Synchronous PPP
sppp_input
-- receive and process a WAN PPP frame
sppp_close
-- close down a synchronous PPP or Cisco HDLC link
sppp_open
-- open a synchronous PPP or Cisco HDLC link
sppp_reopen
-- notify of physical link loss
sppp_change_mtu
-- Change the link MTU
sppp_do_ioctl
-- Ioctl handler for ppp/hdlc
sppp_attach
-- attach synchronous PPP/HDLC to a device
sppp_detach
-- release PPP resources from a device
Module Support
Module Loading
request_module
-- try to load a kernel module
call_usermodehelper
-- start a usermode application
Inter Module support
Hardware Interfaces
Interrupt Handling
disable_irq_nosync
-- disable an irq without waiting
disable_irq
-- disable an irq and wait for completion
enable_irq
-- enable handling of an irq
probe_irq_mask
-- scan a bitmap of interrupt lines
MTRR Handling
mtrr_add
-- Add a memory type region
mtrr_del
-- delete a memory type region
PCI Support Library
pci_bus_max_busnr
-- returns maximum PCI bus number of given bus' children
pci_max_busnr
-- returns maximum PCI bus number
pci_find_capability
-- query for devices' capabilities
pci_bus_find_capability
-- query for devices' capabilities
pci_find_parent_resource
-- return resource region of parent bus of given region
pci_set_power_state
-- Set the power state of a PCI device
pci_save_state
-- save the PCI configuration space of a device before suspending
pci_restore_state
-- Restore the saved state of a PCI device
pci_enable_device_bars
-- Initialize some of a device for use
pci_enable_device
-- Initialize device before it's used by a driver.
pci_disable_device
-- Disable PCI device after use
pci_enable_wake
-- enable device to generate PME# when suspended
pci_release_region
-- Release a PCI bar
pci_request_region
-- Reserved PCI I/O and memory resource
pci_release_regions
-- Release reserved PCI I/O and memory resources
pci_request_regions
-- Reserved PCI I/O and memory resources
pci_set_master
-- enables bus-mastering for device dev
pci_set_mwi
-- enables memory-write-invalidate PCI transaction
pci_clear_mwi
-- disables Memory-Write-Invalidate for device dev
PCI Hotplug Support Library
pci_hp_register
-- register a hotplug_slot with the PCI hotplug subsystem
pci_hp_deregister
-- deregister a hotplug_slot with the PCI hotplug subsystem
pci_hp_change_slot_info
-- changes the slot's information structure in the core
MCA Architecture
MCA Device Functions
MCA Bus DMA
The Device File System
devfs_mk_symlink
--
devfs_mk_dir
-- Create a directory in the devfs namespace.
Security Framework
register_security
-- registers a security framework with the kernel
unregister_security
-- unregisters a security framework with the kernel
mod_reg_security
-- allows security modules to be
"stacked"
mod_unreg_security
-- allows a security module registered with
mod_reg_security
to be unloaded
capable
-- calls the currently loaded security module's
capable
function with the specified capability
Power Management
pm_register
-- register a device with power management
pm_unregister
-- unregister a device with power management
pm_unregister_all
-- unregister all devices with matching callback
pm_send
-- send request to a single device
pm_send_all
-- send request to all managed devices
pm_find
-- find a device
Block Devices
blk_queue_prep_rq
-- set a prepare_request function for queue
blk_queue_merge_bvec
-- set a merge_bvec function for queue
blk_queue_make_request
-- define an alternate make_request function for a device
blk_queue_bounce_limit
-- set bounce buffer limit for queue
blk_queue_max_sectors
-- set max sectors for a request for this queue
blk_queue_max_phys_segments
-- set max phys segments for a request for this queue
blk_queue_max_hw_segments
-- set max hw segments for a request for this queue
blk_queue_max_segment_size
-- set max segment size for blk_rq_map_sg
blk_queue_hardsect_size
-- set hardware sector size for the queue
blk_queue_stack_limits
-- inherit underlying queue limits for stacked drivers
blk_queue_segment_boundary
-- set boundary rules for segment merging
blk_queue_dma_alignment
-- set dma length and memory alignment
blk_queue_find_tag
-- find a request by its tag and queue
blk_queue_free_tags
-- release tag maintenance info
blk_queue_init_tags
-- initialize the queue tag info
blk_queue_end_tag
-- end tag operations for a request
blk_queue_start_tag
-- find a free tag and assign it
blk_queue_invalidate_tags
-- invalidate all pending tags
generic_unplug_device
-- fire a request queue
blk_start_queue
-- restart a previously stopped queue
blk_stop_queue
-- stop a queue
blk_run_queue
-- run a single device queue
blk_cleanup_queue
-- release a
request_queue_t
when it is no longer needed
blk_init_queue
-- prepare a request queue for use with a block device
blk_requeue_request
-- put a request back on queue
blk_insert_request
-- insert a special request in to a request queue
blk_rq_map_user
-- map user data to a request, for REQ_BLOCK_PC usage
blk_rq_unmap_user
-- unmap a request with user data
blk_execute_rq
-- insert a request into queue for execution
blk_congestion_wait
-- wait for a queue to become uncongested
blk_attempt_remerge
-- attempt to remerge active head with next request
generic_make_request
--
submit_bio
--
process_that_request_first
-- process partial request submission
end_that_request_first
-- end I/O on a request
end_that_request_chunk
-- end I/O on a request
Miscellaneous Devices
misc_register
-- register a miscellaneous device
misc_deregister
-- unregister a miscellaneous device
Video4Linux
video_register_device
-- register video4linux devices
video_unregister_device
-- unregister a video4linux device
Sound Devices
register_sound_special
-- register a special sound node
register_sound_mixer
-- register a mixer device
register_sound_midi
-- register a midi device
register_sound_dsp
-- register a DSP device
register_sound_synth
-- register a synth device
unregister_sound_special
-- unregister a special sound device
unregister_sound_mixer
-- unregister a mixer
unregister_sound_midi
-- unregister a midi device
unregister_sound_dsp
-- unregister a DSP device
unregister_sound_synth
-- unregister a synth device
16x50 UART Driver
uart_update_timeout
-- update per-port FIFO timeout.
uart_get_baud_rate
-- return baud rate for a particular port
uart_get_divisor
-- return uart clock divisor
uart_register_driver
-- register a driver with the uart core layer
uart_unregister_driver
-- remove a driver from the uart core layer
uart_add_one_port
-- attach a driver-defined port structure
uart_remove_one_port
-- detach a driver defined port structure
uart_register_port
--
uart_unregister_port
-- de-allocate a port
register_serial
-- configure a 16x50 serial port at runtime
unregister_serial
-- remove a 16x50 serial port at runtime
serial8250_suspend_port
-- suspend one serial port
serial8250_resume_port
-- resume one serial port
Z85230 Support Library
z8530_interrupt
-- Handle an interrupt from a Z8530
z8530_sync_open
-- Open a Z8530 channel for PIO
z8530_sync_close
-- Close a PIO Z8530 channel
z8530_sync_dma_open
-- Open a Z8530 for DMA I/O
z8530_sync_dma_close
-- Close down DMA I/O
z8530_sync_txdma_open
-- Open a Z8530 for TX driven DMA
z8530_sync_txdma_close
-- Close down a TX driven DMA channel
z8530_describe
-- Uniformly describe a Z8530 port
z8530_init
-- Initialise a Z8530 device
z8530_shutdown
-- Shutdown a Z8530 device
z8530_channel_load
-- Load channel data
z8530_null_rx
-- Discard a packet
z8530_queue_xmit
-- Queue a packet
z8530_get_stats
-- Get network statistics
Frame Buffer Library
Frame Buffer Memory
register_framebuffer
-- registers a frame buffer device
unregister_framebuffer
-- releases a frame buffer device
fb_register_client
-- register a client notifier
fb_unregister_client
-- unregister a client notifier
fb_set_suspend
-- low level driver signals suspend
Frame Buffer Console
drivers/video/console/fbcon.c
-- Document generation inconsistency
Frame Buffer Colormap
fb_alloc_cmap
-- allocate a colormap
fb_dealloc_cmap
-- deallocate a colormap
fb_copy_cmap
-- copy a colormap
fb_set_cmap
-- set the colormap
fb_default_cmap
-- get default colormap
fb_invert_cmaps
-- invert all defaults colormaps
Frame Buffer Video Mode Database
__fb_try_mode
-- test a video mode
fb_find_mode
-- finds a valid video mode
Frame Buffer Macintosh Video Mode Database
mac_vmode_to_var
-- converts vmode/cmode pair to var structure
mac_var_to_vmode
-- convert var structure to MacOS vmode/cmode pair
mac_map_monitor_sense
-- Convert monitor sense to vmode
mac_find_mode
-- find a video mode
Frame Buffer Fonts
Next >>>
Driver Basics