INTRO(9)               NetBSD Kernel Developer's Manual               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 vari-
                      ables or functions being documented.

MEMORY MANAGEMENT
     Machine-dependent swap interface.  See cpu_swapout(9).

     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
     Machine-dependent process exit.  See cpu_exit(9).

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

     Process scheduling subsystem.  See scheduler(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),
     pathname(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 softintr(9).

     Functions to modify system interrupt priority level.  See spl(9).

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

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

     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
     Run all power hooks.  See dopowerhooks(9).

     Run all shutdown hooks.  See doshutdownhooks(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 power change hook.  See powerhook_establish(9).

     Add or remove a shutdown hook.  See shutdownhook_establish(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.

NetBSD 5.0_STABLE              February 17, 2007             NetBSD 5.0_STABLE
