Skip to content

Glossary

opencode-agent[bot] edited this page May 11, 2026 · 63 revisions

Glossary

Project-specific terminology used throughout JNode and this wiki.

Term Definition
BDF (Bitmap Distribution Format) A text-based bitmap font format used by JNode's BDF renderer. BDF files are parsed by the JavaCC-generated BDFParser (gui/src/font/org/jnode/font/bdf/), producing BDFFontContainer with BDFGlyph entries. Supports multiple bit depths (1-8 bpp) via pixel unpacking in BDFGlyph.decode(). See Font-Rendering.
DeviceManagerListener Observer interface (org.jnode.driver.DeviceManagerListener) providing deviceRegistered and deviceUnregister callbacks, used for deferred device initialization (e.g., FBConsole waiting for a framebuffer). Distinct from DeviceListener which fires on device start/stop. See DeviceManagerListener.
Thinlet A lightweight, pure-Java GUI toolkit for JNode (gui/src/thinlet/thinlet/Thinlet.java). UIs are defined declaratively via XML markup parsed at runtime, and all widgets are rendered directly onto an AWT Container using custom Graphics painting — no native peers. See Thinlet.
TrueType A scalable outline font format supported by JNode via TTFFontData and its table parsers (cmap, glyf, head, hhea, hmtx, loca, etc.) in gui/src/awt/org/jnode/awt/font/truetype/. Glyphs are anti-aliased via summed-area table rendering in GlyphRenderer. See Font-Rendering.
Device-to-driver mapping The process of matching a discovered device to a suitable driver via the DeviceToDriverMapper strategy pattern. Mappers are registered via the org.jnode.driver.mappers extension point, sorted by match level, and the first mapper that returns a non-null driver wins. See DeviceToDriverMapper.
DeviceFinder An interface (org.jnode.driver.DeviceFinder) that defines the strategy for discovering hardware devices on a specific bus. Implementations are loaded via the org.jnode.driver.finders extension point and invoked by DeviceManager.findDevices() at boot to enumerate all hardware. See DeviceFinder.
DMA channel One of 8 x86 DMA controller channels (0-3: 8-bit, 4: cascade, 5-7: 16-bit) managed by DMAPlugin for direct memory access transfers. Channel 4 is reserved for cascading. See Resource-Management.
DNS Resolver JNode's singleton service (ResolverImpl) that translates hostnames to IPv4 addresses using the dnsjava library (ExtendedResolver, Lookup). Configured dynamically via DHCP; accessed via NetAPIImpl and IPv4NetworkLayer. No caching — each lookup queries the DNS server. See DNS-Resolver.
DMAResource An allocated DMA channel (org.jnode.system.resource.DMAResource) supporting setup(), enable(), and getLength() for transferring data between memory and I/O devices. See Resource-Management.
Argument (Shell) Typed holder class (e.g., FileArgument) used by JNode's shell to declaratively parse and validate command-line tokens.
ARP cache A time-limited (10-minute TTL) in-memory map maintained by the ARP layer that stores IPv4-to-MAC address mappings to avoid repeated broadcast requests. See ARP.
Block-Device-Layer The subsystem under fs/src/driver/org/jnode/driver/block/ that provides block I/O APIs, alignment wrappers, and partition mapping. Physical drivers implement PartitionableBlockDeviceAPI; their partition children implement FSBlockDeviceAPI. See Block-Device-Layer.
BootImageBuilder Build tool (builder/src/builder/org/jnode/build/x86/BootImageBuilder.java) that compiles Java classes and assembles them into the boot image at build time.
Classlib The GNU Classpath / OpenJDK standard library JAR (all/lib/classlib.jar), downloaded during the build. Provides java.* and javax.* classes.
block bitmap A per-block-group bitmap stored in a single block, where each bit marks whether the corresponding data block is allocated or free. JNode's implementation is in BlockBitmap.java. See Ext2-Ext3-Filesystem.
block group A partition of the ext2 filesystem containing a superblock copy, group descriptor table, block bitmap, inode bitmap, inode table, and free data blocks. JNode's implementation is in GroupDescriptor.java. See Ext2-Ext3-Filesystem.
Catalog (HFS+) The B-Tree file storing all file and directory records on an HFS+ volume. Keys are (parent CNID + Unicode name) pairs; leaf records are CatalogFolder, CatalogFile, or CatalogThread entries. JNode's implementation is org.jnode.fs.hfsplus.catalog.Catalog. See HFS+-Filesystem.
CNID (Catalog Node ID) The numeric identifier for each file and directory in HFS+. The root directory is CNID 2; CNID 1 is the parent-of-root. Used as the parent key in catalog lookups. See HFS+-Filesystem.
CoreThreadScheduling JNode's hybrid preemptive/cooperative thread scheduler. Combines compiler-injected yieldpoints (INT 0x30) for cooperative switching with timer interrupts for preemptive time-slicing. Managed by VmScheduler per VmProcessor, uses TSI flags to coordinate switch conditions. See Core-Thread-Scheduling.
Descriptor An XML file in <subproject>/descriptors/ that defines a plugin's identity, dependencies, exports, and extensions.
Extension A contribution by one plugin to another plugin's extension point. Declared via <extension> in the descriptor XML.
Extension point A named hook declared by a plugin where other plugins can register extensions. Declared via <extension-point> in the descriptor XML.
Exception handler table JNode's compiled representation of bytecode try-catch blocks. For interpreted code, handlers use bytecode PC offsets (VmInterpretedExceptionHandler); for compiled code, they use native addresses (VmCompiledExceptionHandler). The VmCompiledCode.eTable array drives stack unwinding via VmSystem.findThrowableHandler(). See Exception-Handler-Table.
Flags slot A slot in the JNode object header (typically at offset -2) used for GC marking, synchronization state, and hashcode storage.
FAT12 The 12-bit File Allocation Table variant, used on floppies and small media (up to 4KB clusters, ~16MB capacity). See FAT-Filesystem.
FAT16 The 16-bit File Allocation Table variant, used on media up to 2GB with 32KB clusters. See FAT-Filesystem.
FAT32 The 32-bit File Allocation Table variant, supporting media up to 8TB (with 32KB clusters) and root directory as a cluster chain. See FAT-Filesystem.
Field offset The memory offset (in slots) of an instance field relative to an object's base address. Calculated during class loading and stored in VmInstanceField.offset for runtime field access. See Field-Offset-Calculation.
File handle A lightweight wrapper around an open file that tracks the current read/write position and access mode. JNode's implementation is FileHandleImpl managed by FileHandleManager. See FileHandle-Implementation.
FileSystemType The factory interface for filesystem drivers in JNode (org.jnode.fs.FileSystemType). Each plugin implements create(Device, boolean) to probe a block device and instantiate a FileSystem instance. Managed by FileSystemTypeManager via the plugin extension point. See VFS-Layer.
FSEntry A file or directory entry returned by FSDirectory.getEntry() (org.jnode.fs.FSEntry). Provides metadata (name, dates, permissions) and access to FSFile or FSDirectory views. Used throughout the VFS path resolution chain. See VFS-Layer.
Init-jar A nested archive inside the boot image containing all plugin JARs and descriptors. Extracted by InitJarProcessor at boot.
InitialNaming JNode's service registry (org.jnode.naming.InitialNaming). A simple name→object map used to register and look up OS singleton services. Uses Class keys (not strings) for type-safe, refactor-friendly lookups. See InitialNaming-Service-Registry.
ISO9660 A CD-ROM filesystem standard (ISO-9660 Level 1/2) supported by JNode's org.jnode.fs.iso9660 plugin. Defines directory structure, volume descriptors, and filename restrictions (8.3 format). See Boot-CD-ROM-Builder.
Isolate A lightweight process abstraction in JNode. Each isolate has its own VmIsolatedStatics table for per-isolate static fields. See Isolate-Implementation.
IMT Interface Method Table. A fixed 64-element hash table in the TIB used for interface method dispatch. Lookup uses selector % 64; collisions are handled via chained lists. See IMT.
IsolateThread The main thread type used to start a new isolate (core/src/core/org/jnode/vm/isolate/IsolateThread.java). Wraps the main thread of each isolate with isolate-specific I/O streams and the VmIsolatedStatics table. See IsolateThread.
Assembler A software tool that converts assembly language source code into machine code. JNode uses its custom JNasm assembler. See JNasm-Assembler.
JNasm JNode's custom x86 assembler written in Java (builder/src/builder/org/jnode/jnasm/). Assembles .asm files into native code for the boot image. See JNasm-Assembler.
Addressing mode A classification of how an operand accesses data — e.g., register (R), memory displacement (E), immediate constant (C), absolute memory (A), scaled-index (S). JNasm encodes up to 3 operand types per instruction as a 3-digit base-8 integer in AbstractX86Module. See JNAsm-Instruction-Encoding.
Instruction encoding The process of translating an assembly mnemonic and operands into x86 machine code bytes. JNasm uses emit methods in X86Core.java that select the correct encoding variant based on addressing mode, then delegate to X86Assembler.writeXXX() for byte emission. See JNAsm-Instruction-Encoding.
ModR/M byte An x86 addressing byte that encodes the addressing mode (register-direct, register-indirect, base+index, etc.) and register operands for an instruction. Generated by X86Assembler (not directly in JNasm). See JNAsm-Instruction-Encoding.
SIB byte Scale-Index-Base byte. An optional x86 byte following the ModR/M byte that encodes complex memory addressing: [base + index * scale + displacement]. Generated by X86Assembler. See JNAsm-Instruction-Encoding.
Macro A text substitution mechanism in assembly language that enables code reuse. JNasm supports single-line (#define) and multi-line (.macro/.endm) macros. See JNasm-Assembler.
MAC address Media Access Control address. A unique 48-bit hardware identifier assigned to network interfaces, used for link-layer addressing in Ethernet frames. JNode's EthernetAddress class wraps 6 bytes with parsing, formatting, and broadcast detection. See Ethernet-Driver.
LBA (Logical Block Addressing) A disk addressing scheme that uses linear sector numbers instead of CHS (Cylinder-Head-Sector) geometry. JNode's IDE driver supports both 28-bit LBA (up to 128GB) and 48-bit LBA (up to 128PB). See IDEDisk-Driver.
L1 Compiler The fast, non-optimizing JIT compiler (org.jnode.vm.x86.compiler.l1a). Uses a VirtualStack with delayed emission to keep values in registers within basic blocks. Applies lightweight optimizations (inlining, constant folding) via OptimizingBytecodeVisitor. See L1-Compiler-Deep-Dive.
L1 Compiler Registers The register allocation (X86RegisterPool) and virtual stack (VirtualStack) mechanisms used by the L1 compiler. Manages GPR and XMM pools, item state transitions (CONSTANT→GPR→STACK), and type-safe stack operations. See L1-Compiler.
L2 compiler The optimizing JIT compiler (org.jnode.vm.x86.compiler.l2). Uses an SSA-based IR, linear-scan register allocation, and multiple optimization passes. See L2-Compiler-Deep-Dive.
LFN Long File Name. A VFAT extension to the FAT filesystem that stores Unicode filenames in special directory entries preceding the 8.3 alias. Supports filenames up to 255 characters. See FAT-Filesystem.
MMTk Memory Management Toolkit. A GC framework integrated into JNode via a VM interface layer under core/src/mmtk-vm/, providing plan and space abstractions for various GC strategies (NoGC, MarkSweep, GenRC). See MMTk-Bindings.
Multiboot The boot protocol used by GRUB. JNode's kernel.asm includes a Multiboot header so GRUB can load it.
MuParser JNode's custom backtracking parser that validates shell command tokens against a declarative syntax tree.
Object layout The internal memory structure of a Java object in the JNode heap, including the two-slot header (Flags and TIB) and the alignment rules.
Capability chain A linked list of optional feature structures in PCI configuration space. Each capability (MSI, Power Management, etc.) has an ID, a next pointer, and capability-specific registers at its offset. See PCI-Capability-Structure.
MSI (Message Signaled Interrupts) A PCI capability (MSICapability, ID 0x05) that allows devices to trigger interrupts via memory writes instead of wire-based IRQ lines. Supports multiple message vectors and works across APIC topologies. See PCI-Capability-Structure.
Power Management capability A PCI capability (PMCapability, ID 0x01) that provides standardized power state control (D0-D3), status registers, and data registers. Implemented via configuration space registers at capability offsets. See PCI-Capability-Structure.
Plugin A modular unit in JNode. Has an XML descriptor, its own classloader, declared dependencies, and a lifecycle (start/stop).
PluginBuilder Ant task in org.jnode.build.packager.PluginBuilder that transforms third-party JARs/directories into JNode plugins with generated descriptors and shell scripts.
NetDeviceImpl Wrapper class extending VMNetDevice that bridges JNode's Device framework to the Java networking API. Instances are created by NetAPIImpl during device enumeration. See Network Device Plugin.
PluginManager The service that manages plugin lifecycle — loading, starting, stopping (DefaultPluginManager).
PluginRegistry The registry of all known plugin descriptors. Pre-populated at build time by BootImageBuilder.
PIO (Programmed I/O) A disk transfer mode where the CPU directly reads/writes data via I/O port commands. In JNode's IDE driver, PIO transfers use the 16-bit data register at I/O port 0x1F0/0x170 with polling-based status checking. See IDEDisk-Driver.
Pointer event An event (PointerEvent) generated by mouse or pointing devices containing X/Y/Z (wheel) values, button state (left/middle/right bitmask), and absolute/relative coordinate mode. Delivered to registered PointerListener instances via the driver framework. See Input-Drivers.
Shell syntax A declarative system in org.jnode.shell.syntax for defining command-line argument patterns and auto-completion.
SocketBuffer The packet container class in JNode's network stack (org.jnode.net.SocketBuffer). Inspired by Linux's sk_buff, it chains header objects (LinkLayerHeader, NetworkLayerHeader, TransportLayerHeader) and supports in-place header prepend/strip without copying payload data. See Network-Layers.
Stack frame The region of memory allocated on the stack for a single method invocation. Contains saved EBP, method ID, local variables, and the operand stack. Accessed via EBP-relative offsets.
TCP Transmission Control Protocol. A connection-oriented transport layer protocol providing reliable, ordered, error-checked data delivery. JNode's implementation includes a full 11-state state machine (CLOSED through TIME_WAIT), three-way handshake connection establishment, four-way handshake teardown, and flow control via sliding window. See TCP-Protocol.
TCPInputStream JNode's input stream wrapper around TCPControlBlock.appRead() (org.jnode.net.ipv4.tcp.TCPInputStream). Closing the stream calls impl.close(), which triggers the FIN handshake and destroys the underlying control block. See TCP-Socket-Impl.
TCPOutputStream JNode's output stream wrapper around TCPControlBlock.appSendData() (org.jnode.net.ipv4.tcp.TCPOutputStream). Closing the stream calls impl.close(), which triggers the FIN handshake and destroys the underlying control block. See TCP-Socket-Impl.
Surface A paintable 2D region interface (org.jnode.driver.video.Surface) that exposes drawing, filling, and image blitting operations on either a video device framebuffer or an in-memory image buffer. The core abstraction for all GUI rendering in JNode. See Video-Driver-Architecture.
TIB (Type Information Block) A per-class array (linked at object header offset -1) containing the class's vtable, IMT, superclass chain, and other runtime type metadata. See TIB.
TSI (Thread Switch Indicator) A 4-bit atomic flags word in VmProcessor (TSI_SWITCH_NEEDED, TSI_SYSTEM_READY, TSI_SWITCH_ACTIVE, TSI_BLOCK_SWITCH) that coordinates when and whether thread context switches can occur. Accessed from both Java (atomic Word operations) and assembly code (direct memory access). See TSI.
UDP User Datagram Protocol. A connectionless transport layer protocol providing minimal overhead datagram delivery over IPv4. JNode's UDP implementation uses an 8-byte header (source port, destination port, length, checksum) with pseudo-header checksums, supports ephemeral port allocation (1024–65535), and sends ICMP port-unreachable for undeliverable datagrams. See UDP-Protocol.
Unboxed types High-performance value types (Address, Word, Offset, Extent) in org.vmmagic.unboxed that JIT compilers compile directly into machine registers, bypassing object allocation. Used throughout JNode's core and driver code (~400 references). See Unboxed-Types.
Unsafe org.jnode.vm.Unsafe — the constrained low-level operations API providing direct memory access, debug output, hardware I/O, and VM introspection. Requires @MagicPermission annotation. See VM-Unsafe.
VmScheduler The scheduler per VmProcessor. Maintains the readyQueue, sleepQueue, and allThreadsQueue; implements the priority-based thread selection policy. See Core-Thread-Scheduling.
Yieldpoint A compiler-injected checkpoint in compiled code that triggers INT 0x30, invoking the context-switch handler in VmProcessor.reschedule(). Yieldpoints enable cooperative scheduling; methods marked @Uninterruptible have yieldpoints suppressed. See Yieldpoint.
VMagic / vmmagic org.vmmagic — unboxed types (Address, Word, Offset) and pragma annotations used by the VM and JIT compiler.
VmMagic org.jnode.vm.VmMagic — static methods for low-level VM operations (getting object addresses, type info, etc.).
VmProcessor Represents a CPU core. Manages the per-processor thread queue and scheduler state.
VmProcess JNode's java.lang.Process implementation (org.jnode.vm.VmProcess). Represents a user-level VM process created via VmProcess.createProcess(), which uses VmProcessClassLoader for process-level class isolation. Distinct from Isolate which provides stronger isolation via separate statics tables. See VMProcessClassLoader, Isolate-Implementation.
VmSystem org.jnode.vm.VmSystem — the VM's main initialization class. Sets up classloading, memory, scheduler, I/O.
VmThread JNode's thread implementation (org.jnode.vm.scheduler.VmThread). Wraps java.lang.Thread with scheduler-specific state.
VmType The VM's representation of a Java class (org.jnode.vm.classmgr.VmType). Holds the method table, field layout, constant pool, and TIB reference. See Type-System-Internals.
VmArray The base runtime object header for array instances (org.jnode.vm.classmgr.VmArray). Extends VmSystemObject and defines LENGTH_OFFSET and DATA_OFFSET for the array length word and data area. Not to be confused with VmArrayClass. See VmType-Hierarchy.
vtable Virtual method table. A per-class array of method pointers in the TIB starting at index 5, used for class inheritance method dispatch. Grows with each subclass. See vtable.
Virtual Methods Dispatch The layered method dispatch system in JNode: vtable for virtual calls, IMT for interface calls, CompiledIMT for optimized dispatch, and constant-pool resolution for static calls. See Virtual-Methods-Dispatch.
SCSI command A command descriptor block (CDB) sent to a SCSI device via executeCommand(CDB, byte[], int, long). JNode implements CDBs in org.jnode.driver.bus.scsi.cdb organized by command set (SPC for primary commands, MMC for multimedia). See SCSI-Driver.
SPD (Serial Presence Detect) A 128-byte EEPROM on DIMM modules containing memory configuration data (size, type, timing, manufacturer). Accessed via SMBus at address 0xA0-0xA7. JNode's DIMM class reads and parses this data. See SMBus-DIMM.
Sense data Fixed-format status data returned by a SCSI device after a check condition, containing a sense key, additional sense code (ASC), and ASC qualifier (ASCQ). JNode's SenseData wraps the sense buffer. See SCSI-Driver.
XDR (External Data Representation) A binary serialization format for NFS and ONC/RPC protocol data. JNode's NFS client uses anonymous inner classes implementing XdrAble with xdrEncode()/xdrDecode() methods to marshal/unmarshal requests and responses over the wire. See NFS2-Client.
Serial Port Driver Driver for PC serial ports (COM1-4) using 16550/16450 UART hardware. Accessed via I/O ports with configurable baud rate, data bits, stop bits, and parity. Implements ByteChannel for NIO-based I/O. See Serial-Port-Driver.

Clone this wiki locally