INTRO(9)

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
See locking(9) for an overview.

Condition variables. See condvar(9).

Kernel lock functions. See lock(9).

Memory barriers. See membar_ops(3).

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 ustore(9).

Fetch data from user-space. See ufetch(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).

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).

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).

Options string management. See optstr(9).

Performs pattern matching on strings. See pmatch(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.