Glossary of Terms
From DFWiki
Whether you're a user or a seasoned kernel developer who's simply new to DragonFly, few things are more confusing than trying to figure out what's going on without knowing what the acronyms mean. The purpose of this page is to define (briefly) some of the more obscure technical terminology you might encounter in DragonFly discussions.
Terms that are specific to DragonFly are indicated by an asterisk (*). Table of contents
[[!toc levels=3 ]]
# ACPI
Advanced Configuration & Power Interface. Is a standard that defines power and configuration management interfacing between the OS and the BIOS. It is meant to replace the APM standard (for power management) but also provide a generic interface for recognition and configuration of hardware devices.
# BGL
Big Giant Lock. A mutual exclusion mechanism which encompasses the entire running system.
# CAPS*
Unknown acronym first introduced by Matt Dillon. A message-based IPC mechanism for applications; basically, LWKT message-port services exposed to userland.
CAPS facilities are implemented in [lwkt_caps.c](http://www.dragonflybsd.org/cgi-bin/cvsweb.cgi/~checkout~/src/sys/kern/lwkt_caps.c) (http://www.dragonflybsd.org/cgi-bin/cvsweb.cgi/~checkout~/src/sys/kern/lwkt_caps.c).
# IPI
Inter-Processor Interrupt.
# KPI
Kernel Programming Interface. Same meaning as API (Application Programming Interface), but specifically refering to APIs in the kernel.
# KVA
Kernel Virtual Address space. Virtual memory used (exclusively) by the kernel. (Note: how does this differ from KVM?)
# KVM
Kernel Virtual Memory. Virtual memory used (exclusively) by the kernel. (Note: how does this differ from KVA?)
# LKM
Loadable Kernel Module. Allows the possibility to extend the kernel's functionality at runtime without recompiling or even rebooting the system. Usually these modules are devices drivers and os features.
# LWKT*
LightWeight Kernel Threading. A new kernel threading and scheduling mechanism implemented in DragonFly BSD. The LWKT scheduler only applies its scheduling decisions to the kernel and is independent from the userland 4.4BSD scheduler.
LWKT has a fully MP clean API and allows turning off the BGL on a thread-by-thread basis; this fits with the goal of threading the subsystems in the kernel and provides a clear and straight-forward path to taking subsystems out from under the BGL.
LWKT facilities are implemented in src/sys/kern/lwkt_*.c; notably, [lwkt_thread.c](http://www.dragonflybsd.org/cgi-bin/cvsweb.cgi/~checkout~/src/sys/kern/lwkt_thread.c) (http://www.dragonflybsd.org/cgi-bin/cvsweb.cgi/~checkout~/src/sys/kern/lwkt_thread.c), [lwkt_msgport.c](http://www.dragonflybsd.org/cgi-bin/cvsweb.cgi/~checkout~/src/sys/kern/lwkt_msgport.c) (http://www.dragonflybsd.org/cgi-bin/cvsweb.cgi/~checkout~/src/sys/kern/lwkt_msgport.c), and [lwkt_token.c](http://www.dragonflybsd.org/cgi-bin/cvsweb.cgi/~checkout~/src/sys/kern/lwkt_token.c) (http://www.dragonflybsd.org/cgi-bin/cvsweb.cgi/~checkout~/src/sys/kern/lwkt_token.c).
# MSFBUF*
Multi-page Super Fast BUFfers. An API for managing ephemeral/temporary KVM mappings for lists of pages, UIOs, arbitrary buffers, and other sources of data. Most of the sources of data described formally devolve into associating with the underlying pages. Although if the data is not backed by VM pages (e.g. userland buffers), then the backing is introduced automatically and the mapping is effectively cached.
MSFBUF facilities are implemented in [kern_msfbuf.c](http://www.dragonflybsd.org/cgi-bin/cvsweb.cgi/~checkout~/src/sys/kern/kern_msfbuf.c) (http://www.dragonflybsd.org/cgi-bin/cvsweb.cgi/~checkout~/src/sys/kern/kern_msfbuf.c).
The original idea of caching ephemeral mappings was introduced by David Greenman of the FreeBSD Project for the [sendfile(2)](http://leaf.dragonflybsd.org/cgi/web-man?section#2&commandsendfile) (http://leaf.dragonflybsd.org/cgi/web-man?section=2&command=sendfile) system call for minimising redundant data copies.
# RTC
Real Time Clock
# SMP
Symmetric Multi-Processor.
# SSI
Single System Image. A networked cluster of machines which appear as a single machine.
# TLB
Translation Look-aside Buffer. The component of a CPU's VM management hardware which translates between virtual memory addresses (used by userland programs) and physical memory address (used by the kernel.)
# TLS
Thread Local Storage. Memory storage local to a thread.
# UIO
Userspace(kernelspace)(?) Input/Output. The traditional BSD mechanism for passing data between the userland and the kernel, for example during a system call.
# Variant Symbolic Links (varsym)*
Variant symbolic link. A symbolic link which can point to different places depending on settings in the user's environment.
# VFS
Virtual File System Layer. A layer in UNIX-like kernels which translates abstract requests for files into lower-level operations.
# XIO*
X("cross-") Input/Output. A kernel programming interface that is used for managing VM page lists. Although originally intended for fast copying of bulk data (for example, between userspace and kernelspace, as is done by UIO,) this API is used almost anywhere where managing page lists is required. It is complementary to the MSFBUF API which manages the ephemeral mappings for VM page lists.
The XIO facilities are implemented in [kern_xio.c](http://www.dragonflybsd.org/cgi-bin/cvsweb.cgi/~checkout~/src/sys/kern/kern_xio.c) (http://www.dragonflybsd.org/cgi-bin/cvsweb.cgi/~checkout~/src/sys/kern/kern_xio.c). For example use of the XIO API, look in [lwkt_caps.c](http://www.dragonflybsd.org/cgi-bin/cvsweb.cgi/~checkout~/src/sys/kern/lwkt_caps.c) (http://www.dragonflybsd.org/cgi-bin/cvsweb.cgi/~checkout~/src/sys/kern/lwkt_caps.c), and the VFS journalling code which resides in [vfs_journal.c](http://www.dragonflybsd.org/cgi-bin/cvsweb.cgi/~checkout~/src/sys/kern/vfs_journal.c) (http://www.dragonflybsd.org/cgi-bin/cvsweb.cgi/~checkout~/src/sys/kern/vfs_journal.c).
XIO was first described in [this post to the kernel mailing list](http://leaf.dragonflybsd.org/mailarchive/kernel/2004-03/msg00469.html) (http://leaf.dragonflybsd.org/mailarchive/kernel/2004-03/msg00469.html).