INTRO (9) Netbsd Kernel Developer's Manual INTRO (9) NAME Intro
Total Page:16
File Type:pdf, Size:1020Kb
INTRO(9) NetBSD Kernel Developer’sManual 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 driverprogrammer. 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. MEMORYMANAGEMENT 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 rawdevices. 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). Newprocesses 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-levelfile operations. See dofileread(9). Convert an extended attribute namespace identifier to a string and vice versa. See extattr(9). NetBSD 3.0 February 17, 2007 1 INTRO(9) NetBSD Kernel Developer’sManual INTRO(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 driversupport functions and macros. See ethersubr(9). Core 802.11 network stack functions and rate adaptation based on receivedsignal 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). NetBSD 3.0 February 17, 2007 2 INTRO(9) NetBSD Kernel Developer’sManual INTRO(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 timevalvalue 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 SPACEDAT A COPY FUNCTIONS Kernel space to/from user space copyfunctions. 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). NetBSD 3.0 February 17, 2007 3 INTRO(9) NetBSD Kernel Developer’sManual INTRO(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 moverinterface. See dmover(9). Generic ev ent counter framework. See evcnt(9). Firmware loader API for device drivers. See firmload(9). Howtoimplement a newioctl 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 lowand high levelaudio 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’sguide. 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 lowand high levelradio drivers. See radio(9). NetBSD 3.0 February 17, 2007 4 INTRO(9) NetBSD Kernel Developer’sManual INTRO(9) Functions to makeadevice available for entropycollection. 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). NetBSD 3.0 February 17, 2007 5 INTRO(9) NetBSD Kernel Developer’sManual INTRO(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 3.0 February 17, 2007 6 KASSERT(9) NetBSD Kernel Developer’sManual KASSERT(9) NAME KASSERT, KDASSERT —kernel expression verification macros SYNOPSIS void KASSERT(expression); void KDASSERT(expression); DESCRIPTION These machine independent