NAME
intro —
introduction to kernel
internals
DESCRIPTION
This section contains information related to the internal operation of the
system kernel. It describes function interfaces and variables of use to the
systems and device driver programmer.
In addition to the normal man page format, the kernel pages include an
additional section:
-
-
- CODE REFERENCES
- Contains the pathname(s) of the source file(s) which
contain the definition and/or source code of the variables or functions
being documented. Any paths are relative to the top level of the source
tree (traditionally /usr/src).
MEMORY MANAGEMENT
Introduction to kernel memory allocators. See
memoryallocators(9).
Machine-dependent portion of the virtual memory system. See
pmap(9).
Virtual memory system external interface. See
uvm(9).
I/O SUBSYSTEM
Buffer cache interfaces. See
buffercache(9).
Device buffer queues. See
bufq(9).
Initiate I/O on raw devices. See
physio(9).
I/O descriptor allocation interface. See
getiobuf(9).
PROCESS CONTROL
Idle CPU while waiting for work. See
cpu_idle(9).
Finish a fork operation. See
cpu_lwp_fork(9).
Switch to another light weight process. See
mi_switch(9).
Current process and processor. See
curproc(9).
Set process uid and gid. See
do_setresuid(9).
New processes and kernel threads. See
fork1(9),
kthread(9).
Context switch notification. See
cpu_need_resched(9).
Common scheduler framework. See
csf(9).
Software signal facilities. See
signal(9).
Suspend the scheduler. See
suspendsched(9).
Return path to user-mode execution. See
userret(9).
FILE SYSTEM
High-level file operations. See
dofileread(9).
Convert an extended attribute namespace identifier to a string and vice versa.
See
extattr(9).
Operations on file entries. See
file(9).
In-kernel, file-system independent, file-meta data association. See
fileassoc(9).
File descriptor tables and operations. See
filedesc(9).
File descriptor owner handling functions. See
fsetown(9).
File system suspension helper subsystem. See
fstrans(9).
Pathname lookup, cache and management. See
namei(9),
namecache(9).
Kernel interface to file systems. See
vfs(9).
Kernel representation of a file or directory and vnode attributes. See
vnode(9),
vattr(9).
NETWORKING
Kernel interfaces for manipulating output queues on network interfaces. See
altq(9).
Externally visible ARP functions. See
arp(9).
Ethernet and FDDI driver support functions and macros. See
ethersubr(9).
Core 802.11 network stack functions and rate adaptation based on received signal
strength. See
ieee80211(9),
rssadapt(9).
Compute Internet checksum. See
in_cksum(9).
Look up the IPv4 source address best matching an IPv4 destination. See
in_getifa(9).
Functions and macros for managing memory used by networking code. See
mbuf(9).
Packet filter interface. See
pfil(9).
Route callout functions. See
rt_timer(9).
TCP congestion control API. See
tcp_congctl(9).
LOCKING AND INTERRUPT
CONTROL
Condition variables. See
condvar(9).
Kernel lock functions. See
lock(9).
Memory barriers. See
mb(9).
Mutual exclusion primitives. See
mutex(9).
Restartable atomic sequences. See
ras(9).
Reader / writer lock primitives. See
rwlock(9).
Machine-independent software interrupt framework. See
softint(9).
Functions to modify system interrupt priority level. See
spl(9).
Functions to raise the system priority level. See
splraiseipl(9).
SECURITY
Kernel authorization framework. See
kauth(9).
API for cryptographic services in the kernel. See
opencrypto(9).
Security model development guidelines. See
secmodel(9).
SYSTEM TIME CONTROL
Execute a function after a specified length of time. See
callout(9).
Microsecond delay. See
delay(9).
Real-time timer. See
hardclock(9).
System clock frequency. See
hz(9).
Initialization of system time and time-of-day clock support. See
inittodr(9),
todr(9).
Check that a timeval value is valid, and correct. See
itimerfix(9).
System time variables. See
timecounter(9).
Realtime system clock. See
microtime(9).
Get the time elapsed since boot. See
microuptime(9).
Convert milliseconds to system clock ticks. See
mstohz(9).
Function to help implement rate-limited actions. See
ppsratecheck(9).
Function to help implement rate-limited actions. See
ratecheck(9).
Set battery-backed clock from system time. See
resettodr(9).
System time variables. See
time_second(9).
KERNEL AND USER
SPACE DATA COPY FUNCTIONS
Kernel space to/from user space copy functions. See
copy(9).
Store data to user-space. See
store(9).
Fetch data from user-space. See
fetch(9).
Move data described by a struct uio. See
uiomove(9).
MACHINE DEPENDENT KERNEL
FUNCTIONS
Machine-dependent clock setup interface. See
cpu_initclocks(9).
Machine-dependent process core dump interface. See
cpu_coredump(9).
Machine-dependent kernel core dumps. See
cpu_dumpconf(9).
Unique CPU identification number See
cpu_number(9).
Halt or reboot the system See
cpu_reboot(9).
Machine-dependent root file system setup See
cpu_rootconf(9).
Machine-dependent CPU startup See
cpu_startup(9).
Disk label management routines. See
disklabel(9).
DEVICE CONFIGURATION
Autoconfiguration frame-work. See
autoconf(9).
Description of a device driver. See
driver(9).
The autoconfiguration framework ``device definition'' language. See
config(9).
Machine-dependent device autoconfiguration. See
cpu_configure(9).
MI DEVICE DRIVER API
Bus and Machine Independent DMA Mapping Interface. See
bus_dma(9).
Bus space manipulation functions. See
bus_space(9).
Generic disk framework. See
disk(9).
Hardware-assisted data mover interface. See
dmover(9). Generic event counter
framework. See
evcnt(9).
Firmware loader API for device drivers. See
firmload(9).
How to implement a new ioctl call to access device drivers. See
ioctl(9).
Extensible line discipline framework. See
linedisc(9).
CONSOLE DEVICES
Console magic key sequence management. See
cnmagic(9).
Console access interface. See
cons(9).
Raster display operations. See
rasops(9).
Generic virtual console framework. See
vcons(9).
Machine-independent console support. See
wscons(9).
DEVICE SPECIFIC
IMPLEMENTATION
Interface between low and high level audio drivers. See
audio(9).
The
NetBSD audio specification. See
audio_system(9).
Bluetooth Device/Protocol API. See
bluetooth(9).
Support for CardBus PC-Card devices. See
cardbus(9).
VESA Display Data Channel V2. See
ddc(9).
VESA Extended Display Identification Data. See
edid(9).
Inter IC (I2C) bus. See
iic(9).
Baseboard I/O control ASIC for DEC TURBOchannel systems. See
ioasic(9).
Industry-standard Architecture. See
isa(9).
Introduction to ISA Plug-and-Play support. See
isapnp(9).
MicroChannel Architecture bus. See
mca(9).
PPBUS microseqencer developer's guide. See
microseq(9).
Peripheral Component Interconnect. See
pci(9).
Perform PCI bus configuration. See
pci_configure_bus(9).
PCI bus interrupt manipulation functions. See
pci_intr(9).
PC keyboard port interface. See
pckbport(9).
Support for PCMCIA PC-Card devices. See
pcmcia(9).
User-space interface to ppbus parallel port. See
ppi(9).
Interface between low and high level radio drivers. See
radio(9).
Functions to make a device available for entropy collection. See
rnd(9).
SCSI/ATAPI middle-layer interface. See
scsipi(9).
TURBOchannel bus. See
tc(9).
USB tty support. See
ucom(9).
USB device drivers interface. See
usbdi(9).
Versa Module Euroboard bus. See
vme(9).
Machine-independent IDE/ATAPI driver. See
wdc(9).
KERNEL EVENT
Functions to add or remove kernel event filters. See
kfilter_register(9).
Functions to raise kernel event. See
knote(9).
Record and wakeup select requests. See
selrecord(9).
Simple do-it-in-thread-context framework. See
workqueue(9).
KERNEL HELPER FUNCTIONS
Kernel expression verification macros. See
KASSERT(9).
Convert a single byte between (unsigned) packed bcd and binary. See
bcdtobin(9).
Bitmask output conversion. See
snprintb(3).
General purpose extent manager. See
extent(9).
Compare integers. See
imax(9).
Kernel formatted output conversion. See
kprintf(9).
Data comparing, moving, copying, setting and cleaning. See
memcmp(9),
memmove(9),
memcpy(9),
memset(9),
bcmp(9),
bcopy(9),
bzero(9),
kcopy(9).
Log a message from the kernel through the /dev/klog device. See
log(9).
Bring down system on fatal error. See
panic(9).
MISC
Power management and inter-driver messaging. See
pmf(9).
Run all shutdown hooks. See
pmf_system_shutdown(9).
Kernel internal error numbers. See
errno(9).
Kernel hash functions, hash table construction and destruction. See
hash(9),
hashinit(9).
Format a number into a human readable form. See
humanize_number(9).
Machine-dependent interface to ipkdb. See
ipkdb(9).
Options string management. See
optstr(9).
Performs pattern matching on strings. See
pmatch(9).
Hardware Performance Monitoring Interface. See
pmc(9).
Add or remove a shutdown hook. See
pmf(9).
Non-local jumps. See
setjmp(9).
System variable control interfaces. See
sysctl(9).
HISTORY
The
NetBSD kernel internals section first appeared in
NetBSD 1.2.