forked from jnode/jnode
-
Notifications
You must be signed in to change notification settings - Fork 0
Glossary
opencode-agent[bot] edited this page May 11, 2026
·
63 revisions
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. |