Skip to content

Changelog

Levente Santha edited this page May 11, 2026 · 109 revisions

Changelog

Log of wiki updates. Maintained by contributors (human and LLM) after each edit session.

2026-05-11

  • Updated Ext2-Ext3-Filesystem documentation — Enhanced Ext2-Ext3-Filesystem.md with additional helper and manager classes: INodeDescriptor (transient inode allocation state), FSBitmap (abstract bitmap base), BlockReservation/INodeReservation (allocation result objects), BlockSize enum; expanded Gotchas section with bitmap arithmetic, preallocation, block allocation preference, and transient allocation state notes. Added glossary entries for block bitmap, block group, extent, group descriptor, inode, inode bitmap, journaling, sparse_super, superblock. Updated index.md Concepts → Pages with the new technical terms. Related classes: Superblock, GroupDescriptor, INode, INodeTable, BlockBitmap, INodeBitmap, Ext2Constants, Ext2Print.

  • Added NoCloseInputStream spoke page — Created NoCloseInputStream.md documenting JNode's decorator InputStream that prevents close() from propagating to the wrapped stream: the delegation pattern, no-op close() override, usage context during boot for shared streams, and gotchas (no ownership semantics, silent suppression). Updated index.md (Pages table, Concepts → Pages with NoCloseInputStream entry, Source Path → Pages with boot/ path), and linked from Boot-Sequence.

  • Added DeviceFinder spoke page — Created DeviceFinder.md documenting JNode's device discovery mechanism: the DeviceFinder interface for finding devices on a bus, the DeviceFinderPlugin bootstrap that initiates discovery, the plugin extension point org.jnode.driver.finders, the findDevices(DeviceManager, Bus) method contract, implementations for PCI, serial, PS/2, VGA, floppy, loopback, and more, the integration with DeviceToDriverMapper for driver binding, and gotchas (finder ordering, bus hierarchy, deferred initialization, failure isolation). Updated index.md (Pages table, Concepts → Pages with DeviceFinder entry, Source Path → Pages with finder/ path, Task Routing with device discovery, bus driver, and device type routes), Glossary.md (added DeviceFinder definition), and linked from DeviceManager, Driver-Framework, Bus-Drivers, Plugin-System.

  • Added DeviceManagerListener spoke page — Created DeviceManagerListener.md documenting JNode's observer interface for device discovery and binding events: the deviceRegistered/deviceUnregister callbacks, registration and dispatch in AbstractDeviceManager, the FBConsole deferred initialization pattern, the DeviceListener vs DeviceManagerListener distinction (registry lifecycle vs driver lifecycle), and gotchas (fire order, 100ms warning threshold, memory leak risk). Updated index.md (Pages table, Concepts → Pages with DeviceManagerListener entry, Source Path → Pages with driver/ path, Task Routing with device lifecycle monitoring and deferred driver initialization routes), Glossary.md (added DeviceManagerListener entry), and linked from DeviceManager and Driver-Framework.

  • Added DriverPermission spoke page — Created DriverPermission.md documenting JNode's security permission class for driver operations: extends BasicPermission, known permission names (setPreferredListener used by KeyboardAPI and PointerAPI), permission declaration in plugin descriptors, and permission checking flow via SecurityManager.checkPermission(). Updated index.md (Pages table, Concepts → Pages with DriverPermission entry, Source Path → Pages with driver/ path), and linked from Driver-Framework, Input-Drivers.

  • Added SMBus-DIMM spoke page — Created SMBus-DIMM.md documenting JNode's SMBus driver for DIMM SPD data: SMBus protocol operations (Quick Command, Send/Receive Byte, Block Read/Write), SMBus addresses (0xA0-0xA7 for DIMM), SMBus/SMBusControler/SMBusDevice/DIMM/DIMMDriver classes, SPD table parsing (128-byte EEPROM with memory type, timing, manufacturer), driver initialization flow, and gotchas (SPD reliability, limited memory types, 32-byte block read limit, no write support). Updated index.md (Pages table, Concepts → Pages with SMBus and SPD entries, Source Path → Pages with smbus/ path, Task Routing with bus enumeration route), Glossary.md (added SPD entry), and linked from Bus-Drivers, Driver-Framework, Device-Manager, Memory-Management.

  • Added DesktopFrame spoke page — Created DesktopFrame.md documenting JNode's desktop window manager system: Swing-based DesktopFrame (JFrame containing JDesktopPane), Desktop class for control bar integration, ControlBar with ApplicationBar and WindowBar components, plugin-based application discovery via extension points, window tracking via JInternalFrame management, and gotchas (PluginClassLoader requirement, Swing dependency, background image positioning, color preferences persistence). Updated index.md (Pages table, Concepts → Pages with DesktopFrame, ControlBar, ApplicationBar, WindowBar entries, Source Path → Pages with desktop/ path, Task Routing with GUI development, window management, application launching routes), and linked from AWT-Peer-Implementation, GUI-AWT, Video-Driver-Architecture, Thinlet, Plugin-System.

  • Added Ethernet-Driver spoke page — Created Ethernet-Driver.md documenting JNode's Ethernet driver subsystem: EthernetAddress (48-bit MAC address handling with parsing, formatting, broadcast detection), EthernetHeader (IEEE 802.3 frame header parsing/construction), EthernetConstants (protocol IDs and frame size constants), EthernetUtils (protocol extraction from headers), driver hierarchy (AbstractEthernetDriverBasicEthernetDriver → concrete implementations like RTL8139), receive/transmit paths with frame padding and loopback detection, and gotchas (byte order, length vs type ambiguity, broadcast loopback). Updated index.md (Pages table, Concepts → Pages with Ethernet Driver and MAC address entries, Source Path → Pages with ethernet/ paths, Task Routing with network device driver route), Glossary.md (added MAC address entry), and linked from Network-Stack, Network-Layers, ARP, Driver-Framework.

  • Updated CoreThreadScheduling documentation — Updated index.md (Concepts → Pages: updated CoreThreadScheduling mapping to include TSI, Yieldpoint, Thread-Scheduling, Architecture; Task Routing: added Interrupt-Handling and Architecture to "Debugging thread issues" route), and Glossary.md (added CoreThreadScheduling definition: hybrid preemptive/cooperative thread scheduler with yieldpoints and TSI).

  • Added DeviceAlreadyConnectedException spoke page — Created DeviceAlreadyConnectedException.md documenting JNode's exception for device already connected to driver errors: the exception hierarchy (DeviceAlreadyConnectedException extends DriverException), triggering conditions in Driver.connect() when a driver already bound to one device receives a connect call for another device, connection flow via Device.setDriver(), constructor variants, and gotchas (not directly thrown, single-device constraint, silent failure prevention). Updated index.md (Pages table, Concepts → Pages with DeviceAlreadyConnectedException entry, Source Path → Pages with driver/ path), and linked from Driver-Framework. BootLog interface with five severity levels (DEBUG, INFO, WARN, ERROR, FATAL), BootLogInstance singleton accessor using InitialNaming, BootLogImpl implementation with Unsafe.debug() fallback, initialization flow in VmSystem.initialize(), transition to Log4j via Log4jConfigurePlugin, and gotchas (no filtering, no category separation, InitialNaming dependency, debug stream only affects DEBUG level). Updated index.md (Pages table, Concepts → Pages with Boot log entry, Source Path → Pages with bootlog/ path, Task Routing with boot crash debugging route), and linked from Boot-Sequence, InitialNaming-Service-Registry, Architecture.

  • Added HFS+-Filesystem spoke page — Created HFS+-Filesystem.md documenting JNode's HFS+ (MacOS) filesystem implementation: volume header (SuperBlock) at sector 2 with magic/version/block size/fork descriptors, Catalog B-Tree for file/directory records (CatalogFolder/CatalogFile/CatalogThread), extent overflow B-Tree, mount flow (read-only for journaled volumes), directory traversal via B-Tree lookups, file data access via direct/overflow extents, hard link support via private data directories, and gotchas (read-only enforcement, write support stubbed, no journal replay, no Unicode normalization). Updated index.md (Pages table, Concepts → Pages with HFS+-Filesystem entry, Source Path → Pages with hfsplus/ path, Task Routing with filesystem driver route), Glossary.md (added Catalog (HFS+) and CNID entries), and linked from Filesystem-Layer, VFS-Layer, Block-Device-Layer.

  • Added NetPermission spoke page — Created NetPermission.md documenting JNode's security permission class for network operations: extends BasicPermission, used by DHCPClient (dhcpClient permission) and BOOTPClient (bootpClient permission) for security manager checks, permission checking flow, known permission names, and gotchas (no actions parameter, optional security manager, static permission names, plugin classloader isolation). Updated index.md (Pages table, Concepts → Pages with NetPermission entry, Source Path → Pages with net/src/net/org/jnode/net/ path), and linked from Network-Stack and NetAPI-Implementation.

  • Added Keyboard-Layouts spoke page — Created Keyboard-Layouts.md documenting JNode's locale-specific keyboard interpreter subsystem: 19 layout classes (US_en, DE, FR, IT, ES, HU variants, RU, SE, DK, NO, DV, BE, CH), AbstractKeyboardInterpreter base with modifier state, dead key handling via exception-based control flow (DeadKeyException/UnsupportedKeyException), Key/Keys per-scancode mapping, KeyboardLayoutManager locale resolution, plugin extension point registration, CapsLock 4-state cycle, and gotchas (dead key performance, CapsLock two-key requirement, stateful instances, limited numpad). Updated index.md (Pages table with Keyboard-Layouts entry, Concepts → Pages with Keyboard layout pointing to new page, Source Path → Pages with l10n/ path), and linked from Input-Drivers, Driver-Framework, GUI-AWT.

  • Added Mouse-Protocol-Handlers spoke page — Created Mouse-Protocol-Handlers.md documenting JNode's pluggable PS/2 mouse protocol decoder system: MouseProtocolHandler interface, MouseProtocolHandlerManager plugin-based factory, LogitechProtocol 3-byte packet decoding, LogitechWheelMouseProtocol 4-byte wheel extension, MouseInterpreter probe and handler selection flow, and gotchas (ID persistence anomaly, overflow discard, null return semantics, plugin initialization order). Updated index.md (Pages table, Concepts → Pages with Mouse Protocol Handlers entry, Source Path → Pages with input/ path), and linked from Input-Drivers, Driver-Framework.

  • Added BJorne-Arithmetic-Evaluator spoke page — Created BJorne-Arithmetic-Evaluator.md documenting JNode's shell arithmetic expression evaluator: shunting-yard algorithm with operator/operand stacks, POSIX operator precedence (, *, /, %, +, -, ++, --, prefix/postfix), variable resolution via BjorneContext, integer-only arithmetic (long), increment/decrement side effects, and gotchas (no floating-point, no overflow detection, division by zero errors, variable type requirements). Updated index.md (Pages table, Concepts → Pages with BJorne Arithmetic Evaluator entry, Source Path → Pages with bjorne/ path, Task Routing with expression evaluation route), and linked from Shell-Commands, Syntax. — Created BJorne-Arithmetic-Evaluator.md documenting JNode's shell arithmetic expression evaluator: shunting-yard algorithm with operator/operand stacks, POSIX operator precedence (, *, /, %, +, -, ++, --, prefix/postfix), variable resolution via BjorneContext, integer-only arithmetic (long), increment/decrement side effects, and gotchas (no floating-point, no overflow detection, division by zero errors, variable type requirements). Updated index.md (Pages table, Concepts → Pages with BJorne Arithmetic Evaluator entry, Source Path → Pages with bjorne/ path, Task Routing with expression evaluation route), and linked from Shell-Commands, Syntax.

  • Added Plugin-Documentation-Task spoke page — Created Plugin-Documentation-Task.md documenting JNode's Ant build task that generates navigable HTML plugin documentation: the execution flow (descriptor scanning, per-plugin HTML generation, overview pages), PluginData/DotBuilder/LicenseEntry/PackageData helper classes, license matching against KNOWN_LICENSES, reverse dependency lookup (Required By), optional Graphviz dependency tree, Ant integration in all/build.xml, and gotchas (Graphviz dependency, duplicate full ID detection, no Javadoc integration). Updated index.md (Pages table with new page entry, Concepts → Pages with Plugin Documentation Task entry, Source Path → Pages with documentation/ path, Task Routing with "Adding or modifying a plugin" route), and linked from Build-System and Plugin-System.

  • Added GDB-Debugging-Support spoke page — Created GDB-Debugging-Support.md documenting JNode's in-kernel debugger: Debugger main entry point with keyboard/system trigger activation, DebuggerPlugin for plugin integration, the DebugState state machine hierarchy (RootState, ThreadListState, ThreadState), thread inspection capabilities (listing all/running/waiting threads, viewing stack traces, interrupting threads), and gotchas (no GDB protocol implementation, stack trace limitation, priority keyboard access). Updated index.md (Pages table with new page entry, Concepts → Pages with GDB Debugging Support entry, Source Path → Pages with debugger/ path, Task Routing with "Using in-kernel debugger" route), and linked from Architecture, Testing, Core-Thread-Scheduling.

  • Added JNAsm-Dual-Assembler spoke page — Created JNAsm-Dual-Assembler.md documenting the X86DualAssemblerFactory proxy pattern: CGLIB-based dynamic proxy dispatching write operations to both X86BinaryAssembler and X86TextAssembler simultaneously, listing format generation, position tracking, non-write operation forwarding, NASM compatibility testing via DualAssemblerTest, and BootImageBuilder integration with optional verbose output. Updated index.md (Pages table with new page entry, Concepts → Pages with JNAsm Dual Assembler entry, Source Path → Pages with jnasm/util/ path, Task Routing with "Understanding JNasm instruction encoding" route), and linked from JNasm-Assembler, JNAsm-Instruction-Encoding, Build-System, Assembly-Files.

  • Added Network-Layer-Manager spoke page — Created Network-Layer-Manager.md documenting JNode's central registry for network protocol layers: NetworkLayerManager interface defining the contract, DefaultNetworkLayerManager implementation managing protocol registration via extension points, packet receive and dispatch flow via protocol ID lookup, async queue processing, and gotchas (dynamic reload, device filtering, InitialNaming dependency, no default route for unknown protocols). Updated index.md (Pages table with new page entry, Concepts → Pages with bold NetworkLayerManager entry and updated existing references, Source Path → Pages with net/src/net/org/jnode/net/ and service/ paths, Task Routing with protocol addition route), and linked from Network-Layers, Network-Stack, NetAPI-Implementation, Network Device Plugin, Driver-Framework.

  • Added DNS-Resolver spoke page — Created DNS-Resolver.md documenting JNode's DNS resolver: Resolver interface, ResolverImpl singleton using dnsjava (ExtendedResolver, Lookup), hosts map (localhost only), DNS server management (addDnsServer/removeDnsServer), DHCP integration via DHCPClient, getByName flow with hosts-first then DNS query, and gotchas (stubbed getByAddress, hardcoded defaults, no cache, @SharedStatics usage, dnsjava upgrade needed). Updated index.md (Pages table, Concepts → Pages with DNS Resolver/DNS entries, Source Path → Pages with ipv4/util/ path, Task Routing with network debugging and DNS lookup routes), Glossary.md (added DNS Resolver entry), and linked from Network-Stack, NetAPI-Implementation, IPv4-Protocol.

  • Added NFS2-Client spoke page — Created NFS2-Client.md documenting JNode's NFSv2 client: NFS2Client implementing NFS procedures (LOOKUP, READ, WRITE, CREATE, etc.) via ONC/RPC, Mount1Client for mount protocol (program 100005), XDR encoding/decoding via XdrAble inner classes, file handle management (32-byte opaque handle), RPC client pooling, portmap resolution, retry logic, and gotchas (v2 only, no VFS integration, 8KB max transfer, hardcoded constants). Updated index.md (Pages table, Concepts → Pages with NFS2-Client entry, Source Path → Pages with nfs/nfs2/ path, Task Routing with remote filesystem and network filesystem debugging routes), Glossary.md (added XDR entry), and linked from Network-Stack, Network-Layers, VFS-Layer, Filesystem-Layer.

  • Updated FSEntry-Cache index entry — Added FSEntry-Cache to Concepts → Pages section in index.md (FSEntry-Cache and FSEntry cache entries) for proper cross-reference. Related Manager classes identified: FileHandleManager, FileSystemManager, FileSystemTypeManager, FileSystemMounter, FileSystemPlugin.

  • Added Thinlet spoke page — Created Thinlet.md documenting JNode's Thinlet GUI framework integration: XML markup UI definition via parse(), widget tree model backed by Hashtable properties, type-specific layout engine (doLayout()) for desktop/panel/dialog/combobox/textfield/textarea/tabbedpane/list/table/tree/menubar/spinbox/slider/progressbar/splitpane, custom AWT Graphics rendering (paintRect, paintArrow, paintScroll, paintField), central event dispatching (processEvent()) with timer thread for repeat events/tooltips, 9-color scheme, grid-bag layout with weight distribution, and action handler reflection pattern. Updated index.md (Pages table, Concepts → Pages with Thinlet entry, Source Path → Pages with thinlet/ path, Task Routing with Thinlet GUI development route), Glossary.md (added Thinlet entry), and linked from GUI-AWT and AWT-Peer-Implementation.

2026-05-10

  • Added Font-Rendering spoke page — Created Font-Rendering.md documenting JNode's dual font rendering system: TrueType (TTF) via TTFFontData, GlyphRenderer with summed-area anti-aliasing, and BDF via JavaCC-generated BDFParser; the plugin-based DefaultFontManager with FontProvider discovery; key classes (BDFFontContainer, BDFGlyph, BDFMetrics, TTFFont, TTFTextRenderer, TTFInput, CMapTable, GlyphTable); rendering pipelines with code flow diagrams; and gotchas (BDF priority default, dual glyph abstractions, hardcoded 128px master height, no hinting). Updated index.md (Pages table, Concepts → Pages with Font-Rendering/Font provider/BDF/TrueType entries, Source Path → Pages with font/ and awt/font/ paths, Task Routing with font renderer development route), Glossary.md (added BDF and TrueType entries), and linked from GUI-AWT and AWT-Peer-Implementation.

  • Added RamDisk-Driver spoke page — Created RamDisk-Driver.md documenting JNode's virtual block device using RAM as backing store: RamDiskDriver implementing FSBlockDeviceAPI, RamDiskDevice device class, RamDiskCommand shell command for runtime creation, memory-based read/write via byte[] array, usage in tests (RamDiskDriverContext, TestUtils), initrd integration via InitRamdisk, and gotchas (volatile storage, memory consumption, hardcoded 512-byte sector size, no partition support). Updated index.md (Pages table, Concepts → Pages with RamDisk-Driver/RAM disk entries, Source Path → Pages with ramdisk/ path, Task Routing with RAM disk driver, filesystem testing, and initrd routes), and linked from Block-Device-Layer, VirtualDevices, Driver-Framework, Testing.

  • Added SCSI-Driver spoke page — Created SCSI-Driver.md documenting JNode's SCSI driver subsystem: SCSIDevice abstract base with executeCommand and requestSense, CDB/SCSIBuffer command/data structure layer (SPC and MMC command sets), SCSICDROMDriver with FSBlockDeviceAPI and RemovableDeviceAPI support (2048-byte alignment, media change handling, read-only enforcement), CDROMDeviceToDriverMapper peripheral device type 0x05 matching, MMCUtils for capacity/read/media control, InquiryData/SenseData wrappers, and gotchas (no disk driver, host controller abstraction, peripheral type checks). Updated index.md (Pages table, Concepts → Pages with SCSI Command entry, Source Path → Pages with block/scsi/ and bus/scsi/ paths, Task Routing with block device driver and block alignment routes), Glossary.md (added SCSI command and Sense data entries), and linked from Block-Device-Layer, Driver-Framework, Filesystem-Layer, IDEDisk-Driver, Bus-Drivers, Partition-Tables, ISO9660.

  • Added UDP-Datagram-Socket spoke page — Created UDP-Datagram-Socket.md documenting JNode's java.net.DatagramSocket bridge: UDPDatagramSocketImpl extending AbstractDatagramSocketImpl, send/receive flow with SocketBuffer pipeline, socket options (TOS, broadcast, timeout, interface), port binding via UDPProtocol, PlainUDPDatagramSocketImpl GNU Classpath wrapper, factory registration with JDK, and gotchas (connectionless design, data copy on receive, TTL stubs, unbounded receive queue). Updated index.md (Pages table, Concepts → Pages with UDP Datagram Socket/datagram entries, Source Path → Pages with udp/ path, Task Routing with UDP socket debugging route), and linked from UDP-Protocol, Sockets-Implementation, Network-Stack, Network-Layers.

  • Added Network Device Plugin spoke page — Created Network-Device-Plugin.md documenting JNode's plugin interface for network device drivers: NetPlugin lifecycle management extending the Plugin base class, NetDeviceImpl wrapper bridging JNode Device to Java networking via VMNetDevice, NetAPIImpl for device enumeration and address resolution, DefaultNetworkLayerManager registry for protocol layers, and the packet processing thread. Covered plugin initialization, startup/shutdown sequence, device abstraction pattern, and gotchas (packet thread lifecycle, InitialNaming dependency, extension point requirement, NetDeviceAPI requirement). Updated index.md (Pages table, Concepts → Pages with Network Device Plugin entry, Source Path → Pages with service/ path, Task Routing with network device driver and plugin development routes), Glossary.md (added NetDeviceImpl entry), and linked from Network-Stack, Plugin-System.

  • Added NetAPI-Implementation spoke page — Created NetAPI-Implementation.md documenting JNode's network API implementation bridging the standard Java java.net package with JNode's custom pure-Java network stack: NetAPIImpl core implementation with device enumeration, address resolution, and DNS lookup; NetDeviceImpl wrapper; DefaultNetworkLayerManager registry for protocol layers; NetPlugin lifecycle management. Covered plugin initialization, network device enumeration, address resolution, DNS resolution via network layers, default local address retrieval, and gotchas (no reverse DNS, security manager integration, device lookup exceptions). Updated index.md (Pages table, Concepts → Pages with NetAPI-Implementation/NetworkLayerManager entries, Source Path → Pages with service/ path, Task Routing with network device enumeration and application networking routes), and linked from Network-Stack, Sockets-Implementation, Network-Layers.

  • Added Builder-Packager spoke page — Created Builder-Packager.md documenting JNode's plugin packaging system: PluginBuilder for JAR-to-plugin transformation, PackagerTask abstract base, ScriptBuilder for script generation (.sh/.bat/.jns), MainFinder for main class detection (manifest priority + bytecode ASM scanning), PluginListInsertor for plugin list integration. Covered descriptor auto-generation, three-tier script building strategy (Unix/MS-DOS/scratch), thread safety via StringBuilder, and gotchas (hard-coded /jnode/ path, AllPermission grant, manifest priority). Updated index.md (Pages table, Concepts → Pages with Builder-Packager entry, Source Path → Pages with packager/ path, Task Routing with "Packaging third-party JARs as plugins" route), Glossary.md (added PluginBuilder entry), and linked from Build-System, Plugin-System, Boot-CD-ROM-Builder.

  • Added JNAsm-Instruction-Encoding spoke page — Created JNAsm-Instruction-Encoding.md documenting JNasm's instruction encoding system: the *_ISN constant → reflection-based instruction map → switch dispatch in X86Core.emit(), the addressing mode classification system in AbstractX86Module (7 operand types encoded as 3-digit base-8 integers: NUL_ARG=0, CON_ARG=1, REG_ARG=2, REL_ARG=3, ABS_ARG=4, SCL_ARG=5, ZSC_ARG=6, SEG_ARG=7), the emit method pattern with getAddressingMode() + switch-case + stream.writeXXX() calls, operand size propagation, prefix handling, jump/call label resolution, and ModR/M delegation to X86Assembler. Key components covered: X86Core.java, AbstractX86Module.java, Instruction.java, Address.java, InstructionUtils.java, X86Assembler, and X86Constants. Updated index.md (Pages table, Concepts → Pages with JNasm Instruction Encoding/Addressing mode/Instruction encoding entries, Source Path → Pages with assembler/ path, Task Routing with "Understanding JNasm instruction encoding" route), Glossary.md (added Addressing mode, Instruction encoding, ModR/M byte, SIB byte entries), and linked from JNasm-Assembler and JNasm-Assembler-Design.

  • Added Field-Offset-Calculation spoke page — Created Field-Offset-Calculation.md documenting JNode's runtime field offset calculation: object header structure (FLAGS_SLOT at -2, TIB_SLOT at -1, HEADER_SLOTS = 2), field offset assignment in ClassDecoder (sequential offsets starting at 0 after header), offset resolution in VmNormalClass for inheritance (resolveOffset adds superclass size), VmInstanceField.getOffset() runtime access, TIB array indexing via TIBLayout constants, slot size variations (4 bytes 32-bit, 8 bytes 64-bit), 8-byte object alignment, and gotchas (negative header offsets, wide field alignment, TIB indexing vs field offsets, static fields in separate statics area). Updated index.md (Pages table, Concepts → Pages with Field Offset Calculation/Field offset entries, Source Path → Pages with classmgr/ path, Task Routing with debugging memory issues, debugging method dispatch, understanding VmType internals routes), Glossary.md (added Field offset entry), and linked from Object-Layout, Type-System-Internals, JIT-Compilers, Virtual-Methods-Dispatch.

  • Added Exception-Handler-Table spoke page — Created Exception-Handler-Table.md documenting JNode's bytecode exception table to native exception handling transformation: AbstractExceptionHandler base class, VmInterpretedExceptionHandler for interpreted mode (bytecode PC offsets), VmCompiledExceptionHandler for compiled mode (native addresses), VmCompiledCode.eTable storage, VmSystem.findThrowableHandler() stack unwinding via VmStackFrameEnumerator, VmExceptions for declared exceptions, and gotchas (interpreted vs compiled representation, finally blocks, @Uninterruptible incompatibility, default exception handler, multi-catch ordering, PC-to-address mapping). Updated index.md (Pages table, Concepts → Pages with Exception-Handler-Table entry, Source Path → Pages with classmgr/ path, Task Routing with "debugging exception handling issues" route and updated "Fixing a JIT compiler bug" route), Glossary.md (added Exception handler table entry), and linked from Exceptions-Implementation, JIT-Compilers, Stack-Frame-Layout, Yieldpoint.

  • Added VM-Unsafe spoke page — Created VM-Unsafe.md documenting JNode's org.jnode.vm.Unsafe (distinct from sun.misc.Unsafe): @MagicPermission security model, memory operations (setInts, copy, clear), debug output before classlib init, CPU operations via UnsafeX86 (MSR, CPUID, CR3), port I/O (in/out), address queries, jump table access, and JIT compiler intrinsic generation via MagicHelper. Updated index.md (Pages table, Concepts → Pages with VM Unsafe entry, Source Path → Pages with Unsafe.java/UnsafeX86.java paths, Task Routing with "debugging memory issues" route), Glossary.md (updated Unsafe entry to point to new page), and linked from VM-Magic, Code-Conventions, Memory-Management, Unboxed-Types, JIT-Compilers, Resource-Management.

  • Added FSEntry-Cache spoke page — Created FSEntry-Cache.md documenting JNode's FSEntry caching layer: LinkedHashMap-based LRU cache with 100-entry limit, getEntry/setEntry/removeEntries operations, validity checking via FSObject.isValid(), integration with FileSystemAPIImpl path resolution, and gotchas (hard-coded size, insertion-order LRU, no TTL, synchronized operations). Updated index.md (Pages table, Concepts → Pages with FSEntry-Cache/FSEntry entries, Source Path → Pages with service/def/ path, Task Routing with "Optimizing filesystem performance" route), and linked from VFS-Layer.

  • Added FileHandle-Implementation spoke page — Created FileHandle-Implementation.md documenting JNode's file handle tracking: FileHandleImpl with position tracking (fileOffset), open mode handling (VMOpenMode), exclusive write access via FileHandleManager.FileData, handle duplication, and lifecycle. Covered write exclusion semantics (single write handle per file), position seeking beyond EOF (extends file), and gotchas (stubs for lock/mapImpl, single-byte read/write inefficiency). Updated index.md (Pages table, Concepts → Pages with FileHandle-Implementation/File handle/File position entries, Source Path → Pages with service/def/ path, Task Routing with "Working with file handles" route), Glossary.md (added File handle entry), and linked from VFS-Layer.

  • Added Boot-CD-ROM-Builder spoke page — Created Boot-CD-ROM-Builder.md documenting JNode's bootable CD-ROM ISO assembly: create-cdrom macro in all/build-x86.xml:286, El Torito boot catalog, GRUB integration, mkisofs/ISOTask dual backends, boot image structure, and gotchas. Updated index.md (Pages table, Concepts → Pages with Boot-CD-ROM-Builder entry, Source Path → Pages with build-x86.xml path, Task Routing with "Creating bootable ISO images" route), and linked from Build-System.

  • Added ISO9660 spoke page — Created ISO9660.md documenting JNode's ISO-9660 CD-ROM filesystem implementation: volume descriptors (Primary, Supplementary, Boot, Terminator), directory structure (8.3 filenames), key classes (ISO9660FileSystem, ISO9660Volume, ISO9660Directory), and filesystem support. Updated index.md (Pages table, Concepts → Pages with ISO9660 entry, Source Path → Pages with iso9660/ path), Glossary.md (added ISO9660 entry), and linked from Boot-CD-ROM-Builder and FileSystemType.

  • Added Plugin-Dependency-Checker spoke page — Created Plugin-Dependency-Checker.md documenting JNode's Ant build task that validates plugin dependency declarations against actual bytecode usage: BCEL-based bytecode analysis (superclass, interfaces, fields, methods, constant pool), collectUnmatchedDependencies() for unresolved class detection, assortClassesContainedInImportedPlugins() for unnecessary import detection, Fragment handling, system plugin exclusion, and Ant integration in all/build.xml. Updated index.md (Pages table, Concepts → Pages with Plugin Dependency Checker entry, Source Path → Pages with dependencies/ path, Task Routing with plugin modification route), and linked from Build-System and Plugin-System.

  • Added Serial-Port-Driver spoke page — Created Serial-Port-Driver.md documenting JNode's serial port driver for PC COM1-4 ports using 16550/16450 UART hardware: UART register layout (basePort + 0-7 offsets for data/divisor, IER, FCR, LCR, MCR, LSR, MSR, scratch), baud rate configuration via divisor (115200/divisor formula), default 9600 baud (divisor 12), ByteChannel implementation for NIO-based I/O with busy-wait polling, device discovery via SerialPortFinder registering serial0 (0x3f8/COM1) and serial1 (0x2f8/COM2), and gotchas (busy-wait I/O, no interrupt support, FIFO unused, limited port detection). Updated index.md (Pages table, Concepts → Pages with Serial Port Driver/UART/RS-232 entries, Source Path → Pages with serial/ path, Task Routing with serial port driver development route), Glossary.md (added Serial Port Driver entry), and linked from Driver-Framework, DeviceManager, Resource-Management.

  • Added PCI-Capability-Structure spoke page — Created PCI-Capability-Structure.md documenting JNode's PCI capability structure system: Capability abstract base class with Id constants (PM, AGP, VPD, SLOTID, MSI, CHSWP), createCapability() factory dispatch, MSICapability (message signaled interrupts), PMCapability (power management with capabilities/status/data registers), capability chain layout (CAP_LIST_ID, CAP_LIST_NEXT, CAP_FLAGS), configuration access pattern with offset translation, and gotchas (optional nature, unknown IDs returning anonymous subclasses, MSI platform support, multi-message MSI). Updated index.md (Pages table, Concepts → Pages with PCI Capability Structure/Capability chain/MSI/Power Management capability, Source Path → Pages with pci/ path, Task Routing with debugging hardware resource conflicts route), Glossary.md (added Capability chain/MSI/Power Management capability entries), and linked from Bus-Drivers, Interrupt-Handling, Resource-Management.

  • Added IsolateThread spoke page — Created IsolateThread.md documenting the thread wrapper for isolates: constructor wiring of I/O streams (VmStreamBindings) and statics table (VmIsolatedStatics), run() delegation to VmIsolate.run(), thread group hierarchy, the side-effecting System.setIn/setOut/setErr call in the constructor, and the I/O stream redirection mechanism. Updated index.md (Pages table, Concepts → Pages with IsolateThread entry, Source Path → Pages, Task Routing with "understanding isolate internals" route), and linked from Isolate-Implementation, LoadStatics-Annotation, Core-Thread-Scheduling, Memory-Management, VM-Magic.

  • Added LoadStatics-Annotation spoke page — Created LoadStatics-Annotation.md documenting the @LoadStatics annotation: method-level pragma marking methods whose static field table must be reloaded at every entry via STATICS register load at the method prologue. Covers annotation definition, pragma registration via ClassDecoder, compiler integration in L1/L2 X86StackFrame, typical usage pattern with @Uninterruptible on boot/kernel entry points, and gotchas (prologue overhead, independence from @SharedStatics, register dependency). Updated index.md (Pages table, Concepts → Pages with LoadStatics Annotation entry, Source Path → Pages with LoadStatics.java path, Task Routing with debugging thread issues route). Linked from Isolate-Implementation, Kernel-Entry-Point, VM-Magic, Code-Conventions, L1-Compiler, L2-Compiler-Deep-Dive.

  • Added Compiler-IR spoke page — Created Compiler-IR.md documenting JNode's Compiler Intermediate Representation: SSA form, control flow graph construction, dominance analysis, optimization pipeline, linear scan register allocation. Key components include IRControlFlowGraph, IRBasicBlock, IRGenerator, Variable, LinearScanAllocator, SSAStack, and quad-based IR instructions. Covered IR construction phases (bytecode parsing, CFG building, quad generation, live variable analysis), SSA transformation (dominance computation, phi placement, variable renaming), optimization passes (constant folding, dead code elimination), register allocation, and code generation. Updated index.md (Pages table, Concepts → Pages with Compiler IR entry, Source Path → Pages with compiler/ir/ path, Task Routing with Performance profiling (JIT) and Fixing a JIT compiler bug routes), and linked from JIT-Compilers, L2-Compiler-Deep-Dive, JIT-Compiler-IR.

  • Added VM-Classloader spoke page — Created VM-Classloader.md documenting JNode's VM classloader system: VmClassLoader abstract base, VmSystemClassLoader default loading from URLs/RtJar/ResourceLoaders, VmJavaClassLoader wrapping arbitrary ClassLoaders, VmAbstractClassLoader common defineClass logic with security restrictions, PluginClassLoaderImpl per-plugin isolation with prerequisite delegation, and PluginsClassLoader aggregator fallback. Covered class definition flow, array class handling, JIT compiler integration (architecture, IMT compilation, selector maps, statics management), and gotchas (bootstrap class gating, security restrictions on package definition, array class caching, advisory parent-first, plugin classloader prerequisite-first delegation, ClassInfo wait/notify concurrency). Updated index.md (Pages table, Concepts → Pages with VM Classloader entry, Source Path → Pages with classmgr/ path, Task Routing with understanding class loading route), and linked from Type-System-Internals, Plugin-System, Class-Library-Integration.

  • Added DeviceToDriverMapper spoke page — Created DeviceToDriverMapper.md documenting JNode's driver discovery strategy pattern: the DeviceToDriverMapper interface with match levels (-1 through 2), plugin extension point registration, mapper loading via reflection with ConfigurationElement/default constructor patterns, match level sorting in AbstractDeviceManager, first-match-wins driver binding flow, PCI ID matching with mask support, and gotchas (counterintuitive negative priority values, first-match-wins semantics, null-return contract, hot-plug support, mapper statelessness). Updated index.md (Pages table, Concepts → Pages with DeviceToDriverMapper/mapper match level/device-to-driver mapping entries, Source Path → Pages, Task Routing tables with device driver development and device discovery routes), and linked from DeviceManager. — Created Input-Drivers.md documenting JNode's input driver subsystem: KeyboardInterpreter scancode-to-event translation with modifier state, dead key handling, and locale-specific layouts; MouseProtocolHandler packet decoding for PS/2 mice; KeyboardLayoutManager and MouseProtocolHandlerManager as plugin-based factory managers; InputPlugin as the entry point binding both managers to InitialNaming; and gotchas (exception-based dead key flow, CapsLock 4-state cycle, stateful interpreter instances, ID-based mouse protocol detection). Updated index.md (Pages table, Concepts → Pages, Source Path → Pages, Task Routing tables) and linked from Driver-Framework and GUI-AWT.

  • Added TCP-Socket-Impl spoke page — Created TCP-Socket-Impl.md documenting JNode's java.net.SocketImpl bridge: lazy stream creation (streams not created until after connect()), stream closure semantics (closing either stream closes the socket via appClose()), socket options (getOption() only — setOption() stubbed), accept() flow, and gotchas (streams tied to socket lifetime, controlBlock null before connect, create() is a no-op). Updated index.md (Pages table, Concepts → Pages with TCP Socket Impl/TCPInputStream/TCPOutputStream entries, Source Path → Pages, Task Routing tables), Glossary.md (added TCPInputStream and TCPOutputStream entries), and linked from Sockets-Implementation.

  • Enhanced Resource-Management page — Expanded coverage with X86IRQManager/PIC8259A integration, dual 8237 DMA controller architecture (address/page registers, 16MB limit), IRQThread dispatch, IRQManager.claimIRQ() synchronous thread creation, IOResourceImpl port validation, DMAConstants I/O port mappings, and child memory resource alignment options. Added 4 new glossary entries (DMA channel, DMAResource) and updated Glossary definition. Updated index.md (Pages table expanded key source paths, Concepts → Pages with DMA channel/DMAResource entries, Source Path → Pages with org.jnode.system/x86 and scheduler paths, Task Routing with IRQ handler development and DMA driver development routes). Linked from Bus-Drivers.

  • Added TSI spoke page — Created TSI.md documenting JNode's Thread Switch Indicator: the 4-bit atomic flags word in VmProcessor (TSI_SWITCH_NEEDED, TSI_SYSTEM_READY, TSI_SWITCH_ACTIVE, TSI_BLOCK_SWITCH), atomic field access via Word.atomicOr/Word.atomicAnd, assembly TSI manipulation in vm-ints.asm (yieldpoint, timeslice, IRQ handlers) and unsafe.asm (Unsafe.yieldPoint), TSI state transition sequences, integration with yieldpoints and @Uninterruptible, and gotchas (first-field constraint, non-atomic assembly RMW, orthogonal BLOCK_SWITCH, per-processor deadlock counter). Updated index.md (Pages table, Concepts → Pages, Source Path → Pages, Task Routing tables with three new routes: debugging thread issues, understanding thread scheduling, adding new thread state), and linked from Core-Thread-Scheduling, Yieldpoint, Thread-Scheduling, Interrupt-Handling.

  • Added Bus-Drivers spoke page — Created Bus-Drivers.md documenting JNode's bus driver subsystem covering PCI (enumeration, bridges, configuration space), USB (host controller, hub polling, device addressing), PCMCIA/CardBus (PCI bridge integration), and SMBus (address-based protocol). Added key components including PCIBus, USBBus, CardBusBus, SMBus, and related driver classes. Explained how each bus type is enumerated and integrated with DeviceManager. Updated index.md (Pages table, Concepts → Pages, Source Path → Pages, Task Routing tables), and linked from Driver-Framework.

  • Added FileSystemType spoke page — Created FileSystemType.md documenting the filesystem plugin interface: the FileSystemType factory interface, BlockDeviceFileSystemType subinterface for block device detection, plugin registration via extension points, auto-mount workflow via FileSystemMounter, implementation pattern examples (FatFileSystemType, RAMFileSystemType), and gotchas (detection reliability, multiple filesystem support, plugin loading order). Updated index.md (Pages table, Concepts → Pages, Source Path → Pages, Task Routing tables), and linked from VFS-Layer and Filesystem-Layer.

  • Added DeviceManager spoke page — Created DeviceManager.md documenting the central device registry: DeviceManager interface, AbstractDeviceManager core implementation (device map, system bus, listener dispatch), DefaultDeviceManager plugin integration, device registration and driver binding flow, mapper match levels, plugin extension loading via org.jnode.driver.finders and org.jnode.driver.mappers, event system (DeviceManagerListener/DeviceListener), DeviceAPI pattern, and gotchas (atomic registration, mapper ordering, delayed binding, 100ms listener warning, command-line device blocking, immutable lookup collections). Updated index.md (Pages table, Concepts → Pages with DeviceManager/DeviceFinder entries, Source Path → Pages, Task Routing tables with three new routes: device driver development, device discovery, resource allocation), and linked from Driver-Framework.

  • Added BlockDeviceLayer spoke page — Created BlockDeviceLayer.md documenting the block device abstraction layer: API hierarchy (BlockDeviceAPI → PartitionableBlockDeviceAPI/FSBlockDeviceAPI), alignment handling with HEAD/BODY/TAIL decomposition, partition mapping via MappedBlockDeviceSupport, filesystem probing workflow, and gotchas (parallel hierarchy distinction, offset translation, alignment not automatic, ByteArrayDevice limitations). Updated index.md (Pages table, Concepts → Pages, Source Path → Pages, Task Routing tables). Linked from Filesystem-Layer and VFS-Layer.

  • Added IPv4-Protocol spoke page — Created IPv4-Protocol.md documenting JNode's IPv4 implementation: IPv4NetworkLayer as central coordinator (checksum validation, fragment reassembly, protocol routing, ARP cache update, statistics), IPv4Header with 20-byte header parsing/construction, IPv4FragmentList for reassembly with timeout, IPv4RoutingTable with three-tier lookup (host, network, gateway), IPv4Utils for checksum calculation, and gotchas (checksum corner case with 0/0xFFFF, fragment buffering memory risk, TTL not decremented, no MTU check on send, ARP cache update on every packet). Updated index.md (Pages, Concepts → Pages, Source Path → Pages, Task Routing tables), and linked from Network-Stack, Network-Layers, TCP-Protocol, UDP-Protocol, and ARP.

  • Added UDP-Protocol spoke page — Created UDP-Protocol.md documenting JNode's UDP implementation: UDPProtocol as the central coordinator (port binding map, receive/send, checksum validation, ICMP error handling), UDPHeader with 8-byte header and pseudo-header checksum, UDPDatagramSocketImpl bridging java.net.DatagramSocket to the native stack, ephemeral port allocation (1024–65535), UDPStatistics counters, and gotchas (no delivery guarantee, optional checksums, broadcast handling, no flow control). Updated index.md (Pages, Concepts → Pages, Source Path → Pages, Task Routing tables), Glossary.md (UDP entry), and linked from Network-Stack, Network-Layers, and TCP-Protocol.

  • Enhanced AWT-Peer-Implementation documentation — Added detailed coverage of SwingFramePeer (FramePeer implementation, window state management, menu bar integration) and DesktopFrame (JNodeAwtContext implementation, JDesktopPane management, background color persistence). Added invokeNowOrLater() threading model explanation. Updated index.md (Source Path → Pages table added gui/src/awt/org/jnode/awt/swingpeers/ entry, Task Routing tables added "GUI development" and "Graphics performance" routes).

  • Added Shell-Syntax spoke page — Created Shell-Syntax.md documenting JNode's shell command parsing infrastructure: SyntaxManager command registration, MuParser backtracking engine (ChoicePoint, SharedStack, step limit), syntax compilation (MuSymbol, MuArgument, MuSequence, MuAlternation), Argument type hierarchy, and gotchas (backtracking state, step limit, EXISTING/NONEXISTENT, labels, SharedStack). Updated index.md (Pages, Concepts → Pages, Source Path → Pages, Task Routing tables) and linked from Syntax.

  • Added VirtualDevices spoke page — Created VirtualDevices.md documenting JNode's software-only device framework: VirtualDevice base class extending Device with null bus, VirtualDeviceDriver for device lifecycle, VirtualDeviceFactory for creation and registration, integration with DeviceManager, differences from hardware devices (no IRQ/DMA/IO resources), and gotchas (null bus semantics, name persistence, testing considerations). Updated index.md (Pages table, Concepts → Pages with VirtualDevices/Virtual device/RAM disk entries, Source Path → Pages with virtual/ path, Task Routing tables with "Adding a virtual device" route), and linked from Driver-Framework, DeviceManager, BlockDeviceLayer, Filesystem-Layer.

  • Added TCP-Protocol spoke page — Created TCP-Protocol.md documenting JNode's TCP implementation with full state machine: TCPProtocol main handler, TCPHeader parsing/construction, TCPControlBlock state machine with all 11 states (CLOSED, LISTEN, SYN_SENT, SYN_RECV, ESTABLISHED, FIN_WAIT_1, FIN_WAIT_2, CLOSING, TIME_WAIT, CLOSE_WAIT, LAST_ACK), three-way handshake connection establishment, four-way handshake teardown, flow control via window size, and gotchas (small default window of 1024 bytes, no congestion control, 536-byte default MSS). Updated index.md (Pages table, Concepts → Pages, Source Path → Pages, Task Routing tables), linked from Network-Stack, Sockets-Implementation, and Network-Layers.

  • Added JIT-Compiler-IR spoke page — Created JIT-Compiler-IR.md documenting JNode's Just-In-Time compiler intermediate representation: IRControlFlowGraph and IRBasicBlock structure, bytecode-to-IR translation via IRGenerator, SSA construction/optimization/de-SSA pipeline, LinearScanAllocator register allocation, CodeGenerator native code emission, and gotchas (L1 vs L2 differences, type inference, SSA memory overhead, exception handling). Updated index.md (Pages, Concepts → Pages, Source Path → Pages, Task Routing tables) and linked from JIT-Compilers.

  • Enhanced L1-Compiler documentation — Added "Register allocation" concept mapping to L1-Compiler-Deep-Dive in Concepts → Pages table of index.md. Added "Performance profiling (JIT)" task route to Task Routing table, pointing to JIT-Compilers, L1-Compiler, L1-Compiler-Deep-Dive, and L2-Compiler-Deep-Dive.

  • Added L1-Compiler spoke page — Created L1-Compiler.md documenting L1 compiler register allocation: X86RegisterPool architecture with GPR/XMM pools and priority allocation, VirtualStack delayed-emission strategy, item state machine (CONSTANT→GPR→STACK), type-safe stack operations, long/double handling, and gotchas (basic block barriers, aliasing restriction, ECX for shifts, register priority). Updated index.md (Pages table, Concepts → Pages, Source Path → Pages, Task Routing tables), Glossary.md (added L1 Compiler Registers entry), and linked from JIT-Compilers.

  • Added MMTk-Bindings spoke page — Created MMTk-Bindings.md documenting JNode's integration with the Memory Management Toolkit: the build-time Plan stub replacement, VM interface classes (Memory, Collection), Plan implementations (MarkSweep, GenRC, NoGC), BaseMmtkHeapManager integration, and gotchas (boot image space ordering, per-processor plan instances, object header dependency). Updated index.md (Pages table, Concepts → Pages, Source Path → Pages, Task Routing tables) and linked from Memory-Management.

  • Added Virtual-Methods-Dispatch spoke page — Created Virtual-Methods-Dispatch.md documenting JNode's layered method dispatch system: vtable for class-inheritance virtual calls, IMT for interface calls with 64-element hash table, CompiledIMT for architecture-specific fast dispatch, static method constant-pool resolution, JIT compilation of virtual/interface calls, and inlining implications. Updated index.md (Pages table, Concepts → Pages, Source Path → Pages, Task Routing tables), Glossary.md (added Virtual Methods Dispatch entry), and linked from vtable, IMT, TIB, JIT-Compilers.

  • Enhanced BootImageBuilder-Internals page — Added BuildObjectResolver to Key Components table documenting object resolution during build. Added builder/src/builder/org/jnode/build/ to Source Path → Pages table in index.md.

  • Added TIB spoke page — Created TIB.md documenting JNode's Type Information Block: per-class Object[] array structure (VMTYPE_INDEX through FIRST_METHOD_INDEX), TIB construction via VmClassType.prepareTIB() and TIBBuilder, vtable slot assignment rules, IMT/CompiledIMT integration, GC tracing, and gotchas (class-level vs instance-level, vtable slot inheritance-order dependency, synthetic abstract method cloning). Updated index.md (Pages, Concepts → Pages, Source Path → Pages, Task Routing tables), Glossary.md (TIB entry now points to new page), and linked from Virtual-Methods, Object-Layout, JIT-Compilers. — Created IMT.md documenting JNode's Interface Method Table: fixed 64-element hash table, selector-based indexing (selector % 64), collision chaining via IMTBuilder, construction in VmClassType.prepareIMT(), CompiledIMT generation for fast dispatch, and gotchas (class-specific collision patterns, JIT dispatch requirements, selector hashing). Updated index.md (Pages, Concepts → Pages, Source Path → Pages, Task Routing tables), Glossary.md (IMT entry now points to new page), and linked from Virtual-Methods.

  • Added vtable spoke page — Created vtable.md documenting the virtual method table: TIB slot assignment, TIBBuilder construction via inheritance-copy and method append/override, the visibility-based override vs. append rule, synthetic abstract method cloning for interface methods, and JIT vtable index resolution. Updated index.md (Pages, Concepts → Pages, Source Path → Pages, Task Routing tables), Glossary.md (vtable entry now points to new page), and linked from Virtual-Methods. — Created Kernel-Entry-Point.md documenting JNode's assembly-to-Java transition: GRUB Multiboot jump to sys_start, real_start initialization sequence (stack, memory, IDT, paging, FPU), userspace transition via iret, and Main.vmMain() entry point. Covers InitJarProcessor, BootImageBuilder integration, @LoadStatics/@Uninterruptible annotations, and gotchas (A20 check, Multiboot magic, init-jar empty). Updated index.md (Pages, Concepts → Pages, Source Path → Pages, Task Routing tables), and linked from Boot-Sequence and Assembly-Files.

  • Added Yieldpoint spoke page — Created Yieldpoint.md documenting JNode's cooperative scheduling mechanism: compiler-injected INT 0x30 checkpoint, X86CompilerHelper.writeYieldPoint() code generation, VmProcessor.reschedule() handling, TSI flags (SWITCH_NEEDED, SYSTEM_READY, SWITCH_ACTIVE, BLOCK_SWITCH), @Uninterruptible suppression, and gotchas (yieldpoint storms, timeslice vs yieldpoint, 64-bit R12 register). Updated index.md (Pages, Concepts → Pages, Task Routing tables), Glossary.md (Yieldpoint entry), and linked from Core-Thread-Scheduling and JIT-Compilers.

  • Added IDEDisk-Driver spoke page — Created IDEDisk-Driver.md documenting JNode's ATA/IDE disk driver: device startup with partition detection, LBA addressing (28-bit and 48-bit), PIO data transfer via IDEBus command queue, ATA register interface, and gotchas (double boot sector read, DMA disabled, no error recovery). Updated index.md (Pages, Concepts → Pages, Source Path → Pages, Task Routing tables), Glossary.md (LBA, PIO entries), and linked from Block-Device-Layer.

  • Added FAT-Filesystem spoke page — Created FAT-Filesystem.md documenting JNode's FAT12/FAT16/FAT32 implementation: boot sector (BPB) parsing, FAT table management (cluster chains, allocation), directory structure (root vs subdirectory), Long File Name (LFN/VFAT) support via FatLfnDirectory, and gotchas (dirty tracking, FAT consistency checks). Updated index.md (Pages, Concepts → Pages, Source Path → Pages, Task Routing tables), Glossary.md (FAT12, FAT16, FAT32, LFN entries), and linked from Filesystem-Layer.

  • Added Ext2-Ext3-Filesystem spoke page — Created Ext2-Ext3-Filesystem.md documenting JNode's ext2/ext3 implementation: superblock structure, block group layout with sparse_super, inode direct/indirect block addressing with extent support, block and inode bitmap allocation, directory record format, ext3 journaling via feature flags, and feature compatibility checks. Updated index.md (Pages, Concepts → Pages, Source Path → Pages, Task Routing tables), Glossary.md (block group, block bitmap entries), and linked from Filesystem-Layer.

  • Added Network-Layers spoke page — Created Network-Layers.md documenting JNode's three-layer OSI protocol architecture: LinkLayer interface (frame type handling), NetworkLayer interface (TransportLayer registration and packet routing), TransportLayer interface (SocketImplFactory), SocketBuffer as the sk_buff-style packet container, LayerHeader chaining, and NetworkLayerManager as the central registry. Updated index.md (Pages, Concepts → Pages, Source Path → Pages, Task Routing tables), Glossary.md (SocketBuffer entry), and linked from Network-Stack.

  • Added Plugin-Descriptor-Schema spoke page — Created Plugin-Descriptor-Schema.md documenting the XML schema for plugin descriptors: <plugin>, <requires>, <runtime>, <extension-point>, and <extension> tags, their attributes and child elements, runtime processing by PluginManager/PluginRegistry, ConfigurationElement access, and security permissions. Updated index.md (Pages, Concepts → Pages, Source Path → Pages tables) and linked from Plugin-System.

  • Added InitialNaming-Service-Registry spoke page — Created InitialNaming-Service-Registry.md documenting JNode's type-keyed singleton service registry: bind/lookup/unbind pattern, listener notifications via NameSpaceListener, the Class-key design rationale, and the boot initialization order. Updated index.md (Pages, Concepts → Pages, Source Path → Pages, Task Routing tables), Glossary.md (expanded InitialNaming entry), and Architecture.md (added link to new page). (Multiboot header, kernel, bootstrap code, boot heap with exact offset formulas), detailed class pre-resolution pipeline (VmType.initializeForBootImage, multi-pass compileClasses loop, prepareAfterBootstrap, loadFromBootClassArray), native kernel entry-pointing sequence (GRUB→kernel.asm→_$$introCode→initVm→initMain→initVmThread→Main.vmMain with STATICS register setup), jump table initialization (32/64-bit index differences), and new gotchas (emit phase twice, Multiboot 8KB constraint, INITIAL_OBJREFS_CAPACITY).

  • Added Class-Library-Integration spoke page — Created Class-Library-Integration.md documenting JNode's integration mechanisms connecting GNU Classpath and OpenJDK with the VM: the three bridge areas (JVM, classloader, Java API), VM override resolution via classpath/vm and openjdk/vm directories, native method binding without JNI using @MagicPermission, and boot image integration. Updated index.md (Pages table, Concepts → Pages, Source Path → Pages, Task Routing tables) and linked from Class-Library and Type-System-Internals.

  • Added Partition-Tables spoke page — Created Partition-Tables.md documenting JNode's partition table support: IBM MBR detection with multiple signatures, GPT (GUID Partition Table) parsing with protective MBR and 16KB read requirement, Apple Partition Map (APM) support, the plugin-based PartitionTableType architecture, recursive partition traversal via PartitionTableEntry interface, and gotchas (GPT larger read, protective MBR, extended partition chains, partition type vs filesystem). Updated index.md (Pages, Concepts → Pages, Source Path → Pages, Task Routing tables) and linked from Filesystem-Layer, BlockDeviceLayer, and Boot-Sequence.

  • Added MarkSweep-GC spoke page — Created MarkSweep-GC.md documenting JNode's mark-sweep garbage collector: Plan extending MMTk's MarkSweep, HeapManager delegation, GC color states (WHITE/GREY/BLACK/YELLOW), mark phase via GCMarkVisitor BFS traversal, sweep phase via GCSweepVisitor, GCStack mark stack management, finalizer deferral for GC_YELLOW objects, and gotchas (MMTk integration, Uninterruptible constraint, mark stack overflow, boot image exclusion). Updated index.md (Pages table, Concepts → Pages with MarkSweep GC/MarkSweep entries, Source Path → Pages with memmgr/ms/ paths, Task Routing with GC development route), and linked from MMTk-Bindings, Memory-Management, Boot-Sequence, Object-Layout.

2026-05-09

  • Added JNasm-Assembler-Design spoke page — Created JNasm-Assembler-Design.md documenting JNode's custom x86 assembler: preprocessing (macros, includes, symbol substitution), two-pass assembly architecture, instruction encoding in X86Core (emitADD, emitMOV, etc.), addressing modes, and integration with BootImageBuilder during boot image build. Updated index.md (Pages, Concepts, Source Path tables) and linked from Build-System and Assembly-Files.

  • Added Unboxed-Types-and-VM-Magic spoke page — Created Unboxed-Types-and-VM-Magic.md documenting the four core unboxed types (Address, Word, Offset, Extent), their compiler treatment (no object allocation, inline machine instructions, register-based arithmetic), the UnboxedObject marker interface, ObjectReference, and MagicHelper integration. Updated index.md (Pages, Concepts, Source Path, Task Routing tables) and linked from VM-Magic and Code-Conventions.

  • Added L2-Compiler-Deep-Dive spoke page — Created L2-Compiler-Deep-Dive.md documenting the SSA-based IR (quads, CFG, phi functions), SSA construction/destruction, optimization pipeline (constant folding, copy propagation, dead code elimination), linear-scan register allocator with spill strategy, and x86 code generation. Updated index.md (Pages, Concepts, Source Path, Task Routing tables), Glossary.md (L2 compiler entry), and JIT-Compilers.md (Related Pages). Updated the L2 compiler entry in Glossary to point to the new deep-dive page.

  • Added L1-Compiler-Deep-Dive spoke page — Created L1-Compiler-Deep-Dive.md documenting the VirtualStack delayed-emission strategy, Item state machine (CONSTANT→GPR→STACK transitions), register pools (GPRs32/64, XMMs32/64), long/double handling in 32/64-bit, optimization passes (register exploitation, constant folding, operand ordering, inlining), and gotchas (basic block barriers, aliasing restriction, ECX for shifts). Updated index.md (Pages, Concepts, Source Path, Task Routing tables), Glossary.md, JIT-Compilers.md (Related Pages), and this Changelog. Updated the L1 compiler entry in Glossary to point to the new deep-dive page.

  • Added AWT-Peer-Implementation spoke page — Created AWT-Peer-Implementation.md documenting JNode's AWT peer implementation using Swing components: JNodeToolkit/SwingToolkit hierarchy, DesktopFrame as root window, peer creation pattern, event handling through KeyboardHandler/MouseHandler, framebuffer integration via FrameBufferAPI, and font rendering. Updated index.md (Pages, Concepts, Source Path, Task Routing tables) and linked from GUI-AWT.

  • Added Video-Driver-Architecture spoke page — Created Video-Driver-Architecture.md documenting the Surface/FrameBuffer abstraction layer, AbstractSurface rendering engine, VESA driver, NVidia/Radeon hardware acceleration plugins, and hardware cursor support. Updated index.md (Pages, Concepts, Source Path, Task Routing tables) and linked from GUI-AWT. Added Surface entry to Glossary.md.

  • Added Sockets-Implementation spoke page — Created Sockets-Implementation.md documenting the bridge between java.net API and JNode's native TCP stack: TCPSocketImplFactory registration, TCPSocketImplTCPControlBlockTCPInChannel/TCPOutChannel flow, state machine, and stream wrappers. Updated index.md (Pages, Concepts, Source Path, Task Routing tables) and linked from Network-Stack.

  • Added Block-Device-Layer spoke page — Created Block-Device-Layer.md documenting the block I/O API hierarchy (BlockDeviceAPI, PartitionableBlockDeviceAPI, FSBlockDeviceAPI), alignment wrappers (BlockAlignmentSupport, FSBlockAlignmentSupport), partition mapping via MappedFSBlockDeviceSupport, and the relationship between physical block drivers and filesystems. Updated index.md (Pages, Concepts, Source Path, Task Routing tables) and linked from Filesystem-Layer. — Created VFS-Layer.md documenting the in-memory Virtual File System, mount mechanism (FileSystemMounter), the FileSystemType factory interface, and path resolution from Java File calls through VirtualDirEntryVirtualMountEntry → physical FSEntry. Updated index.md (Pages, Concepts, Source Path tables) and linked from Filesystem-Layer.

  • Added Resource-Management spoke page — Created Resource-Management.md documenting the resource management framework (ResourceManager, IOResource, IRQResource, DMAResource, MemoryResource), allocation lifecycle, x86 DMA specifics, and gotchas. Updated index.md (Pages, Concepts, Source Path, Task Routing tables) and linked from Driver-Framework.

  • Added Interrupt-Handling spoke page — Created Interrupt-Handling.md documenting how JNode routes hardware interrupts through the IDT (ints.asm), PIC/APIC, IRQManager, and IRQThread dispatch to Java IRQHandler implementations. Covers CPU exception handling, hardware IRQ flow, EOI protocols, yieldpoint/timeslice interrupts (INT 0x30/0x33), and lazy FPU switching. Updated index.md (Pages, Concepts, Source Path, Task Routing tables) and linked from Architecture.

  • Added Type-System-Internals spoke page — Created Type-System-Internals.md documenting the VmType hierarchy (VmType, VmClassType, VmNormalClass, VmArrayClass, VmInterfaceClass, VmPrimitiveClass), class loading pipeline, linking (prepare/verify/compile), field layout calculation with alignment, TIB structure and construction, and constant pool resolution. Updated index.md (Pages, Concepts, Task Routing tables), Glossary.md (VmType entry), and this Changelog.

  • Added Core-Thread-Scheduling spoke page — Created Core-Thread-Scheduling.md documenting JNode's hybrid scheduling model: cooperative yieldpoints (INT 0x30 injected by JIT compilers), preemptive timer interrupts, the TSI flags word, thread state machine, and the role of @Uninterruptible. Updated index.md (Pages, Concepts, Source Path, Task Routing tables). Added TSI, VmScheduler, and Yieldpoint entries to Glossary.md.

  • Added Thread-Scheduling spoke page — Created Thread-Scheduling.md documenting the JNode thread scheduler (VmThread, VmProcessor, VmScheduler), preemptive vs cooperative scheduling, @Uninterruptible mechanism, and Thread Switch Indicator (TSI). Added link from Architecture and updated index.md (Pages, Concepts, Source Path, Task Routing tables).

  • Added Object-Layout spoke page — Created Object-Layout.md documenting the internal memory representation of Java objects in JNode, including header structure (TIB, Flags), 32-bit vs 64-bit differences, TIB array contents, instance field layout, and 8-byte alignment. Added link from Architecture and updated index.md (Pages, Concepts, Source Path, Task Routing tables).

  • Added Syntax spoke page — Created Syntax.md explaining the shell argument parsing system (Argument, Syntax, MuParser, flags, built-in types, gotchas). Added link from Shell-Commands and updated index.md (Pages, Concepts, Source Path, Task Routing tables).

  • Initial wiki creation — Created all Phase 2 pages:

    • Home, Architecture, Boot-Sequence, Build-System, Plugin-System, Code-Conventions
    • Glossary, Changelog, index
    • _Sidebar navigation
  • Deep dives created — Created Phase 3 and 4 pages:

    • JIT-Compilers, Memory-Management, VM-Magic
    • Driver-Framework, Assembly-Files, Filesystem-Layer, Network-Stack, Shell-Commands
    • GUI-AWT, Testing
  • Schema — Created WIKI_SCHEMA.md in main repo with page structure template and index maintenance rules

  • Main repo changes — Updated AGENTS.md and .gitignore for wiki integration

  • Wiki refinements — Added Class-Library.md, expanded task routing in index.md, and added meta-document links to Home.md.

Clone this wiki locally