From 4d48d98dbe6a1e3a9dd5d619880ad62511d5efbd Mon Sep 17 00:00:00 2001 From: grisuno security-export bot Date: Fri, 18 Sep 2026 03:43:24 -0300 Subject: [PATCH] chore(security): export issues + knowledge base + agent docs + network links --- KNOWLEDGE_BASE.md | 1011 ++++++++++++++++--------------- issues/README.md | 29 +- issues/codescan/alert_0.md | 10 - issues/codescan/alert_17.md | 10 + issues/codescan/alert_18.md | 10 + issues/codescan/alert_19.md | 10 + issues/codescan/alert_20.md | 10 + issues/codescan/alert_21.md | 10 + issues/codescan/alert_22.md | 10 + issues/codescan/alert_23.md | 10 + issues/codescan/alert_24.md | 10 + issues/dependabot/alert_0.md | 13 - issues/issue_20.md | 10 + issues/issue_21.md | 10 + issues/issue_22.md | 10 + readmenator-agent/API.md | 715 ++++++++++++---------- readmenator-agent/INDEX.md | 18 +- readmenator-agent/KB_asm.md | 6 +- readmenator-agent/KB_file.md | 68 ++- readmenator-agent/KB_headers.md | 17 +- readmenator-agent/KB_misc.md | 632 +++++++++---------- readmenator-agent/KB_nuklear.md | 28 +- readmenator-agent/KB_tests.md | 32 +- readmenator-agent/KB_tools.md | 4 +- readmenator-agent/KB_wl.md | 80 +-- readmenator-agent/MANIFEST.json | 6 +- readmenator-agent/SYMBOLS.md | 943 ++++++++++++++-------------- 27 files changed, 2011 insertions(+), 1711 deletions(-) delete mode 100644 issues/codescan/alert_0.md create mode 100644 issues/codescan/alert_17.md create mode 100644 issues/codescan/alert_18.md create mode 100644 issues/codescan/alert_19.md create mode 100644 issues/codescan/alert_20.md create mode 100644 issues/codescan/alert_21.md create mode 100644 issues/codescan/alert_22.md create mode 100644 issues/codescan/alert_23.md create mode 100644 issues/codescan/alert_24.md delete mode 100644 issues/dependabot/alert_0.md create mode 100644 issues/issue_20.md create mode 100644 issues/issue_21.md create mode 100644 issues/issue_22.md diff --git a/KNOWLEDGE_BASE.md b/KNOWLEDGE_BASE.md index fab4256..440a99a 100644 --- a/KNOWLEDGE_BASE.md +++ b/KNOWLEDGE_BASE.md @@ -1,6 +1,6 @@ # Polyglot Codebase Knowledge Graph -> Generated offline by **readmenator**. 478 files, 9650 symbols, 1827 imports. Supports C, C++, Python, Go, Rust, JS/TS, Java, C#, Shell, PHP, Dart, GDScript, Nim, ASM, Ruby, Swift, Kotlin, Scala, Lua, Elixir. +> Generated offline by **readmenator**. 478 files, 9693 symbols, 1827 imports. Supports C, C++, Python, Go, Rust, JS/TS, Java, C#, Shell, PHP, Dart, GDScript, Nim, ASM, Ruby, Swift, Kotlin, Scala, Lua, Elixir. > No LLMs. No tokens. Pure static analysis. See more [here](https://github.com/grisuno/ReadMenator) **Start here:** Statistics Dashboard for scope, God Nodes for blast radius, Architecture Reference for per-file API. Agents: prefer `readmenator-agent/INDEX.md` + `SYMBOLS.md`. @@ -9,10 +9,10 @@ **Confidence:** EXTRACTED = parsed from source, INFERRED = heuristic bridge, AMBIGUOUS = reported, never hidden. See `readmenator-wiki/REPORT.md`. -**Total Files Parsed:** 478 | **Total Symbols Extracted:** 9650 | **Total Imports:** 1827 +**Total Files Parsed:** 478 | **Total Symbols Extracted:** 9693 | **Total Imports:** 1827 | **Resolved Imports:** 1227 - + ## Table of Contents @@ -51,12 +51,12 @@ | Metric | Value | |--------|-------| | Total Files | 478 | -| Total Symbols | 9650 | +| Total Symbols | 9693 | | Total Imports | 1827 | | Call Edges | 4734 | | Inheritance Edges | 22 | | Languages | 7 | -| Avg Symbols/File | 20.2 | +| Avg Symbols/File | 20.3 | | Avg Imports/File | 3.8 | | Resolved Imports | 1227 | @@ -198,7 +198,7 @@ Files ranked by composite score for the current query context. The ranking combi | 9 | `kernel_feature_survey.py` | 0.1125 | 0.0000 | 0.0000 | 0.00 | 1.12 | | 10 | `spawn.c` | 0.1113 | 0.0000 | 0.0012 | 0.00 | 1.11 | -**Query anchors:** progs/file/file.c, progs/pokemon/platform_minios.c, progs/nuklear/nuklear_minios.c, progs/paint/paint.c +**Query anchors:** progs/pokemon/platform_minios.c, progs/file/file.c, progs/paint/paint.c, progs/nuklear/nuklear_minios.c --- @@ -291,13 +291,13 @@ Files grouped by import-based community detection. Cohesion measures how tightly - `doomgeneric_xlib.c` (c, 9 symbols) - `memio.c` (c, 9 symbols) - `memio.h` (h, 10 symbols) -- `file.c` (c, 46 symbols) +- `file.c` (c, 63 symbols) - `file_assoc.h` (h, 17 symbols) - `freedomui_minios.c` (c, 42 symbols) - `lisp.c` (c, 105 symbols) - `lua_main.c` (c, 7 symbols) - `minios_module.c` (c, 21 symbols) -- `minicraft.c` (c, 233 symbols) +- `minicraft.c` (c, 237 symbols) - `minios_abi.h` (h, 129 symbols) - ... and 39 more files @@ -314,13 +314,13 @@ Files grouped by import-based community detection. Cohesion measures how tightly **10 files** in this community: - `desktop_icons.h` (h, 3 symbols) -- `desktop_shortcuts.h` (h, 20 symbols) +- `desktop_shortcuts.h` (h, 25 symbols) - `modifiers.h` (h, 11 symbols) - `wm_events.h` (h, 39 symbols) - `wm_layout.h` (h, 16 symbols) - `wm_notify.h` (h, 9 symbols) - `wm_tiling.h` (h, 3 symbols) -- `vga_fb.c` (c, 150 symbols) +- `vga_fb.c` (c, 155 symbols) - `test_modifiers.c` (c, 2 symbols) - `test_notify.c` (c, 3 symbols) @@ -527,7 +527,7 @@ Procedural intra-function dataflow findings (zero tokens, regex-based heuristics | `kernel/sched.c` | `proc_spawn_elf` | 1583 | `DEAD_STORE` | `frame` | `frame` assigned at line 1583 but never read afterwards. | | `kernel/sched.c` | `schedule` | 1658 | `DEAD_STORE` | `cpu` | `cpu` assigned at line 1658 but never read afterwards. | | `kernel/sched.c` | `it` | 2083 | `DEAD_STORE` | `cr3` | `cr3` assigned at line 2083 but never read afterwards. | -| `kernel/shell.c` | `context` | 1504 | `UNINIT_USE` | `buf` | `buf` may be read before initialization (declared line 1496). | +| `kernel/shell.c` | `context` | 1515 | `UNINIT_USE` | `buf` | `buf` may be read before initialization (declared line 1507). | | `kernel/syscalls.c` | `sys_minios_gfx_zoom` | 249 | `DEAD_STORE` | `gfx_zoom_2x` | `gfx_zoom_2x` assigned at line 249 but never read afterwards. | | `kernel/syscalls.c` | `sys_minios_gfx_title` | 398 | `DEAD_STORE` | `gfx_win_title` | `gfx_win_title` assigned at line 398 but never read afterwards. | | `kernel/syscalls.c` | `DOOM_FRAME` | 471 | `DEAD_STORE` | `o` | `o` assigned at line 471 but never read afterwards. | @@ -535,9 +535,9 @@ Procedural intra-function dataflow findings (zero tokens, regex-based heuristics | `kernel/vga_fb.c` | `line` | 2221 | `DEAD_STORE` | `rows_before` | `rows_before` assigned at line 2221 but never read afterwards. | | `kernel/vga_fb.c` | `icon_decode` | 2717 | `DEAD_STORE` | `dst` | `dst` assigned at line 2717 but never read afterwards. | | `kernel/vga_fb.c` | `icon_embedded_rgba` | 2736 | `DEAD_STORE` | `dst` | `dst` assigned at line 2736 but never read afterwards. | -| `kernel/vga_fb.c` | `vga_fb_mouse_tick` | 3072 | `DEAD_STORE` | `gcfg` | `gcfg` assigned at line 3072 but never read afterwards. | -| `kernel/vga_fb.c` | `vga_fb_mouse_tick` | 3073 | `DEAD_STORE` | `ecfg` | `ecfg` assigned at line 3073 but never read afterwards. | -| `kernel/vga_fb.c` | `vga_fb_mouse_tick` | 3075 | `DEAD_STORE` | `win_w` | `win_w` assigned at line 3075 but never read afterwards. | +| `kernel/vga_fb.c` | `vga_fb_mouse_tick` | 3189 | `DEAD_STORE` | `gcfg` | `gcfg` assigned at line 3189 but never read afterwards. | +| `kernel/vga_fb.c` | `vga_fb_mouse_tick` | 3190 | `DEAD_STORE` | `ecfg` | `ecfg` assigned at line 3190 but never read afterwards. | +| `kernel/vga_fb.c` | `vga_fb_mouse_tick` | 3192 | `DEAD_STORE` | `win_w` | `win_w` assigned at line 3192 but never read afterwards. | | `net/net.c` | `net_dns_resolve` | 276 | `DEAD_STORE` | `rc` | `rc` assigned at line 276 but never read afterwards. | | `net/tls_crypto.c` | `ecdsa_verify` | 1227 | `UNINIT_USE` | `gen` | `gen` may be read before initialization (declared line 1223). | | `progs/doomedit/doomedit.c` | `dmap_build_wad` | 1556 | `DEAD_STORE` | `side` | `side` assigned at line 1556 but never read afterwards. | @@ -586,21 +586,21 @@ Files sorted by how many other files would be affected if they changed. High-imp | File | Direct Dependents | Transitive Dependents | Total Impact | |------|------------------|----------------------|--------------| -| `spinlock.h` | 7 | 50 | 65 | +| `minios_abi.h` | 28 | 50 | 79 | | `string.c` | 50 | 0 | 63 | -| `vma.h` | 8 | 50 | 60 | -| `d_think.h` | 3 | 50 | 55 | +| `spinlock.h` | 7 | 50 | 61 | +| `m_fixed.h` | 9 | 48 | 57 | +| `vma.h` | 8 | 48 | 56 | | `tables.h` | 6 | 49 | 55 | +| `d_think.h` | 3 | 50 | 54 | | `v_patch.h` | 2 | 50 | 54 | +| `d_ticcmd.h` | 6 | 47 | 53 | | `i_video.h` | 18 | 35 | 53 | | `doomdef.h` | 41 | 11 | 52 | -| `m_fixed.h` | 9 | 43 | 52 | +| `sha1.h` | 5 | 47 | 52 | | `d_items.h` | 2 | 49 | 51 | | `d_mode.h` | 6 | 45 | 51 | -| `net_defs.h` | 9 | 42 | 51 | -| `kernel.h` | 50 | 0 | 50 | -| `d_event.h` | 13 | 37 | 50 | -| `d_ticcmd.h` | 6 | 44 | 50 | +| `doomdata.h` | 2 | 49 | 51 | --- @@ -623,11 +623,11 @@ Automatically suggested linting and security rules based on patterns detected in | Rule ID | Severity | Description | Language | Matches | |---------|----------|-------------|----------|---------| | `RM001` | info | Large number of functions in S: 90 total | S | 90 | -| `RM002` | info | Large number of functions in c: 3606 total | c | 3606 | +| `RM002` | info | Large number of functions in c: 3620 total | c | 3620 | | `RM003` | info | Large number of functions in h: 1320 total | h | 1320 | | `RM004` | info | Large number of functions in py: 556 total | py | 556 | | `RM005` | info | Large number of functions in sh: 42 total | sh | 42 | -| `RM006` | info | Large number of functions in s: 201 total | s | 201 | +| `RM006` | info | Large number of functions in s: 203 total | s | 203 | | `RM007` | info | Large number of functions in lua: 20 total | lua | 20 | | `RM008` | info | Print statement found (consider logging instead) | python | 272 | @@ -645,7 +645,7 @@ Files with no documentation or low connectivity. These are candidates for docume - `cvm_host.c` (45 symbols, no doc) - `lz4_kernel.c` (10 symbols, no doc) - `__init__.py` (0 symbols, no doc) -- `aes.s` (28 symbols, no doc) +- `aes.s` (30 symbols, no doc) - `cp.s` (2 symbols, no doc) - `fib.s` (3 symbols, no doc) - `freedom.s` (92 symbols, no doc) @@ -1087,14 +1087,14 @@ graph TD class tests_test_fault_c mod; progs_src_thdemo_c["thdemo.c (c)"] class progs_src_thdemo_c mod; + tests_test_file_assoc_c["test_file_assoc.c (c)"] + class tests_test_file_assoc_c mod; progs_src_fptest_c["fptest.c (c)"] class progs_src_fptest_c mod; tests_test_sanitize_c["test_sanitize.c (c)"] class tests_test_sanitize_c mod; tests_test_theme_c["test_theme.c (c)"] class tests_test_theme_c mod; - tests_test_file_assoc_c["test_file_assoc.c (c)"] - class tests_test_file_assoc_c mod; tests_test_vma_bench_c["test_vma_bench.c (c)"] class tests_test_vma_bench_c mod; tools_check_surprising_py["check_surprising.py (py)"] @@ -1193,10 +1193,10 @@ graph TD class tools_gen_desktop_pngs_py mod; progs_doomgeneric_d_items_c["d_items.c (c)"] class progs_doomgeneric_d_items_c mod; - tools_doom_pwad_py["doom_pwad.py (py)"] - class tools_doom_pwad_py mod; progs_nuklear_nuklear_minios_h["nuklear_minios.h (h)"] class progs_nuklear_nuklear_minios_h mod; + tools_doom_pwad_py["doom_pwad.py (py)"] + class tools_doom_pwad_py mod; tests_test_paint_c["test_paint.c (c)"] class tests_test_paint_c mod; tools_minifs_saves_py["minifs_saves.py (py)"] @@ -1948,7 +1948,7 @@ classDiagram Machine-readable Code Property Graph (CPG) in JSON-LD format. This block allows AI agents to parse the full structural graph without additional file reads. Compatible with GraphRAG pipelines. ```json -{"@context": "https://schema.org", "analysis": {"communities": [{"cohesion": 0.831, "id": 0, "label": "headers", "size": 97}, {"cohesion": 0.464, "id": 1, "label": "headers", "size": 11}, {"cohesion": 0.4, "id": 2, "label": "headers", "size": 3}, {"cohesion": 0.685, "id": 3, "label": "progs/doomgeneric", "size": 59}, {"cohesion": 0.667, "id": 4, "label": "headers", "size": 3}, {"cohesion": 0.333, "id": 5, "label": "headers", "size": 10}, {"cohesion": 0.667, "id": 6, "label": "headers", "size": 3}, {"cohesion": 0.5, "id": 7, "label": "headers", "size": 5}, {"cohesion": 0.793, "id": 8, "label": "tools", "size": 21}, {"cohesion": 0.953, "id": 9, "label": "progs/doomgeneric", "size": 175}, {"cohesion": 0.75, "id": 10, "label": "progs/src", "size": 4}, {"cohesion": 1.0, "id": 11, "label": "tests", "size": 2}], "god_nodes": [{"node_id": "headers/kernel.h", "score": 137.4}, {"node_id": "kernel/string.c", "score": 129.3}, {"node_id": "progs/doomgeneric/doomtype.h", "score": 101.4}, {"node_id": "progs/doomgeneric/doomdef.h", "score": 90.9}, {"node_id": "progs/doomgeneric/doomstat.h", "score": 84.8}, {"node_id": "progs/doomgeneric/z_zone.h", "score": 81.3}, {"node_id": "progs/doomgeneric/i_system.h", "score": 81.2}, {"node_id": "progs/doomgeneric/d_main.c", "score": 80.9}, {"node_id": "progs/doomgeneric/g_game.c", "score": 73.4}, {"node_id": "progs/minios_abi.h", "score": 68.9}], "surprising_connections": [{"hops": 8, "source": "arch/x86/ap_entry.S", "target": "progs/doomgeneric/i_cdmus.h"}, {"hops": 8, "source": "arch/x86/ap_entry.S", "target": "progs/doomgeneric/info.h"}, {"hops": 8, "source": "arch/x86/ap_entry.S", "target": "progs/doomgeneric/net_packet.h"}, {"hops": 8, "source": "arch/x86/ap_entry.S", "target": "progs/doomgeneric/w_merge.h"}, {"hops": 8, "source": "arch/x86/boot/stage1.S", "target": "progs/doomgeneric/i_cdmus.h"}]}, "edges": [{"confidence": "EXTRACTED", "relation": "imports", "source": "arch/x86/ap_entry.S", "target": "bootdefs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "arch/x86/boot/stage1.S", "target": "bootdefs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "arch/x86/boot/stage2.S", "target": "bootdefs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "drivers/block.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "drivers/block.c", "target": "ide.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "drivers/block.c", "target": "block.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "drivers/block.c", "target": "driver.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "drivers/driver.c", "target": "driver.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "drivers/ide.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "drivers/ide.c", "target": "ide.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "drivers/ide.c", "target": "driver.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "drivers/kbd.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "drivers/kbd.c", "target": "sched.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "drivers/kbd.c", "target": "vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "drivers/kbd.c", "target": "drivers/kbd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "drivers/kbd.c", "target": "drivers/modifiers.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "drivers/kbd.c", "target": "wm_events.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "drivers/kbd.c", "target": "arch/x86/hal_io.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "drivers/mouse.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "drivers/mouse.c", "target": "arch/x86/hal_io.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "drivers/mouse.c", "target": "drivers/mouse.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "drivers/pcspk.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "drivers/pcspk.c", "target": "pcspk.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "drivers/pcspk.c", "target": "driver.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "drivers/rtc.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "drivers/rtc.c", "target": "rtc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "drivers/sb16.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "drivers/sb16.c", "target": "sb16.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "drivers/sb16.c", "target": "sync.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "drivers/sb16.c", "target": "driver.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "fs/kfile.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "fs/kfile.c", "target": "minifs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "fs/minifs.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "fs/minifs.c", "target": "minifs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "fs/minifs.c", "target": "block.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "fs/minifs.c", "target": "ide.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "fs/minifs.c", "target": "lz4_kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "fs/ramdisk.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "fs/vfs.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "fs/vfs.c", "target": "minifs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "fs/zip.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "fs/zip.c", "target": "miniz.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/batch.h", "target": "stdint.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/desktop_icons.h", "target": "stdint.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/desktop_shortcuts.h", "target": "stdint.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/drivers/mouse.h", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/editor.h", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/futex.h", "target": "stdint.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/futex.h", "target": "spinlock.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/futex.h", "target": "sched.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/futex.h", "target": "sync.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/kernel/console_in.h", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/kernel/vga_cursor.h", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/kernel.h", "target": "minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/kernel.h", "target": "vma.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/kernel.h", "target": "spinlock.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/net/rtl8139.h", "target": "net.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/percpu_rq.h", "target": "stdint.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/percpu_rq.h", "target": "spinlock.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/percpu_rq.h", "target": "sched.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/rcu.h", "target": "stdint.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/rcu.h", "target": "spinlock.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/rcu.h", "target": "sched.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/sched.h", "target": "stdint.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/sched.h", "target": "spinlock.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/sched.h", "target": "vma.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/shell.h", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/shell.h", "target": "kernel/console_in.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/smp.h", "target": "spinlock.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/spawn.h", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/spawn.h", "target": "vma.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/spawn.h", "target": "sched.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/sync.h", "target": "stdint.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/sync.h", "target": "spinlock.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/sync.h", "target": "sched.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/tls_port.h", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/tls_port.h", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/tls_port.h", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/tls_port.h", "target": "time.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/tls_port.h", "target": "unistd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/tls_port.h", "target": "fcntl.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/tls_port.h", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/tls_port.h", "target": "net.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/vga_fb.h", "target": "stdint.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/vga_fb.h", "target": "minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/vga_fb.h", "target": "wm_notify.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/wm_events.h", "target": "drivers/modifiers.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/wm_focus.h", "target": "wm_window.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/wm_render.h", "target": "wm_window.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "headers/wm_window.h", "target": "wm_geom.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/abi.c", "target": "abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/abi.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/batch.c", "target": "batch.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/console.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/console.c", "target": "sched.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/console.c", "target": "vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/console.c", "target": "xxhash.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/console.c", "target": "stb/stb_api.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/console_in.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/console_in.c", "target": "drivers/kbd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/console_in.c", "target": "vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/console_in.c", "target": "kernel/console_in.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/cvm_host.c", "target": "cvm.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/cvm_host.c", "target": "cvm_jit.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/editor.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/editor.c", "target": "shell.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/editor.c", "target": "editor.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/exec.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/exec.c", "target": "bootdefs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/exec.c", "target": "arch/x86/msr.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/exec.c", "target": "vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/exec.c", "target": "sched.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/exec.c", "target": "drivers/kbd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/futex.c", "target": "futex.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/futex.c", "target": "sync.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/klog.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/loader.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/loader.c", "target": "vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/lz4_kernel.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/lz4_kernel.c", "target": "lz4_kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/minifetch.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/minifetch.c", "target": "minifetch.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/minifetch.c", "target": "minifs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/minifetch.c", "target": "net.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/minifetch.c", "target": "rtc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/minifetch.c", "target": "sched.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/minifetch.c", "target": "stb_api.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/minifetch.c", "target": "vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/mm/paging.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/mm/paging.c", "target": "bootdefs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/mm/paging.c", "target": "vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/mm/paging.c", "target": "arch/x86/msr.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/mm/swap.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/mm/swap.c", "target": "ide.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/mm/swap.c", "target": "lz4_kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/mm.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/mm.c", "target": "sched.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/percpu_rq.c", "target": "percpu_rq.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/printf.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/rcu.c", "target": "rcu.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/redirect.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/sched.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/sched.c", "target": "sched.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/sched.c", "target": "smp.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/sched.c", "target": "sync.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/sched.c", "target": "futex.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/sched.c", "target": "percpu_rq.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/sched.c", "target": "rcu.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/sched.c", "target": "bootdefs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/sched.c", "target": "vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/sched.c", "target": "sb16.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/sched.c", "target": "tick.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/sched.c", "target": "arch/x86/hal_io.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/sched.c", "target": "arch/x86/msr.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/sched.c", "target": "drivers/mouse.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/scrollback.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/serial.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/serial.c", "target": "sched.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/shell.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/shell.c", "target": "net.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/shell.c", "target": "minifs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/shell.c", "target": "sched.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/shell.c", "target": "smp.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/shell.c", "target": "percpu_rq.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/shell.c", "target": "vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/shell.c", "target": "pcspk.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/shell.c", "target": "sb16.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/shell.c", "target": "rtc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/shell.c", "target": "drivers/kbd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/shell.c", "target": "wm_layout.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/shell.c", "target": "wm_notify.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/shell.c", "target": "xxhash.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/shell.c", "target": "zip.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/shell.c", "target": "minifetch.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/shell.c", "target": "shell.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/shell.c", "target": "editor.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/shell.c", "target": "kernel/console_in.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/spawn.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/spawn.c", "target": "sched.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/spawn.c", "target": "vma.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/spawn.c", "target": "spawn.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/spawn.c", "target": "minifs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/spawn.c", "target": "vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/spawn.c", "target": "arch/x86/msr.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/string.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/symtab.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/sync.c", "target": "sync.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "net.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "bootdefs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "minifs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "ide.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "block.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "sched.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "pcspk.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "sb16.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "rtc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "lz4_kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "drivers/kbd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "arch/x86/hal_io.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "arch/x86/msr.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "zip.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "futex.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "batch.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "rcu.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "percpu_rq.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "sanitize.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "driver.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "syscalls_proc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "shell.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "ktime.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "randmix.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "spawn.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls_proc.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls_proc.c", "target": "sched.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/tick.c", "target": "tick.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/tick.c", "target": "stddef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/time.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/time.c", "target": "ktime.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/vga_cursor.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/vga_cursor.c", "target": "vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/vga_cursor.c", "target": "kernel/vga_cursor.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/vga_fb.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/vga_fb.c", "target": "kernel/vga_cursor.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/vga_fb.c", "target": "vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/vga_fb.c", "target": "bootdefs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/vga_fb.c", "target": "sched.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/vga_fb.c", "target": "drivers/kbd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/vga_fb.c", "target": "desktop_shortcuts.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/vga_fb.c", "target": "desktop_icons.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/vga_fb.c", "target": "stb_api.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/vga_fb.c", "target": "wm_geom.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/vga_fb.c", "target": "wm_events.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/vga_fb.c", "target": "wm_window.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/vga_fb.c", "target": "wm_render.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/vga_fb.c", "target": "wm_tiling.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/vga_fb.c", "target": "wm_focus.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/vga_fb.c", "target": "wm_layout.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/vga_fb.c", "target": "wm_notify.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel.c", "target": "abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel.c", "target": "net.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel.c", "target": "bootdefs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel.c", "target": "minifs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel.c", "target": "ide.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel.c", "target": "block.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel.c", "target": "sched.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel.c", "target": "vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel.c", "target": "sb16.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel.c", "target": "smp.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel.c", "target": "arch/x86/msr.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/mcp_dbg_driver.py", "target": "json"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/mcp_dbg_driver.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/mcp_dbg_driver.py", "target": "select"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/mcp_dbg_driver.py", "target": "subprocess"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/mcp_dbg_driver.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/mcp_dbg_driver.py", "target": "tempfile"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/mcp_dbg_driver.py", "target": "time"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/mcp_dogfood.py", "target": "json"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/mcp_dogfood.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/mcp_dogfood.py", "target": "select"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/mcp_dogfood.py", "target": "subprocess"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/mcp_dogfood.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/mcp_dogfood.py", "target": "tempfile"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/mcp_dogfood.py", "target": "time"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/minios_addons.py", "target": "json"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/minios_addons.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/minios_addons.py", "target": "re"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/minios_addons.py", "target": "shutil"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/minios_addons.py", "target": "subprocess"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/minios_addons.py", "target": "tempfile"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/minios_addons.py", "target": "time"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/minios_mcp.py", "target": "atexit"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/minios_mcp.py", "target": "json"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/minios_mcp.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/minios_mcp.py", "target": "signal"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/minios_mcp.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/minios_mcp.py", "target": "tempfile"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/minios_mcp.py", "target": "threading"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/minios_mcp.py", "target": "time"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/minios_mcp.py", "target": "tty"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/minios_mcp.py", "target": "minios_addons"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/minios_mcp.py", "target": "subprocess"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/test_minios_mcp.py", "target": "importlib.util"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/test_minios_mcp.py", "target": "json"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/test_minios_mcp.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/test_minios_mcp.py", "target": "select"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/test_minios_mcp.py", "target": "subprocess"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/test_minios_mcp.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/test_minios_mcp.py", "target": "tempfile"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/test_minios_mcp.py", "target": "unittest"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/test_minios_mcp.py", "target": "shutil"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/test_minios_mcp.py", "target": "importlib.util"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/test_minios_mcp.py", "target": "importlib.util"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/test_minios_mcp.py", "target": "importlib.util"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/test_minios_mcp.py", "target": "shutil"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/test_minios_mcp.py", "target": "shutil"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/test_minios_mcp.py", "target": "shutil"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "net/net.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "net/net.c", "target": "net.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "net/net.c", "target": "tls.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "net/net.c", "target": "net/rtl8139.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "net/rtl8139.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "net/rtl8139.c", "target": "net.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "net/rtl8139.c", "target": "net/rtl8139.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "net/tls.c", "target": "tls_port.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "net/tls.c", "target": "tls.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "net/tls.c", "target": "tls_roots.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "net/tls_crypto.c", "target": "tls_port.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "net/tls_crypto.c", "target": "tls.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "net/tls_x509.c", "target": "tls_port.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "net/tls_x509.c", "target": "tls.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomedit/doomedit.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomedit/doomedit.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomedit/doomedit.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomedit/doomedit.c", "target": "math.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomedit/doomedit.c", "target": "minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomedit/doomedit.c", "target": "nuklear.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomedit/doomedit.c", "target": "nuklear_minios.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomedit/doomedit.c", "target": "nuklear_theme.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/am_map.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/am_map.c", "target": "deh_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/am_map.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/am_map.c", "target": "doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/am_map.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/am_map.c", "target": "st_stuff.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/am_map.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/am_map.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/am_map.c", "target": "m_cheat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/am_map.c", "target": "m_controls.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/am_map.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/am_map.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/am_map.c", "target": "v_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/am_map.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/am_map.c", "target": "r_state.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/am_map.c", "target": "dstrings.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/am_map.c", "target": "am_map.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/am_map.h", "target": "d_event.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/am_map.h", "target": "m_cheat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_event.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_event.c", "target": "d_event.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_event.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_items.c", "target": "info.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_items.c", "target": "d_items.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_items.h", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_iwad.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_iwad.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_iwad.c", "target": "ctype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_iwad.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_iwad.c", "target": "config.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_iwad.c", "target": "deh_str.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_iwad.c", "target": "doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_iwad.c", "target": "d_iwad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_iwad.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_iwad.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_iwad.c", "target": "m_config.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_iwad.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_iwad.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_iwad.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_iwad.c", "target": "windows.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_iwad.h", "target": "d_mode.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_loop.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_loop.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_loop.c", "target": "doomfeatures.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_loop.c", "target": "d_event.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_loop.c", "target": "d_loop.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_loop.c", "target": "d_ticcmd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_loop.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_loop.c", "target": "i_timer.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_loop.c", "target": "i_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_loop.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_loop.c", "target": "m_fixed.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_loop.c", "target": "net_client.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_loop.c", "target": "net_gui.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_loop.c", "target": "net_io.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_loop.c", "target": "net_query.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_loop.c", "target": "net_server.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_loop.c", "target": "net_sdl.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_loop.c", "target": "net_loop.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_loop.h", "target": "net_defs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "ctype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "config.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "deh_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "dstrings.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "doomfeatures.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "sounds.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "d_iwad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "w_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "s_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "v_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "f_finale.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "f_wipe.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "m_config.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "m_controls.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "m_menu.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "p_saveg.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "i_endoom.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "i_joystick.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "i_timer.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "i_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "g_game.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "hu_stuff.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "wi_stuff.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "st_stuff.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "am_map.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "net_client.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "net_dedicated.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "net_query.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "p_setup.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "r_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "statdump.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "d_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.h", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_mode.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_mode.c", "target": "d_mode.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_mode.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_net.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_net.c", "target": "doomfeatures.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_net.c", "target": "d_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_net.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_net.c", "target": "m_menu.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_net.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_net.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_net.c", "target": "i_timer.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_net.c", "target": "i_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_net.c", "target": "g_game.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_net.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_net.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_net.c", "target": "w_checksum.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_net.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_net.c", "target": "deh_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_net.c", "target": "d_loop.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_player.h", "target": "d_items.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_player.h", "target": "p_pspr.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_player.h", "target": "p_mobj.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_player.h", "target": "d_ticcmd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_player.h", "target": "net_defs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_textur.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_ticcmd.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/deh_main.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/deh_main.h", "target": "doomfeatures.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/deh_main.h", "target": "deh_str.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/deh_main.h", "target": "sha1.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/deh_misc.h", "target": "doomfeatures.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/deh_str.h", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/deh_str.h", "target": "doomfeatures.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomdata.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomdata.h", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomdef.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomdef.h", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomdef.h", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomdef.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomdef.h", "target": "i_timer.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomdef.h", "target": "d_mode.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric.c", "target": "doomgeneric.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric.h", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric.h", "target": "stdint.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_minios.c", "target": "doomgeneric.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_minios.c", "target": "doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_minios.c", "target": "stdint.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_minios.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_minios.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_minios.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_minios.c", "target": "minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_sdl.c", "target": "doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_sdl.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_sdl.c", "target": "doomgeneric.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_sdl.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_sdl.c", "target": "unistd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_sdl.c", "target": "stdbool.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_sdl.c", "target": "SDL.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_soso.c", "target": "doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_soso.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_soso.c", "target": "doomgeneric.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_soso.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_soso.c", "target": "fcntl.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_soso.c", "target": "unistd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_soso.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_soso.c", "target": "sys/ioctl.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_soso.c", "target": "sys/mman.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_soso.c", "target": "termios.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_soso.c", "target": "soso.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_sosox.c", "target": "doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_sosox.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_sosox.c", "target": "doomgeneric.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_sosox.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_sosox.c", "target": "fcntl.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_sosox.c", "target": "unistd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_sosox.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_sosox.c", "target": "sys/ioctl.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_sosox.c", "target": "termios.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_sosox.c", "target": "soso.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_sosox.c", "target": "nano-X.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_win.c", "target": "doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_win.c", "target": "doomgeneric.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_win.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_win.c", "target": "Windows.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_xlib.c", "target": "doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_xlib.c", "target": "doomgeneric.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_xlib.c", "target": "ctype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_xlib.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_xlib.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_xlib.c", "target": "unistd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_xlib.c", "target": "sys/time.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_xlib.c", "target": "X11/Xlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_xlib.c", "target": "X11/Xutil.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_xlib.c", "target": "X11/Xatom.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomstat.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomstat.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomstat.h", "target": "doomdata.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomstat.h", "target": "d_loop.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomstat.h", "target": "d_player.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomstat.h", "target": "d_mode.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomstat.h", "target": "net_defs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomtype.h", "target": "strings.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomtype.h", "target": "inttypes.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomtype.h", "target": "limits.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/dstrings.c", "target": "dstrings.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/dstrings.h", "target": "d_englsh.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/dummy.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_finale.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_finale.c", "target": "ctype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_finale.c", "target": "deh_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_finale.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_finale.c", "target": "i_swap.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_finale.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_finale.c", "target": "v_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_finale.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_finale.c", "target": "s_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_finale.c", "target": "d_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_finale.c", "target": "dstrings.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_finale.c", "target": "sounds.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_finale.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_finale.c", "target": "r_state.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_finale.c", "target": "hu_stuff.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_finale.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_finale.h", "target": "d_event.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_wipe.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_wipe.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_wipe.c", "target": "i_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_wipe.c", "target": "v_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_wipe.c", "target": "m_random.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_wipe.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_wipe.c", "target": "f_wipe.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "math.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "deh_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "deh_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "f_finale.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "m_controls.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "m_menu.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "m_random.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "i_timer.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "i_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "p_setup.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "p_saveg.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "p_tick.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "d_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "wi_stuff.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "hu_stuff.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "st_stuff.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "am_map.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "statdump.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "v_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "s_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "dstrings.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "sounds.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "r_data.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "r_sky.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "g_game.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.h", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.h", "target": "d_event.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.h", "target": "d_ticcmd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/gusconf.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/gusconf.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/gusconf.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/gusconf.c", "target": "ctype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/gusconf.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/gusconf.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/gusconf.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_lib.c", "target": "ctype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_lib.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_lib.c", "target": "doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_lib.c", "target": "v_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_lib.c", "target": "i_swap.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_lib.c", "target": "hu_lib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_lib.c", "target": "r_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_lib.c", "target": "r_draw.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_lib.h", "target": "r_defs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "ctype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "deh_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "i_swap.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "i_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "hu_stuff.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "hu_lib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "m_controls.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "s_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "dstrings.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "sounds.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_stuff.h", "target": "d_event.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_cdmus.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_cdmus.c", "target": "SDL.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_cdmus.c", "target": "SDL_cdrom.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_cdmus.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_cdmus.c", "target": "i_cdmus.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_endoom.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_endoom.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_endoom.c", "target": "config.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_endoom.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_endoom.c", "target": "i_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_endoom.c", "target": "txt_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "ctype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "math.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "fcntl.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "config.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "deh_str.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "i_joystick.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "i_swap.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "i_timer.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "i_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "i_scale.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "m_config.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "tables.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "v_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "doomgeneric.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_joystick.c", "target": "SDL.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_joystick.c", "target": "SDL_joystick.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_joystick.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_joystick.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_joystick.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_joystick.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_joystick.c", "target": "d_event.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_joystick.c", "target": "i_joystick.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_joystick.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_joystick.c", "target": "m_config.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_joystick.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_main.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_main.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_minios_sound.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_minios_sound.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_minios_sound.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_minios_sound.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_minios_sound.c", "target": "doomfeatures.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_minios_sound.c", "target": "i_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_minios_sound.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_minios_sound.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_minios_sound.c", "target": "doomgeneric.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_minios_sound.c", "target": "minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_scale.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_scale.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_scale.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_scale.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_scale.c", "target": "i_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_scale.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_scale.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_scale.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_sound.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_sound.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_sound.c", "target": "SDL_mixer.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_sound.c", "target": "config.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_sound.c", "target": "doomfeatures.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_sound.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_sound.c", "target": "gusconf.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_sound.c", "target": "i_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_sound.c", "target": "i_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_sound.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_sound.c", "target": "m_config.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_sound.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_swap.h", "target": "SDL_endian.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_system.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_system.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_system.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_system.c", "target": "stdarg.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_system.c", "target": "windows.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_system.c", "target": "unistd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_system.c", "target": "SDL.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_system.c", "target": "config.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_system.c", "target": "deh_str.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_system.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_system.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_system.c", "target": "m_config.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_system.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_system.c", "target": "i_joystick.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_system.c", "target": "i_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_system.c", "target": "i_timer.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_system.c", "target": "i_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_system.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_system.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_system.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_system.c", "target": "CoreFoundation/CFUserNotification.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_system.h", "target": "d_ticcmd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_system.h", "target": "d_event.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_timer.c", "target": "i_timer.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_timer.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_timer.c", "target": "doomgeneric.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_timer.c", "target": "stdarg.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_video.c", "target": "config.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_video.c", "target": "v_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_video.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_video.c", "target": "d_event.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_video.c", "target": "d_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_video.c", "target": "i_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_video.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_video.c", "target": "tables.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_video.c", "target": "doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_video.c", "target": "doomgeneric.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_video.c", "target": "stdbool.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_video.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_video.c", "target": "fcntl.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_video.c", "target": "stdarg.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_video.c", "target": "sys/types.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_video.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/info.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/info.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/info.c", "target": "sounds.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/info.c", "target": "m_fixed.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/info.c", "target": "info.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/info.c", "target": "p_mobj.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/info.h", "target": "d_think.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_argv.c", "target": "ctype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_argv.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_argv.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_argv.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_argv.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_argv.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_argv.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_argv.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_argv.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_bbox.c", "target": "m_bbox.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_bbox.h", "target": "limits.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_bbox.h", "target": "m_fixed.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_cheat.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_cheat.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_cheat.c", "target": "m_cheat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_config.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_config.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_config.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_config.c", "target": "ctype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_config.c", "target": "errno.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_config.c", "target": "config.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_config.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_config.c", "target": "doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_config.c", "target": "doomfeatures.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_config.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_config.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_config.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_config.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_config.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_controls.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_controls.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_controls.c", "target": "doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_controls.c", "target": "m_config.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_controls.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_fixed.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_fixed.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_fixed.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_fixed.c", "target": "m_fixed.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "ctype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "dstrings.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "d_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "deh_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "i_swap.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "i_timer.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "i_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "v_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "r_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "hu_stuff.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "g_game.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "m_controls.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "p_saveg.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "s_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "sounds.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "m_menu.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.h", "target": "d_event.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_misc.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_misc.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_misc.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_misc.c", "target": "ctype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_misc.c", "target": "errno.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_misc.c", "target": "windows.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_misc.c", "target": "io.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_misc.c", "target": "direct.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_misc.c", "target": "sys/stat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_misc.c", "target": "sys/types.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_misc.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_misc.c", "target": "deh_str.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_misc.c", "target": "i_swap.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_misc.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_misc.c", "target": "i_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_misc.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_misc.c", "target": "v_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_misc.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_misc.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_misc.h", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_misc.h", "target": "stdarg.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_misc.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_random.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/memio.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/memio.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/memio.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/memio.c", "target": "memio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/memio.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/net_client.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/net_client.h", "target": "d_ticcmd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/net_client.h", "target": "sha1.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/net_client.h", "target": "net_defs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/net_defs.h", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/net_defs.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/net_defs.h", "target": "d_ticcmd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/net_defs.h", "target": "sha1.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/net_gui.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/net_io.h", "target": "net_defs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/net_loop.h", "target": "net_defs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/net_packet.h", "target": "net_defs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/net_query.h", "target": "net_defs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/net_sdl.h", "target": "net_defs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_ceilng.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_ceilng.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_ceilng.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_ceilng.c", "target": "s_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_ceilng.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_ceilng.c", "target": "r_state.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_ceilng.c", "target": "sounds.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_doors.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_doors.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_doors.c", "target": "deh_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_doors.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_doors.c", "target": "s_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_doors.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_doors.c", "target": "r_state.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_doors.c", "target": "dstrings.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_doors.c", "target": "sounds.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_enemy.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_enemy.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_enemy.c", "target": "m_random.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_enemy.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_enemy.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_enemy.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_enemy.c", "target": "s_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_enemy.c", "target": "g_game.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_enemy.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_enemy.c", "target": "r_state.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_enemy.c", "target": "sounds.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_floor.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_floor.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_floor.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_floor.c", "target": "s_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_floor.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_floor.c", "target": "r_state.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_floor.c", "target": "sounds.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_inter.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_inter.c", "target": "dstrings.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_inter.c", "target": "sounds.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_inter.c", "target": "deh_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_inter.c", "target": "deh_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_inter.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_inter.c", "target": "m_random.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_inter.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_inter.c", "target": "am_map.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_inter.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_inter.c", "target": "s_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_inter.c", "target": "p_inter.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_lights.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_lights.c", "target": "m_random.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_lights.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_lights.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_lights.c", "target": "r_state.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_local.h", "target": "r_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_local.h", "target": "p_spec.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_map.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_map.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_map.c", "target": "deh_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_map.c", "target": "m_bbox.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_map.c", "target": "m_random.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_map.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_map.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_map.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_map.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_map.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_map.c", "target": "s_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_map.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_map.c", "target": "r_state.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_map.c", "target": "sounds.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_maputl.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_maputl.c", "target": "m_bbox.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_maputl.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_maputl.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_maputl.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_maputl.c", "target": "r_state.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_mobj.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_mobj.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_mobj.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_mobj.c", "target": "m_random.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_mobj.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_mobj.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_mobj.c", "target": "sounds.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_mobj.c", "target": "st_stuff.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_mobj.c", "target": "hu_stuff.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_mobj.c", "target": "s_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_mobj.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_mobj.h", "target": "tables.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_mobj.h", "target": "m_fixed.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_mobj.h", "target": "d_think.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_mobj.h", "target": "doomdata.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_mobj.h", "target": "info.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_plats.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_plats.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_plats.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_plats.c", "target": "m_random.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_plats.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_plats.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_plats.c", "target": "s_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_plats.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_plats.c", "target": "r_state.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_plats.c", "target": "sounds.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_pspr.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_pspr.c", "target": "d_event.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_pspr.c", "target": "deh_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_pspr.c", "target": "m_random.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_pspr.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_pspr.c", "target": "s_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_pspr.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_pspr.c", "target": "sounds.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_pspr.c", "target": "p_pspr.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_pspr.h", "target": "m_fixed.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_pspr.h", "target": "tables.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_pspr.h", "target": "info.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_saveg.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_saveg.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_saveg.c", "target": "dstrings.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_saveg.c", "target": "deh_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_saveg.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_saveg.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_saveg.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_saveg.c", "target": "p_saveg.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_saveg.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_saveg.c", "target": "g_game.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_saveg.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_saveg.c", "target": "r_state.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_saveg.h", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_setup.c", "target": "math.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_setup.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_setup.c", "target": "deh_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_setup.c", "target": "i_swap.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_setup.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_setup.c", "target": "m_bbox.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_setup.c", "target": "g_game.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_setup.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_setup.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_setup.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_setup.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_setup.c", "target": "s_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_setup.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_sight.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_sight.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_sight.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_sight.c", "target": "r_state.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_spec.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_spec.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_spec.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_spec.c", "target": "deh_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_spec.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_spec.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_spec.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_spec.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_spec.c", "target": "m_random.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_spec.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_spec.c", "target": "r_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_spec.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_spec.c", "target": "g_game.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_spec.c", "target": "s_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_spec.c", "target": "r_state.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_spec.c", "target": "sounds.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_switch.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_switch.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_switch.c", "target": "deh_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_switch.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_switch.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_switch.c", "target": "g_game.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_switch.c", "target": "s_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_switch.c", "target": "sounds.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_switch.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_switch.c", "target": "r_state.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_telept.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_telept.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_telept.c", "target": "s_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_telept.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_telept.c", "target": "sounds.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_telept.c", "target": "r_state.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_tick.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_tick.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_tick.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_user.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_user.c", "target": "d_event.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_user.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_user.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_bsp.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_bsp.c", "target": "m_bbox.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_bsp.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_bsp.c", "target": "r_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_bsp.c", "target": "r_plane.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_bsp.c", "target": "r_things.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_bsp.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_bsp.c", "target": "r_state.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_data.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_data.c", "target": "deh_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_data.c", "target": "i_swap.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_data.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_data.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_data.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_data.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_data.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_data.c", "target": "r_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_data.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_data.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_data.c", "target": "r_sky.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_data.c", "target": "r_data.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_data.h", "target": "r_defs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_data.h", "target": "r_state.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_defs.h", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_defs.h", "target": "m_fixed.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_defs.h", "target": "d_think.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_defs.h", "target": "p_mobj.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_defs.h", "target": "i_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_defs.h", "target": "v_patch.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_draw.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_draw.c", "target": "deh_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_draw.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_draw.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_draw.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_draw.c", "target": "r_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_draw.c", "target": "v_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_draw.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_local.h", "target": "tables.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_local.h", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_local.h", "target": "r_data.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_local.h", "target": "r_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_local.h", "target": "r_bsp.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_local.h", "target": "r_segs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_local.h", "target": "r_plane.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_local.h", "target": "r_things.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_local.h", "target": "r_draw.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_main.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_main.c", "target": "math.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_main.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_main.c", "target": "d_loop.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_main.c", "target": "m_bbox.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_main.c", "target": "m_menu.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_main.c", "target": "r_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_main.c", "target": "r_sky.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_main.h", "target": "d_player.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_main.h", "target": "r_data.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_plane.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_plane.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_plane.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_plane.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_plane.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_plane.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_plane.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_plane.c", "target": "r_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_plane.c", "target": "r_sky.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_plane.h", "target": "r_data.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_segs.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_segs.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_segs.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_segs.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_segs.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_segs.c", "target": "r_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_segs.c", "target": "r_sky.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_sky.c", "target": "m_fixed.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_sky.c", "target": "r_data.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_sky.c", "target": "r_sky.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_state.h", "target": "d_player.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_state.h", "target": "r_data.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_things.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_things.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_things.c", "target": "deh_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_things.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_things.c", "target": "i_swap.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_things.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_things.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_things.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_things.c", "target": "r_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_things.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/s_sound.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/s_sound.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/s_sound.c", "target": "i_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/s_sound.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/s_sound.c", "target": "doomfeatures.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/s_sound.c", "target": "deh_str.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/s_sound.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/s_sound.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/s_sound.c", "target": "sounds.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/s_sound.c", "target": "s_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/s_sound.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/s_sound.c", "target": "m_random.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/s_sound.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/s_sound.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/s_sound.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/s_sound.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/s_sound.h", "target": "p_mobj.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/s_sound.h", "target": "sounds.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/sha1.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/sha1.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/sha1.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/sha1.c", "target": "assert.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/sha1.c", "target": "i_swap.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/sha1.c", "target": "sha1.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/sha1.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/sounds.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/sounds.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/sounds.c", "target": "sounds.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/sounds.h", "target": "i_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_lib.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_lib.c", "target": "ctype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_lib.c", "target": "deh_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_lib.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_lib.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_lib.c", "target": "v_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_lib.c", "target": "i_swap.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_lib.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_lib.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_lib.c", "target": "st_stuff.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_lib.c", "target": "st_lib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_lib.c", "target": "r_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_lib.h", "target": "r_defs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "i_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "m_random.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "deh_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "deh_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "g_game.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "st_stuff.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "st_lib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "r_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "p_inter.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "am_map.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "m_cheat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "s_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "v_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "dstrings.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "sounds.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.h", "target": "d_event.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.h", "target": "m_cheat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/statdump.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/statdump.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/statdump.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/statdump.c", "target": "d_player.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/statdump.c", "target": "d_mode.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/statdump.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/statdump.c", "target": "statdump.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/tables.c", "target": "tables.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/tables.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/tables.h", "target": "m_fixed.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/v_video.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/v_video.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/v_video.c", "target": "math.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/v_video.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/v_video.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/v_video.c", "target": "deh_str.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/v_video.c", "target": "i_swap.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/v_video.c", "target": "i_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/v_video.c", "target": "m_bbox.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/v_video.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/v_video.c", "target": "v_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/v_video.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/v_video.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/v_video.c", "target": "config.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/v_video.c", "target": "png.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/v_video.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/v_video.h", "target": "v_patch.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_checksum.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_checksum.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_checksum.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_checksum.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_checksum.c", "target": "sha1.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_checksum.c", "target": "w_checksum.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_checksum.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_checksum.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_file.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_file.c", "target": "config.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_file.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_file.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_file.c", "target": "w_file.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_file.h", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_file.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_file_stdc.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_file_stdc.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_file_stdc.c", "target": "w_file.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_file_stdc.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_main.c", "target": "doomfeatures.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_main.c", "target": "d_iwad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_main.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_main.c", "target": "w_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_main.c", "target": "w_merge.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_main.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_main.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_wad.c", "target": "ctype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_wad.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_wad.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_wad.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_wad.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_wad.c", "target": "config.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_wad.c", "target": "d_iwad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_wad.c", "target": "i_swap.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_wad.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_wad.c", "target": "i_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_wad.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_wad.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_wad.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_wad.h", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_wad.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_wad.h", "target": "d_mode.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_wad.h", "target": "w_file.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "m_random.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "deh_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "i_swap.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "g_game.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "r_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "s_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "sounds.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "v_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "wi_stuff.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/wi_stuff.h", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/z_zone.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/z_zone.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/z_zone.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/z_zone.h", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/file/file.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/file/file.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/file/file.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/file/file.c", "target": "stdint.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/file/file.c", "target": "minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/file/file.c", "target": "minios_png.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/file/file.c", "target": "file/file_assoc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/file/file.c", "target": "nuklear.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/file/file.c", "target": "nuklear_minios.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/file/file.c", "target": "nuklear_theme.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/file/file.c", "target": "stb_image.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/file/file_assoc.h", "target": "stddef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/file/file_assoc.h", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/file/file_assoc.h", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/freedomui/freedomui_minios.c", "target": "minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/freedomui/freedomui_minios.c", "target": "nk_palette.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/freedomui/freedomui_minios.c", "target": "url.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/freedomui/freedomui_minios.c", "target": "link_nav.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/freedomui/freedomui_minios.c", "target": "html_parse.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/freedomui/freedomui_minios.c", "target": "ui.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/freedomui/freedomui_minios.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/freedomui/freedomui_minios.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/freedomui/freedomui_minios.c", "target": "stdint.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/freedomui/freedomui_minios.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/freedomui/freedomui_minios.c", "target": "unistd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/freedomui/freedomui_minios.c", "target": "sys/socket.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/lisp/lisp.c", "target": "ctype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/lisp/lisp.c", "target": "errno.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/lisp/lisp.c", "target": "inttypes.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/lisp/lisp.c", "target": "limits.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/lisp/lisp.c", "target": "stdbool.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/lisp/lisp.c", "target": "stddef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/lisp/lisp.c", "target": "stdint.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/lisp/lisp.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/lisp/lisp.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/lisp/lisp.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/lisp/lisp.c", "target": "minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/lua/lua_main.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/lua/lua_main.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/lua/lua_main.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/lua/lua_main.c", "target": "lua.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/lua/lua_main.c", "target": "lauxlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/lua/lua_main.c", "target": "lualib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/lua/minios.c", "target": "lua.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/lua/minios.c", "target": "lauxlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/lua/minios.c", "target": "stdint.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/lua/minios.c", "target": "minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/micropython/variants/minios/lib/hello.py", "target": "minios"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/micropython/variants/minios/minios_module.c", "target": "py/runtime.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/micropython/variants/minios/minios_module.c", "target": "stdint.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/micropython/variants/minios/minios_module.c", "target": "minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/minicraft/minicraft.c", "target": "stdint.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/minicraft/minicraft.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/minicraft/minicraft.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/minicraft/minicraft.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/minicraft/minicraft.c", "target": "unistd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/minicraft/minicraft.c", "target": "math.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/minicraft/minicraft.c", "target": "minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/minios_png.h", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/minios_png.h", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/cvm_emit.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/cvm_emit.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/cvm_emit.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/cvm_emit.c", "target": "cvm_emit.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/cvm_emit.h", "target": "stddef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/font8x8.c", "target": "stdint.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/font8x8.c", "target": "nuklear_minios.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/node_editor.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/node_editor.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/node_editor.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/node_editor.c", "target": "math.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/node_editor.c", "target": "minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/node_editor.c", "target": "sys/types.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/node_editor.c", "target": "sys/stat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/node_editor.c", "target": "fcntl.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/node_editor.c", "target": "unistd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/node_editor.c", "target": "nuklear.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/node_editor.c", "target": "nuklear_minios.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/node_editor.c", "target": "nuklear_theme.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/node_editor.c", "target": "cvm_emit.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/nuklear_minios.c", "target": "nuklear.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/nuklear_minios.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/nuklear_minios.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/nuklear_minios.c", "target": "math.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/nuklear_minios.c", "target": "nuklear_minios.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/nuklear_minios.c", "target": "nk_palette.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/nuklear_minios.c", "target": "wl/wl_mbox.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/nuklear_minios.c", "target": "wl/wl_client.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/nuklear_minios.h", "target": "stdint.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/nuklear_minios.h", "target": "minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/nuklear_theme.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/nuklear_theme.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/nuklear_theme.c", "target": "nuklear.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/nuklear_theme.c", "target": "nuklear_theme.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/paint/paint.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/paint/paint.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/paint/paint.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/paint/paint.c", "target": "stdint.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/paint/paint.c", "target": "minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/paint/paint.c", "target": "nuklear.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/paint/paint.c", "target": "nuklear_minios.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/paint/paint.c", "target": "nuklear_theme.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/paint/paint.c", "target": "stb_image.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/piano/piano.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/piano/piano.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/piano/piano.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/piano/piano.c", "target": "math.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/piano/piano.c", "target": "nuklear.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/piano/piano.c", "target": "nuklear_minios.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/piano/piano.c", "target": "nuklear_theme.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/piano/piano.c", "target": "opl3.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/piano/piano.c", "target": "minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/pokemon/minios_stubs/SDL.h", "target": "stdint.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/pokemon/platform_minios.c", "target": "gbrt.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/pokemon/platform_minios.c", "target": "ppu.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/pokemon/platform_minios.c", "target": "platform_sdl.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/pokemon/platform_minios.c", "target": "audio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/pokemon/platform_minios.c", "target": "stdint.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/pokemon/platform_minios.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/pokemon/platform_minios.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/pokemon/platform_minios.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/pokemon/platform_minios.c", "target": "minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/pokemon/platform_minios.c", "target": "minios_png.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/pokemon/platform_minios.c", "target": "stb_image.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/quake2generic/q2generic_minios.c", "target": "quake2.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/quake2generic/q2generic_minios.c", "target": "quakegeneric.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/quake2generic/q2generic_minios.c", "target": "client/keys.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/quake2generic/q2generic_minios.c", "target": "ref_soft/r_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/quake2generic/q2generic_minios.c", "target": "stdint.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/quake2generic/q2generic_minios.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/quake2generic/q2generic_minios.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/quake2generic/q2generic_minios.c", "target": "minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/audio.c", "target": "minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/fptest.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/fptest.c", "target": "mthreads.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/fptest.c", "target": "minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/freedom.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/freedom.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/freedom.c", "target": "unistd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/freedom.c", "target": "sys/socket.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/freedom_wl.c", "target": "minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/freedom_wl.c", "target": "vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/freedom_wl.c", "target": "nk_palette.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/freedom_wl.c", "target": "wl/wl_mini.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/freedom_wl.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/freedom_wl.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/freedom_wl.c", "target": "stdint.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/freedom_wl.c", "target": "unistd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/freedom_wl.c", "target": "sys/socket.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/mthreads.h", "target": "minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/opl3.c", "target": "stdint.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/opl3.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/opl3.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/opl3.c", "target": "opl3.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/opl3.c", "target": "minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/sbtone.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/sbtone.c", "target": "math.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/sbtone.c", "target": "minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/shell.py", "target": "minios"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/shell.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/shell.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/test.py", "target": "minios"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/test.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/thdemo.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/thdemo.c", "target": "mthreads.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/thdemo.c", "target": "minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_main.c", "target": "sys/types.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_main.c", "target": "sys/socket.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_main.c", "target": "netinet/in.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_main.c", "target": "arpa/inet.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_main.c", "target": "netdb.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_main.c", "target": "unistd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_main.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_main.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_main.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_main.c", "target": "stdarg.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_main.c", "target": "tls_port.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_main.c", "target": "tls.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_port.c", "target": "sys/types.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_port.c", "target": "sys/socket.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_port.c", "target": "netinet/in.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_port.c", "target": "arpa/inet.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_port.c", "target": "netdb.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_port.c", "target": "sys/time.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_port.c", "target": "poll.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_port.c", "target": "unistd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_port.c", "target": "fcntl.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_port.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_port.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_port.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_port.c", "target": "time.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/topogpt3/topogpt3.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/topogpt3/topogpt3.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/topogpt3/topogpt3.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/vedit/vedit.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/vedit/vedit.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/vedit/vedit.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/vedit/vedit.c", "target": "stdint.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/vedit/vedit.c", "target": "nuklear.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/vedit/vedit.c", "target": "nuklear_minios.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/vedit/vedit.c", "target": "nuklear_theme.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/wl/wl_client.h", "target": "wl/wl_mbox.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/wl/wl_mbox.h", "target": "wl_mini.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/wl/wl_pixbuf.h", "target": "stddef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/wl/wl_pixbuf.h", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/wl/wl_pixbuf.h", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/wl/wlcomp.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/wl/wlcomp.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/wl/wlcomp.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/wl/wlcomp.c", "target": "unistd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/wl/wlcomp.c", "target": "minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/wl/wlcomp.c", "target": "nk_palette.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/wl/wlcomp.c", "target": "wl_mini.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/wl/wlcomp.c", "target": "wl/wl_mbox.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/wl/wlcomp.c", "target": "wl/wl_client.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/wl/wlcomp.c", "target": "wl/wl_pixbuf.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "qga.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "qga.c", "target": "qga.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "qga.c", "target": "rtc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "smp.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "smp.c", "target": "bootdefs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "smp.c", "target": "smp.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "smp.c", "target": "sched.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "smp.c", "target": "ap_stub.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "smp.c", "target": "arch/x86/msr.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_abi.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_abi.c", "target": "abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_abi.c", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_batch.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_batch.c", "target": "batch.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_doom_pwad.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_doom_pwad.py", "target": "struct"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_doom_pwad.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_doom_pwad.py", "target": "unittest"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_doom_pwad.py", "target": "doom_pwad"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_doom_pwad.py", "target": "doom_pwad"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_doom_pwad.py", "target": "doom_pwad"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_driver.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_driver.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_driver.c", "target": "assert.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_driver.c", "target": "driver.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_fault.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_fault.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_fault.c", "target": "vma.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_file_assoc.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_file_assoc.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_file_assoc.c", "target": "progs/file/file_assoc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_freedom_wl.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_freedom_wl.c", "target": "../progs/src/freedom_wl.c"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_freedomui.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_freedomui.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_freedomui.c", "target": "../progs/freedomui/freedomui_minios.c"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_futex.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_futex.c", "target": "futex.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_hal_io.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_hal_io.c", "target": "arch/x86/hal_io.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_ktime.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_ktime.c", "target": "ktime.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_minios_png.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_minios_png.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_minios_png.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_minios_png.c", "target": "progs/minios_png.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_modifiers.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_modifiers.c", "target": "drivers/modifiers.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_notify.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_notify.c", "target": "wm_notify.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_paint.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_paint.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_percpu_rq.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_percpu_rq.c", "target": "percpu_rq.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_randmix.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_randmix.c", "target": "randmix.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_rcu.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_rcu.c", "target": "rcu.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_rtc.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_rtc.c", "target": "rtc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_sanitize.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_sanitize.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_sanitize.c", "target": "sanitize.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_sync.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_sync.c", "target": "sync.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_theme.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_theme.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_theme.c", "target": "../progs/nuklear/nuklear_theme.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_tick.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_tick.c", "target": "tick.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_vedit_build.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_vedit_build.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_vma.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_vma.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_vma.c", "target": "vma.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_vma_bench.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_vma_bench.c", "target": "sys/time.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_vma_bench.c", "target": "vma.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_wl.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_wl.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_wl.c", "target": "malloc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_wl.c", "target": "progs/wl/wl_mini.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_wl.c", "target": "progs/wl/wl_mbox.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_wl.c", "target": "progs/wl/wl_pixbuf.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_wl.c", "target": "progs/nk_palette.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_wl.c", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_wm.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_wm.c", "target": "wm_geom.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_wm.c", "target": "wm_events.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_wm.c", "target": "wm_window.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_wm.c", "target": "wm_render.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_wm.c", "target": "wm_tiling.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_wm.c", "target": "wm_focus.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_wm.c", "target": "wm_layout.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tls_test.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tls_test.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tls_test.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tls_test.c", "target": "unistd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tls_test.c", "target": "sys/socket.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tls_test.c", "target": "sys/select.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tls_test.c", "target": "netinet/in.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tls_test.c", "target": "arpa/inet.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tls_test.c", "target": "tls_port.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tls_test.c", "target": "tls.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tls_test.c", "target": "tls_test_roots.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/abi_stamp.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/abi_stamp.c", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/boot_wl.py", "target": "json"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/boot_wl.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/boot_wl.py", "target": "pty"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/boot_wl.py", "target": "select"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/boot_wl.py", "target": "socket"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/boot_wl.py", "target": "subprocess"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/boot_wl.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/boot_wl.py", "target": "tempfile"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/boot_wl.py", "target": "termios"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/boot_wl.py", "target": "time"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/boot_wl.py", "target": "tty"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_abi_numbers.py", "target": "re"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_abi_numbers.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_abi_numbers.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_addons.py", "target": "argparse"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_addons.py", "target": "importlib.util"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_addons.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_addons.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_cohesion.py", "target": "json"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_cohesion.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_cohesion.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_cohesion.py", "target": "argparse"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_complexity.py", "target": "re"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_complexity.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_complexity.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_complexity.py", "target": "argparse"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_fork_stubs.py", "target": "re"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_fork_stubs.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_kb_sync.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_kb_sync.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_kb_sync.py", "target": "subprocess"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_kb_sync.py", "target": "argparse"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_mutant_anchors.py", "target": "subprocess"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_mutant_anchors.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_mutant_anchors.py", "target": "tempfile"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_mutant_anchors.py", "target": "pathlib"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_surprising.py", "target": "json"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_surprising.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_surprising.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_surprising.py", "target": "collections"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_surprising.py", "target": "argparse"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_syscall_sanitize.py", "target": "re"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_syscall_sanitize.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/doom_pwad.py", "target": "math"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/doom_pwad.py", "target": "struct"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/doom_pwad.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/gdb_repro.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/gdb_repro.py", "target": "pty"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/gdb_repro.py", "target": "select"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/gdb_repro.py", "target": "socket"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/gdb_repro.py", "target": "subprocess"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/gdb_repro.py", "target": "time"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/gdb_repro.py", "target": "importlib.util"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/gen_desktop_pngs.py", "target": "argparse"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/gen_desktop_pngs.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/gen_desktop_pngs.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/gen_desktop_pngs.py", "target": "PIL"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/gen_icons.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/gen_icons.py", "target": "struct"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/gen_icons.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/gen_icons.py", "target": "zlib"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/gen_minifs.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/gen_zip_fixtures.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/gen_zip_fixtures.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/gen_zip_fixtures.py", "target": "zipfile"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/kernel_feature_survey.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/kernel_feature_survey.py", "target": "re"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/kernel_feature_survey.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minifs_dump.py", "target": "struct"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minifs_dump.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minifs_fsck.py", "target": "struct"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minifs_fsck.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minifs_fsck.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minifs_saves.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minifs_saves.py", "target": "struct"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minifs_saves.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minios_cli.py", "target": "json"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minios_cli.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minios_cli.py", "target": "select"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minios_cli.py", "target": "subprocess"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minios_cli.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minios_cli.py", "target": "tempfile"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minios_cli.py", "target": "time"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minios_gui.py", "target": "json"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minios_gui.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minios_gui.py", "target": "pty"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minios_gui.py", "target": "select"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minios_gui.py", "target": "socket"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minios_gui.py", "target": "subprocess"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minios_gui.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minios_gui.py", "target": "tempfile"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minios_gui.py", "target": "time"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minios_hyper.py", "target": "json"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minios_hyper.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minios_hyper.py", "target": "socket"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minios_hyper.py", "target": "struct"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minios_hyper.py", "target": "subprocess"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minios_hyper.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minios_hyper.py", "target": "tempfile"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minios_hyper.py", "target": "threading"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minios_hyper.py", "target": "time"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minios_hyper.py", "target": "PIL"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minios_hyper.py", "target": "PIL"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minios_hyper.py", "target": "PIL"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/mkfs.minifs.py", "target": "struct"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/mkfs.minifs.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/mkfs.minifs.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/mkpak1.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/mkpak1.py", "target": "struct"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/mkpak1.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/mkramdisk.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/mkramdisk.py", "target": "struct"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/mkramdisk.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/probe_compute_vga.py", "target": "json"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/probe_compute_vga.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/probe_compute_vga.py", "target": "socket"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/probe_compute_vga.py", "target": "subprocess"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/probe_compute_vga.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/probe_compute_vga.py", "target": "tempfile"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/probe_compute_vga.py", "target": "time"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/probe_compute_vga.py", "target": "PIL"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/probe_minicraft.py", "target": "json"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/probe_minicraft.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/probe_minicraft.py", "target": "re"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/probe_minicraft.py", "target": "socket"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/probe_minicraft.py", "target": "subprocess"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/probe_minicraft.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/probe_minicraft.py", "target": "tempfile"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/probe_minicraft.py", "target": "time"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/qga_client.py", "target": "json"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/qga_client.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/qga_client.py", "target": "socket"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/qga_client.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/qga_client.py", "target": "time"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/repro_gui.py", "target": "json"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/repro_gui.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/repro_gui.py", "target": "pty"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/repro_gui.py", "target": "select"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/repro_gui.py", "target": "socket"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/repro_gui.py", "target": "subprocess"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/repro_gui.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/repro_gui.py", "target": "tempfile"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/repro_gui.py", "target": "time"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_call_align.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_call_align.py", "target": "subprocess"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_call_align.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_call_align.py", "target": "tempfile"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_call_align.py", "target": "shutil"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_fashion.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_fashion.py", "target": "socket"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_fashion.py", "target": "subprocess"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_fashion.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_fashion.py", "target": "tempfile"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_fashion.py", "target": "threading"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_fashion.py", "target": "time"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_fashion.py", "target": "json"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_fashion.py", "target": "PIL"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_fashion.py", "target": "PIL"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_icon_cwd.py", "target": "json"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_icon_cwd.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_icon_cwd.py", "target": "socket"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_icon_cwd.py", "target": "subprocess"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_icon_cwd.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_icon_cwd.py", "target": "tempfile"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_icon_cwd.py", "target": "threading"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_icon_cwd.py", "target": "time"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_icon_cwd.py", "target": "PIL"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_icon_cwd.py", "target": "PIL"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_menu.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_menu.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_menu.py", "target": "time"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_menu.py", "target": "test_gui_wm"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_wm.py", "target": "json"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_wm.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_wm.py", "target": "socket"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_wm.py", "target": "subprocess"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_wm.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_wm.py", "target": "tempfile"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_wm.py", "target": "threading"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_wm.py", "target": "time"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_wm.py", "target": "PIL"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_wm.py", "target": "PIL"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_wm.py", "target": "PIL"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_zoom.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_zoom.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_zoom.py", "target": "time"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_zoom.py", "target": "test_gui_wm"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_zoom.py", "target": "PIL"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_http_server.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_http_server.py", "target": "time"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_http_server.py", "target": "http.server"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_http_server.py", "target": "fcntl"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_http_server.py", "target": "struct"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_lisp.py", "target": "argparse"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_lisp.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_lisp.py", "target": "shutil"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_lisp.py", "target": "subprocess"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_lisp.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_lisp.py", "target": "tempfile"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/tls_test.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/tls_test.py", "target": "re"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/tls_test.py", "target": "shlex"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/tls_test.py", "target": "socket"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/tls_test.py", "target": "ssl"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/tls_test.py", "target": "subprocess"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/tls_test.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/tls_test.py", "target": "threading"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/tls_test.py", "target": "time"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/tls_test.py", "target": "datetime"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/wm_layout_sync.py", "target": "__future__"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/wm_layout_sync.py", "target": "argparse"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/wm_layout_sync.py", "target": "pathlib"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/wm_layout_sync.py", "target": "re"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/wm_layout_sync.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "vma.c", "target": "vma.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "arch/x86/ap_entry.S", "target": "headers/arch/x86/boot/bootdefs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "arch/x86/boot/stage1.S", "target": "headers/arch/x86/boot/bootdefs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "arch/x86/boot/stage2.S", "target": "headers/arch/x86/boot/bootdefs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "drivers/block.c", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "drivers/block.c", "target": "headers/ide.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "drivers/block.c", "target": "headers/block.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "drivers/block.c", "target": "headers/driver.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "drivers/driver.c", "target": "headers/driver.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "drivers/ide.c", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "drivers/ide.c", "target": "headers/ide.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "drivers/ide.c", "target": "headers/driver.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "drivers/kbd.c", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "drivers/kbd.c", "target": "headers/sched.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "drivers/kbd.c", "target": "headers/vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "drivers/kbd.c", "target": "headers/drivers/kbd.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "drivers/kbd.c", "target": "headers/drivers/modifiers.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "drivers/kbd.c", "target": "headers/wm_events.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "drivers/kbd.c", "target": "headers/arch/x86/hal_io.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "drivers/mouse.c", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "drivers/mouse.c", "target": "headers/arch/x86/hal_io.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "drivers/mouse.c", "target": "headers/drivers/mouse.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "drivers/pcspk.c", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "drivers/pcspk.c", "target": "headers/pcspk.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "drivers/pcspk.c", "target": "headers/driver.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "drivers/rtc.c", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "drivers/rtc.c", "target": "headers/rtc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "drivers/sb16.c", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "drivers/sb16.c", "target": "headers/sb16.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "drivers/sb16.c", "target": "headers/sync.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "drivers/sb16.c", "target": "headers/driver.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "fs/kfile.c", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "fs/kfile.c", "target": "headers/minifs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "fs/minifs.c", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "fs/minifs.c", "target": "headers/minifs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "fs/minifs.c", "target": "headers/block.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "fs/minifs.c", "target": "headers/ide.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "fs/minifs.c", "target": "headers/lz4_kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "fs/ramdisk.c", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "fs/vfs.c", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "fs/vfs.c", "target": "headers/minifs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "fs/zip.c", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "headers/drivers/mouse.h", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "headers/editor.h", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "headers/futex.h", "target": "headers/spinlock.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "headers/futex.h", "target": "headers/sched.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "headers/futex.h", "target": "headers/sync.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "headers/kernel/console_in.h", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "headers/kernel/vga_cursor.h", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "headers/kernel.h", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "headers/kernel.h", "target": "headers/vma.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "headers/kernel.h", "target": "headers/spinlock.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "headers/net/rtl8139.h", "target": "headers/net.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "headers/percpu_rq.h", "target": "headers/spinlock.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "headers/percpu_rq.h", "target": "headers/sched.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "headers/rcu.h", "target": "headers/spinlock.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "headers/rcu.h", "target": "headers/sched.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "headers/sched.h", "target": "headers/spinlock.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "headers/sched.h", "target": "headers/vma.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "headers/shell.h", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "headers/shell.h", "target": "headers/kernel/console_in.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "headers/smp.h", "target": "headers/spinlock.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "headers/spawn.h", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "headers/spawn.h", "target": "headers/vma.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "headers/spawn.h", "target": "headers/sched.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "headers/sync.h", "target": "headers/spinlock.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "headers/sync.h", "target": "headers/sched.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "headers/tls_port.h", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "headers/tls_port.h", "target": "kernel/time.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "headers/tls_port.h", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "headers/tls_port.h", "target": "headers/net.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "headers/vga_fb.h", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "headers/vga_fb.h", "target": "headers/wm_notify.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "headers/wm_events.h", "target": "headers/drivers/modifiers.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "headers/wm_focus.h", "target": "headers/wm_window.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "headers/wm_render.h", "target": "headers/wm_window.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "headers/wm_window.h", "target": "headers/wm_geom.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/abi.c", "target": "headers/abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/abi.c", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/batch.c", "target": "headers/batch.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/console.c", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/console.c", "target": "headers/sched.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/console.c", "target": "headers/vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/console_in.c", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/console_in.c", "target": "headers/drivers/kbd.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/console_in.c", "target": "headers/vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/console_in.c", "target": "headers/kernel/console_in.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/editor.c", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/editor.c", "target": "headers/shell.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/editor.c", "target": "headers/editor.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/exec.c", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/exec.c", "target": "headers/arch/x86/boot/bootdefs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/exec.c", "target": "headers/arch/x86/msr.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/exec.c", "target": "headers/vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/exec.c", "target": "headers/sched.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/exec.c", "target": "headers/drivers/kbd.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/futex.c", "target": "headers/futex.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/futex.c", "target": "headers/sync.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/klog.c", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/loader.c", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/loader.c", "target": "headers/vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/lz4_kernel.c", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/lz4_kernel.c", "target": "headers/lz4_kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/minifetch.c", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/minifetch.c", "target": "headers/minifetch.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/minifetch.c", "target": "headers/minifs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/minifetch.c", "target": "headers/net.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/minifetch.c", "target": "headers/rtc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/minifetch.c", "target": "headers/sched.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/minifetch.c", "target": "headers/vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/mm/paging.c", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/mm/paging.c", "target": "headers/arch/x86/boot/bootdefs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/mm/paging.c", "target": "headers/vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/mm/paging.c", "target": "headers/arch/x86/msr.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/mm/swap.c", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/mm/swap.c", "target": "headers/ide.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/mm/swap.c", "target": "headers/lz4_kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/mm.c", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/mm.c", "target": "headers/sched.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/percpu_rq.c", "target": "headers/percpu_rq.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/printf.c", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/rcu.c", "target": "headers/rcu.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/redirect.c", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/sched.c", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/sched.c", "target": "headers/sched.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/sched.c", "target": "headers/smp.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/sched.c", "target": "headers/sync.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/sched.c", "target": "headers/futex.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/sched.c", "target": "headers/percpu_rq.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/sched.c", "target": "headers/rcu.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/sched.c", "target": "headers/arch/x86/boot/bootdefs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/sched.c", "target": "headers/vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/sched.c", "target": "headers/sb16.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/sched.c", "target": "headers/tick.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/sched.c", "target": "headers/arch/x86/hal_io.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/sched.c", "target": "headers/arch/x86/msr.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/sched.c", "target": "headers/drivers/mouse.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/scrollback.c", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/serial.c", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/serial.c", "target": "headers/sched.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/shell.c", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/shell.c", "target": "headers/net.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/shell.c", "target": "headers/minifs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/shell.c", "target": "headers/sched.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/shell.c", "target": "headers/smp.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/shell.c", "target": "headers/percpu_rq.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/shell.c", "target": "headers/vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/shell.c", "target": "headers/pcspk.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/shell.c", "target": "headers/sb16.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/shell.c", "target": "headers/rtc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/shell.c", "target": "headers/drivers/kbd.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/shell.c", "target": "headers/wm_layout.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/shell.c", "target": "headers/wm_notify.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/shell.c", "target": "headers/zip.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/shell.c", "target": "headers/minifetch.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/shell.c", "target": "headers/shell.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/shell.c", "target": "headers/editor.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/shell.c", "target": "headers/kernel/console_in.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/spawn.c", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/spawn.c", "target": "headers/sched.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/spawn.c", "target": "headers/vma.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/spawn.c", "target": "headers/spawn.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/spawn.c", "target": "headers/minifs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/spawn.c", "target": "headers/vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/spawn.c", "target": "headers/arch/x86/msr.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/string.c", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/symtab.c", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/sync.c", "target": "headers/sync.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "headers/net.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "headers/arch/x86/boot/bootdefs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "headers/minifs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "headers/ide.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "headers/block.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "headers/sched.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "headers/vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "headers/pcspk.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "headers/sb16.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "headers/rtc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "headers/lz4_kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "headers/drivers/kbd.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "headers/arch/x86/hal_io.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "headers/arch/x86/msr.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "headers/zip.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "headers/futex.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "headers/batch.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "headers/rcu.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "headers/percpu_rq.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "headers/sanitize.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "headers/driver.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "headers/syscalls_proc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "headers/shell.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "headers/ktime.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "headers/randmix.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "headers/spawn.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls_proc.c", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls_proc.c", "target": "headers/sched.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/tick.c", "target": "headers/tick.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/time.c", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/time.c", "target": "headers/ktime.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/vga_cursor.c", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/vga_cursor.c", "target": "headers/vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/vga_cursor.c", "target": "headers/kernel/vga_cursor.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/vga_fb.c", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/vga_fb.c", "target": "headers/kernel/vga_cursor.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/vga_fb.c", "target": "headers/vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/vga_fb.c", "target": "headers/arch/x86/boot/bootdefs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/vga_fb.c", "target": "headers/sched.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/vga_fb.c", "target": "headers/drivers/kbd.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/vga_fb.c", "target": "headers/desktop_shortcuts.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/vga_fb.c", "target": "headers/desktop_icons.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/vga_fb.c", "target": "headers/wm_geom.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/vga_fb.c", "target": "headers/wm_events.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/vga_fb.c", "target": "headers/wm_window.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/vga_fb.c", "target": "headers/wm_render.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/vga_fb.c", "target": "headers/wm_tiling.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/vga_fb.c", "target": "headers/wm_focus.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/vga_fb.c", "target": "headers/wm_layout.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/vga_fb.c", "target": "headers/wm_notify.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel.c", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel.c", "target": "headers/abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel.c", "target": "headers/net.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel.c", "target": "headers/arch/x86/boot/bootdefs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel.c", "target": "headers/minifs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel.c", "target": "headers/ide.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel.c", "target": "headers/block.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel.c", "target": "headers/sched.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel.c", "target": "headers/vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel.c", "target": "headers/sb16.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel.c", "target": "headers/smp.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel.c", "target": "headers/arch/x86/msr.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "mcp/mcp_dbg_driver.py", "target": "kernel/time.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "mcp/mcp_dogfood.py", "target": "kernel/time.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "mcp/minios_addons.py", "target": "kernel/time.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "mcp/minios_mcp.py", "target": "kernel/time.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "mcp/minios_mcp.py", "target": "mcp/minios_addons.py"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "net/net.c", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "net/net.c", "target": "headers/net.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "net/net.c", "target": "headers/tls.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "net/net.c", "target": "headers/net/rtl8139.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "net/rtl8139.c", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "net/rtl8139.c", "target": "headers/net.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "net/rtl8139.c", "target": "headers/net/rtl8139.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "net/tls.c", "target": "headers/tls_port.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "net/tls.c", "target": "headers/tls.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "net/tls.c", "target": "headers/tls_roots.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "net/tls_crypto.c", "target": "headers/tls_port.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "net/tls_crypto.c", "target": "headers/tls.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "net/tls_x509.c", "target": "headers/tls_port.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "net/tls_x509.c", "target": "headers/tls.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomedit/doomedit.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomedit/doomedit.c", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomedit/doomedit.c", "target": "progs/nuklear/nuklear_minios.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomedit/doomedit.c", "target": "progs/nuklear/nuklear_theme.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/am_map.c", "target": "progs/doomgeneric/deh_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/am_map.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/am_map.c", "target": "progs/doomgeneric/doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/am_map.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/am_map.c", "target": "progs/doomgeneric/st_stuff.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/am_map.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/am_map.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/am_map.c", "target": "progs/doomgeneric/m_cheat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/am_map.c", "target": "progs/doomgeneric/m_controls.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/am_map.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/am_map.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/am_map.c", "target": "progs/doomgeneric/v_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/am_map.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/am_map.c", "target": "progs/doomgeneric/r_state.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/am_map.c", "target": "progs/doomgeneric/dstrings.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/am_map.c", "target": "progs/doomgeneric/am_map.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/am_map.h", "target": "progs/doomgeneric/d_event.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/am_map.h", "target": "progs/doomgeneric/m_cheat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_event.c", "target": "progs/doomgeneric/d_event.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_event.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_items.c", "target": "progs/doomgeneric/info.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_items.c", "target": "progs/doomgeneric/d_items.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_items.h", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_iwad.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_iwad.c", "target": "progs/doomgeneric/config.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_iwad.c", "target": "progs/doomgeneric/deh_str.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_iwad.c", "target": "progs/doomgeneric/doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_iwad.c", "target": "progs/doomgeneric/d_iwad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_iwad.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_iwad.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_iwad.c", "target": "progs/doomgeneric/m_config.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_iwad.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_iwad.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_iwad.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_iwad.h", "target": "progs/doomgeneric/d_mode.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_loop.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_loop.c", "target": "progs/doomgeneric/doomfeatures.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_loop.c", "target": "progs/doomgeneric/d_event.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_loop.c", "target": "progs/doomgeneric/d_loop.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_loop.c", "target": "progs/doomgeneric/d_ticcmd.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_loop.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_loop.c", "target": "progs/doomgeneric/i_timer.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_loop.c", "target": "progs/doomgeneric/i_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_loop.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_loop.c", "target": "progs/doomgeneric/m_fixed.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_loop.c", "target": "progs/doomgeneric/net_client.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_loop.c", "target": "progs/doomgeneric/net_gui.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_loop.c", "target": "progs/doomgeneric/net_io.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_loop.c", "target": "progs/doomgeneric/net_query.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_loop.c", "target": "progs/doomgeneric/net_server.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_loop.c", "target": "progs/doomgeneric/net_sdl.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_loop.c", "target": "progs/doomgeneric/net_loop.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_loop.h", "target": "progs/doomgeneric/net_defs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/config.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/deh_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/dstrings.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/doomfeatures.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/sounds.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/d_iwad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/w_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/s_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/v_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/f_finale.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/f_wipe.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/m_config.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/m_controls.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/m_menu.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/p_saveg.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/i_endoom.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/i_joystick.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/i_timer.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/i_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/g_game.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/hu_stuff.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/wi_stuff.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/st_stuff.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/am_map.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/net_client.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/net_dedicated.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/net_query.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/p_setup.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/r_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/statdump.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/d_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.h", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_mode.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_mode.c", "target": "progs/doomgeneric/d_mode.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_mode.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_net.c", "target": "progs/doomgeneric/doomfeatures.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_net.c", "target": "progs/doomgeneric/d_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_net.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_net.c", "target": "progs/doomgeneric/m_menu.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_net.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_net.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_net.c", "target": "progs/doomgeneric/i_timer.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_net.c", "target": "progs/doomgeneric/i_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_net.c", "target": "progs/doomgeneric/g_game.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_net.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_net.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_net.c", "target": "progs/doomgeneric/w_checksum.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_net.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_net.c", "target": "progs/doomgeneric/deh_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_net.c", "target": "progs/doomgeneric/d_loop.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_player.h", "target": "progs/doomgeneric/d_items.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_player.h", "target": "progs/doomgeneric/p_pspr.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_player.h", "target": "progs/doomgeneric/p_mobj.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_player.h", "target": "progs/doomgeneric/d_ticcmd.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_player.h", "target": "progs/doomgeneric/net_defs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_textur.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_ticcmd.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/deh_main.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/deh_main.h", "target": "progs/doomgeneric/doomfeatures.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/deh_main.h", "target": "progs/doomgeneric/deh_str.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/deh_main.h", "target": "progs/doomgeneric/sha1.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/deh_misc.h", "target": "progs/doomgeneric/doomfeatures.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/deh_str.h", "target": "progs/doomgeneric/doomfeatures.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomdata.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomdata.h", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomdef.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomdef.h", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomdef.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomdef.h", "target": "progs/doomgeneric/i_timer.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomdef.h", "target": "progs/doomgeneric/d_mode.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomgeneric.c", "target": "progs/doomgeneric/doomgeneric.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomgeneric_minios.c", "target": "progs/doomgeneric/doomgeneric.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomgeneric_minios.c", "target": "progs/doomgeneric/doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomgeneric_minios.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomgeneric_minios.c", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomgeneric_sdl.c", "target": "progs/doomgeneric/doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomgeneric_sdl.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomgeneric_sdl.c", "target": "progs/doomgeneric/doomgeneric.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomgeneric_sdl.c", "target": "progs/pokemon/minios_stubs/SDL.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomgeneric_soso.c", "target": "progs/doomgeneric/doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomgeneric_soso.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomgeneric_soso.c", "target": "progs/doomgeneric/doomgeneric.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomgeneric_soso.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomgeneric_sosox.c", "target": "progs/doomgeneric/doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomgeneric_sosox.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomgeneric_sosox.c", "target": "progs/doomgeneric/doomgeneric.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomgeneric_sosox.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomgeneric_win.c", "target": "progs/doomgeneric/doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomgeneric_win.c", "target": "progs/doomgeneric/doomgeneric.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomgeneric_xlib.c", "target": "progs/doomgeneric/doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomgeneric_xlib.c", "target": "progs/doomgeneric/doomgeneric.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomgeneric_xlib.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomgeneric_xlib.c", "target": "kernel/time.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomstat.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomstat.h", "target": "progs/doomgeneric/doomdata.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomstat.h", "target": "progs/doomgeneric/d_loop.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomstat.h", "target": "progs/doomgeneric/d_player.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomstat.h", "target": "progs/doomgeneric/d_mode.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomstat.h", "target": "progs/doomgeneric/net_defs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/dstrings.c", "target": "progs/doomgeneric/dstrings.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/dstrings.h", "target": "progs/doomgeneric/d_englsh.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/dummy.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/f_finale.c", "target": "progs/doomgeneric/deh_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/f_finale.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/f_finale.c", "target": "progs/doomgeneric/i_swap.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/f_finale.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/f_finale.c", "target": "progs/doomgeneric/v_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/f_finale.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/f_finale.c", "target": "progs/doomgeneric/s_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/f_finale.c", "target": "progs/doomgeneric/d_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/f_finale.c", "target": "progs/doomgeneric/dstrings.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/f_finale.c", "target": "progs/doomgeneric/sounds.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/f_finale.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/f_finale.c", "target": "progs/doomgeneric/r_state.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/f_finale.c", "target": "progs/doomgeneric/hu_stuff.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/f_finale.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/f_finale.h", "target": "progs/doomgeneric/d_event.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/f_wipe.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/f_wipe.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/f_wipe.c", "target": "progs/doomgeneric/i_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/f_wipe.c", "target": "progs/doomgeneric/v_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/f_wipe.c", "target": "progs/doomgeneric/m_random.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/f_wipe.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/f_wipe.c", "target": "progs/doomgeneric/f_wipe.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/deh_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/deh_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/f_finale.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/m_controls.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/m_menu.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/m_random.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/i_timer.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/i_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/p_setup.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/p_saveg.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/p_tick.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/d_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/wi_stuff.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/hu_stuff.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/st_stuff.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/am_map.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/statdump.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/v_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/s_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/dstrings.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/sounds.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/r_data.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/r_sky.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/g_game.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.h", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.h", "target": "progs/doomgeneric/d_event.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.h", "target": "progs/doomgeneric/d_ticcmd.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/gusconf.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/gusconf.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/gusconf.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/gusconf.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_lib.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_lib.c", "target": "progs/doomgeneric/doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_lib.c", "target": "progs/doomgeneric/v_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_lib.c", "target": "progs/doomgeneric/i_swap.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_lib.c", "target": "progs/doomgeneric/hu_lib.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_lib.c", "target": "progs/doomgeneric/r_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_lib.c", "target": "progs/doomgeneric/r_draw.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_lib.h", "target": "progs/doomgeneric/r_defs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "progs/doomgeneric/doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "progs/doomgeneric/deh_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "progs/doomgeneric/i_swap.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "progs/doomgeneric/i_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "progs/doomgeneric/hu_stuff.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "progs/doomgeneric/hu_lib.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "progs/doomgeneric/m_controls.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "progs/doomgeneric/s_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "progs/doomgeneric/dstrings.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "progs/doomgeneric/sounds.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_stuff.h", "target": "progs/doomgeneric/d_event.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_cdmus.c", "target": "progs/pokemon/minios_stubs/SDL.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_cdmus.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_cdmus.c", "target": "progs/doomgeneric/i_cdmus.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_endoom.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_endoom.c", "target": "progs/doomgeneric/config.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_endoom.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_endoom.c", "target": "progs/doomgeneric/i_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_input.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_input.c", "target": "progs/doomgeneric/config.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_input.c", "target": "progs/doomgeneric/deh_str.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_input.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_input.c", "target": "progs/doomgeneric/doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_input.c", "target": "progs/doomgeneric/i_joystick.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_input.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_input.c", "target": "progs/doomgeneric/i_swap.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_input.c", "target": "progs/doomgeneric/i_timer.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_input.c", "target": "progs/doomgeneric/i_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_input.c", "target": "progs/doomgeneric/i_scale.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_input.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_input.c", "target": "progs/doomgeneric/m_config.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_input.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_input.c", "target": "progs/doomgeneric/tables.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_input.c", "target": "progs/doomgeneric/v_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_input.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_input.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_input.c", "target": "progs/doomgeneric/doomgeneric.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_joystick.c", "target": "progs/pokemon/minios_stubs/SDL.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_joystick.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_joystick.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_joystick.c", "target": "progs/doomgeneric/d_event.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_joystick.c", "target": "progs/doomgeneric/i_joystick.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_joystick.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_joystick.c", "target": "progs/doomgeneric/m_config.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_joystick.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_main.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_minios_sound.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_minios_sound.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_minios_sound.c", "target": "progs/doomgeneric/doomfeatures.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_minios_sound.c", "target": "progs/doomgeneric/i_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_minios_sound.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_minios_sound.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_minios_sound.c", "target": "progs/doomgeneric/doomgeneric.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_minios_sound.c", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_scale.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_scale.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_scale.c", "target": "progs/doomgeneric/i_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_scale.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_scale.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_scale.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_sound.c", "target": "progs/doomgeneric/config.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_sound.c", "target": "progs/doomgeneric/doomfeatures.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_sound.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_sound.c", "target": "progs/doomgeneric/gusconf.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_sound.c", "target": "progs/doomgeneric/i_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_sound.c", "target": "progs/doomgeneric/i_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_sound.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_sound.c", "target": "progs/doomgeneric/m_config.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_sound.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_system.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_system.c", "target": "progs/pokemon/minios_stubs/SDL.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_system.c", "target": "progs/doomgeneric/config.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_system.c", "target": "progs/doomgeneric/deh_str.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_system.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_system.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_system.c", "target": "progs/doomgeneric/m_config.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_system.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_system.c", "target": "progs/doomgeneric/i_joystick.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_system.c", "target": "progs/doomgeneric/i_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_system.c", "target": "progs/doomgeneric/i_timer.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_system.c", "target": "progs/doomgeneric/i_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_system.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_system.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_system.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_system.h", "target": "progs/doomgeneric/d_ticcmd.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_system.h", "target": "progs/doomgeneric/d_event.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_timer.c", "target": "progs/doomgeneric/i_timer.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_timer.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_timer.c", "target": "progs/doomgeneric/doomgeneric.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_video.c", "target": "progs/doomgeneric/config.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_video.c", "target": "progs/doomgeneric/v_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_video.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_video.c", "target": "progs/doomgeneric/d_event.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_video.c", "target": "progs/doomgeneric/d_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_video.c", "target": "progs/doomgeneric/i_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_video.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_video.c", "target": "progs/doomgeneric/tables.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_video.c", "target": "progs/doomgeneric/doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_video.c", "target": "progs/doomgeneric/doomgeneric.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_video.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/info.c", "target": "progs/doomgeneric/sounds.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/info.c", "target": "progs/doomgeneric/m_fixed.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/info.c", "target": "progs/doomgeneric/info.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/info.c", "target": "progs/doomgeneric/p_mobj.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/info.h", "target": "progs/doomgeneric/d_think.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_argv.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_argv.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_argv.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_argv.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_argv.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_argv.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_bbox.c", "target": "progs/doomgeneric/m_bbox.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_bbox.h", "target": "progs/doomgeneric/m_fixed.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_cheat.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_cheat.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_cheat.c", "target": "progs/doomgeneric/m_cheat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_config.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_config.c", "target": "progs/doomgeneric/config.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_config.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_config.c", "target": "progs/doomgeneric/doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_config.c", "target": "progs/doomgeneric/doomfeatures.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_config.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_config.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_config.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_config.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_config.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_controls.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_controls.c", "target": "progs/doomgeneric/doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_controls.c", "target": "progs/doomgeneric/m_config.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_controls.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_fixed.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_fixed.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_fixed.c", "target": "progs/doomgeneric/m_fixed.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.c", "target": "progs/doomgeneric/doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.c", "target": "progs/doomgeneric/dstrings.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.c", "target": "progs/doomgeneric/d_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.c", "target": "progs/doomgeneric/deh_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.c", "target": "progs/doomgeneric/i_swap.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.c", "target": "progs/doomgeneric/i_timer.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.c", "target": "progs/doomgeneric/i_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.c", "target": "progs/doomgeneric/v_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.c", "target": "progs/doomgeneric/r_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.c", "target": "progs/doomgeneric/hu_stuff.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.c", "target": "progs/doomgeneric/g_game.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.c", "target": "progs/doomgeneric/m_controls.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.c", "target": "progs/doomgeneric/p_saveg.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.c", "target": "progs/doomgeneric/s_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.c", "target": "progs/doomgeneric/sounds.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.c", "target": "progs/doomgeneric/m_menu.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.h", "target": "progs/doomgeneric/d_event.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_misc.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_misc.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_misc.c", "target": "progs/doomgeneric/deh_str.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_misc.c", "target": "progs/doomgeneric/i_swap.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_misc.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_misc.c", "target": "progs/doomgeneric/i_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_misc.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_misc.c", "target": "progs/doomgeneric/v_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_misc.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_misc.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_misc.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_random.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/memio.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/memio.c", "target": "progs/doomgeneric/memio.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/memio.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/net_client.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/net_client.h", "target": "progs/doomgeneric/d_ticcmd.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/net_client.h", "target": "progs/doomgeneric/sha1.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/net_client.h", "target": "progs/doomgeneric/net_defs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/net_defs.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/net_defs.h", "target": "progs/doomgeneric/d_ticcmd.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/net_defs.h", "target": "progs/doomgeneric/sha1.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/net_gui.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/net_io.h", "target": "progs/doomgeneric/net_defs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/net_loop.h", "target": "progs/doomgeneric/net_defs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/net_packet.h", "target": "progs/doomgeneric/net_defs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/net_query.h", "target": "progs/doomgeneric/net_defs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/net_sdl.h", "target": "progs/doomgeneric/net_defs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_ceilng.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_ceilng.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_ceilng.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_ceilng.c", "target": "progs/doomgeneric/s_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_ceilng.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_ceilng.c", "target": "progs/doomgeneric/r_state.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_ceilng.c", "target": "progs/doomgeneric/sounds.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_doors.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_doors.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_doors.c", "target": "progs/doomgeneric/deh_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_doors.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_doors.c", "target": "progs/doomgeneric/s_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_doors.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_doors.c", "target": "progs/doomgeneric/r_state.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_doors.c", "target": "progs/doomgeneric/dstrings.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_doors.c", "target": "progs/doomgeneric/sounds.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_enemy.c", "target": "progs/doomgeneric/m_random.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_enemy.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_enemy.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_enemy.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_enemy.c", "target": "progs/doomgeneric/s_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_enemy.c", "target": "progs/doomgeneric/g_game.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_enemy.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_enemy.c", "target": "progs/doomgeneric/r_state.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_enemy.c", "target": "progs/doomgeneric/sounds.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_floor.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_floor.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_floor.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_floor.c", "target": "progs/doomgeneric/s_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_floor.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_floor.c", "target": "progs/doomgeneric/r_state.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_floor.c", "target": "progs/doomgeneric/sounds.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_inter.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_inter.c", "target": "progs/doomgeneric/dstrings.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_inter.c", "target": "progs/doomgeneric/sounds.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_inter.c", "target": "progs/doomgeneric/deh_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_inter.c", "target": "progs/doomgeneric/deh_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_inter.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_inter.c", "target": "progs/doomgeneric/m_random.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_inter.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_inter.c", "target": "progs/doomgeneric/am_map.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_inter.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_inter.c", "target": "progs/doomgeneric/s_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_inter.c", "target": "progs/doomgeneric/p_inter.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_lights.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_lights.c", "target": "progs/doomgeneric/m_random.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_lights.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_lights.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_lights.c", "target": "progs/doomgeneric/r_state.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_local.h", "target": "progs/doomgeneric/r_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_local.h", "target": "progs/doomgeneric/p_spec.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_map.c", "target": "progs/doomgeneric/deh_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_map.c", "target": "progs/doomgeneric/m_bbox.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_map.c", "target": "progs/doomgeneric/m_random.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_map.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_map.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_map.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_map.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_map.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_map.c", "target": "progs/doomgeneric/s_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_map.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_map.c", "target": "progs/doomgeneric/r_state.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_map.c", "target": "progs/doomgeneric/sounds.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_maputl.c", "target": "progs/doomgeneric/m_bbox.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_maputl.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_maputl.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_maputl.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_maputl.c", "target": "progs/doomgeneric/r_state.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_mobj.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_mobj.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_mobj.c", "target": "progs/doomgeneric/m_random.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_mobj.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_mobj.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_mobj.c", "target": "progs/doomgeneric/sounds.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_mobj.c", "target": "progs/doomgeneric/st_stuff.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_mobj.c", "target": "progs/doomgeneric/hu_stuff.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_mobj.c", "target": "progs/doomgeneric/s_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_mobj.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_mobj.h", "target": "progs/doomgeneric/tables.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_mobj.h", "target": "progs/doomgeneric/m_fixed.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_mobj.h", "target": "progs/doomgeneric/d_think.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_mobj.h", "target": "progs/doomgeneric/doomdata.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_mobj.h", "target": "progs/doomgeneric/info.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_plats.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_plats.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_plats.c", "target": "progs/doomgeneric/m_random.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_plats.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_plats.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_plats.c", "target": "progs/doomgeneric/s_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_plats.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_plats.c", "target": "progs/doomgeneric/r_state.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_plats.c", "target": "progs/doomgeneric/sounds.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_pspr.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_pspr.c", "target": "progs/doomgeneric/d_event.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_pspr.c", "target": "progs/doomgeneric/deh_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_pspr.c", "target": "progs/doomgeneric/m_random.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_pspr.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_pspr.c", "target": "progs/doomgeneric/s_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_pspr.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_pspr.c", "target": "progs/doomgeneric/sounds.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_pspr.c", "target": "progs/doomgeneric/p_pspr.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_pspr.h", "target": "progs/doomgeneric/m_fixed.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_pspr.h", "target": "progs/doomgeneric/tables.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_pspr.h", "target": "progs/doomgeneric/info.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_saveg.c", "target": "progs/doomgeneric/dstrings.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_saveg.c", "target": "progs/doomgeneric/deh_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_saveg.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_saveg.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_saveg.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_saveg.c", "target": "progs/doomgeneric/p_saveg.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_saveg.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_saveg.c", "target": "progs/doomgeneric/g_game.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_saveg.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_saveg.c", "target": "progs/doomgeneric/r_state.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_setup.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_setup.c", "target": "progs/doomgeneric/deh_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_setup.c", "target": "progs/doomgeneric/i_swap.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_setup.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_setup.c", "target": "progs/doomgeneric/m_bbox.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_setup.c", "target": "progs/doomgeneric/g_game.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_setup.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_setup.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_setup.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_setup.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_setup.c", "target": "progs/doomgeneric/s_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_setup.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_sight.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_sight.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_sight.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_sight.c", "target": "progs/doomgeneric/r_state.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_spec.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_spec.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_spec.c", "target": "progs/doomgeneric/deh_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_spec.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_spec.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_spec.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_spec.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_spec.c", "target": "progs/doomgeneric/m_random.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_spec.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_spec.c", "target": "progs/doomgeneric/r_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_spec.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_spec.c", "target": "progs/doomgeneric/g_game.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_spec.c", "target": "progs/doomgeneric/s_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_spec.c", "target": "progs/doomgeneric/r_state.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_spec.c", "target": "progs/doomgeneric/sounds.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_switch.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_switch.c", "target": "progs/doomgeneric/deh_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_switch.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_switch.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_switch.c", "target": "progs/doomgeneric/g_game.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_switch.c", "target": "progs/doomgeneric/s_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_switch.c", "target": "progs/doomgeneric/sounds.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_switch.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_switch.c", "target": "progs/doomgeneric/r_state.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_telept.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_telept.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_telept.c", "target": "progs/doomgeneric/s_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_telept.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_telept.c", "target": "progs/doomgeneric/sounds.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_telept.c", "target": "progs/doomgeneric/r_state.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_tick.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_tick.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_tick.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_user.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_user.c", "target": "progs/doomgeneric/d_event.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_user.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_user.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_bsp.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_bsp.c", "target": "progs/doomgeneric/m_bbox.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_bsp.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_bsp.c", "target": "progs/doomgeneric/r_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_bsp.c", "target": "progs/doomgeneric/r_plane.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_bsp.c", "target": "progs/doomgeneric/r_things.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_bsp.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_bsp.c", "target": "progs/doomgeneric/r_state.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_data.c", "target": "progs/doomgeneric/deh_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_data.c", "target": "progs/doomgeneric/i_swap.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_data.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_data.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_data.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_data.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_data.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_data.c", "target": "progs/doomgeneric/r_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_data.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_data.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_data.c", "target": "progs/doomgeneric/r_sky.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_data.c", "target": "progs/doomgeneric/r_data.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_data.h", "target": "progs/doomgeneric/r_defs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_data.h", "target": "progs/doomgeneric/r_state.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_defs.h", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_defs.h", "target": "progs/doomgeneric/m_fixed.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_defs.h", "target": "progs/doomgeneric/d_think.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_defs.h", "target": "progs/doomgeneric/p_mobj.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_defs.h", "target": "progs/doomgeneric/i_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_defs.h", "target": "progs/doomgeneric/v_patch.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_draw.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_draw.c", "target": "progs/doomgeneric/deh_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_draw.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_draw.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_draw.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_draw.c", "target": "progs/doomgeneric/r_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_draw.c", "target": "progs/doomgeneric/v_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_draw.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_local.h", "target": "progs/doomgeneric/tables.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_local.h", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_local.h", "target": "progs/doomgeneric/r_data.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_local.h", "target": "progs/doomgeneric/r_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_local.h", "target": "progs/doomgeneric/r_bsp.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_local.h", "target": "progs/doomgeneric/r_segs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_local.h", "target": "progs/doomgeneric/r_plane.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_local.h", "target": "progs/doomgeneric/r_things.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_local.h", "target": "progs/doomgeneric/r_draw.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_main.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_main.c", "target": "progs/doomgeneric/d_loop.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_main.c", "target": "progs/doomgeneric/m_bbox.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_main.c", "target": "progs/doomgeneric/m_menu.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_main.c", "target": "progs/doomgeneric/r_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_main.c", "target": "progs/doomgeneric/r_sky.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_main.h", "target": "progs/doomgeneric/d_player.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_main.h", "target": "progs/doomgeneric/r_data.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_plane.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_plane.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_plane.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_plane.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_plane.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_plane.c", "target": "progs/doomgeneric/r_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_plane.c", "target": "progs/doomgeneric/r_sky.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_plane.h", "target": "progs/doomgeneric/r_data.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_segs.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_segs.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_segs.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_segs.c", "target": "progs/doomgeneric/r_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_segs.c", "target": "progs/doomgeneric/r_sky.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_sky.c", "target": "progs/doomgeneric/m_fixed.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_sky.c", "target": "progs/doomgeneric/r_data.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_sky.c", "target": "progs/doomgeneric/r_sky.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_state.h", "target": "progs/doomgeneric/d_player.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_state.h", "target": "progs/doomgeneric/r_data.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_things.c", "target": "progs/doomgeneric/deh_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_things.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_things.c", "target": "progs/doomgeneric/i_swap.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_things.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_things.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_things.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_things.c", "target": "progs/doomgeneric/r_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_things.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/s_sound.c", "target": "progs/doomgeneric/i_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/s_sound.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/s_sound.c", "target": "progs/doomgeneric/doomfeatures.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/s_sound.c", "target": "progs/doomgeneric/deh_str.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/s_sound.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/s_sound.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/s_sound.c", "target": "progs/doomgeneric/sounds.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/s_sound.c", "target": "progs/doomgeneric/s_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/s_sound.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/s_sound.c", "target": "progs/doomgeneric/m_random.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/s_sound.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/s_sound.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/s_sound.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/s_sound.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/s_sound.h", "target": "progs/doomgeneric/p_mobj.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/s_sound.h", "target": "progs/doomgeneric/sounds.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/sha1.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/sha1.c", "target": "progs/doomgeneric/i_swap.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/sha1.c", "target": "progs/doomgeneric/sha1.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/sha1.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/sounds.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/sounds.c", "target": "progs/doomgeneric/sounds.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/sounds.h", "target": "progs/doomgeneric/i_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_lib.c", "target": "progs/doomgeneric/deh_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_lib.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_lib.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_lib.c", "target": "progs/doomgeneric/v_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_lib.c", "target": "progs/doomgeneric/i_swap.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_lib.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_lib.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_lib.c", "target": "progs/doomgeneric/st_stuff.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_lib.c", "target": "progs/doomgeneric/st_lib.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_lib.c", "target": "progs/doomgeneric/r_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_lib.h", "target": "progs/doomgeneric/r_defs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.c", "target": "progs/doomgeneric/i_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.c", "target": "progs/doomgeneric/m_random.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.c", "target": "progs/doomgeneric/deh_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.c", "target": "progs/doomgeneric/deh_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.c", "target": "progs/doomgeneric/doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.c", "target": "progs/doomgeneric/g_game.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.c", "target": "progs/doomgeneric/st_stuff.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.c", "target": "progs/doomgeneric/st_lib.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.c", "target": "progs/doomgeneric/r_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.c", "target": "progs/doomgeneric/p_inter.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.c", "target": "progs/doomgeneric/am_map.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.c", "target": "progs/doomgeneric/m_cheat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.c", "target": "progs/doomgeneric/s_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.c", "target": "progs/doomgeneric/v_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.c", "target": "progs/doomgeneric/dstrings.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.c", "target": "progs/doomgeneric/sounds.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.h", "target": "progs/doomgeneric/d_event.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.h", "target": "progs/doomgeneric/m_cheat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/statdump.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/statdump.c", "target": "progs/doomgeneric/d_player.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/statdump.c", "target": "progs/doomgeneric/d_mode.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/statdump.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/statdump.c", "target": "progs/doomgeneric/statdump.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/tables.c", "target": "progs/doomgeneric/tables.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/tables.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/tables.h", "target": "progs/doomgeneric/m_fixed.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/v_video.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/v_video.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/v_video.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/v_video.c", "target": "progs/doomgeneric/deh_str.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/v_video.c", "target": "progs/doomgeneric/i_swap.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/v_video.c", "target": "progs/doomgeneric/i_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/v_video.c", "target": "progs/doomgeneric/m_bbox.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/v_video.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/v_video.c", "target": "progs/doomgeneric/v_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/v_video.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/v_video.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/v_video.c", "target": "progs/doomgeneric/config.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/v_video.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/v_video.h", "target": "progs/doomgeneric/v_patch.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_checksum.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_checksum.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_checksum.c", "target": "progs/doomgeneric/sha1.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_checksum.c", "target": "progs/doomgeneric/w_checksum.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_checksum.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_checksum.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_file.c", "target": "progs/doomgeneric/config.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_file.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_file.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_file.c", "target": "progs/doomgeneric/w_file.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_file.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_file_stdc.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_file_stdc.c", "target": "progs/doomgeneric/w_file.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_file_stdc.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_main.c", "target": "progs/doomgeneric/doomfeatures.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_main.c", "target": "progs/doomgeneric/d_iwad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_main.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_main.c", "target": "progs/doomgeneric/w_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_main.c", "target": "progs/doomgeneric/w_merge.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_main.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_main.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_wad.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_wad.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_wad.c", "target": "progs/doomgeneric/config.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_wad.c", "target": "progs/doomgeneric/d_iwad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_wad.c", "target": "progs/doomgeneric/i_swap.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_wad.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_wad.c", "target": "progs/doomgeneric/i_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_wad.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_wad.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_wad.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_wad.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_wad.h", "target": "progs/doomgeneric/d_mode.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_wad.h", "target": "progs/doomgeneric/w_file.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "progs/doomgeneric/m_random.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "progs/doomgeneric/deh_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "progs/doomgeneric/i_swap.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "progs/doomgeneric/g_game.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "progs/doomgeneric/r_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "progs/doomgeneric/s_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "progs/doomgeneric/sounds.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "progs/doomgeneric/v_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "progs/doomgeneric/wi_stuff.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/wi_stuff.h", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/z_zone.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/z_zone.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/z_zone.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/file/file.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/file/file.c", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/file/file.c", "target": "progs/minios_png.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/file/file.c", "target": "progs/file/file_assoc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/file/file.c", "target": "progs/nuklear/nuklear_minios.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/file/file.c", "target": "progs/nuklear/nuklear_theme.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/file/file_assoc.h", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/freedomui/freedomui_minios.c", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/freedomui/freedomui_minios.c", "target": "progs/nk_palette.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/freedomui/freedomui_minios.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/lisp/lisp.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/lisp/lisp.c", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/lua/lua_main.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/lua/minios.c", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/micropython/variants/minios/lib/hello.py", "target": "progs/lua/minios.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/micropython/variants/minios/minios_module.c", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/minicraft/minicraft.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/minicraft/minicraft.c", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/nuklear/cvm_emit.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/nuklear/cvm_emit.c", "target": "progs/nuklear/cvm_emit.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/nuklear/font8x8.c", "target": "progs/nuklear/nuklear_minios.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/nuklear/node_editor.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/nuklear/node_editor.c", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/nuklear/node_editor.c", "target": "progs/nuklear/nuklear_minios.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/nuklear/node_editor.c", "target": "progs/nuklear/nuklear_theme.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/nuklear/node_editor.c", "target": "progs/nuklear/cvm_emit.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/nuklear/nuklear_minios.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/nuklear/nuklear_minios.c", "target": "progs/nuklear/nuklear_minios.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/nuklear/nuklear_minios.c", "target": "progs/nk_palette.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/nuklear/nuklear_minios.c", "target": "progs/wl/wl_mbox.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/nuklear/nuklear_minios.c", "target": "progs/wl/wl_client.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/nuklear/nuklear_minios.h", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/nuklear/nuklear_theme.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/nuklear/nuklear_theme.c", "target": "progs/nuklear/nuklear_theme.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/paint/paint.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/paint/paint.c", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/paint/paint.c", "target": "progs/nuklear/nuklear_minios.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/paint/paint.c", "target": "progs/nuklear/nuklear_theme.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/piano/piano.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/piano/piano.c", "target": "progs/nuklear/nuklear_minios.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/piano/piano.c", "target": "progs/nuklear/nuklear_theme.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/piano/piano.c", "target": "progs/src/opl3.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/piano/piano.c", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/pokemon/platform_minios.c", "target": "headers/audio.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/pokemon/platform_minios.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/pokemon/platform_minios.c", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/pokemon/platform_minios.c", "target": "progs/minios_png.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/quake2generic/q2generic_minios.c", "target": "progs/doomgeneric/r_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/quake2generic/q2generic_minios.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/quake2generic/q2generic_minios.c", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/src/audio.c", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/src/fptest.c", "target": "progs/src/mthreads.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/src/fptest.c", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/src/freedom.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/src/freedom_wl.c", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/src/freedom_wl.c", "target": "headers/vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/src/freedom_wl.c", "target": "progs/nk_palette.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/src/freedom_wl.c", "target": "progs/wl/wl_mini.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/src/freedom_wl.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/src/mthreads.h", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/src/opl3.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/src/opl3.c", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/src/sbtone.c", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/src/shell.py", "target": "progs/lua/minios.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/src/test.py", "target": "progs/lua/minios.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/src/thdemo.c", "target": "progs/src/mthreads.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/src/thdemo.c", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/tls_u/tls_u_main.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/tls_u/tls_u_main.c", "target": "headers/tls_port.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/tls_u/tls_u_main.c", "target": "headers/tls.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/tls_u/tls_u_port.c", "target": "kernel/time.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/tls_u/tls_u_port.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/tls_u/tls_u_port.c", "target": "kernel/time.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/topogpt3/topogpt3.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/vedit/vedit.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/vedit/vedit.c", "target": "progs/nuklear/nuklear_minios.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/vedit/vedit.c", "target": "progs/nuklear/nuklear_theme.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/wl/wl_client.h", "target": "progs/wl/wl_mbox.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/wl/wl_mbox.h", "target": "progs/wl/wl_mini.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/wl/wl_pixbuf.h", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/wl/wlcomp.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/wl/wlcomp.c", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/wl/wlcomp.c", "target": "progs/nk_palette.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/wl/wlcomp.c", "target": "progs/wl/wl_mini.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/wl/wlcomp.c", "target": "progs/wl/wl_mbox.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/wl/wlcomp.c", "target": "progs/wl/wl_client.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/wl/wlcomp.c", "target": "progs/wl/wl_pixbuf.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "qga.c", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "qga.c", "target": "headers/qga.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "qga.c", "target": "headers/rtc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "smp.c", "target": "headers/kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "smp.c", "target": "headers/arch/x86/boot/bootdefs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "smp.c", "target": "headers/smp.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "smp.c", "target": "headers/sched.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "smp.c", "target": "headers/ap_stub.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "smp.c", "target": "headers/arch/x86/msr.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_abi.c", "target": "headers/abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_abi.c", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_batch.c", "target": "headers/batch.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_doom_pwad.py", "target": "tools/doom_pwad.py"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_doom_pwad.py", "target": "tools/doom_pwad.py"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_doom_pwad.py", "target": "tools/doom_pwad.py"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_driver.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_driver.c", "target": "headers/driver.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_fault.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_fault.c", "target": "headers/vma.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_file_assoc.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_file_assoc.c", "target": "progs/file/file_assoc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_freedom_wl.c", "target": "progs/src/freedom_wl.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_freedomui.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_freedomui.c", "target": "progs/freedomui/freedomui_minios.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_futex.c", "target": "headers/futex.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_hal_io.c", "target": "headers/arch/x86/hal_io.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_ktime.c", "target": "headers/ktime.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_minios_png.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_minios_png.c", "target": "progs/minios_png.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_modifiers.c", "target": "headers/drivers/modifiers.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_notify.c", "target": "headers/wm_notify.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_paint.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_percpu_rq.c", "target": "headers/percpu_rq.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_randmix.c", "target": "headers/randmix.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_rcu.c", "target": "headers/rcu.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_rtc.c", "target": "headers/rtc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_sanitize.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_sanitize.c", "target": "headers/sanitize.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_sync.c", "target": "headers/sync.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_theme.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_theme.c", "target": "progs/nuklear/nuklear_theme.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_tick.c", "target": "headers/tick.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_vedit_build.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_vma.c", "target": "headers/vma.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_vma_bench.c", "target": "kernel/time.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_vma_bench.c", "target": "headers/vma.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_wl.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_wl.c", "target": "progs/wl/wl_mini.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_wl.c", "target": "progs/wl/wl_mbox.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_wl.c", "target": "progs/wl/wl_pixbuf.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_wl.c", "target": "progs/nk_palette.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_wl.c", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_wm.c", "target": "headers/wm_geom.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_wm.c", "target": "headers/wm_events.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_wm.c", "target": "headers/wm_window.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_wm.c", "target": "headers/wm_render.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_wm.c", "target": "headers/wm_tiling.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_wm.c", "target": "headers/wm_focus.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_wm.c", "target": "headers/wm_layout.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tls_test.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tls_test.c", "target": "headers/tls_port.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tls_test.c", "target": "headers/tls.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tls_test.c", "target": "headers/tls_test_roots.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tools/abi_stamp.c", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tools/boot_wl.py", "target": "kernel/time.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tools/gdb_repro.py", "target": "kernel/time.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tools/minios_cli.py", "target": "kernel/time.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tools/minios_gui.py", "target": "kernel/time.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tools/minios_hyper.py", "target": "kernel/time.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tools/probe_compute_vga.py", "target": "kernel/time.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tools/probe_minicraft.py", "target": "kernel/time.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tools/qga_client.py", "target": "kernel/time.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tools/repro_gui.py", "target": "kernel/time.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tools/test_gui_fashion.py", "target": "kernel/time.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tools/test_gui_icon_cwd.py", "target": "kernel/time.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tools/test_gui_menu.py", "target": "kernel/time.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tools/test_gui_menu.py", "target": "tools/test_gui_wm.py"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tools/test_gui_wm.py", "target": "kernel/time.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tools/test_gui_zoom.py", "target": "kernel/time.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tools/test_gui_zoom.py", "target": "tools/test_gui_wm.py"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tools/test_http_server.py", "target": "kernel/time.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tools/tls_test.py", "target": "kernel/time.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "vma.c", "target": "headers/vma.h"}], "generator": "readmenator", "metadata": {"edge_count": 7810, "file_count": 478, "language_count": 7, "symbol_count": 9650}, "nodes": [{"doc": "ap_entry.S - SMP application-processor bootstrap stub.", "id": "arch/x86/ap_entry.S", "kind": "module", "label": "ap_entry.S", "language": "S", "sha256": "f901a6e3e7262b5e", "symbol_count": 9, "symbols": [{"kind": "function", "line": 21, "name": "ap_stub_start"}, {"kind": "function", "line": 39, "name": "ap_pm"}, {"kind": "function", "line": 62, "name": "ap_lm"}, {"kind": "function", "line": 80, "name": "ap_patch_slot"}, {"kind": "function", "line": 84, "name": "ap_gdt32"}, {"doc": "movw %ax, %ss /* Load smp_ap_entry()'s address from the BSP-patched slot and go. mov ap_patch_slot(%rip), %rax jmp *%rax .globl ap_patch_slot ap_patch_slot: .quad 0 .p2align 2 ap_gdt32: .quad 0x0000000000000000 .quad 0x00CF9A000000FFFF /* code32 base 0 limit 4G .quad 0x00CF92000000FFFF /* data32 base 0 limit 4G", "kind": "function", "line": 88, "name": "ap_gdt32_ptr"}, {"kind": "function", "line": 91, "name": "ap_gdt32_end"}, {"kind": "function", "line": 93, "name": "ap_gdt64_ptr"}, {"kind": "function", "line": 98, "name": "ap_stub_end"}]}, {"doc": "stage1.S - MiniOS boot sector.", "id": "arch/x86/boot/stage1.S", "kind": "module", "label": "stage1.S", "language": "S", "sha256": "24326caac4c8b35e", "symbol_count": 11, "symbols": [{"kind": "function", "line": 28, "name": "main"}, {"kind": "function", "line": 32, "name": "normalize"}, {"kind": "function", "line": 78, "name": "no_extensions"}, {"kind": "function", "line": 82, "name": "read_failed"}, {"kind": "function", "line": 85, "name": "fail"}, {"kind": "function", "line": 88, "name": "halt"}, {"kind": "function", "line": 93, "name": "puts"}, {"kind": "function", "line": 97, "name": "puts_next"}, {"kind": "function", "line": 103, "name": "puts_done"}, {"kind": "function", "line": 107, "name": "msg_no_lba"}, {"kind": "function", "line": 109, "name": "msg_read"}]}, {"doc": "stage2.S - MiniOS second-stage loader.", "id": "arch/x86/boot/stage2.S", "kind": "module", "label": "stage2.S", "language": "S", "sha256": "5704c24ee5e48aea", "symbol_count": 40, "symbols": [{"kind": "function", "line": 39, "name": "stage2_main"}, {"kind": "function", "line": 54, "name": "a20_ready"}, {"kind": "function", "line": 69, "name": "load_chunk"}, {"kind": "function", "line": 74, "name": "chunk_size_ready"}, {"kind": "function", "line": 81, "name": "read_piece"}, {"kind": "function", "line": 86, "name": "piece_size_ready"}, {"kind": "function", "line": 118, "name": "chunk_copy"}, {"kind": "function", "line": 131, "name": "chunk_leave_pm"}, {"kind": "function", "line": 141, "name": "chunk_resume"}, {"kind": "function", "line": 162, "name": "enter_long_mode"}, {"kind": "function", "line": 190, "name": "fill_pt0_low"}, {"kind": "function", "line": 208, "name": "dma_uncache"}, {"kind": "function", "line": 216, "name": "fill_pt0_kernel"}, {"kind": "function", "line": 235, "name": "fill_pt1_kernel"}, {"kind": "function", "line": 244, "name": "fill_pt1_bss"}, {"doc": "endif", "kind": "function", "line": 260, "name": "fill_page_directory"}, {"kind": "function", "line": 289, "name": "read_failed"}, {"kind": "function", "line": 293, "name": "halt"}, {"kind": "function", "line": 298, "name": "puts"}, {"kind": "function", "line": 302, "name": "puts_next"}, {"kind": "function", "line": 308, "name": "puts_done"}, {"kind": "function", "line": 312, "name": "msg_read"}, {"doc": "Probe VESA BIOS Extensions for a high-resolution linear framebuffer and record it for the kernel in the fixed VBE_INFO_ADDR struct. Tries the true-color modes that fit the emulated ~2 MB scan-out window (800x600x32, then 640x480x32), then the 8-bit-palette modes 1024x768x8, 800x600x8 and 640x480x8, then falls back to VGA Mode 13h. Runs in real mode (the kernel image is already fully loaded, so this scratch is safe) and must complete before the transition to long mode kills the BIOS video services. A true-color mode frees the desktop from the 256-entry VGA DAC palette; the 8-bit modes keep that path unchanged. A true-color mode whose framebuffer exceeds the ~2 MB QEMU scans out would render its bottom rows black, so * none taller than 800x600 is offered.", "kind": "function", "line": 326, "name": "vbe_probe"}, {"doc": "Try one VBE mode held in %bx. On success the mode is set with the linear framebuffer bit and carry is cleared; on any failure carry is set so the caller can try the next candidate. Only 8/24/32-bit modes are accepted: a 15/16-bit mode would need an RGB565 packer the kernel does not carry, * so it is skipped like an unsupported mode.", "kind": "function", "line": 368, "name": "vbe_try_mode"}, {"kind": "function", "line": 399, "name": "vbe_try_bpp_ok"}, {"kind": "function", "line": 424, "name": "vbe_set_fail"}, {"kind": "function", "line": 427, "name": "vbe_try_fail"}, {"kind": "function", "line": 433, "name": "vbe_ok"}, {"doc": "Pick the kernel's physical load base: a 2 MB-aligned address in the 64-position window above the kernel heap, seeded from the TSC and the RTC so consecutive boots land at different locations. Returns the base in eax. The virtual base stays at the link-time 0x100000, which PT0/PT1 map * to the returned physical base.", "kind": "function", "line": 442, "name": "kaslr_pick"}, {"kind": "function", "line": 479, "name": "gdt32_start"}, {"kind": "function", "line": 485, "name": "gdt32_end"}, {"kind": "function", "line": 486, "name": "gdt32_ptr"}, {"kind": "function", "line": 491, "name": "gdt64_image"}, {"kind": "function", "line": 497, "name": "gdt64_ptr"}, {"kind": "function", "line": 501, "name": "saved_gdtr"}, {"kind": "function", "line": 504, "name": "sectors_left"}, {"kind": "function", "line": 506, "name": "chunk_sectors"}, {"kind": "function", "line": 508, "name": "next_lba"}, {"kind": "function", "line": 510, "name": "dest_addr"}, {"kind": "function", "line": 512, "name": "kaslr_dest"}]}, {"id": "arch/x86/ctx_sw.S", "kind": "module", "label": "ctx_sw.S", "language": "S", "sha256": "80868cb5830b3006", "symbol_count": 6, "symbols": [{"kind": "function", "line": 44, "name": "switch_save_only"}, {"kind": "function", "line": 53, "name": "switch_to"}, {"kind": "function", "line": 96, "name": "switch_to_notrap"}, {"kind": "function", "line": 185, "name": "user_trampoline"}, {"kind": "function", "line": 198, "name": "resume_iretq"}, {"kind": "function", "line": 238, "name": "k_run_on_stack"}]}, {"id": "arch/x86/isr_stubs.S", "kind": "module", "label": "isr_stubs.S", "language": "S", "sha256": "9227535534f7ef58", "symbol_count": 24, "symbols": [{"kind": "function", "line": 67, "name": "tf_rax"}, {"kind": "function", "line": 68, "name": "tf_rbx"}, {"kind": "function", "line": 69, "name": "tf_rcx"}, {"kind": "function", "line": 70, "name": "tf_rdx"}, {"kind": "function", "line": 71, "name": "tf_rsi"}, {"kind": "function", "line": 72, "name": "tf_rdi"}, {"kind": "function", "line": 73, "name": "tf_rbp"}, {"kind": "function", "line": 74, "name": "tf_r8"}, {"kind": "function", "line": 75, "name": "tf_r9"}, {"kind": "function", "line": 76, "name": "tf_r10"}, {"kind": "function", "line": 77, "name": "tf_r11"}, {"kind": "function", "line": 78, "name": "tf_r12"}, {"kind": "function", "line": 79, "name": "tf_r13"}, {"kind": "function", "line": 80, "name": "tf_r14"}, {"kind": "function", "line": 81, "name": "tf_r15"}, {"kind": "function", "line": 82, "name": "tf_rip"}, {"kind": "function", "line": 83, "name": "tf_cs"}, {"kind": "function", "line": 84, "name": "tf_rflags"}, {"kind": "function", "line": 85, "name": "tf_rsp"}, {"kind": "function", "line": 86, "name": "tf_ss"}, {"kind": "function", "line": 87, "name": "tf_vector"}, {"kind": "function", "line": 88, "name": "tf_errcode"}, {"kind": "function", "line": 96, "name": "isr_common"}, {"kind": "function", "line": 195, "name": "isr_stub_table"}]}, {"id": "bootloader.c", "kind": "module", "label": "bootloader.c", "language": "c", "sha256": "ca3f118cd4e0f32e", "symbol_count": 2, "symbols": [{"kind": "function", "line": 21, "name": "main", "signature": "void main(void)"}, {"kind": "macro", "line": 19, "name": "KSECTORS", "signature": "#define KSECTORS"}]}, {"doc": "Block device layer for MiniFS.", "id": "drivers/block.c", "kind": "module", "label": "block.c", "language": "c", "sha256": "b133337afcb8fb8a", "symbol_count": 14, "symbols": [{"kind": "function", "line": 47, "name": "bc_index", "signature": "static unsigned int bc_index(unsigned int block_num)"}, {"kind": "function", "line": 51, "name": "bc_invalidate_locked", "signature": "static void bc_invalidate_locked(unsigned int block_num)"}, {"kind": "function", "line": 56, "name": "bc_invalidate", "signature": "static void bc_invalidate(unsigned int block_num)"}, {"kind": "function", "line": 63, "name": "block_init", "signature": "void block_init(void)"}, {"kind": "function", "line": 69, "name": "block_set_base", "signature": "void block_set_base(unsigned int lba_base)"}, {"kind": "function", "line": 89, "name": "block_dev_write", "signature": "static int block_dev_write(unsigned lba, unsigned count, const void *buf)"}, {"kind": "function", "line": 96, "name": "block_read", "signature": "int block_read(unsigned int block_num, void *buf)"}, {"kind": "function", "line": 135, "name": "block_write", "signature": "int block_write(unsigned int block_num, const void *buf)"}, {"kind": "function", "line": 144, "name": "block_read_multi", "signature": "int block_read_multi(unsigned int block_num, unsigned int count, void *buf)"}, {"kind": "function", "line": 149, "name": "block_write_multi", "signature": "int block_write_multi(unsigned int block_num, unsigned int count, const void *buf)"}, {"kind": "function", "line": 164, "name": "block_flush", "signature": "void block_flush(void)"}, {"kind": "function", "line": 166, "name": "block_total", "signature": "unsigned int block_total(void)"}, {"kind": "macro", "line": 41, "name": "BC_WAYS", "signature": "#define BC_WAYS"}, {"kind": "macro", "line": 42, "name": "BC_MASK", "signature": "#define BC_MASK"}]}, {"doc": "driver.c -- Device registry for the Strategy-pattern driver layer.", "id": "drivers/driver.c", "kind": "module", "label": "driver.c", "language": "c", "sha256": "af9f3087633bef42", "symbol_count": 8, "symbols": [{"kind": "function", "line": 14, "name": "dev_len", "signature": "static unsigned dev_len(const char *s)"}, {"kind": "function", "line": 20, "name": "dev_copy", "signature": "static void dev_copy(char *dst, const char *src, unsigned cap)"}, {"kind": "function", "line": 27, "name": "dev_eq", "signature": "static int dev_eq(const char *a, const char *b)"}, {"kind": "function", "line": 32, "name": "device_reset", "signature": "void device_reset(void)"}, {"kind": "function", "line": 44, "name": "device_register", "signature": "int device_register(device_t *dev)"}, {"kind": "function", "line": 66, "name": "device_find", "signature": "device_t *device_find(const char *name)"}, {"kind": "function", "line": 76, "name": "device_find_by_type", "signature": "device_t *device_find_by_type(int type)"}, {"kind": "function", "line": 85, "name": "device_count", "signature": "int device_count(void)"}]}, {"doc": "IDE/ATA PIO driver for MiniOS.", "id": "drivers/ide.c", "kind": "module", "label": "ide.c", "language": "c", "sha256": "41e85433ab7ea176", "symbol_count": 19, "symbols": [{"kind": "function", "line": 13, "name": "ide_delay", "signature": "static void ide_delay(void)"}, {"kind": "function", "line": 23, "name": "ide_read_status", "signature": "static unsigned char ide_read_status(void)"}, {"kind": "function", "line": 27, "name": "ide_wait_not_busy", "signature": "static int ide_wait_not_busy(unsigned int timeout)"}, {"kind": "function", "line": 35, "name": "ide_wait_drq", "signature": "static int ide_wait_drq(unsigned int timeout)"}, {"kind": "function", "line": 46, "name": "ide_select_drive", "signature": "static void ide_select_drive(unsigned char drive)"}, {"kind": "function", "line": 52, "name": "ide_soft_reset", "signature": "static void ide_soft_reset(void)"}, {"kind": "function", "line": 59, "name": "ide_identify", "signature": "static int ide_identify(void)"}, {"kind": "function", "line": 84, "name": "ide_init", "signature": "void ide_init(void)"}, {"kind": "function", "line": 103, "name": "ide_present", "signature": "int ide_present(void)"}, {"kind": "function", "line": 104, "name": "ide_total_sectors", "signature": "unsigned int ide_total_sectors(void)"}, {"kind": "function", "line": 106, "name": "ide_ops_read", "signature": "static int ide_ops_read(device_t *dev, unsigned lba, unsigned count, void *buf)"}, {"kind": "function", "line": 111, "name": "ide_ops_write", "signature": "static int ide_ops_write(device_t *dev, unsigned lba, unsigned count, const void *buf)"}, {"kind": "function", "line": 116, "name": "ide_ops_total", "signature": "static unsigned ide_ops_total(device_t *dev)"}, {"kind": "function", "line": 121, "name": "ide_ops_present", "signature": "static int ide_ops_present(device_t *dev)"}, {"kind": "function", "line": 141, "name": "ide_register_device", "signature": "void ide_register_device(void)"}, {"kind": "function", "line": 145, "name": "ide_read_sectors", "signature": "int ide_read_sectors(unsigned int lba, unsigned int count, void *buf)"}, {"kind": "function", "line": 176, "name": "ide_write_sectors", "signature": "int ide_write_sectors(unsigned int lba, unsigned int count, const void *buf)"}, {"kind": "function", "line": 206, "name": "ide_read_sector", "signature": "int ide_read_sector(unsigned int lba, void *buf)"}, {"kind": "function", "line": 210, "name": "ide_write_sector", "signature": "int ide_write_sector(unsigned int lba, const void *buf)"}]}, {"doc": "================================================================", "id": "drivers/kbd.c", "kind": "module", "label": "kbd.c", "language": "c", "sha256": "52f3b037cdcfba26", "symbol_count": 34, "symbols": [{"kind": "function", "line": 100, "name": "kbd_get_layout", "signature": "int kbd_get_layout(void)"}, {"kind": "function", "line": 101, "name": "kbd_set_layout", "signature": "void kbd_set_layout(int layout)"}, {"kind": "function", "line": 105, "name": "kbd_toggle_layout", "signature": "void kbd_toggle_layout(void)"}, {"doc": "#define kbd_super (kbd_mods.super) #define kbd_altgr (kbd_mods.altgr) #define KBD_QUEUE_LEN 8 #define KBD_SCAN_DEL 0x53 static unsigned char kbd_queue[KBD_QUEUE_LEN]; static int kbd_q_head, kbd_q_tail; static int kbd_e0; /** Docstring: Full-queue drop counters observable via wm state. static unsigned long kbd_drop_cooked; static unsigned long kbd_drop_raw; /** Docstring: Report cooked and raw queue drop counters.", "kind": "function", "line": 132, "name": "kbd_drop_counts", "signature": "void kbd_drop_counts(unsigned long *cooked, unsigned long *raw)"}, {"kind": "function", "line": 146, "name": "kbd_q_push", "signature": "void kbd_q_push(unsigned char c)"}, {"kind": "function", "line": 156, "name": "kbd_raw_push_internal", "signature": "static void kbd_raw_push_internal(unsigned char c)"}, {"kind": "function", "line": 166, "name": "kbd_q_empty", "signature": "int kbd_q_empty(void)"}, {"kind": "function", "line": 168, "name": "kbd_q_pop", "signature": "int kbd_q_pop(void)"}, {"kind": "function", "line": 175, "name": "kbd_available", "signature": "int kbd_available(void)"}, {"kind": "function", "line": 181, "name": "kbd_raw_mode_get", "signature": "int kbd_raw_mode_get(void)"}, {"kind": "function", "line": 182, "name": "kbd_raw_mode_set", "signature": "void kbd_raw_mode_set(int on)"}, {"kind": "function", "line": 183, "name": "kbd_raw_empty", "signature": "int kbd_raw_empty(void)"}, {"kind": "function", "line": 184, "name": "kbd_raw_pop", "signature": "int kbd_raw_pop(void)"}, {"kind": "function", "line": 190, "name": "kbd_raw_push_byte", "signature": "void kbd_raw_push_byte(unsigned char c)"}, {"kind": "function", "line": 191, "name": "kbd_e0_get", "signature": "int kbd_e0_get(void)"}, {"kind": "function", "line": 192, "name": "kbd_e0_set", "signature": "void kbd_e0_set(int v)"}, {"kind": "function", "line": 193, "name": "kbd_flush_all", "signature": "void kbd_flush_all(void)"}, {"doc": "Drop queued raw scancodes (shell-typed while a terminal owned PS/2) so a * newly focused game never replays them as input. Cooked shell keys stay.", "kind": "function", "line": 200, "name": "kbd_raw_flush", "signature": "void kbd_raw_flush(void)"}, {"kind": "function", "line": 221, "name": "raw_track_mods", "signature": "static int raw_track_mods(int code, int brk, int e0)"}, {"doc": "wm_raw_combo performs the WM action and reports 1 when the byte must be swallowed. Deliberately narrower than the cooked set: bare keys (Tab, F11/F5, arrows) always reach the game, and Alt+arrows stay with the game too (DOOM strafes with Alt+arrows); Super is never a game key, so the full Super set plus Alt+Tab / Alt+Enter / Alt+M,X,Q / Alt+[/]-/=/0 work raw. A swallowed Tab make also swallows its break (same flag as cooked * would need, kept here beside the consumer). static int wm_raw_swallow_tab_break; static int raw_track_mods(int code, int brk, int e0) { return modifiers_update(&kbd_keys, &kbd_mods, code, brk, e0); } /** Docstring: Dispatch one looked-up WM combo to the window manager.", "kind": "function", "line": 226, "name": "wm_combo_dispatch", "signature": "static int wm_combo_dispatch(int action, int zone)"}, {"kind": "function", "line": 278, "name": "wm_raw_combo", "signature": "static int wm_raw_combo(int code, int e0)"}, {"kind": "function", "line": 297, "name": "bare", "signature": "* second byte is not a WM combo is delivered bare (keypad alias): games map\n * both, so play surv..."}, {"kind": "function", "line": 321, "name": "kbd_read", "signature": "int kbd_read(void)"}, {"kind": "function", "line": 446, "name": "kbd_reset_for_shell", "signature": "void kbd_reset_for_shell(void)"}, {"kind": "function", "line": 210, "name": "paths", "signature": "* keeps the modifier state in sync on both paths (the old raw branch never * tracked Alt/Super, so a modifier held across raw mode stuck forever);"}, {"kind": "function", "line": 215, "name": "too", "signature": "* too (DOOM strafes with Alt+arrows);"}, {"kind": "macro", "line": 115, "name": "kbd_shift", "signature": "#define kbd_shift"}, {"kind": "macro", "line": 116, "name": "kbd_ctrl", "signature": "#define kbd_ctrl"}, {"kind": "macro", "line": 117, "name": "kbd_alt", "signature": "#define kbd_alt"}, {"kind": "macro", "line": 118, "name": "kbd_super", "signature": "#define kbd_super"}, {"kind": "macro", "line": 119, "name": "kbd_altgr", "signature": "#define kbd_altgr"}, {"kind": "macro", "line": 121, "name": "KBD_QUEUE_LEN", "signature": "#define KBD_QUEUE_LEN"}, {"kind": "macro", "line": 122, "name": "KBD_SCAN_DEL", "signature": "#define KBD_SCAN_DEL"}, {"kind": "macro", "line": 141, "name": "KBD_RAW_LEN", "signature": "#define KBD_RAW_LEN"}]}, {"doc": "Docstring: PS/2 mouse device driver (drivers/mouse.c).", "id": "drivers/mouse.c", "kind": "module", "label": "mouse.c", "language": "c", "sha256": "1a61a663eac3539f", "symbol_count": 8, "symbols": [{"doc": "Docstring: PS/2 mouse device driver (drivers/mouse.c). Owns the controller handshake, the Intellimouse detect knock and the enable/disable verbs. The IRQ12 packet phase machine stays in the scheduler ISR dispatch beside the tick that consumes it; this unit only * talks to the controller through arch/x86/hal_io.h. #include \"kernel.h\" #include \"arch/x86/hal_io.h\" #include \"drivers/mouse.h\" /* ---- PS/2 mouse hardware init ----", "kind": "function", "line": 12, "name": "mouse_wait_cmd", "signature": "static void mouse_wait_cmd(void)"}, {"kind": "function", "line": 19, "name": "mouse_wait_data", "signature": "static void mouse_wait_data(void)"}, {"kind": "function", "line": 26, "name": "mouse_write", "signature": "static void mouse_write(unsigned char data)"}, {"kind": "function", "line": 33, "name": "mouse_read", "signature": "static unsigned char mouse_read(void)"}, {"kind": "function", "line": 38, "name": "mouse_hw_init", "signature": "void mouse_hw_init(void)"}, {"kind": "function", "line": 89, "name": "mouse_disable", "signature": "void mouse_disable(void)"}, {"kind": "function", "line": 90, "name": "mouse_enable", "signature": "void mouse_enable(void)"}, {"kind": "function", "line": 60, "name": "wrong", "signature": "* later packet is framed wrong (a left press reads back as bit 1, * motion warps), permanently. */ mouse_write(HAL_MOUSE_CMD_RESET);"}]}, {"doc": "PC speaker driver with a software master volume. The speaker has no", "id": "drivers/pcspk.c", "kind": "module", "label": "pcspk.c", "language": "c", "sha256": "df8bbdc4e82b0433", "symbol_count": 18, "symbols": [{"kind": "function", "line": 33, "name": "pcspk_ops_tone", "signature": "static void pcspk_ops_tone(device_t *dev, unsigned freq)"}, {"kind": "function", "line": 38, "name": "pcspk_ops_off", "signature": "static void pcspk_ops_off(device_t *dev)"}, {"kind": "function", "line": 43, "name": "pcspk_ops_set_volume", "signature": "static void pcspk_ops_set_volume(device_t *dev, unsigned vol)"}, {"kind": "function", "line": 48, "name": "pcspk_ops_get_volume", "signature": "static unsigned pcspk_ops_get_volume(device_t *dev)"}, {"kind": "function", "line": 72, "name": "pcspk_init", "signature": "void pcspk_init(void)"}, {"kind": "function", "line": 78, "name": "pcspk_set_volume", "signature": "void pcspk_set_volume(unsigned volume)"}, {"kind": "function", "line": 82, "name": "pcspk_get_volume", "signature": "unsigned pcspk_get_volume(void)"}, {"kind": "function", "line": 86, "name": "pcspk_tone", "signature": "void pcspk_tone(unsigned freq)"}, {"kind": "function", "line": 104, "name": "pcspk_off", "signature": "void pcspk_off(void)"}, {"kind": "macro", "line": 14, "name": "PIT_CH2_DATA", "signature": "#define PIT_CH2_DATA"}, {"kind": "macro", "line": 15, "name": "PIT_CH2_CMD", "signature": "#define PIT_CH2_CMD"}, {"kind": "macro", "line": 16, "name": "SPEAKER_PORT", "signature": "#define SPEAKER_PORT"}, {"kind": "macro", "line": 17, "name": "PIT_FREQ", "signature": "#define PIT_FREQ"}, {"kind": "macro", "line": 19, "name": "PCSPK_MIN_FREQ", "signature": "#define PCSPK_MIN_FREQ"}, {"kind": "macro", "line": 20, "name": "PCSPK_MAX_FREQ", "signature": "#define PCSPK_MAX_FREQ"}, {"kind": "macro", "line": 22, "name": "SPEAKER_DATA_BIT", "signature": "#define SPEAKER_DATA_BIT"}, {"kind": "macro", "line": 23, "name": "SPEAKER_GATE_BIT", "signature": "#define SPEAKER_GATE_BIT"}, {"kind": "macro", "line": 24, "name": "SPEAKER_ENABLE_BITS", "signature": "#define SPEAKER_ENABLE_BITS"}]}, {"doc": "CMOS RTC time-of-day reader. The desktop clock and the shell `date` builtin", "id": "drivers/rtc.c", "kind": "module", "label": "rtc.c", "language": "c", "sha256": "a49de26f906dfb05", "symbol_count": 25, "symbols": [{"kind": "function", "line": 35, "name": "rtc_cmos_read", "signature": "static inline unsigned char rtc_cmos_read(unsigned char reg)"}, {"kind": "function", "line": 40, "name": "rtc_from_bcd", "signature": "static int rtc_from_bcd(unsigned char v)"}, {"kind": "function", "line": 44, "name": "rtc_read_tod", "signature": "int rtc_read_tod(int *hour, int *min, int *sec)"}, {"kind": "function", "line": 68, "name": "rtc_month_len", "signature": "static int rtc_month_len(long full_year, long mon)"}, {"kind": "function", "line": 78, "name": "rtc_read_date", "signature": "int rtc_read_date(int *year, int *mon, int *day)"}, {"kind": "function", "line": 102, "name": "rtc_wall_seconds", "signature": "int rtc_wall_seconds(unsigned long *out)"}, {"kind": "macro", "line": 9, "name": "RTC_CMOS_ADDR", "signature": "#define RTC_CMOS_ADDR"}, {"kind": "macro", "line": 10, "name": "RTC_CMOS_DATA", "signature": "#define RTC_CMOS_DATA"}, {"kind": "macro", "line": 12, "name": "RTC_REG_SEC", "signature": "#define RTC_REG_SEC"}, {"kind": "macro", "line": 13, "name": "RTC_REG_MIN", "signature": "#define RTC_REG_MIN"}, {"kind": "macro", "line": 14, "name": "RTC_REG_HOUR", "signature": "#define RTC_REG_HOUR"}, {"kind": "macro", "line": 15, "name": "RTC_REG_DAY", "signature": "#define RTC_REG_DAY"}, {"kind": "macro", "line": 16, "name": "RTC_REG_MON", "signature": "#define RTC_REG_MON"}, {"kind": "macro", "line": 17, "name": "RTC_REG_YEAR", "signature": "#define RTC_REG_YEAR"}, {"kind": "macro", "line": 18, "name": "RTC_REG_STATUS_A", "signature": "#define RTC_REG_STATUS_A"}, {"kind": "macro", "line": 19, "name": "RTC_REG_STATUS_B", "signature": "#define RTC_REG_STATUS_B"}, {"kind": "macro", "line": 21, "name": "RTC_UPDATE_IN_PROGRESS", "signature": "#define RTC_UPDATE_IN_PROGRESS"}, {"kind": "macro", "line": 22, "name": "RTC_BCD_FLAG", "signature": "#define RTC_BCD_FLAG"}, {"kind": "macro", "line": 24, "name": "RTC_HOUR_MIN", "signature": "#define RTC_HOUR_MIN"}, {"kind": "macro", "line": 25, "name": "RTC_HOUR_MAX", "signature": "#define RTC_HOUR_MAX"}, {"kind": "macro", "line": 26, "name": "RTC_MIN_MIN", "signature": "#define RTC_MIN_MIN"}, {"kind": "macro", "line": 27, "name": "RTC_MIN_MAX", "signature": "#define RTC_MIN_MAX"}, {"kind": "macro", "line": 28, "name": "RTC_SEC_MIN", "signature": "#define RTC_SEC_MIN"}, {"kind": "macro", "line": 29, "name": "RTC_SEC_MAX", "signature": "#define RTC_SEC_MAX"}, {"kind": "macro", "line": 33, "name": "RTC_UPDATE_WAIT", "signature": "#define RTC_UPDATE_WAIT"}]}, {"doc": "Sound Blaster 16 DMA audio driver.", "id": "drivers/sb16.c", "kind": "module", "label": "sb16.c", "language": "c", "sha256": "2f4f8acb6ecc43ea", "symbol_count": 64, "symbols": [{"doc": "Mixer stream id backing the legacy sb16_pcm_open/submit API (WQ_NONE when closed). The legacy path forwards into the mixer so submitted PCM actually reaches the DMA ring through sb16_mix_all; a dedicated * kernel-side ring here would be a second, never-drained copy. static int legacy_stream = WQ_NONE; /* Reset the legacy kernel-side audio ring to empty.", "kind": "function", "line": 118, "name": "sb16_kring_reset", "signature": "static void sb16_kring_reset(void)"}, {"kind": "function", "line": 130, "name": "sb16_slot", "signature": "static unsigned char *sb16_slot(unsigned i)"}, {"kind": "function", "line": 138, "name": "sb16_stream_open", "signature": "int sb16_stream_open(void)"}, {"kind": "function", "line": 154, "name": "sb16_stream_close", "signature": "void sb16_stream_close(int id)"}, {"kind": "function", "line": 162, "name": "sb16_stream_submit", "signature": "int sb16_stream_submit(int id, const unsigned char *pcm, unsigned len)"}, {"kind": "function", "line": 177, "name": "sb16_stream_volume", "signature": "void sb16_stream_volume(int id, unsigned char vol)"}, {"kind": "function", "line": 183, "name": "sb16_stream_count", "signature": "int sb16_stream_count(void)"}, {"kind": "function", "line": 194, "name": "sb16_mix_all", "signature": "static void sb16_mix_all(void)"}, {"kind": "function", "line": 236, "name": "sb16_pump", "signature": "void sb16_pump(void)"}, {"doc": "DSP write-ready: bit 7 of the status port clear means the DSP accepts a command or data byte. Bounded so a dead DSP can never hang the kernel; the byte is still issued after the timeout (the DSP takes it * once it catches up after a reset).", "kind": "function", "line": 277, "name": "sb16_wait_write", "signature": "static int sb16_wait_write(void)"}, {"kind": "function", "line": 284, "name": "sb16_cmd", "signature": "static void sb16_cmd(unsigned char c)"}, {"kind": "function", "line": 289, "name": "sb16_read_data", "signature": "static int sb16_read_data(unsigned char *out)"}, {"kind": "function", "line": 301, "name": "sb16_reset_dsp", "signature": "static int sb16_reset_dsp(void)"}, {"kind": "function", "line": 314, "name": "sb16_dma_play", "signature": "static void sb16_dma_play(unsigned addr, unsigned len)"}, {"kind": "function", "line": 330, "name": "sb16_refill", "signature": "static void sb16_refill(int slot_index)"}, {"kind": "function", "line": 346, "name": "sb16_arm", "signature": "static void sb16_arm(int from_irq)"}, {"kind": "function", "line": 370, "name": "sb16_present", "signature": "int sb16_present(void)"}, {"kind": "function", "line": 372, "name": "sb16_tone", "signature": "void sb16_tone(unsigned freq)"}, {"kind": "function", "line": 387, "name": "sb16_pcm_open", "signature": "void sb16_pcm_open(void)"}, {"kind": "function", "line": 410, "name": "sb16_pcm_close", "signature": "void sb16_pcm_close(void)"}, {"kind": "function", "line": 419, "name": "sb16_pcm_submit", "signature": "int sb16_pcm_submit(const unsigned char *pcm, unsigned len)"}, {"kind": "function", "line": 436, "name": "sb16_irq", "signature": "void sb16_irq(void)"}, {"kind": "function", "line": 443, "name": "sb16_poll", "signature": "void sb16_poll(void)"}, {"kind": "function", "line": 448, "name": "sb16_ring_free", "signature": "unsigned sb16_ring_free(void)"}, {"kind": "function", "line": 449, "name": "sb16_mode_active", "signature": "int sb16_mode_active(void)"}, {"kind": "function", "line": 451, "name": "sb16_counters", "signature": "void sb16_counters(sb16_counters_t *out)"}, {"doc": "void sb16_poll(void) { sb16_pump(); sb16_arm(0); } unsigned sb16_ring_free(void) { return pcm_free; } int sb16_mode_active(void) { return sb16_mode; } void sb16_counters(sb16_counters_t *out) { if (out) *out = sb16_stat; } /** Docstring: Strategy verbs publishing the PCM sink to the registry.", "kind": "function", "line": 456, "name": "sb16_ops_present", "signature": "static int sb16_ops_present(device_t *dev)"}, {"doc": "int sb16_mode_active(void) { return sb16_mode; } void sb16_counters(sb16_counters_t *out) { if (out) *out = sb16_stat; } /** Docstring: Strategy verbs publishing the PCM sink to the registry. static int sb16_ops_present(device_t *dev) { (void)dev; return sb16_present(); } /** Docstring: Strategy verb for PCM open.", "kind": "function", "line": 463, "name": "sb16_ops_pcm_open", "signature": "static void sb16_ops_pcm_open(device_t *dev)"}, {"doc": "static int sb16_ops_present(device_t *dev) { (void)dev; return sb16_present(); } /** Docstring: Strategy verb for PCM open. static void sb16_ops_pcm_open(device_t *dev) { (void)dev; sb16_pcm_open(); } /** Docstring: Strategy verb for PCM close.", "kind": "function", "line": 470, "name": "sb16_ops_pcm_close", "signature": "static void sb16_ops_pcm_close(device_t *dev)"}, {"doc": "static void sb16_ops_pcm_open(device_t *dev) { (void)dev; sb16_pcm_open(); } /** Docstring: Strategy verb for PCM close. static void sb16_ops_pcm_close(device_t *dev) { (void)dev; sb16_pcm_close(); } /** Docstring: Strategy verb for PCM submit.", "kind": "function", "line": 477, "name": "sb16_ops_pcm_submit", "signature": "static int sb16_ops_pcm_submit(device_t *dev, const unsigned char *pcm, unsigned len)"}, {"kind": "function", "line": 502, "name": "sb16_init", "signature": "int sb16_init(void)"}, {"kind": "function", "line": 21, "name": "IRQ", "signature": "* QEMU audio backends never raise the completion IRQ (they only consume once * their engine buffer drains, which a stalled host backend never does), and * without a fallback the 7-slot ring fills once"}, {"kind": "function", "line": 507, "name": "pending", "signature": "* reading without it eats whatever byte happens to be pending (or * times out), so the probe used to fail or misread here. */ sb16_cmd(SB16_CMD_READ_VER);"}, {"kind": "macro", "line": 47, "name": "SB16_BASE_PORT", "signature": "#define SB16_BASE_PORT"}, {"kind": "macro", "line": 48, "name": "SB16_DSP_RESET", "signature": "#define SB16_DSP_RESET"}, {"kind": "macro", "line": 49, "name": "SB16_DSP_READ_DATA", "signature": "#define SB16_DSP_READ_DATA"}, {"kind": "macro", "line": 50, "name": "SB16_DSP_WRITE_DATA", "signature": "#define SB16_DSP_WRITE_DATA"}, {"kind": "macro", "line": 51, "name": "SB16_DSP_STATUS", "signature": "#define SB16_DSP_STATUS"}, {"kind": "macro", "line": 52, "name": "SB16_IRQ_ACK", "signature": "#define SB16_IRQ_ACK"}, {"kind": "macro", "line": 54, "name": "SB16_CMD_READ_VER", "signature": "#define SB16_CMD_READ_VER"}, {"kind": "macro", "line": 55, "name": "SB16_CMD_SET_FREQ", "signature": "#define SB16_CMD_SET_FREQ"}, {"kind": "macro", "line": 56, "name": "SB16_CMD_PLAY8", "signature": "#define SB16_CMD_PLAY8"}, {"kind": "macro", "line": 57, "name": "SB16_CMD_SPK_ON", "signature": "#define SB16_CMD_SPK_ON"}, {"kind": "macro", "line": 58, "name": "SB16_CMD_SPK_OFF", "signature": "#define SB16_CMD_SPK_OFF"}, {"kind": "macro", "line": 60, "name": "SB16_DSP_RDSTATUS", "signature": "#define SB16_DSP_RDSTATUS"}, {"kind": "macro", "line": 66, "name": "DMA_MODE_PORT", "signature": "#define DMA_MODE_PORT"}, {"kind": "macro", "line": 67, "name": "DMA_CH1_SINGLE_READ", "signature": "#define DMA_CH1_SINGLE_READ"}, {"kind": "macro", "line": 69, "name": "SB16_FREQ_LO", "signature": "#define SB16_FREQ_LO"}, {"kind": "macro", "line": 70, "name": "SB16_FREQ_HI", "signature": "#define SB16_FREQ_HI"}, {"kind": "macro", "line": 72, "name": "SB16_DSP_READY_MASK", "signature": "#define SB16_DSP_READY_MASK"}, {"kind": "macro", "line": 74, "name": "DMA_CH1_ADDR", "signature": "#define DMA_CH1_ADDR"}, {"kind": "macro", "line": 75, "name": "DMA_CH1_CNT", "signature": "#define DMA_CH1_CNT"}, {"kind": "macro", "line": 76, "name": "DMA_CH1_PAGE", "signature": "#define DMA_CH1_PAGE"}, {"kind": "macro", "line": 77, "name": "DMA_MASK", "signature": "#define DMA_MASK"}, {"kind": "macro", "line": 78, "name": "DMA_FF_CLR", "signature": "#define DMA_FF_CLR"}, {"kind": "macro", "line": 79, "name": "DMA_CH1_UNMASK", "signature": "#define DMA_CH1_UNMASK"}, {"kind": "macro", "line": 80, "name": "DMA_CH1_MASK", "signature": "#define DMA_CH1_MASK"}, {"kind": "macro", "line": 82, "name": "SB16_DMA_BUF0", "signature": "#define SB16_DMA_BUF0"}, {"kind": "macro", "line": 83, "name": "SB16_SILENCE_SLOT", "signature": "#define SB16_SILENCE_SLOT"}, {"kind": "macro", "line": 84, "name": "SB16_BUF", "signature": "#define SB16_BUF"}, {"kind": "macro", "line": 86, "name": "SB16_PROBE_WAIT", "signature": "#define SB16_PROBE_WAIT"}, {"kind": "macro", "line": 88, "name": "SB16_MODE_TONE", "signature": "#define SB16_MODE_TONE"}, {"kind": "macro", "line": 89, "name": "SB16_MODE_PCM", "signature": "#define SB16_MODE_PCM"}, {"kind": "macro", "line": 91, "name": "SB16_SQ_CYCLE", "signature": "#define SB16_SQ_CYCLE"}]}, {"doc": "================================================================", "id": "fs/kfile.c", "kind": "module", "label": "kfile.c", "language": "c", "sha256": "bdba430118de52e3", "symbol_count": 20, "symbols": [{"kind": "function", "line": 15, "name": "kfile_stdin", "signature": "KFILE *kfile_stdin(void)"}, {"kind": "function", "line": 16, "name": "kfile_stdout", "signature": "KFILE *kfile_stdout(void)"}, {"kind": "function", "line": 17, "name": "kfile_stderr", "signature": "KFILE *kfile_stderr(void)"}, {"kind": "function", "line": 23, "name": "recovery", "signature": "* halts the machine with no recovery (the DOOM ABI-drift black screen),\n * so every public KFILE ..."}, {"kind": "function", "line": 28, "name": "kfile_corrupt", "signature": "static int kfile_corrupt(const KFILE *f)"}, {"kind": "function", "line": 59, "name": "fs_take", "signature": "static inline void fs_take(irqflags_t *flags)"}, {"kind": "function", "line": 63, "name": "fs_drop", "signature": "static inline void fs_drop(irqflags_t flags)"}, {"kind": "function", "line": 67, "name": "kfopen", "signature": "KFILE *kfopen(const char *path, const char *mode)"}, {"kind": "function", "line": 144, "name": "kfclose", "signature": "int kfclose(KFILE *f)"}, {"kind": "function", "line": 165, "name": "kfgetc", "signature": "int kfgetc(KFILE *f)"}, {"kind": "function", "line": 193, "name": "kfgets", "signature": "char *kfgets(char *buf, int size, KFILE *f)"}, {"kind": "function", "line": 207, "name": "kfungetc", "signature": "int kfungetc(int c, KFILE *f)"}, {"kind": "function", "line": 213, "name": "kfread", "signature": "unsigned long kfread(void *ptr, unsigned long size, unsigned long n, KFILE *f)"}, {"kind": "function", "line": 243, "name": "kfwrite", "signature": "unsigned long kfwrite(const void *ptr, unsigned long size, unsigned long n, KFILE *f)"}, {"kind": "function", "line": 277, "name": "kfseek", "signature": "int kfseek(KFILE *f, long offset, int whence)"}, {"kind": "function", "line": 296, "name": "kftell", "signature": "long kftell(KFILE *f)"}, {"kind": "function", "line": 300, "name": "kfflush", "signature": "int kfflush(KFILE *f)"}, {"kind": "function", "line": 323, "name": "kfputs", "signature": "int kfputs(const char *s, KFILE *f)"}, {"kind": "function", "line": 329, "name": "kfputc", "signature": "int kfputc(int c, KFILE *f)"}, {"kind": "function", "line": 334, "name": "krewind", "signature": "void krewind(KFILE *f)"}]}, {"doc": "MiniFS: minimal Unix-like filesystem for MiniOS.", "id": "fs/minifs.c", "kind": "module", "label": "minifs.c", "language": "c", "sha256": "1b1ceeb7d3eed96a", "symbol_count": 61, "symbols": [{"doc": "#define DE_NAME_W(de) ((char *)((de) + 1)) void minifs_journal_touch(unsigned int phys); void minifs_journal_clear(void); void minifs_journal_abort(void); static MiniFSSuper fs_sb; static unsigned char *fs_ibitmap; static unsigned char *fs_bbitmap; static unsigned int fs_lba_start; static unsigned int fs_next_txn; static int fs_mounted; /* ---- Compression wrappers ----", "kind": "function", "line": 27, "name": "minifs_compress", "signature": "unsigned int minifs_compress(const void *src, unsigned int src_len,\n ..."}, {"kind": "function", "line": 38, "name": "minifs_decompress", "signature": "unsigned int minifs_decompress(const void *src, unsigned int src_len,\n ..."}, {"kind": "function", "line": 49, "name": "minifs_crc16", "signature": "static unsigned short minifs_crc16(const void *data, unsigned int len)"}, {"kind": "function", "line": 61, "name": "minifs_crc32", "signature": "static unsigned int minifs_crc32(const void *data, unsigned int len)"}, {"kind": "function", "line": 73, "name": "roundup4", "signature": "static unsigned int roundup4(unsigned int v)"}, {"kind": "function", "line": 75, "name": "div_round_up", "signature": "static unsigned int div_round_up(unsigned int n, unsigned int d)"}, {"kind": "function", "line": 84, "name": "returns", "signature": "* overflowed the slot and smashed returns (measured ring-0 #UD on\n * lua->lua->cp). Every scratch..."}, {"kind": "function", "line": 92, "name": "blk_free", "signature": "static void blk_free(unsigned char *b)"}, {"kind": "function", "line": 99, "name": "fs_write_super", "signature": "static int fs_write_super(void)"}, {"kind": "function", "line": 113, "name": "fs_read_inode", "signature": "static int fs_read_inode(unsigned int num, MiniFSInode *out)"}, {"kind": "function", "line": 124, "name": "fs_write_inode", "signature": "static int fs_write_inode(unsigned int num, const MiniFSInode *in)"}, {"kind": "function", "line": 140, "name": "bm_test", "signature": "static int bm_test(unsigned char *bm, unsigned int bit)"}, {"kind": "function", "line": 144, "name": "bm_set", "signature": "static void bm_set(unsigned char *bm, unsigned int bit)"}, {"kind": "function", "line": 148, "name": "bm_clear", "signature": "static void bm_clear(unsigned char *bm, unsigned int bit)"}, {"kind": "function", "line": 154, "name": "minifs_alloc_block", "signature": "int minifs_alloc_block(void)"}, {"kind": "function", "line": 171, "name": "minifs_free_block", "signature": "void minifs_free_block(unsigned int block)"}, {"kind": "function", "line": 179, "name": "minifs_alloc_inode", "signature": "int minifs_alloc_inode(void)"}, {"kind": "function", "line": 191, "name": "minifs_free_inode", "signature": "void minifs_free_inode(int num)"}, {"kind": "function", "line": 199, "name": "minifs_inode_get_block", "signature": "int minifs_inode_get_block(MiniFSInode *inode, unsigned int logblk,\n un..."}, {"kind": "function", "line": 228, "name": "fs_inode_set_block", "signature": "static int fs_inode_set_block(MiniFSInode *inode, unsigned int logblk,\n ..."}, {"kind": "function", "line": 282, "name": "minifs_inode_alloc_block", "signature": "int minifs_inode_alloc_block(MiniFSInode *inode, unsigned int logblk)"}, {"kind": "function", "line": 303, "name": "fs_inode_free_all_blocks", "signature": "static void fs_inode_free_all_blocks(MiniFSInode *inode)"}, {"kind": "function", "line": 385, "name": "journal_load_super", "signature": "static void journal_load_super(void)"}, {"kind": "function", "line": 403, "name": "journal_save_super", "signature": "static void journal_save_super(unsigned int state)"}, {"kind": "function", "line": 417, "name": "journal_save_entries", "signature": "static void journal_save_entries(void)"}, {"kind": "function", "line": 434, "name": "minifs_journal_begin", "signature": "void minifs_journal_begin(unsigned int txn_id)"}, {"doc": "Deprecated alias: historically took an inode number (wrong layer). * Takes a physical block now; prefer minifs_journal_touch.", "kind": "function", "line": 443, "name": "minifs_journal_add_block", "signature": "void minifs_journal_add_block(unsigned int block)"}, {"doc": "Pre-write barrier: persist the entry array and mark the journal DIRTY before any protected data block is modified. A crash after this * point replays the undo log in minifs_journal_recover.", "kind": "function", "line": 450, "name": "minifs_journal_commit", "signature": "int minifs_journal_commit(unsigned int txn_id)"}, {"doc": "Post-write barrier: the protected writes are all on disk, so the undo * log is no longer needed.", "kind": "function", "line": 460, "name": "minifs_journal_clear", "signature": "void minifs_journal_clear(void)"}, {"doc": "Error path after the DIRTY barrier: restore every snapshotted block from the journal data area, then clear. Only undoes blocks recorded * in the live in-RAM entry array.", "kind": "function", "line": 470, "name": "minifs_journal_abort", "signature": "void minifs_journal_abort(void)"}, {"kind": "function", "line": 495, "name": "first", "signature": "* keep the first (oldest) snapshot. */\nvoid minifs_journal_touch(unsigned int phys)"}, {"doc": "Mount-time recovery: replays the undo log left by a crash between the DIRTY barrier and the CLEAN mark. Every on-disk field is hostile data (a crafted image must not cause arbitrary block overwrites): super checksum, entry count bound, per-entry checksum and the target block range are all validated; invalid entries are skipped and * counted, never applied.", "kind": "function", "line": 536, "name": "minifs_journal_recover", "signature": "void minifs_journal_recover(void)"}, {"kind": "function", "line": 622, "name": "fs_namecmp", "signature": "static int fs_namecmp(const char *a, unsigned char alen, const char *b)"}, {"kind": "function", "line": 631, "name": "minifs_dir_lookup", "signature": "int minifs_dir_lookup(int dir_ino, const char *name)"}, {"kind": "function", "line": 661, "name": "minifs_dir_add_entry", "signature": "int minifs_dir_add_entry(int dir_ino, const char *name, int child_ino,\n ..."}, {"kind": "function", "line": 799, "name": "minifs_dir_remove_entry", "signature": "int minifs_dir_remove_entry(int dir_ino, const char *name)"}, {"kind": "function", "line": 830, "name": "minifs_dir_read", "signature": "int minifs_dir_read(int dir_ino, int index, MiniFSDirEntry *out, char *name_out)"}, {"kind": "function", "line": 869, "name": "minifs_resolve_path", "signature": "int minifs_resolve_path(const char *path)"}, {"kind": "function", "line": 902, "name": "minifs_create", "signature": "int minifs_create(const char *path, unsigned short mode)"}, {"kind": "function", "line": 956, "name": "minifs_mkdir", "signature": "int minifs_mkdir(const char *path, unsigned short mode)"}, {"kind": "function", "line": 1006, "name": "minifs_unlink", "signature": "int minifs_unlink(const char *path)"}, {"kind": "function", "line": 1045, "name": "minifs_rmdir", "signature": "int minifs_rmdir(const char *path)"}, {"kind": "function", "line": 1085, "name": "minifs_read", "signature": "int minifs_read(int inode_num, void *buf, unsigned int offset, unsigned int len)"}, {"kind": "function", "line": 1156, "name": "minifs_write", "signature": "int minifs_write(int inode_num, const void *buf, unsigned int offset,\n unsigned i..."}, {"kind": "function", "line": 1245, "name": "minifs_truncate", "signature": "int minifs_truncate(int inode_num, unsigned int new_size)"}, {"kind": "function", "line": 1261, "name": "minifs_stat", "signature": "int minifs_stat(int inode_num, MiniFSInode *out)"}, {"kind": "function", "line": 1265, "name": "minifs_access", "signature": "int minifs_access(const char *path)"}, {"kind": "function", "line": 1271, "name": "minifs_init", "signature": "void minifs_init(void)"}, {"kind": "function", "line": 1279, "name": "minifs_get_lba_start", "signature": "unsigned int minifs_get_lba_start(void)"}, {"kind": "function", "line": 1280, "name": "minifs_is_mounted", "signature": "int minifs_is_mounted(void)"}, {"doc": "Boot-time exemption from the -Wframe-larger-than=2048 gate: mount and mkfs run once on deep boot stacks, never on 16 KB proc slots, so their single 4 KB probe scratch is safe and keeps heap pressure off the * early boot path. pragma GCC diagnostic push pragma GCC diagnostic ignored \"-Wframe-larger-than=\"", "kind": "function", "line": 1288, "name": "minifs_mount", "signature": "int minifs_mount(void)"}, {"doc": "pragma GCC diagnostic push pragma GCC diagnostic ignored \"-Wframe-larger-than=\"", "kind": "function", "line": 1438, "name": "minifs_mkfs", "signature": "int minifs_mkfs(unsigned int total_blocks)"}, {"kind": "function", "line": 1509, "name": "minifs_sync", "signature": "int minifs_sync(void)"}, {"kind": "function", "line": 1524, "name": "minifs_file_open", "signature": "MiniFSFile *minifs_file_open(int inode_num, int flags)"}, {"kind": "function", "line": 1538, "name": "minifs_file_close", "signature": "int minifs_file_close(MiniFSFile *f)"}, {"kind": "function", "line": 1545, "name": "minifs_get_total_blocks", "signature": "unsigned int minifs_get_total_blocks(void)"}, {"doc": "} int minifs_file_close(MiniFSFile *f) { if (!f) return 0; if (f->inode_cache) kfree(f->inode_cache); kfree(f); return 0; } unsigned int minifs_get_total_blocks(void) { return fs_sb.total_blocks; } /** Docstring: Filesystem usage snapshot for the mem builtin.", "kind": "function", "line": 1550, "name": "minifs_usage", "signature": "void minifs_usage(unsigned int *free_b, unsigned int *total_b,\n unsigned int *fr..."}, {"kind": "function", "line": 15, "name": "minifs_journal_touch", "signature": "void minifs_journal_touch(unsigned int phys);"}, {"kind": "function", "line": 494, "name": "blocks", "signature": "* blocks (self-protection);"}, {"kind": "macro", "line": 12, "name": "DE_NAME", "signature": "#define DE_NAME(de)"}, {"kind": "macro", "line": 13, "name": "DE_NAME_W", "signature": "#define DE_NAME_W(de)"}]}, {"doc": "================================================================", "id": "fs/ramdisk.c", "kind": "module", "label": "ramdisk.c", "language": "c", "sha256": "0f1ae68a0400e620", "symbol_count": 19, "symbols": [{"kind": "struct", "line": 13, "name": "RDSuper"}, {"kind": "function", "line": 24, "name": "ramdisk_reserve", "signature": "static int ramdisk_reserve(unsigned long want)"}, {"kind": "function", "line": 42, "name": "ramdisk_setup_from", "signature": "void ramdisk_setup_from(void *data, unsigned size)"}, {"kind": "function", "line": 94, "name": "ramdisk_init", "signature": "void ramdisk_init(void)"}, {"kind": "function", "line": 111, "name": "ramdisk_open", "signature": "RDFile *ramdisk_open(const char *name)"}, {"kind": "function", "line": 121, "name": "ramdisk_read", "signature": "int ramdisk_read(RDFile *f, void *buf, unsigned offset, unsigned len)"}, {"kind": "function", "line": 129, "name": "ramdisk_write", "signature": "int ramdisk_write(RDFile *f, const void *buf, unsigned offset, unsigned len)"}, {"kind": "function", "line": 137, "name": "ramdisk_create", "signature": "RDFile *ramdisk_create(const char *name, unsigned size)"}, {"kind": "function", "line": 151, "name": "ramdisk_resize", "signature": "int ramdisk_resize(RDFile *f, unsigned newsize)"}, {"kind": "function", "line": 188, "name": "ramdisk_list", "signature": "int ramdisk_list(RDFile **out, int max)"}, {"kind": "function", "line": 196, "name": "ramdisk_count", "signature": "int ramdisk_count(void)"}, {"doc": "int ramdisk_list(RDFile **out, int max) { if (!rd) return 0; int n = (int)rd->count < max ? (int)rd->count : max; unsigned i; for (i = 0; i < (unsigned)n; i++) out[i] = &rd->files[i]; return n; } int ramdisk_count(void) { if (!rd) return 0; return (int)rd->count; } /** Docstring: Ramdisk usage snapshot for the mem builtin.", "kind": "function", "line": 202, "name": "ramdisk_usage", "signature": "void ramdisk_usage(unsigned *used, unsigned *cap, unsigned *max)"}, {"kind": "function", "line": 208, "name": "ramdisk_file_name", "signature": "const char *ramdisk_file_name(int idx)"}, {"kind": "function", "line": 213, "name": "ramdisk_delete", "signature": "int ramdisk_delete(RDFile *f)"}, {"kind": "macro", "line": 7, "name": "RD_MAGIC", "signature": "#define RD_MAGIC"}, {"kind": "macro", "line": 8, "name": "RD_HEADER_SIZE", "signature": "#define RD_HEADER_SIZE"}, {"kind": "macro", "line": 9, "name": "RD_ENTRY_SIZE", "signature": "#define RD_ENTRY_SIZE"}, {"kind": "macro", "line": 10, "name": "RD_DATA_MIN", "signature": "#define RD_DATA_MIN"}, {"kind": "macro", "line": 11, "name": "RD_DATA_SPARE", "signature": "#define RD_DATA_SPARE"}]}, {"doc": "================================================================", "id": "fs/vfs.c", "kind": "module", "label": "vfs.c", "language": "c", "sha256": "8a2ec898d15c5b20", "symbol_count": 30, "symbols": [{"kind": "struct", "line": 11, "name": "vfs_mount_t"}, {"kind": "struct", "line": 82, "name": "ramdisk_handle_t"}, {"kind": "struct", "line": 173, "name": "minifs_handle_t"}, {"kind": "function", "line": 20, "name": "vfs_init", "signature": "void vfs_init(void)"}, {"kind": "function", "line": 25, "name": "vfs_register", "signature": "int vfs_register(const char *prefix, const vfs_ops_t *ops)"}, {"kind": "function", "line": 41, "name": "vfs_unregister", "signature": "int vfs_unregister(const char *prefix)"}, {"kind": "function", "line": 53, "name": "vfs_open", "signature": "int vfs_open(const char *path, int mode, vfs_file_t *f)"}, {"kind": "function", "line": 98, "name": "ramdisk_vfs_open", "signature": "static int ramdisk_vfs_open(const char *path, int mode, void **handle)"}, {"kind": "function", "line": 124, "name": "ramdisk_vfs_read", "signature": "static int ramdisk_vfs_read(void *handle, void *buf, unsigned long pos, unsigned long len)"}, {"kind": "function", "line": 133, "name": "ramdisk_vfs_write", "signature": "static int ramdisk_vfs_write(void *handle, const void *buf, unsigned long pos, unsigned long len)"}, {"kind": "function", "line": 141, "name": "ramdisk_vfs_close", "signature": "static int ramdisk_vfs_close(void *handle)"}, {"kind": "function", "line": 147, "name": "ramdisk_vfs_fstat", "signature": "static int ramdisk_vfs_fstat(void *handle, unsigned long *size_out)"}, {"kind": "function", "line": 154, "name": "ramdisk_vfs_truncate", "signature": "static int ramdisk_vfs_truncate(void *handle, unsigned long size)"}, {"kind": "function", "line": 178, "name": "minifs_vfs_open", "signature": "static int minifs_vfs_open(const char *path, int mode, void **handle)"}, {"kind": "function", "line": 206, "name": "minifs_vfs_read", "signature": "static int minifs_vfs_read(void *handle, void *buf, unsigned long pos, unsigned long len)"}, {"kind": "function", "line": 215, "name": "minifs_vfs_write", "signature": "static int minifs_vfs_write(void *handle, const void *buf, unsigned long pos, unsigned long len)"}, {"kind": "function", "line": 223, "name": "minifs_vfs_close", "signature": "static int minifs_vfs_close(void *handle)"}, {"kind": "function", "line": 229, "name": "minifs_vfs_fstat", "signature": "static int minifs_vfs_fstat(void *handle, unsigned long *size_out)"}, {"kind": "function", "line": 236, "name": "minifs_vfs_truncate", "signature": "static int minifs_vfs_truncate(void *handle, unsigned long size)"}, {"kind": "function", "line": 257, "name": "fs_resolve", "signature": "int fs_resolve(const char *path, char *out, unsigned cap)"}, {"kind": "function", "line": 290, "name": "fs_dir_exists", "signature": "int fs_dir_exists(const char *dir)"}, {"kind": "function", "line": 315, "name": "fs_is_dir", "signature": "int fs_is_dir(const char *resolved)"}, {"kind": "function", "line": 328, "name": "minifs_mkdir_p", "signature": "int minifs_mkdir_p(const char *resolved)"}, {"kind": "function", "line": 351, "name": "vfs_register_builtins", "signature": "void vfs_register_builtins(void)"}, {"kind": "function", "line": 364, "name": "vfs_read", "signature": "int vfs_read(vfs_file_t *f, void *buf, unsigned long len)"}, {"kind": "function", "line": 373, "name": "vfs_write", "signature": "int vfs_write(vfs_file_t *f, const void *buf, unsigned long len)"}, {"kind": "function", "line": 382, "name": "vfs_close", "signature": "int vfs_close(vfs_file_t *f)"}, {"kind": "function", "line": 391, "name": "vfs_fstat", "signature": "int vfs_fstat(vfs_file_t *f, unsigned long *size_out)"}, {"kind": "macro", "line": 8, "name": "VFS_MAX_MOUNTS", "signature": "#define VFS_MAX_MOUNTS"}, {"kind": "macro", "line": 9, "name": "VFS_PREFIX_LEN", "signature": "#define VFS_PREFIX_LEN"}]}, {"doc": "zip.c — the unzip/zip shell builtins over the miniz zip library.", "id": "fs/zip.c", "kind": "module", "label": "zip.c", "language": "c", "sha256": "48e0fcb80838da16", "symbol_count": 10, "symbols": [{"doc": "Read a whole file (ramdisk first, MiniFS fallback) into a fresh kernel buffer, growing until the read stops making progress. The buffer is bounded by the file size, so a hostile file cannot drive an oversized * allocation. Returns 0 on failure.", "kind": "function", "line": 25, "name": "zip_read_whole", "signature": "static unsigned char *zip_read_whole(const char *path, unsigned long *size)"}, {"kind": "function", "line": 50, "name": "marker", "signature": "* marker (trailing '/') is preserved by the caller, not here. */\nstatic int zip_sanitize_name(con..."}, {"doc": "Build the combined extraction path: destdir (already resolved, may be \"\") joined with the sanitized entry name. Returns 1 and fills `out` when the * path fits.", "kind": "function", "line": 79, "name": "zip_build_path", "signature": "static int zip_build_path(const char *destdir, const char *name, char *out)"}, {"doc": "Create every directory component of `dir` (a resolved, slash-separated name with no trailing '/'), including `dir` itself, as ramdisk directory * markers. Returns 1 on success; the root (empty) always succeeds.", "kind": "function", "line": 95, "name": "zip_ensure_dir_tree", "signature": "static int zip_ensure_dir_tree(const char *dir)"}, {"doc": "Extract one archive entry under destdir. Junk entries (empty or '.'-only * names) are skipped and count as success. Returns 1 on success.", "kind": "function", "line": 117, "name": "zip_do_entry", "signature": "static int zip_do_entry(mz_zip_archive *zip, mz_uint idx, const char *destdir)"}, {"doc": "if (!data) return 0; if (n != usize) { mz_free(data); return 0; } f = kfopen(resolved, \"w\"); if (!f) { mz_free(data); return 0; } rc = (kfwrite(data, 1, usize, f) == usize) ? 0 : -1; if (kfclose(f) != 0) rc = -1; mz_free(data); if (rc != 0) return 0; kprintf(\" %-24s %lu bytes\\n\", resolved, usize); } return 1; } /* unzip [dir] — extract; unzip -l — list.", "kind": "function", "line": 176, "name": "shell_cmd_unzip", "signature": "void shell_cmd_unzip(int argc, char **argv)"}, {"doc": "zip — store each file (under its sanitized name) into * a new archive.", "kind": "function", "line": 254, "name": "shell_cmd_zip", "signature": "void shell_cmd_zip(int argc, char **argv)"}, {"kind": "function", "line": 8, "name": "root", "signature": "* names are hostile data: each is normalized to forward slashes and rejected * when it escapes the extraction root (absolute paths, '.'/'..' components, * empty names), so a crafted archive can never "}, {"kind": "function", "line": 18, "name": "mz_zip_writer_mem_ptr", "signature": "void *mz_zip_writer_mem_ptr(mz_zip_archive *pZip);"}, {"kind": "function", "line": 19, "name": "mz_zip_writer_mem_size", "signature": "size_t mz_zip_writer_mem_size(mz_zip_archive *pZip);"}]}, {"doc": "Docstring: abi.h -- Boot-time ABI manifest gate contract.", "id": "headers/abi.h", "kind": "module", "label": "abi.h", "language": "h", "sha256": "06b00001354c3fec", "symbol_count": 10, "symbols": [{"kind": "function", "line": 25, "name": "abi_verify", "signature": "int abi_verify(const char *text, long version, unsigned long checksum);"}, {"doc": "ifndef ABI_HOST_TEST", "kind": "function", "line": 28, "name": "abi_check_manifest", "signature": "int abi_check_manifest(void);"}, {"kind": "macro", "line": 14, "name": "ABI_H", "signature": "#define ABI_H"}, {"kind": "macro", "line": 16, "name": "ABI_OK", "signature": "#define ABI_OK"}, {"kind": "macro", "line": 17, "name": "ABI_NO_MANIFEST", "signature": "#define ABI_NO_MANIFEST"}, {"kind": "macro", "line": 18, "name": "ABI_BAD_FORMAT", "signature": "#define ABI_BAD_FORMAT"}, {"kind": "macro", "line": 19, "name": "ABI_VERSION_MISMATCH", "signature": "#define ABI_VERSION_MISMATCH"}, {"kind": "macro", "line": 20, "name": "ABI_CHECKSUM_MISMATCH", "signature": "#define ABI_CHECKSUM_MISMATCH"}, {"kind": "macro", "line": 22, "name": "ABI_MANIFEST_NAME", "signature": "#define ABI_MANIFEST_NAME"}, {"kind": "macro", "line": 23, "name": "ABI_MANIFEST_MAX", "signature": "#define ABI_MANIFEST_MAX"}]}, {"doc": "generated from ap_stub.bin - do not edit", "id": "headers/ap_stub.h", "kind": "module", "label": "ap_stub.h", "language": "h", "sha256": "ee411acb7da86cf0", "symbol_count": 0, "symbols": []}, {"doc": "bootdefs.h - centralized configuration for the MiniOS two-stage boot path.", "id": "headers/arch/x86/boot/bootdefs.h", "kind": "module", "label": "bootdefs.h", "language": "h", "sha256": "b6df3504784633fa", "symbol_count": 139, "symbols": [{"kind": "function", "line": 179, "name": "address", "signature": "* address (below 1 MB so a real-mode SIPI can reach it) and executed by every * AP. It reuses the page tables and 64-bit GDT stage 2 built for the BSP. */ #define AP_STUB_ADDR 0x6000 #define GDT64_COD"}, {"kind": "macro", "line": 46, "name": "BOOTDEFS_H", "signature": "#define BOOTDEFS_H"}, {"kind": "macro", "line": 48, "name": "SECTOR_BYTES", "signature": "#define SECTOR_BYTES"}, {"kind": "macro", "line": 49, "name": "SECTOR_PARAGRAPH_SHIFT", "signature": "#define SECTOR_PARAGRAPH_SHIFT"}, {"kind": "macro", "line": 50, "name": "SECTOR_DWORD_SHIFT", "signature": "#define SECTOR_DWORD_SHIFT"}, {"kind": "macro", "line": 52, "name": "BOOT_SIGNATURE", "signature": "#define BOOT_SIGNATURE"}, {"kind": "macro", "line": 53, "name": "BOOT_SIGNATURE_BYTES", "signature": "#define BOOT_SIGNATURE_BYTES"}, {"kind": "macro", "line": 55, "name": "BOOT_SEG_NULL", "signature": "#define BOOT_SEG_NULL"}, {"kind": "macro", "line": 56, "name": "BOOT_STACK_TOP", "signature": "#define BOOT_STACK_TOP"}, {"kind": "macro", "line": 58, "name": "BOOT_DAP_ADDR", "signature": "#define BOOT_DAP_ADDR"}, {"kind": "macro", "line": 59, "name": "BOOT_DAP_SIZE", "signature": "#define BOOT_DAP_SIZE"}, {"kind": "macro", "line": 60, "name": "BOOT_DAP_OFF_COUNT", "signature": "#define BOOT_DAP_OFF_COUNT"}, {"kind": "macro", "line": 61, "name": "BOOT_DAP_OFF_OFFSET", "signature": "#define BOOT_DAP_OFF_OFFSET"}, {"kind": "macro", "line": 62, "name": "BOOT_DAP_OFF_SEGMENT", "signature": "#define BOOT_DAP_OFF_SEGMENT"}, {"kind": "macro", "line": 63, "name": "BOOT_DAP_OFF_LBA_LO", "signature": "#define BOOT_DAP_OFF_LBA_LO"}, {"kind": "macro", "line": 64, "name": "BOOT_DAP_OFF_LBA_HI", "signature": "#define BOOT_DAP_OFF_LBA_HI"}, {"kind": "macro", "line": 65, "name": "BOOT_DRIVE_ADDR", "signature": "#define BOOT_DRIVE_ADDR"}, {"kind": "macro", "line": 66, "name": "BOOT_KASLR_ADDR", "signature": "#define BOOT_KASLR_ADDR"}, {"kind": "macro", "line": 68, "name": "BOOT_STAGE2_LBA", "signature": "#define BOOT_STAGE2_LBA"}, {"kind": "macro", "line": 69, "name": "BOOT_STAGE2_SECTORS", "signature": "#define BOOT_STAGE2_SECTORS"}, {"kind": "macro", "line": 70, "name": "BOOT_STAGE2_ADDR", "signature": "#define BOOT_STAGE2_ADDR"}, {"kind": "macro", "line": 71, "name": "BOOT_STAGE2_SEG", "signature": "#define BOOT_STAGE2_SEG"}, {"kind": "macro", "line": 73, "name": "BOOT_KERNEL_LBA", "signature": "#define BOOT_KERNEL_LBA"}, {"kind": "macro", "line": 74, "name": "BOOT_KERNEL_BUF_ADDR", "signature": "#define BOOT_KERNEL_BUF_ADDR"}, {"kind": "macro", "line": 75, "name": "BOOT_KERNEL_BUF_SEG", "signature": "#define BOOT_KERNEL_BUF_SEG"}, {"kind": "macro", "line": 76, "name": "BOOT_KERNEL_PHYS_ADDR", "signature": "#define BOOT_KERNEL_PHYS_ADDR"}, {"kind": "macro", "line": 78, "name": "BOOT_CHUNK_SECTORS", "signature": "#define BOOT_CHUNK_SECTORS"}, {"kind": "macro", "line": 79, "name": "BOOT_BIOS_MAX_SECTORS", "signature": "#define BOOT_BIOS_MAX_SECTORS"}, {"kind": "macro", "line": 81, "name": "BOOT_PM_STACK_TOP", "signature": "#define BOOT_PM_STACK_TOP"}, {"kind": "macro", "line": 83, "name": "BIOS_DISK_INT", "signature": "#define BIOS_DISK_INT"}, {"kind": "macro", "line": 84, "name": "BIOS_DISK_EXT_CHECK", "signature": "#define BIOS_DISK_EXT_CHECK"}, {"kind": "macro", "line": 85, "name": "BIOS_DISK_EXT_REQ_MAGIC", "signature": "#define BIOS_DISK_EXT_REQ_MAGIC"}, {"kind": "macro", "line": 86, "name": "BIOS_DISK_EXT_ACK_MAGIC", "signature": "#define BIOS_DISK_EXT_ACK_MAGIC"}, {"kind": "macro", "line": 87, "name": "BIOS_DISK_EXT_PACKET_BIT", "signature": "#define BIOS_DISK_EXT_PACKET_BIT"}, {"kind": "macro", "line": 88, "name": "BIOS_DISK_READ_EXT", "signature": "#define BIOS_DISK_READ_EXT"}, {"kind": "macro", "line": 90, "name": "BIOS_VIDEO_INT", "signature": "#define BIOS_VIDEO_INT"}, {"kind": "macro", "line": 91, "name": "BIOS_VIDEO_TTY_WRITE", "signature": "#define BIOS_VIDEO_TTY_WRITE"}, {"kind": "macro", "line": 92, "name": "BIOS_VIDEO_TTY_ATTR", "signature": "#define BIOS_VIDEO_TTY_ATTR"}, {"kind": "macro", "line": 93, "name": "BIOS_VIDEO_SET_MODE", "signature": "#define BIOS_VIDEO_SET_MODE"}, {"kind": "macro", "line": 106, "name": "BIOS_VBE_GET_MODE_INFO", "signature": "#define BIOS_VBE_GET_MODE_INFO"}, {"kind": "macro", "line": 107, "name": "BIOS_VBE_SET_MODE", "signature": "#define BIOS_VBE_SET_MODE"}, {"kind": "macro", "line": 108, "name": "VBE_MODE_1024x768x32", "signature": "#define VBE_MODE_1024x768x32"}, {"kind": "macro", "line": 109, "name": "VBE_MODE_800x600x32", "signature": "#define VBE_MODE_800x600x32"}, {"kind": "macro", "line": 110, "name": "VBE_MODE_640x480x32", "signature": "#define VBE_MODE_640x480x32"}, {"kind": "macro", "line": 111, "name": "VBE_MODE_1024x768x8", "signature": "#define VBE_MODE_1024x768x8"}, {"kind": "macro", "line": 112, "name": "VBE_MODE_800x600x8", "signature": "#define VBE_MODE_800x600x8"}, {"kind": "macro", "line": 113, "name": "VBE_MODE_640x480x8", "signature": "#define VBE_MODE_640x480x8"}, {"kind": "macro", "line": 114, "name": "VBE_MODE_LFB", "signature": "#define VBE_MODE_LFB"}, {"kind": "macro", "line": 115, "name": "VBE_MODE_INFO_ADDR", "signature": "#define VBE_MODE_INFO_ADDR"}, {"kind": "macro", "line": 116, "name": "VBE_MODE_ATTR_OFF", "signature": "#define VBE_MODE_ATTR_OFF"}, {"kind": "macro", "line": 117, "name": "VBE_ATTR_SUPPORTED", "signature": "#define VBE_ATTR_SUPPORTED"}, {"kind": "macro", "line": 118, "name": "VBE_ATTR_LFB", "signature": "#define VBE_ATTR_LFB"}, {"kind": "macro", "line": 119, "name": "VBE_INFO_XRES_OFF", "signature": "#define VBE_INFO_XRES_OFF"}, {"kind": "macro", "line": 120, "name": "VBE_INFO_YRES_OFF", "signature": "#define VBE_INFO_YRES_OFF"}, {"kind": "macro", "line": 121, "name": "VBE_INFO_BYTES_SCAN_OFF", "signature": "#define VBE_INFO_BYTES_SCAN_OFF"}, {"kind": "macro", "line": 122, "name": "VBE_INFO_PHYSBASE_OFF", "signature": "#define VBE_INFO_PHYSBASE_OFF"}, {"kind": "macro", "line": 123, "name": "VBE_INFO_BPP_SRC_OFF", "signature": "#define VBE_INFO_BPP_SRC_OFF"}, {"kind": "macro", "line": 124, "name": "VBE_BPP_8", "signature": "#define VBE_BPP_8"}, {"kind": "macro", "line": 125, "name": "VBE_BPP_24", "signature": "#define VBE_BPP_24"}, {"kind": "macro", "line": 126, "name": "VBE_BPP_32", "signature": "#define VBE_BPP_32"}, {"kind": "macro", "line": 138, "name": "VBE_INFO_ADDR", "signature": "#define VBE_INFO_ADDR"}, {"kind": "macro", "line": 139, "name": "VBE_INFO_FBBASE_OFF", "signature": "#define VBE_INFO_FBBASE_OFF"}, {"kind": "macro", "line": 140, "name": "VBE_INFO_PITCH_OFF", "signature": "#define VBE_INFO_PITCH_OFF"}, {"kind": "macro", "line": 141, "name": "VBE_INFO_WIDTH_OFF", "signature": "#define VBE_INFO_WIDTH_OFF"}, {"kind": "macro", "line": 142, "name": "VBE_INFO_HEIGHT_OFF", "signature": "#define VBE_INFO_HEIGHT_OFF"}, {"kind": "macro", "line": 143, "name": "VBE_INFO_VALID_OFF", "signature": "#define VBE_INFO_VALID_OFF"}, {"kind": "macro", "line": 144, "name": "VBE_INFO_BPP_OFF", "signature": "#define VBE_INFO_BPP_OFF"}, {"kind": "macro", "line": 146, "name": "A20_CONTROL_PORT", "signature": "#define A20_CONTROL_PORT"}, {"kind": "macro", "line": 147, "name": "A20_ENABLE_BIT", "signature": "#define A20_ENABLE_BIT"}, {"kind": "macro", "line": 148, "name": "A20_RESET_CLEAR_MASK", "signature": "#define A20_RESET_CLEAR_MASK"}, {"kind": "macro", "line": 150, "name": "CR0_PE", "signature": "#define CR0_PE"}, {"kind": "macro", "line": 151, "name": "CR0_PE_CLEAR_MASK", "signature": "#define CR0_PE_CLEAR_MASK"}, {"kind": "macro", "line": 152, "name": "CR0_PG", "signature": "#define CR0_PG"}, {"kind": "macro", "line": 153, "name": "CR4_PAE", "signature": "#define CR4_PAE"}, {"kind": "macro", "line": 155, "name": "MSR_EFER", "signature": "#define MSR_EFER"}, {"kind": "macro", "line": 156, "name": "EFER_LME", "signature": "#define EFER_LME"}, {"kind": "macro", "line": 157, "name": "EFER_NXE", "signature": "#define EFER_NXE"}, {"kind": "macro", "line": 159, "name": "GDT32_CODE32_SEL", "signature": "#define GDT32_CODE32_SEL"}, {"kind": "macro", "line": 160, "name": "GDT32_DATA32_SEL", "signature": "#define GDT32_DATA32_SEL"}, {"kind": "macro", "line": 161, "name": "GDT32_CODE16_SEL", "signature": "#define GDT32_CODE16_SEL"}, {"kind": "macro", "line": 162, "name": "GDT32_DATA16_SEL", "signature": "#define GDT32_DATA16_SEL"}, {"kind": "macro", "line": 164, "name": "GDT32_DESC_NULL", "signature": "#define GDT32_DESC_NULL"}, {"kind": "macro", "line": 165, "name": "GDT32_DESC_CODE32", "signature": "#define GDT32_DESC_CODE32"}, {"kind": "macro", "line": 166, "name": "GDT32_DESC_DATA32", "signature": "#define GDT32_DESC_DATA32"}, {"kind": "macro", "line": 167, "name": "GDT32_DESC_CODE16", "signature": "#define GDT32_DESC_CODE16"}, {"kind": "macro", "line": 168, "name": "GDT32_DESC_DATA16", "signature": "#define GDT32_DESC_DATA16"}, {"kind": "macro", "line": 170, "name": "GDT64_ADDR", "signature": "#define GDT64_ADDR"}, {"kind": "macro", "line": 171, "name": "GDT64_BYTES", "signature": "#define GDT64_BYTES"}, {"kind": "macro", "line": 176, "name": "GDT64_SMP_BYTES", "signature": "#define GDT64_SMP_BYTES"}, {"kind": "macro", "line": 181, "name": "AP_STUB_ADDR", "signature": "#define AP_STUB_ADDR"}, {"kind": "macro", "line": 182, "name": "GDT64_CODE_SEL", "signature": "#define GDT64_CODE_SEL"}, {"kind": "macro", "line": 183, "name": "GDT64_DATA_SEL", "signature": "#define GDT64_DATA_SEL"}, {"kind": "macro", "line": 184, "name": "GDT64_USER_DATA_SEL", "signature": "#define GDT64_USER_DATA_SEL"}, {"kind": "macro", "line": 185, "name": "GDT64_USER_CODE_SEL", "signature": "#define GDT64_USER_CODE_SEL"}, {"kind": "macro", "line": 186, "name": "GDT64_DESC_NULL", "signature": "#define GDT64_DESC_NULL"}, {"kind": "macro", "line": 187, "name": "GDT64_DESC_CODE", "signature": "#define GDT64_DESC_CODE"}, {"kind": "macro", "line": 188, "name": "GDT64_DESC_DATA", "signature": "#define GDT64_DESC_DATA"}, {"kind": "macro", "line": 189, "name": "GDT64_DESC_UDATA", "signature": "#define GDT64_DESC_UDATA"}, {"kind": "macro", "line": 190, "name": "GDT64_DESC_UCODE", "signature": "#define GDT64_DESC_UCODE"}, {"kind": "macro", "line": 192, "name": "PT_PML4_ADDR", "signature": "#define PT_PML4_ADDR"}, {"kind": "macro", "line": 193, "name": "PT_PDPT_ADDR", "signature": "#define PT_PDPT_ADDR"}, {"kind": "macro", "line": 194, "name": "PT_PD_ADDR", "signature": "#define PT_PD_ADDR"}, {"kind": "macro", "line": 195, "name": "PT_USER0_ADDR", "signature": "#define PT_USER0_ADDR"}, {"kind": "macro", "line": 196, "name": "PT_USER1_ADDR", "signature": "#define PT_USER1_ADDR"}, {"kind": "macro", "line": 197, "name": "PT_ZERO_DWORDS", "signature": "#define PT_ZERO_DWORDS"}, {"kind": "macro", "line": 198, "name": "PT_FLAGS_PRESENT_RW", "signature": "#define PT_FLAGS_PRESENT_RW"}, {"kind": "macro", "line": 199, "name": "PT_FLAGS_PRESENT_RW_PS", "signature": "#define PT_FLAGS_PRESENT_RW_PS"}, {"kind": "macro", "line": 200, "name": "PT_FLAGS_PS", "signature": "#define PT_FLAGS_PS"}, {"kind": "macro", "line": 201, "name": "PT_FLAGS_USER", "signature": "#define PT_FLAGS_USER"}, {"kind": "macro", "line": 202, "name": "PT_FLAGS_PCD", "signature": "#define PT_FLAGS_PCD"}, {"kind": "macro", "line": 203, "name": "PT_FLAGS_NX", "signature": "#define PT_FLAGS_NX"}, {"kind": "macro", "line": 204, "name": "PT_ADDR_MASK", "signature": "#define PT_ADDR_MASK"}, {"kind": "macro", "line": 205, "name": "PT_USER_ENTRY", "signature": "#define PT_USER_ENTRY"}, {"kind": "macro", "line": 206, "name": "PT_USER_NX_ENTRY", "signature": "#define PT_USER_NX_ENTRY"}, {"kind": "macro", "line": 207, "name": "PT_ENTRY_PRESENT", "signature": "#define PT_ENTRY_PRESENT"}, {"kind": "macro", "line": 208, "name": "PT_ENTRY_USER", "signature": "#define PT_ENTRY_USER"}, {"kind": "macro", "line": 214, "name": "SB16_DMA_PT_ENTRY", "signature": "#define SB16_DMA_PT_ENTRY"}, {"kind": "macro", "line": 215, "name": "SB16_DMA_PT_PAGES", "signature": "#define SB16_DMA_PT_PAGES"}, {"kind": "macro", "line": 216, "name": "PT_PD_ENTRIES", "signature": "#define PT_PD_ENTRIES"}, {"kind": "macro", "line": 217, "name": "PT_PD_ENTRY_BYTES", "signature": "#define PT_PD_ENTRY_BYTES"}, {"kind": "macro", "line": 218, "name": "PT_PD_PAGE_BYTES", "signature": "#define PT_PD_PAGE_BYTES"}, {"kind": "macro", "line": 219, "name": "PT_PD_INDEX_SHIFT", "signature": "#define PT_PD_INDEX_SHIFT"}, {"kind": "macro", "line": 220, "name": "PT_FILL_START_INDEX", "signature": "#define PT_FILL_START_INDEX"}, {"kind": "macro", "line": 221, "name": "PT_FILL_START_ADDR", "signature": "#define PT_FILL_START_ADDR"}, {"kind": "macro", "line": 222, "name": "PT_FILL_ENTRIES", "signature": "#define PT_FILL_ENTRIES"}, {"kind": "macro", "line": 242, "name": "PT_USER_TABLES_ADDR", "signature": "#define PT_USER_TABLES_ADDR"}, {"kind": "macro", "line": 243, "name": "PT_USER_TABLES_BYTES", "signature": "#define PT_USER_TABLES_BYTES"}, {"kind": "macro", "line": 255, "name": "KASLR_MIN_ADDR", "signature": "#define KASLR_MIN_ADDR"}, {"kind": "macro", "line": 256, "name": "KASLR_ALIGN_SHIFT", "signature": "#define KASLR_ALIGN_SHIFT"}, {"kind": "macro", "line": 257, "name": "KASLR_MAX_UNITS", "signature": "#define KASLR_MAX_UNITS"}, {"kind": "macro", "line": 258, "name": "KASLR_IMG_OFF_1MB", "signature": "#define KASLR_IMG_OFF_1MB"}, {"kind": "macro", "line": 259, "name": "KASLR_IMG_OFF_2MB", "signature": "#define KASLR_IMG_OFF_2MB"}, {"kind": "macro", "line": 260, "name": "KASLR_IMAGE_SPAN", "signature": "#define KASLR_IMAGE_SPAN"}, {"kind": "macro", "line": 262, "name": "CMOS_INDEX_PORT", "signature": "#define CMOS_INDEX_PORT"}, {"kind": "macro", "line": 263, "name": "CMOS_DATA_PORT", "signature": "#define CMOS_DATA_PORT"}, {"kind": "macro", "line": 264, "name": "CMOS_NMI_DISABLE", "signature": "#define CMOS_NMI_DISABLE"}, {"kind": "macro", "line": 265, "name": "CMOS_REG_SECONDS", "signature": "#define CMOS_REG_SECONDS"}, {"kind": "macro", "line": 266, "name": "CMOS_REG_MINUTES", "signature": "#define CMOS_REG_MINUTES"}, {"kind": "macro", "line": 267, "name": "CMOS_REG_HOURS", "signature": "#define CMOS_REG_HOURS"}]}, {"doc": "Docstring: x86 port I/O hardware abstraction contract.", "id": "headers/arch/x86/hal_io.h", "kind": "module", "label": "hal_io.h", "language": "h", "sha256": "28db5f61d8881162", "symbol_count": 52, "symbols": [{"doc": "#ifdef HAL_IO_HOST_TEST /** Docstring: Stub log for host tests, counts port writes. extern unsigned hal_io_stub_writes; /** Docstring: Stub log for host tests, last port written. extern unsigned hal_io_stub_last_port; /** Docstring: Stub log for host tests, last value written. extern unsigned hal_io_stub_last_val; /** Docstring: Stub log for host tests, counts LAPIC EOI calls. extern unsigned hal_io_stub_lapic_eois; /** Docstring: Canned byte returned by stub port reads. extern unsigned char hal_io_stub_read_val; /** Docstring: Stub port byte write, records port and value.", "kind": "function", "line": 102, "name": "hal_outb", "signature": "static inline void hal_outb(unsigned short port, unsigned char val)"}, {"doc": "extern unsigned hal_io_stub_last_val; /** Docstring: Stub log for host tests, counts LAPIC EOI calls. extern unsigned hal_io_stub_lapic_eois; /** Docstring: Canned byte returned by stub port reads. extern unsigned char hal_io_stub_read_val; /** Docstring: Stub port byte write, records port and value. static inline void hal_outb(unsigned short port, unsigned char val) { hal_io_stub_writes++; hal_io_stub_last_port = port; hal_io_stub_last_val = val; } /** Docstring: Stub port byte read, returns the canned value.", "kind": "function", "line": 109, "name": "hal_inb", "signature": "static inline unsigned char hal_inb(unsigned short port)"}, {"doc": "/** Docstring: Stub port byte write, records port and value. static inline void hal_outb(unsigned short port, unsigned char val) { hal_io_stub_writes++; hal_io_stub_last_port = port; hal_io_stub_last_val = val; } /** Docstring: Stub port byte read, returns the canned value. static inline unsigned char hal_inb(unsigned short port) { (void)port; return hal_io_stub_read_val; } /** Docstring: Stub port word write, records port and low byte.", "kind": "function", "line": 115, "name": "hal_outw", "signature": "static inline void hal_outw(unsigned short port, unsigned short val)"}, {"doc": "/** Docstring: Stub port byte read, returns the canned value. static inline unsigned char hal_inb(unsigned short port) { (void)port; return hal_io_stub_read_val; } /** Docstring: Stub port word write, records port and low byte. static inline void hal_outw(unsigned short port, unsigned short val) { hal_io_stub_writes++; hal_io_stub_last_port = port; hal_io_stub_last_val = (unsigned)(val & 0xFFU); } /** Docstring: Stub port word read, returns the canned value.", "kind": "function", "line": 122, "name": "hal_inw", "signature": "static inline unsigned short hal_inw(unsigned short port)"}, {"doc": "/** Docstring: Stub port word write, records port and low byte. static inline void hal_outw(unsigned short port, unsigned short val) { hal_io_stub_writes++; hal_io_stub_last_port = port; hal_io_stub_last_val = (unsigned)(val & 0xFFU); } /** Docstring: Stub port word read, returns the canned value. static inline unsigned short hal_inw(unsigned short port) { (void)port; return (unsigned short)hal_io_stub_read_val; } /** Docstring: Stub LAPIC EOI, counts calls.", "kind": "function", "line": 128, "name": "hal_lapic_eoi", "signature": "static inline void hal_lapic_eoi(void)"}, {"doc": "} /** Docstring: Stub port word read, returns the canned value. static inline unsigned short hal_inw(unsigned short port) { (void)port; return (unsigned short)hal_io_stub_read_val; } /** Docstring: Stub LAPIC EOI, counts calls. static inline void hal_lapic_eoi(void) { hal_io_stub_lapic_eois++; } /** Docstring: Stub PIC EOI for an IRQ line.", "kind": "function", "line": 133, "name": "hal_pic_eoi", "signature": "static inline void hal_pic_eoi(int irq)"}, {"doc": "hal_io_stub_lapic_eois++; } /** Docstring: Stub PIC EOI for an IRQ line. static inline void hal_pic_eoi(int irq) { if (irq >= 8) { hal_outb(HAL_PIC2_CMD, HAL_PIC_EOI); } hal_outb(HAL_PIC1_CMD, HAL_PIC_EOI); } #else /** Docstring: Emit a port byte write.", "kind": "function", "line": 143, "name": "hal_outb", "signature": "static inline void hal_outb(unsigned short port, unsigned char val)"}, {"doc": "if (irq >= 8) { hal_outb(HAL_PIC2_CMD, HAL_PIC_EOI); } hal_outb(HAL_PIC1_CMD, HAL_PIC_EOI); } #else /** Docstring: Emit a port byte write. static inline void hal_outb(unsigned short port, unsigned char val) { __asm__ volatile(\"outb %0, %1\" : : \"a\"(val), \"Nd\"(port)); } /** Docstring: Emit a port byte read.", "kind": "function", "line": 148, "name": "hal_inb", "signature": "static inline unsigned char hal_inb(unsigned short port)"}, {"doc": "/** Docstring: Emit a port byte write. static inline void hal_outb(unsigned short port, unsigned char val) { __asm__ volatile(\"outb %0, %1\" : : \"a\"(val), \"Nd\"(port)); } /** Docstring: Emit a port byte read. static inline unsigned char hal_inb(unsigned short port) { unsigned char r; __asm__ volatile(\"inb %1, %0\" : \"=a\"(r) : \"Nd\"(port)); return r; } /** Docstring: Emit a port word write.", "kind": "function", "line": 155, "name": "hal_outw", "signature": "static inline void hal_outw(unsigned short port, unsigned short val)"}, {"doc": "/** Docstring: Emit a port byte read. static inline unsigned char hal_inb(unsigned short port) { unsigned char r; __asm__ volatile(\"inb %1, %0\" : \"=a\"(r) : \"Nd\"(port)); return r; } /** Docstring: Emit a port word write. static inline void hal_outw(unsigned short port, unsigned short val) { __asm__ volatile(\"outw %0, %1\" : : \"a\"(val), \"Nd\"(port)); } /** Docstring: Emit a port word read.", "kind": "function", "line": 160, "name": "hal_inw", "signature": "static inline unsigned short hal_inw(unsigned short port)"}, {"doc": "/** Docstring: Emit a port word write. static inline void hal_outw(unsigned short port, unsigned short val) { __asm__ volatile(\"outw %0, %1\" : : \"a\"(val), \"Nd\"(port)); } /** Docstring: Emit a port word read. static inline unsigned short hal_inw(unsigned short port) { unsigned short r; __asm__ volatile(\"inw %1, %0\" : \"=a\"(r) : \"Nd\"(port)); return r; } /** Docstring: Acknowledge the local APIC after an IPI-driven tick.", "kind": "function", "line": 167, "name": "hal_lapic_eoi", "signature": "static inline void hal_lapic_eoi(void)"}, {"doc": "/** Docstring: Emit a port word read. static inline unsigned short hal_inw(unsigned short port) { unsigned short r; __asm__ volatile(\"inw %1, %0\" : \"=a\"(r) : \"Nd\"(port)); return r; } /** Docstring: Acknowledge the local APIC after an IPI-driven tick. static inline void hal_lapic_eoi(void) { (volatile unsigned *)HAL_LAPIC_EOI_ADDR = 0; } /** Docstring: Send end-of-interrupt for an IRQ line.", "kind": "function", "line": 172, "name": "hal_pic_eoi", "signature": "static inline void hal_pic_eoi(int irq)"}, {"doc": "#define HAL_MOUSE_OVF_BITS 0xC0 /** Docstring: Mouse packet button mask. #define HAL_MOUSE_BUTTON_MASK 0x07 /** Docstring: Mouse packet byte count for Intellimouse mode. #define HAL_MOUSE_PACKET_LEN 4 /** Docstring: Mouse motion scale factor. #define HAL_MOUSE_SCALE 2 /** Docstring: Local APIC end-of-interrupt MMIO address. #define HAL_LAPIC_EOI_ADDR 0xFEE000B0UL #ifdef HAL_IO_HOST_TEST /** Docstring: Stub log for host tests, counts port writes.", "kind": "variable", "line": 91, "name": "hal_io_stub_writes", "signature": "extern unsigned hal_io_stub_writes;"}, {"doc": "#define HAL_MOUSE_BUTTON_MASK 0x07 /** Docstring: Mouse packet byte count for Intellimouse mode. #define HAL_MOUSE_PACKET_LEN 4 /** Docstring: Mouse motion scale factor. #define HAL_MOUSE_SCALE 2 /** Docstring: Local APIC end-of-interrupt MMIO address. #define HAL_LAPIC_EOI_ADDR 0xFEE000B0UL #ifdef HAL_IO_HOST_TEST /** Docstring: Stub log for host tests, counts port writes. extern unsigned hal_io_stub_writes; /** Docstring: Stub log for host tests, last port written.", "kind": "variable", "line": 93, "name": "hal_io_stub_last_port", "signature": "extern unsigned hal_io_stub_last_port;"}, {"doc": "#define HAL_MOUSE_PACKET_LEN 4 /** Docstring: Mouse motion scale factor. #define HAL_MOUSE_SCALE 2 /** Docstring: Local APIC end-of-interrupt MMIO address. #define HAL_LAPIC_EOI_ADDR 0xFEE000B0UL #ifdef HAL_IO_HOST_TEST /** Docstring: Stub log for host tests, counts port writes. extern unsigned hal_io_stub_writes; /** Docstring: Stub log for host tests, last port written. extern unsigned hal_io_stub_last_port; /** Docstring: Stub log for host tests, last value written.", "kind": "variable", "line": 95, "name": "hal_io_stub_last_val", "signature": "extern unsigned hal_io_stub_last_val;"}, {"doc": "#define HAL_MOUSE_SCALE 2 /** Docstring: Local APIC end-of-interrupt MMIO address. #define HAL_LAPIC_EOI_ADDR 0xFEE000B0UL #ifdef HAL_IO_HOST_TEST /** Docstring: Stub log for host tests, counts port writes. extern unsigned hal_io_stub_writes; /** Docstring: Stub log for host tests, last port written. extern unsigned hal_io_stub_last_port; /** Docstring: Stub log for host tests, last value written. extern unsigned hal_io_stub_last_val; /** Docstring: Stub log for host tests, counts LAPIC EOI calls.", "kind": "variable", "line": 97, "name": "hal_io_stub_lapic_eois", "signature": "extern unsigned hal_io_stub_lapic_eois;"}, {"doc": "/** Docstring: Local APIC end-of-interrupt MMIO address. #define HAL_LAPIC_EOI_ADDR 0xFEE000B0UL #ifdef HAL_IO_HOST_TEST /** Docstring: Stub log for host tests, counts port writes. extern unsigned hal_io_stub_writes; /** Docstring: Stub log for host tests, last port written. extern unsigned hal_io_stub_last_port; /** Docstring: Stub log for host tests, last value written. extern unsigned hal_io_stub_last_val; /** Docstring: Stub log for host tests, counts LAPIC EOI calls. extern unsigned hal_io_stub_lapic_eois; /** Docstring: Canned byte returned by stub port reads.", "kind": "variable", "line": 99, "name": "hal_io_stub_read_val", "signature": "extern unsigned char hal_io_stub_read_val;"}, {"kind": "macro", "line": 13, "name": "HAL_IO_H", "signature": "#define HAL_IO_H"}, {"kind": "macro", "line": 16, "name": "HAL_PIC1_CMD", "signature": "#define HAL_PIC1_CMD"}, {"kind": "macro", "line": 18, "name": "HAL_PIC1_DATA", "signature": "#define HAL_PIC1_DATA"}, {"kind": "macro", "line": 20, "name": "HAL_PIC2_CMD", "signature": "#define HAL_PIC2_CMD"}, {"kind": "macro", "line": 22, "name": "HAL_PIC2_DATA", "signature": "#define HAL_PIC2_DATA"}, {"kind": "macro", "line": 24, "name": "HAL_PIC_EOI", "signature": "#define HAL_PIC_EOI"}, {"kind": "macro", "line": 27, "name": "HAL_PIT_CMD", "signature": "#define HAL_PIT_CMD"}, {"kind": "macro", "line": 29, "name": "HAL_PIT_CH0", "signature": "#define HAL_PIT_CH0"}, {"kind": "macro", "line": 32, "name": "HAL_PS2_STATUS", "signature": "#define HAL_PS2_STATUS"}, {"kind": "macro", "line": 34, "name": "HAL_PS2_DATA", "signature": "#define HAL_PS2_DATA"}, {"kind": "macro", "line": 36, "name": "HAL_PS2_MOUSE_OBF", "signature": "#define HAL_PS2_MOUSE_OBF"}, {"kind": "macro", "line": 38, "name": "HAL_PS2_IBF_EMPTY", "signature": "#define HAL_PS2_IBF_EMPTY"}, {"kind": "macro", "line": 40, "name": "HAL_PS2_OBF_FULL", "signature": "#define HAL_PS2_OBF_FULL"}, {"kind": "macro", "line": 42, "name": "HAL_PS2_CMD_WRITE_MOUSE", "signature": "#define HAL_PS2_CMD_WRITE_MOUSE"}, {"kind": "macro", "line": 44, "name": "HAL_PS2_CMD_ENABLE_AUX", "signature": "#define HAL_PS2_CMD_ENABLE_AUX"}, {"kind": "macro", "line": 46, "name": "HAL_PS2_CMD_READ_CONFIG", "signature": "#define HAL_PS2_CMD_READ_CONFIG"}, {"kind": "macro", "line": 48, "name": "HAL_PS2_CMD_WRITE_CONFIG", "signature": "#define HAL_PS2_CMD_WRITE_CONFIG"}, {"kind": "macro", "line": 50, "name": "HAL_PS2_CONFIG_IRQ12", "signature": "#define HAL_PS2_CONFIG_IRQ12"}, {"kind": "macro", "line": 52, "name": "HAL_MOUSE_CMD_RESET", "signature": "#define HAL_MOUSE_CMD_RESET"}, {"kind": "macro", "line": 54, "name": "HAL_MOUSE_CMD_SET_RATE", "signature": "#define HAL_MOUSE_CMD_SET_RATE"}, {"kind": "macro", "line": 56, "name": "HAL_MOUSE_CMD_GET_ID", "signature": "#define HAL_MOUSE_CMD_GET_ID"}, {"kind": "macro", "line": 58, "name": "HAL_MOUSE_CMD_DEFAULTS", "signature": "#define HAL_MOUSE_CMD_DEFAULTS"}, {"kind": "macro", "line": 60, "name": "HAL_MOUSE_CMD_ENABLE", "signature": "#define HAL_MOUSE_CMD_ENABLE"}, {"kind": "macro", "line": 62, "name": "HAL_MOUSE_CMD_DISABLE", "signature": "#define HAL_MOUSE_CMD_DISABLE"}, {"kind": "macro", "line": 64, "name": "HAL_MOUSE_RATE_KNOCK_200", "signature": "#define HAL_MOUSE_RATE_KNOCK_200"}, {"kind": "macro", "line": 66, "name": "HAL_MOUSE_RATE_KNOCK_100", "signature": "#define HAL_MOUSE_RATE_KNOCK_100"}, {"kind": "macro", "line": 68, "name": "HAL_MOUSE_RATE_KNOCK_80", "signature": "#define HAL_MOUSE_RATE_KNOCK_80"}, {"kind": "macro", "line": 70, "name": "HAL_MOUSE_ID_INTELLI", "signature": "#define HAL_MOUSE_ID_INTELLI"}, {"kind": "macro", "line": 72, "name": "HAL_MOUSE_HW_TIMEOUT", "signature": "#define HAL_MOUSE_HW_TIMEOUT"}, {"kind": "macro", "line": 75, "name": "HAL_MOUSE_SYNC_BIT", "signature": "#define HAL_MOUSE_SYNC_BIT"}, {"kind": "macro", "line": 77, "name": "HAL_MOUSE_OVF_BITS", "signature": "#define HAL_MOUSE_OVF_BITS"}, {"kind": "macro", "line": 79, "name": "HAL_MOUSE_BUTTON_MASK", "signature": "#define HAL_MOUSE_BUTTON_MASK"}, {"kind": "macro", "line": 81, "name": "HAL_MOUSE_PACKET_LEN", "signature": "#define HAL_MOUSE_PACKET_LEN"}, {"kind": "macro", "line": 83, "name": "HAL_MOUSE_SCALE", "signature": "#define HAL_MOUSE_SCALE"}, {"kind": "macro", "line": 86, "name": "HAL_LAPIC_EOI_ADDR", "signature": "#define HAL_LAPIC_EOI_ADDR"}]}, {"doc": "Model-Specific Register access for x86-64.", "id": "headers/arch/x86/msr.h", "kind": "module", "label": "msr.h", "language": "h", "sha256": "fb99809c1bbc0b07", "symbol_count": 9, "symbols": [{"kind": "function", "line": 8, "name": "wrmsr", "signature": "static inline void wrmsr(unsigned msr, unsigned long val)"}, {"kind": "function", "line": 13, "name": "rdmsr", "signature": "static inline unsigned long rdmsr(unsigned msr)"}, {"kind": "macro", "line": 2, "name": "ARCH_X86_MSR_H", "signature": "#define ARCH_X86_MSR_H"}, {"kind": "macro", "line": 19, "name": "MSR_STAR", "signature": "#define MSR_STAR"}, {"kind": "macro", "line": 20, "name": "MSR_LSTAR", "signature": "#define MSR_LSTAR"}, {"kind": "macro", "line": 21, "name": "MSR_SFMASK", "signature": "#define MSR_SFMASK"}, {"kind": "macro", "line": 22, "name": "MSR_FSBASE", "signature": "#define MSR_FSBASE"}, {"kind": "macro", "line": 23, "name": "MSR_GSBASE", "signature": "#define MSR_GSBASE"}, {"kind": "macro", "line": 24, "name": "MSR_KERNEL_GS_BASE", "signature": "#define MSR_KERNEL_GS_BASE"}]}, {"doc": "Unified audio API for MiniOS.", "id": "headers/audio.h", "kind": "module", "label": "audio.h", "language": "h", "sha256": "439b760bd7995d63", "symbol_count": 18, "symbols": [{"doc": "PC speaker (square wave, syscalls 209/210/214) - Sound Blaster 16 (8-bit mono PCM DMA, syscalls 221/222/224) - SB16 multicanal mixer (streams, syscalls 225-228) Ring-3 programs use these wrappers instead of calling raw syscalls. The kernel dispatches to the appropriate hardware backend. #define AUDIO_RATE_DEFAULT 22050 #define AUDIO_CHANNELS_MONO 1 #define AUDIO_FORMAT_U8 0 #define AUDIO_FORMAT_S16 1 /* Initialize the audio subsystem. Probes for SB16, resets PC speaker.", "kind": "function", "line": 21, "name": "audio_init", "signature": "int audio_init(void);"}, {"doc": "Ring-3 programs use these wrappers instead of calling raw syscalls. The kernel dispatches to the appropriate hardware backend. #define AUDIO_RATE_DEFAULT 22050 #define AUDIO_CHANNELS_MONO 1 #define AUDIO_FORMAT_U8 0 #define AUDIO_FORMAT_S16 1 /* Initialize the audio subsystem. Probes for SB16, resets PC speaker. int audio_init(void); /* Tone mode: play a square wave at `freq` Hz. 0 = silence.", "kind": "function", "line": 24, "name": "audio_tone", "signature": "void audio_tone(unsigned freq);"}, {"doc": "#define AUDIO_RATE_DEFAULT 22050 #define AUDIO_CHANNELS_MONO 1 #define AUDIO_FORMAT_U8 0 #define AUDIO_FORMAT_S16 1 /* Initialize the audio subsystem. Probes for SB16, resets PC speaker. int audio_init(void); /* Tone mode: play a square wave at `freq` Hz. 0 = silence. void audio_tone(unsigned freq); /* PCM streaming mode (SB16).", "kind": "function", "line": 27, "name": "audio_pcm_open", "signature": "int audio_pcm_open(unsigned rate, unsigned channels, unsigned format);"}, {"kind": "function", "line": 28, "name": "audio_pcm_submit", "signature": "int audio_pcm_submit(const void *buf, unsigned len);"}, {"kind": "function", "line": 29, "name": "audio_pcm_pump", "signature": "void audio_pcm_pump(void);"}, {"kind": "function", "line": 30, "name": "audio_pcm_close", "signature": "void audio_pcm_close(void);"}, {"doc": "/* Initialize the audio subsystem. Probes for SB16, resets PC speaker. int audio_init(void); /* Tone mode: play a square wave at `freq` Hz. 0 = silence. void audio_tone(unsigned freq); /* PCM streaming mode (SB16). int audio_pcm_open(unsigned rate, unsigned channels, unsigned format); int audio_pcm_submit(const void *buf, unsigned len); void audio_pcm_pump(void); void audio_pcm_close(void); /* Volume control (PC speaker mute switch).", "kind": "function", "line": 33, "name": "audio_set_volume", "signature": "void audio_set_volume(unsigned volume);"}, {"kind": "function", "line": 34, "name": "audio_get_volume", "signature": "unsigned audio_get_volume(void);"}, {"doc": "/* Tone mode: play a square wave at `freq` Hz. 0 = silence. void audio_tone(unsigned freq); /* PCM streaming mode (SB16). int audio_pcm_open(unsigned rate, unsigned channels, unsigned format); int audio_pcm_submit(const void *buf, unsigned len); void audio_pcm_pump(void); void audio_pcm_close(void); /* Volume control (PC speaker mute switch). void audio_set_volume(unsigned volume); unsigned audio_get_volume(void); /* Query hardware presence.", "kind": "function", "line": 37, "name": "audio_sb16_present", "signature": "int audio_sb16_present(void);"}, {"doc": "/* PCM streaming mode (SB16). int audio_pcm_open(unsigned rate, unsigned channels, unsigned format); int audio_pcm_submit(const void *buf, unsigned len); void audio_pcm_pump(void); void audio_pcm_close(void); /* Volume control (PC speaker mute switch). void audio_set_volume(unsigned volume); unsigned audio_get_volume(void); /* Query hardware presence. int audio_sb16_present(void); /* Mixer stream API (SB16 multicanal).", "kind": "function", "line": 40, "name": "audio_stream_open", "signature": "int audio_stream_open(void);"}, {"kind": "function", "line": 41, "name": "audio_stream_close", "signature": "void audio_stream_close(int id);"}, {"kind": "function", "line": 42, "name": "audio_stream_submit", "signature": "int audio_stream_submit(int id, const void *buf, unsigned len);"}, {"kind": "function", "line": 43, "name": "audio_stream_volume", "signature": "void audio_stream_volume(int id, unsigned char vol);"}, {"kind": "macro", "line": 2, "name": "AUDIO_H", "signature": "#define AUDIO_H"}, {"kind": "macro", "line": 15, "name": "AUDIO_RATE_DEFAULT", "signature": "#define AUDIO_RATE_DEFAULT"}, {"kind": "macro", "line": 16, "name": "AUDIO_CHANNELS_MONO", "signature": "#define AUDIO_CHANNELS_MONO"}, {"kind": "macro", "line": 17, "name": "AUDIO_FORMAT_U8", "signature": "#define AUDIO_FORMAT_U8"}, {"kind": "macro", "line": 18, "name": "AUDIO_FORMAT_S16", "signature": "#define AUDIO_FORMAT_S16"}]}, {"doc": "Docstring: batch.h -- Batched synchronous syscall submission.", "id": "headers/batch.h", "kind": "module", "label": "batch.h", "language": "h", "sha256": "ed0aca6683cdebf1", "symbol_count": 12, "symbols": [{"kind": "struct", "line": 53, "name": "batch_op_t"}, {"kind": "function", "line": 62, "name": "batch_exec", "signature": "long batch_exec(const batch_op_t *ops, long *results, int count, int *completed, batch_handler_t dispatch);"}, {"kind": "macro", "line": 2, "name": "BATCH_H", "signature": "#define BATCH_H"}, {"kind": "macro", "line": 41, "name": "BATCH_MAX_OPS", "signature": "#define BATCH_MAX_OPS"}, {"kind": "macro", "line": 43, "name": "BATCH_OP_NOP", "signature": "#define BATCH_OP_NOP"}, {"kind": "macro", "line": 44, "name": "BATCH_OP_YIELD", "signature": "#define BATCH_OP_YIELD"}, {"kind": "macro", "line": 45, "name": "BATCH_OP_TIME", "signature": "#define BATCH_OP_TIME"}, {"kind": "macro", "line": 46, "name": "BATCH_OP_GETPID", "signature": "#define BATCH_OP_GETPID"}, {"kind": "macro", "line": 48, "name": "BATCH_OK", "signature": "#define BATCH_OK"}, {"kind": "macro", "line": 49, "name": "BATCH_ERR_COUNT", "signature": "#define BATCH_ERR_COUNT"}, {"kind": "macro", "line": 50, "name": "BATCH_ERR_PTR", "signature": "#define BATCH_ERR_PTR"}, {"kind": "macro", "line": 51, "name": "BATCH_ERR_OPCODE", "signature": "#define BATCH_ERR_OPCODE"}]}, {"doc": "Block device abstraction for MiniFS. Maps 4096-byte logical blocks to 512-byte IDE sectors.", "id": "headers/block.h", "kind": "module", "label": "block.h", "language": "h", "sha256": "8ecb4c98ea6ee5f4", "symbol_count": 12, "symbols": [{"doc": "Block device abstraction for MiniFS. * Maps 4096-byte logical blocks to 512-byte IDE sectors. #define BLOCK_SIZE 4096 #define BLOCK_SHIFT 12 #define SECTORS_PER_BLOCK (BLOCK_SIZE / IDE_SECTOR_SIZE) /* Initialize the block layer. Calls ide_init() internally.", "kind": "function", "line": 12, "name": "block_init", "signature": "void block_init(void);"}, {"doc": "Block device abstraction for MiniFS. * Maps 4096-byte logical blocks to 512-byte IDE sectors. #define BLOCK_SIZE 4096 #define BLOCK_SHIFT 12 #define SECTORS_PER_BLOCK (BLOCK_SIZE / IDE_SECTOR_SIZE) /* Initialize the block layer. Calls ide_init() internally. void block_init(void); /* Set the base LBA offset for all block I/O.", "kind": "function", "line": 15, "name": "block_set_base", "signature": "void block_set_base(unsigned int lba_base);"}, {"doc": "Block device abstraction for MiniFS. * Maps 4096-byte logical blocks to 512-byte IDE sectors. #define BLOCK_SIZE 4096 #define BLOCK_SHIFT 12 #define SECTORS_PER_BLOCK (BLOCK_SIZE / IDE_SECTOR_SIZE) /* Initialize the block layer. Calls ide_init() internally. void block_init(void); /* Set the base LBA offset for all block I/O. void block_set_base(unsigned int lba_base); /* Read/write one 4096-byte block. Returns 0 on success.", "kind": "function", "line": 18, "name": "block_read", "signature": "int block_read(unsigned int block_num, void *buf);"}, {"kind": "function", "line": 19, "name": "block_write", "signature": "int block_write(unsigned int block_num, const void *buf);"}, {"doc": "Read/write multiple contiguous blocks. * Returns 0 on success.", "kind": "function", "line": 23, "name": "block_read_multi", "signature": "int block_read_multi(unsigned int block_num, unsigned int count, void *buf);"}, {"kind": "function", "line": 24, "name": "block_write_multi", "signature": "int block_write_multi(unsigned int block_num, unsigned int count, const void *buf);"}, {"doc": "Read/write multiple contiguous blocks. * Returns 0 on success. int block_read_multi(unsigned int block_num, unsigned int count, void *buf); int block_write_multi(unsigned int block_num, unsigned int count, const void *buf); /* Flush any cached writes (currently a no-op, IDE is synchronous).", "kind": "function", "line": 27, "name": "block_flush", "signature": "void block_flush(void);"}, {"doc": "Read/write multiple contiguous blocks. * Returns 0 on success. int block_read_multi(unsigned int block_num, unsigned int count, void *buf); int block_write_multi(unsigned int block_num, unsigned int count, const void *buf); /* Flush any cached writes (currently a no-op, IDE is synchronous). void block_flush(void); /* Total blocks available, 0 if no disk.", "kind": "function", "line": 30, "name": "block_total", "signature": "unsigned int block_total(void);"}, {"kind": "macro", "line": 2, "name": "BLOCK_H", "signature": "#define BLOCK_H"}, {"kind": "macro", "line": 7, "name": "BLOCK_SIZE", "signature": "#define BLOCK_SIZE"}, {"kind": "macro", "line": 8, "name": "BLOCK_SHIFT", "signature": "#define BLOCK_SHIFT"}, {"kind": "macro", "line": 9, "name": "SECTORS_PER_BLOCK", "signature": "#define SECTORS_PER_BLOCK"}]}, {"doc": "desktop_icons.h -- embedded icon pixel data for desktop shortcuts.", "id": "headers/desktop_icons.h", "kind": "module", "label": "desktop_icons.h", "language": "h", "sha256": "d75f3ae0cedb0004", "symbol_count": 3, "symbols": [{"kind": "macro", "line": 8, "name": "DESKTOP_ICONS_H", "signature": "#define DESKTOP_ICONS_H"}, {"kind": "macro", "line": 12, "name": "ICON_EMBEDDED_W", "signature": "#define ICON_EMBEDDED_W"}, {"kind": "macro", "line": 13, "name": "ICON_EMBEDDED_H", "signature": "#define ICON_EMBEDDED_H"}]}, {"doc": "desktop_shortcuts.h -- configurable desktop icon shortcuts.", "id": "headers/desktop_shortcuts.h", "kind": "module", "label": "desktop_shortcuts.h", "language": "h", "sha256": "cf92cc1c5cf7932a", "symbol_count": 20, "symbols": [{"doc": "A decoded+cached desktop shortcut. Pixels are raw RGBA bytes (ICON_W*ICON_H*4): the PNG's own colors, alpha below 128 transparent. Embedded fallback icons arrive as palette indices and are expanded to * RGBA at load time, so the renderer has a single code path.", "kind": "struct", "line": 50, "name": "desktop_shortcut"}, {"doc": "Load shortcuts from etc/shortcuts, decode icons, compute layout. * Called once from vga_fb_draw_desktop on first draw.", "kind": "function", "line": 60, "name": "desktop_shortcuts_load", "signature": "void desktop_shortcuts_load(void);"}, {"doc": "Load shortcuts from etc/shortcuts, decode icons, compute layout. * Called once from vga_fb_draw_desktop on first draw. void desktop_shortcuts_load(void); /* Draw all shortcut icons and labels onto the framebuffer.", "kind": "function", "line": 63, "name": "desktop_shortcuts_draw", "signature": "void desktop_shortcuts_draw(void);"}, {"doc": "Handle a left-click at (mx, my). Returns the command string if the * click hit an icon, or NULL otherwise.", "kind": "function", "line": 67, "name": "desktop_shortcuts_hit_test", "signature": "const char *desktop_shortcuts_hit_test(int mx, int my);"}, {"kind": "macro", "line": 13, "name": "DESKTOP_SHORTCUTS_H", "signature": "#define DESKTOP_SHORTCUTS_H"}, {"kind": "macro", "line": 18, "name": "MAX_SHORTCUTS", "signature": "#define MAX_SHORTCUTS"}, {"kind": "macro", "line": 19, "name": "SHORTCUT_NAME_LEN", "signature": "#define SHORTCUT_NAME_LEN"}, {"kind": "macro", "line": 20, "name": "SHORTCUT_CMD_LEN", "signature": "#define SHORTCUT_CMD_LEN"}, {"kind": "macro", "line": 21, "name": "SHORTCUT_PATH_LEN", "signature": "#define SHORTCUT_PATH_LEN"}, {"kind": "macro", "line": 24, "name": "ICON_W", "signature": "#define ICON_W"}, {"kind": "macro", "line": 25, "name": "ICON_H", "signature": "#define ICON_H"}, {"kind": "macro", "line": 26, "name": "ICON_PAD_X", "signature": "#define ICON_PAD_X"}, {"kind": "macro", "line": 27, "name": "ICON_PAD_Y", "signature": "#define ICON_PAD_Y"}, {"kind": "macro", "line": 28, "name": "ICON_LABEL_H", "signature": "#define ICON_LABEL_H"}, {"kind": "macro", "line": 33, "name": "DOCK_PAD_X", "signature": "#define DOCK_PAD_X"}, {"kind": "macro", "line": 34, "name": "DOCK_PAD_Y", "signature": "#define DOCK_PAD_Y"}, {"kind": "macro", "line": 35, "name": "DOCK_GAP", "signature": "#define DOCK_GAP"}, {"kind": "macro", "line": 36, "name": "DOCK_LABEL_GAP", "signature": "#define DOCK_LABEL_GAP"}, {"kind": "macro", "line": 43, "name": "ICON_PAL_BASE", "signature": "#define ICON_PAL_BASE"}, {"kind": "macro", "line": 44, "name": "ICON_PAL_SIZE", "signature": "#define ICON_PAL_SIZE"}]}, {"doc": "driver.h -- Strategy pattern for hardware drivers (thesis correction 2).", "id": "headers/driver.h", "kind": "module", "label": "driver.h", "language": "h", "sha256": "e1ded722dd8d9028", "symbol_count": 16, "symbols": [{"kind": "struct", "line": 48, "name": "device"}, {"kind": "struct", "line": 28, "name": "block_ops_t"}, {"kind": "struct", "line": 37, "name": "audio_ops_t"}, {"doc": "define DEV_TYPE_BLOCK 1 define DEV_TYPE_AUDIO 2 define DEV_TYPE_NET 3 define DEV_TYPE_CHAR 4", "kind": "type_alias", "line": 25, "name": "device_t", "signature": "typedef struct device device_t;"}, {"kind": "function", "line": 56, "name": "device_register", "signature": "int device_register(device_t *dev);"}, {"kind": "function", "line": 57, "name": "device_find", "signature": "device_t *device_find(const char *name);"}, {"kind": "function", "line": 58, "name": "device_find_by_type", "signature": "device_t *device_find_by_type(int type);"}, {"kind": "function", "line": 59, "name": "device_count", "signature": "int device_count(void);"}, {"kind": "function", "line": 60, "name": "device_reset", "signature": "void device_reset(void);"}, {"kind": "macro", "line": 2, "name": "DRIVER_H", "signature": "#define DRIVER_H"}, {"kind": "macro", "line": 18, "name": "DEV_NAME_LEN", "signature": "#define DEV_NAME_LEN"}, {"kind": "macro", "line": 19, "name": "DEV_MAX", "signature": "#define DEV_MAX"}, {"kind": "macro", "line": 21, "name": "DEV_TYPE_BLOCK", "signature": "#define DEV_TYPE_BLOCK"}, {"kind": "macro", "line": 22, "name": "DEV_TYPE_AUDIO", "signature": "#define DEV_TYPE_AUDIO"}, {"kind": "macro", "line": 23, "name": "DEV_TYPE_NET", "signature": "#define DEV_TYPE_NET"}, {"kind": "macro", "line": 24, "name": "DEV_TYPE_CHAR", "signature": "#define DEV_TYPE_CHAR"}]}, {"doc": "Keyboard layout: US qwerty (default) or Spanish (Spain) qwerty. Toggled from the taskbar widget or the `kbd` shell builtin.", "id": "headers/drivers/kbd.h", "kind": "module", "label": "kbd.h", "language": "h", "sha256": "a60071f53f8cb345", "symbol_count": 23, "symbols": [{"kind": "function", "line": 9, "name": "kbd_available", "signature": "int kbd_available(void);"}, {"kind": "function", "line": 10, "name": "kbd_read", "signature": "int kbd_read(void);"}, {"kind": "function", "line": 11, "name": "kbd_reset_for_shell", "signature": "void kbd_reset_for_shell(void);"}, {"doc": "Keyboard layout: US qwerty (default) or Spanish (Spain) qwerty. Toggled * from the taskbar widget or the `kbd` shell builtin. #define KBD_LAYOUT_EN 0 #define KBD_LAYOUT_ES 1 int kbd_available(void); int kbd_read(void); void kbd_reset_for_shell(void); /* Layout selection", "kind": "function", "line": 14, "name": "kbd_get_layout", "signature": "int kbd_get_layout(void);"}, {"kind": "function", "line": 15, "name": "kbd_set_layout", "signature": "void kbd_set_layout(int layout);"}, {"kind": "function", "line": 16, "name": "kbd_toggle_layout", "signature": "void kbd_toggle_layout(void);"}, {"doc": "Printable test for console input: ASCII 32..126 plus Latin-1 160..255 (the ES layout emits single-byte Latin-1 for ñ ¡ ¿ ´ ¨ · ª º ç Ç ¬). * DEL (127) and the C1 controls (128..159) are never input. static inline int kbd_is_printable(int c) { return (c >= 32 && c <= 126) || (c >= 160 && c <= 255); } /* Translated queue (shell input)", "kind": "function", "line": 26, "name": "kbd_q_empty", "signature": "int kbd_q_empty(void);"}, {"kind": "function", "line": 27, "name": "kbd_q_pop", "signature": "int kbd_q_pop(void);"}, {"kind": "function", "line": 28, "name": "kbd_q_push", "signature": "void kbd_q_push(unsigned char c);"}, {"doc": "Printable test for console input: ASCII 32..126 plus Latin-1 160..255 (the ES layout emits single-byte Latin-1 for ñ ¡ ¿ ´ ¨ · ª º ç Ç ¬). * DEL (127) and the C1 controls (128..159) are never input. static inline int kbd_is_printable(int c) { return (c >= 32 && c <= 126) || (c >= 160 && c <= 255); } /* Translated queue (shell input) int kbd_q_empty(void); int kbd_q_pop(void); void kbd_q_push(unsigned char c); /** Docstring: Drop counters for full cooked and raw queues.", "kind": "function", "line": 31, "name": "kbd_drop_counts", "signature": "void kbd_drop_counts(unsigned long *cooked, unsigned long *raw);"}, {"doc": "DEL (127) and the C1 controls (128..159) are never input. static inline int kbd_is_printable(int c) { return (c >= 32 && c <= 126) || (c >= 160 && c <= 255); } /* Translated queue (shell input) int kbd_q_empty(void); int kbd_q_pop(void); void kbd_q_push(unsigned char c); /** Docstring: Drop counters for full cooked and raw queues. void kbd_drop_counts(unsigned long *cooked, unsigned long *raw); /* Raw queue (DOOM / SYS_KBD)", "kind": "function", "line": 34, "name": "kbd_raw_mode_get", "signature": "int kbd_raw_mode_get(void);"}, {"kind": "function", "line": 35, "name": "kbd_raw_mode_set", "signature": "void kbd_raw_mode_set(int on);"}, {"kind": "function", "line": 36, "name": "kbd_raw_empty", "signature": "int kbd_raw_empty(void);"}, {"kind": "function", "line": 37, "name": "kbd_raw_pop", "signature": "int kbd_raw_pop(void);"}, {"kind": "function", "line": 38, "name": "kbd_raw_push_byte", "signature": "void kbd_raw_push_byte(unsigned char c);"}, {"kind": "function", "line": 39, "name": "kbd_e0_get", "signature": "int kbd_e0_get(void);"}, {"kind": "function", "line": 40, "name": "kbd_e0_set", "signature": "void kbd_e0_set(int v);"}, {"kind": "function", "line": 41, "name": "kbd_flush_all", "signature": "void kbd_flush_all(void);"}, {"kind": "function", "line": 42, "name": "kbd_raw_flush", "signature": "void kbd_raw_flush(void);"}, {"doc": "Raw-path WM filter for the SYS_KBD direct-port read (DOOM/Quake/Nuklear read scancodes one byte per syscall, bypassing kbd_read): tracks E0 and modifiers, performs Alt+Tab / Super+Tab / Super+arrows / Alt+Enter,M,X,Q and swallows the consumed bytes. Returns 1 when sc must not reach the * app. Declared here so kernel/syscalls.c shares the one implementation.", "kind": "function", "line": 49, "name": "kbd_sys_raw_filter", "signature": "int kbd_sys_raw_filter(unsigned char sc);"}, {"kind": "macro", "line": 2, "name": "KBD_H", "signature": "#define KBD_H"}, {"kind": "macro", "line": 6, "name": "KBD_LAYOUT_EN", "signature": "#define KBD_LAYOUT_EN"}, {"kind": "macro", "line": 7, "name": "KBD_LAYOUT_ES", "signature": "#define KBD_LAYOUT_ES"}]}, {"doc": "Docstring: Unified modifier tracking for cooked and raw paths.", "id": "headers/drivers/modifiers.h", "kind": "module", "label": "modifiers.h", "language": "h", "sha256": "727b6d19adb1382e", "symbol_count": 11, "symbols": [{"doc": "#ifndef MODIFIERS_H #define MODIFIERS_H /** Docstring: Unified modifier tracking for cooked and raw paths.", "kind": "struct", "line": 5, "name": "modifier_state_t"}, {"doc": "#ifndef MODIFIERS_H #define MODIFIERS_H /** Docstring: Unified modifier tracking for cooked and raw paths. typedef struct { int shift; int ctrl; int alt; int altgr; int super; } modifier_state_t; /** Docstring: Key codes feeding the tracker, one config per layout.", "kind": "struct", "line": 14, "name": "modifier_keys_t"}, {"doc": "int ctrl_l; int alt_l; int alt_r; int super_l; int super_r; } modifier_keys_t; #define MOD_SHIFT (1 << 0) #define MOD_CTRL (1 << 1) #define MOD_ALT (1 << 2) #define MOD_ALTGR (1 << 3) #define MOD_SUPER (1 << 4) /** Docstring: Clear every modifier, shell reset path.", "kind": "function", "line": 31, "name": "modifiers_init", "signature": "static inline void modifiers_init(modifier_state_t *st)"}, {"doc": "#define MOD_SUPER (1 << 4) /** Docstring: Clear every modifier, shell reset path. static inline void modifiers_init(modifier_state_t *st) { if (!st) return; st->shift = 0; st->ctrl = 0; st->alt = 0; st->altgr = 0; st->super = 0; } /** Docstring: Track one make or break code, 1 when consumed.", "kind": "function", "line": 42, "name": "modifiers_update", "signature": "static inline int modifiers_update(const modifier_keys_t *keys,\n ..."}, {"doc": "return 0; } if (code == keys->alt_r) { st->altgr = pressed; return 1; } if (code == keys->super_l || code == keys->super_r) { st->super = pressed; return 1; } return 0; } /** Docstring: True when the state covers every bit in mask.", "kind": "function", "line": 76, "name": "modifiers_match", "signature": "static inline int modifiers_match(const modifier_state_t *st, int mask)"}, {"kind": "macro", "line": 2, "name": "MODIFIERS_H", "signature": "#define MODIFIERS_H"}, {"kind": "macro", "line": 24, "name": "MOD_SHIFT", "signature": "#define MOD_SHIFT"}, {"kind": "macro", "line": 25, "name": "MOD_CTRL", "signature": "#define MOD_CTRL"}, {"kind": "macro", "line": 26, "name": "MOD_ALT", "signature": "#define MOD_ALT"}, {"kind": "macro", "line": 27, "name": "MOD_ALTGR", "signature": "#define MOD_ALTGR"}, {"kind": "macro", "line": 28, "name": "MOD_SUPER", "signature": "#define MOD_SUPER"}]}, {"doc": "Docstring: mouse.h -- boundary of the PS/2 mouse device driver", "id": "headers/drivers/mouse.h", "kind": "module", "label": "mouse.h", "language": "h", "sha256": "10b239e18b7968b5", "symbol_count": 4, "symbols": [{"doc": "Docstring: mouse.h -- boundary of the PS/2 mouse device driver (drivers/mouse.c). Owns the controller handshake, the Intellimouse * detect knock and the enable/disable verbs. #include \"kernel.h\" /** Docstring: Detect the wheel mouse and enable data reporting.", "kind": "function", "line": 11, "name": "mouse_hw_init", "signature": "void mouse_hw_init(void);"}, {"doc": "Docstring: mouse.h -- boundary of the PS/2 mouse device driver (drivers/mouse.c). Owns the controller handshake, the Intellimouse * detect knock and the enable/disable verbs. #include \"kernel.h\" /** Docstring: Detect the wheel mouse and enable data reporting. void mouse_hw_init(void); /** Docstring: Disable mouse data reporting.", "kind": "function", "line": 14, "name": "mouse_disable", "signature": "void mouse_disable(void);"}, {"doc": "Docstring: mouse.h -- boundary of the PS/2 mouse device driver (drivers/mouse.c). Owns the controller handshake, the Intellimouse * detect knock and the enable/disable verbs. #include \"kernel.h\" /** Docstring: Detect the wheel mouse and enable data reporting. void mouse_hw_init(void); /** Docstring: Disable mouse data reporting. void mouse_disable(void); /** Docstring: Enable mouse data reporting.", "kind": "function", "line": 17, "name": "mouse_enable", "signature": "void mouse_enable(void);"}, {"kind": "macro", "line": 2, "name": "MOUSE_H", "signature": "#define MOUSE_H"}]}, {"doc": "editor.h -- the built-in line editor contract.", "id": "headers/editor.h", "kind": "module", "label": "editor.h", "language": "h", "sha256": "04e4e60e57be4bae", "symbol_count": 2, "symbols": [{"kind": "function", "line": 15, "name": "shell_cmd_edit", "signature": "void shell_cmd_edit(int argc, char **argv);"}, {"kind": "macro", "line": 2, "name": "EDITOR_H", "signature": "#define EDITOR_H"}]}, {"doc": "Docstring: futex.h -- Fast userspace mutex sleep/wake contract.", "id": "headers/futex.h", "kind": "module", "label": "futex.h", "language": "h", "sha256": "3b18f1e0f6c862e7", "symbol_count": 17, "symbols": [{"kind": "struct", "line": 68, "name": "futex_bucket_t"}, {"kind": "function", "line": 74, "name": "futex_init", "signature": "void futex_init(void);"}, {"kind": "function", "line": 75, "name": "futex_wait", "signature": "long futex_wait(unsigned long uaddr, int val);"}, {"kind": "function", "line": 76, "name": "futex_wake", "signature": "long futex_wake(unsigned long uaddr, int n);"}, {"kind": "function", "line": 79, "name": "FUTEX_PRIVATE_FLAG", "signature": "* FUTEX_PRIVATE_FLAG (process-private is served on the same global * buckets: same semantics, no isolation shortcut). Returns -1 for * anything unserved (REQUEUE, CMP_REQUEUE, WAKE_OP, WAIT_BITSET, * "}, {"doc": "Decode a Linux futex(2) op to LINUX_FUTEX_WAIT/WAKE, masking FUTEX_PRIVATE_FLAG (process-private is served on the same global buckets: same semantics, no isolation shortcut). Returns -1 for anything unserved (REQUEUE, CMP_REQUEUE, WAKE_OP, WAIT_BITSET, PI/PP...). Host-tested (tests/test_futex.c); the kernel errno mapping * lives in syscalls.c, which is not host-compilable.", "kind": "function", "line": 84, "name": "futex_linux_cmd", "signature": "int futex_linux_cmd(long op);"}, {"kind": "macro", "line": 2, "name": "FUTEX_H", "signature": "#define FUTEX_H"}, {"kind": "macro", "line": 51, "name": "FUTEX_BUCKETS", "signature": "#define FUTEX_BUCKETS"}, {"kind": "macro", "line": 52, "name": "FUTEX_BUCKET_MASK", "signature": "#define FUTEX_BUCKET_MASK"}, {"kind": "macro", "line": 53, "name": "FUTEX_HASH_GOLDEN", "signature": "#define FUTEX_HASH_GOLDEN"}, {"kind": "macro", "line": 55, "name": "FUTEX_OK", "signature": "#define FUTEX_OK"}, {"kind": "macro", "line": 56, "name": "FUTEX_NOMATCH", "signature": "#define FUTEX_NOMATCH"}, {"kind": "macro", "line": 57, "name": "FUTEX_NOPROC", "signature": "#define FUTEX_NOPROC"}, {"kind": "macro", "line": 58, "name": "FUTEX_WAKE_ALL", "signature": "#define FUTEX_WAKE_ALL"}, {"kind": "macro", "line": 64, "name": "LINUX_FUTEX_WAIT", "signature": "#define LINUX_FUTEX_WAIT"}, {"kind": "macro", "line": 65, "name": "LINUX_FUTEX_WAKE", "signature": "#define LINUX_FUTEX_WAKE"}, {"kind": "macro", "line": 66, "name": "LINUX_FUTEX_PRIVATE_FLAG", "signature": "#define LINUX_FUTEX_PRIVATE_FLAG"}]}, {"doc": "IDE/ATA PIO driver for MiniOS.", "id": "headers/ide.h", "kind": "module", "label": "ide.h", "language": "h", "sha256": "817a94f01e36f161", "symbol_count": 35, "symbols": [{"doc": "#define IDE_CMD_FLUSH 0xE7 /* FLUSH CACHE /* Drive/Head register bits #define IDE_DRIVE_LBA 0x40 /* LBA mode #define IDE_DRIVE_MASTER 0xA0 /* master drive #define IDE_DRIVE_SLAVE 0xB0 /* slave drive /* Timeout in PIT ticks (approximate) #define IDE_TIMEOUT 1000000 /* Sector size in bytes #define IDE_SECTOR_SIZE 512 /* Initialize the IDE driver: probe, IDENTIFY, report geometry.", "kind": "function", "line": 49, "name": "ide_init", "signature": "void ide_init(void);"}, {"doc": "Read/write sectors using 28-bit LBA. * Returns 0 on success, -1 on error.", "kind": "function", "line": 53, "name": "ide_read_sectors", "signature": "int ide_read_sectors(unsigned int lba, unsigned int count, void *buf);"}, {"kind": "function", "line": 54, "name": "ide_write_sectors", "signature": "int ide_write_sectors(unsigned int lba, unsigned int count, const void *buf);"}, {"doc": "Read/write sectors using 28-bit LBA. * Returns 0 on success, -1 on error. int ide_read_sectors(unsigned int lba, unsigned int count, void *buf); int ide_write_sectors(unsigned int lba, unsigned int count, const void *buf); /* Convenience: single sector read/write.", "kind": "function", "line": 57, "name": "ide_read_sector", "signature": "int ide_read_sector(unsigned int lba, void *buf);"}, {"kind": "function", "line": 58, "name": "ide_write_sector", "signature": "int ide_write_sector(unsigned int lba, const void *buf);"}, {"doc": "Read/write sectors using 28-bit LBA. * Returns 0 on success, -1 on error. int ide_read_sectors(unsigned int lba, unsigned int count, void *buf); int ide_write_sectors(unsigned int lba, unsigned int count, const void *buf); /* Convenience: single sector read/write. int ide_read_sector(unsigned int lba, void *buf); int ide_write_sector(unsigned int lba, const void *buf); /* Returns total sectors on the disk, or 0 if not detected.", "kind": "function", "line": 61, "name": "ide_total_sectors", "signature": "unsigned int ide_total_sectors(void);"}, {"doc": "Read/write sectors using 28-bit LBA. * Returns 0 on success, -1 on error. int ide_read_sectors(unsigned int lba, unsigned int count, void *buf); int ide_write_sectors(unsigned int lba, unsigned int count, const void *buf); /* Convenience: single sector read/write. int ide_read_sector(unsigned int lba, void *buf); int ide_write_sector(unsigned int lba, const void *buf); /* Returns total sectors on the disk, or 0 if not detected. unsigned int ide_total_sectors(void); /* Returns 1 if a disk was successfully detected.", "kind": "function", "line": 64, "name": "ide_present", "signature": "int ide_present(void);"}, {"doc": "Publish the Strategy ops table to the device registry (driver.h). * Called from ide_init; re-registration is a no-op (duplicate refused).", "kind": "function", "line": 68, "name": "ide_register_device", "signature": "void ide_register_device(void);"}, {"kind": "macro", "line": 2, "name": "IDE_H", "signature": "#define IDE_H"}, {"kind": "macro", "line": 9, "name": "IDE_PRIMARY_BASE", "signature": "#define IDE_PRIMARY_BASE"}, {"kind": "macro", "line": 10, "name": "IDE_PRIMARY_CTRL", "signature": "#define IDE_PRIMARY_CTRL"}, {"kind": "macro", "line": 13, "name": "IDE_REG_DATA", "signature": "#define IDE_REG_DATA"}, {"kind": "macro", "line": 14, "name": "IDE_REG_ERROR", "signature": "#define IDE_REG_ERROR"}, {"kind": "macro", "line": 15, "name": "IDE_REG_SECCOUNT", "signature": "#define IDE_REG_SECCOUNT"}, {"kind": "macro", "line": 16, "name": "IDE_REG_LBA_LO", "signature": "#define IDE_REG_LBA_LO"}, {"kind": "macro", "line": 17, "name": "IDE_REG_LBA_MID", "signature": "#define IDE_REG_LBA_MID"}, {"kind": "macro", "line": 18, "name": "IDE_REG_LBA_HI", "signature": "#define IDE_REG_LBA_HI"}, {"kind": "macro", "line": 19, "name": "IDE_REG_DRIVE", "signature": "#define IDE_REG_DRIVE"}, {"kind": "macro", "line": 20, "name": "IDE_REG_STATUS", "signature": "#define IDE_REG_STATUS"}, {"kind": "macro", "line": 21, "name": "IDE_REG_ALTSTATUS", "signature": "#define IDE_REG_ALTSTATUS"}, {"kind": "macro", "line": 24, "name": "IDE_STATUS_ERR", "signature": "#define IDE_STATUS_ERR"}, {"kind": "macro", "line": 25, "name": "IDE_STATUS_DRQ", "signature": "#define IDE_STATUS_DRQ"}, {"kind": "macro", "line": 26, "name": "IDE_STATUS_SRV", "signature": "#define IDE_STATUS_SRV"}, {"kind": "macro", "line": 27, "name": "IDE_STATUS_DF", "signature": "#define IDE_STATUS_DF"}, {"kind": "macro", "line": 28, "name": "IDE_STATUS_RDY", "signature": "#define IDE_STATUS_RDY"}, {"kind": "macro", "line": 29, "name": "IDE_STATUS_BSY", "signature": "#define IDE_STATUS_BSY"}, {"kind": "macro", "line": 32, "name": "IDE_CMD_READ", "signature": "#define IDE_CMD_READ"}, {"kind": "macro", "line": 33, "name": "IDE_CMD_WRITE", "signature": "#define IDE_CMD_WRITE"}, {"kind": "macro", "line": 34, "name": "IDE_CMD_IDENTIFY", "signature": "#define IDE_CMD_IDENTIFY"}, {"kind": "macro", "line": 35, "name": "IDE_CMD_FLUSH", "signature": "#define IDE_CMD_FLUSH"}, {"kind": "macro", "line": 38, "name": "IDE_DRIVE_LBA", "signature": "#define IDE_DRIVE_LBA"}, {"kind": "macro", "line": 39, "name": "IDE_DRIVE_MASTER", "signature": "#define IDE_DRIVE_MASTER"}, {"kind": "macro", "line": 40, "name": "IDE_DRIVE_SLAVE", "signature": "#define IDE_DRIVE_SLAVE"}, {"kind": "macro", "line": 43, "name": "IDE_TIMEOUT", "signature": "#define IDE_TIMEOUT"}, {"kind": "macro", "line": 46, "name": "IDE_SECTOR_SIZE", "signature": "#define IDE_SECTOR_SIZE"}]}, {"doc": "Docstring: console_in.h -- boundary of the console input device", "id": "headers/kernel/console_in.h", "kind": "module", "label": "console_in.h", "language": "h", "sha256": "78195eae3f19b37c", "symbol_count": 8, "symbols": [{"kind": "function", "line": 7, "name": "Consumers", "signature": "* Consumers (shell prompt, editor, SPAWN waits, GETC_RAW syscall) include * this header instead of reaching into kernel/shell.c. */ #include \"kernel.h\" /** Docstring: Blocking read from PS/2 or COM1 w"}, {"doc": "Docstring: Blocking read from PS/2 or COM1 with PageUp/PageDown * scrollback detour. int console_getc(void); /** Docstring: Next buffered byte without consuming it, or -1.", "kind": "function", "line": 17, "name": "console_peek", "signature": "int console_peek(void);"}, {"doc": "Docstring: Raw console multiplexer backing GETC_RAW: same sources, * no line buffering, echo or scrollback. try returns -1 when idle.", "kind": "function", "line": 21, "name": "console_raw_try", "signature": "int console_raw_try(void);"}, {"kind": "function", "line": 22, "name": "console_raw_get", "signature": "int console_raw_get(void);"}, {"doc": "Docstring: Raw console multiplexer backing GETC_RAW: same sources, * no line buffering, echo or scrollback. try returns -1 when idle. int console_raw_try(void); int console_raw_get(void); /** Docstring: PS/2-only GETC_RAW source for background jobs.", "kind": "function", "line": 25, "name": "console_job_try", "signature": "int console_job_try(void);"}, {"kind": "function", "line": 26, "name": "console_job_get", "signature": "int console_job_get(void);"}, {"doc": "Docstring: Push one byte back into the console FIFO; the next * console_getc/console_peek serves it first. Drops the byte when full.", "kind": "function", "line": 30, "name": "console_ungetc", "signature": "void console_ungetc(unsigned char c);"}, {"kind": "macro", "line": 2, "name": "CONSOLE_IN_H", "signature": "#define CONSOLE_IN_H"}]}, {"doc": "Docstring: vga_cursor.h -- boundary of the pointer sprite layer", "id": "headers/kernel/vga_cursor.h", "kind": "module", "label": "vga_cursor.h", "language": "h", "sha256": "5d69b324ebb920d4", "symbol_count": 9, "symbols": [{"doc": "Docstring: vga_cursor.h -- boundary of the pointer sprite layer (kernel/vga_cursor.c). Owns the arrow bitmap, the saved background and the painted position; draws only through the framebuffer primitives. * Callers move/erase/invalidate through these ops and never poke state. #include \"kernel.h\" /** Docstring: Pointer sprite dimensions in pixels. #define CURSOR_W 8 #define CURSOR_H 8 /** Docstring: True when the sprite overlaps the given screen rectangle.", "kind": "function", "line": 16, "name": "cursor_over", "signature": "int cursor_over(int x0, int y0, int w, int h);"}, {"doc": "(kernel/vga_cursor.c). Owns the arrow bitmap, the saved background and the painted position; draws only through the framebuffer primitives. * Callers move/erase/invalidate through these ops and never poke state. #include \"kernel.h\" /** Docstring: Pointer sprite dimensions in pixels. #define CURSOR_W 8 #define CURSOR_H 8 /** Docstring: True when the sprite overlaps the given screen rectangle. int cursor_over(int x0, int y0, int w, int h); /** Docstring: Paint the pointer at mx/my unconditionally.", "kind": "function", "line": 19, "name": "cursor_place", "signature": "void cursor_place(int mx, int my);"}, {"doc": "#include \"kernel.h\" /** Docstring: Pointer sprite dimensions in pixels. #define CURSOR_W 8 #define CURSOR_H 8 /** Docstring: True when the sprite overlaps the given screen rectangle. int cursor_over(int x0, int y0, int w, int h); /** Docstring: Paint the pointer at mx/my unconditionally. void cursor_place(int mx, int my); /** Docstring: Desktop-tick update: repaint only when the position moved.", "kind": "function", "line": 22, "name": "cursor_move", "signature": "void cursor_move(int mx, int my);"}, {"doc": "/** Docstring: Pointer sprite dimensions in pixels. #define CURSOR_W 8 #define CURSOR_H 8 /** Docstring: True when the sprite overlaps the given screen rectangle. int cursor_over(int x0, int y0, int w, int h); /** Docstring: Paint the pointer at mx/my unconditionally. void cursor_place(int mx, int my); /** Docstring: Desktop-tick update: repaint only when the position moved. void cursor_move(int mx, int my); /** Docstring: Restore the saved background and mark the pointer hidden.", "kind": "function", "line": 25, "name": "cursor_erase", "signature": "void cursor_erase(void);"}, {"doc": "/** Docstring: True when the sprite overlaps the given screen rectangle. int cursor_over(int x0, int y0, int w, int h); /** Docstring: Paint the pointer at mx/my unconditionally. void cursor_place(int mx, int my); /** Docstring: Desktop-tick update: repaint only when the position moved. void cursor_move(int mx, int my); /** Docstring: Restore the saved background and mark the pointer hidden. void cursor_erase(void); /** Docstring: Mark the pointer hidden without touching the framebuffer.", "kind": "function", "line": 28, "name": "cursor_invalidate", "signature": "void cursor_invalidate(void);"}, {"doc": "/** Docstring: Paint the pointer at mx/my unconditionally. void cursor_place(int mx, int my); /** Docstring: Desktop-tick update: repaint only when the position moved. void cursor_move(int mx, int my); /** Docstring: Restore the saved background and mark the pointer hidden. void cursor_erase(void); /** Docstring: Mark the pointer hidden without touching the framebuffer. void cursor_invalidate(void); /** Docstring: Invalidate when the pointer overlaps a repainted rectangle.", "kind": "function", "line": 31, "name": "cursor_note_repaint", "signature": "void cursor_note_repaint(int x0, int y0, int w, int h);"}, {"kind": "macro", "line": 2, "name": "VGA_CURSOR_H", "signature": "#define VGA_CURSOR_H"}, {"kind": "macro", "line": 12, "name": "CURSOR_W", "signature": "#define CURSOR_W"}, {"kind": "macro", "line": 13, "name": "CURSOR_H", "signature": "#define CURSOR_H"}]}, {"doc": "The user-window memory layout (load base, stack, brk cap, graphics", "id": "headers/kernel.h", "kind": "module", "label": "kernel.h", "language": "h", "sha256": "22b74677927edc1d", "symbol_count": 314, "symbols": [{"doc": "close. Never modified after open. handle: driver-private state, valid between open and close. pos: current file position. Updated by read/write. Never exceeds the file's size after a read. mode: 0=read, 1=write, 2=append. Set by open, immutable after. is_console: 1 for stdin/stdout/stderr (console I/O path). Invariants: 1. vfs_open returns a vfs_file_t with ops != NULL on success. 2. Every successful open must be paired with exactly one close. 3. read/write on a closed handle is undefined (debug builds assert). 4. VFS_MAX_MOUNTS (8) limits concurrent registrations. 5. Prefix matching is longest-prefix-first. * =========================================================================", "kind": "struct", "line": 270, "name": "vfs_ops"}, {"kind": "struct", "line": 279, "name": "vfs_file"}, {"kind": "struct", "line": 186, "name": "RDFile"}, {"kind": "struct", "line": 343, "name": "KFILE"}, {"kind": "struct", "line": 443, "name": "KSym"}, {"kind": "struct", "line": 448, "name": "KProg"}, {"doc": "ET_REL stack switch (arch/x86/ctx_sw.S): runs entry(argc, argv) on * the 64 KB stack ending at stack_top. See the asm contract there. int k_run_on_stack(void *stack_top, prog_entry_t entry, int argc, char **argv); /* ========== Execution infrastructure (kernel/exec.c) ==========", "kind": "struct", "line": 482, "name": "kjmpbuf"}, {"kind": "struct", "line": 554, "name": "Elf64_Ehdr"}, {"doc": "Facade aliases (thesis correction 2B, 4.4BSD/Linux vnode model): vfs_ops_t IS the file_operations table, and vnode is the object it operates on. New code uses these names; vfs_ops_t/vfs_file_t remain as compat aliases. Open/Closed Principle: adding a filesystem means registering a new ops table, never editing a dispatch cascade. No caller branches on which filesystem backs a handle; vfs_read/write/close/fstat dispatch purely * through ops.", "kind": "type_alias", "line": 294, "name": "file_operations", "signature": "typedef vfs_ops_t file_operations;"}, {"kind": "type_alias", "line": 295, "name": "vnode_t", "signature": "typedef vfs_file_t vnode_t;"}, {"doc": "/* ========== Swap (kernel/mm/swap.c) ========== int swap_out(unsigned long window_sz); int swap_in(void); /* brk/mmap globals (loader.c) extern unsigned long g_brk; extern unsigned long g_brk_limit; extern unsigned long user_mmap_cur; /* ========== ELF loader (loader.c) ========== /* Minimal ELF64 definitions (used by shell_load, shell_run_elf_buf, SPAWN) define EI_NIDENT 16", "kind": "type_alias", "line": 547, "name": "Elf64_Addr", "signature": "typedef unsigned long long Elf64_Addr;"}, {"kind": "type_alias", "line": 548, "name": "Elf64_Off", "signature": "typedef unsigned long long Elf64_Off;"}, {"kind": "type_alias", "line": 549, "name": "Elf64_Word", "signature": "typedef unsigned int Elf64_Word;"}, {"kind": "type_alias", "line": 550, "name": "Elf64_Half", "signature": "typedef unsigned short Elf64_Half;"}, {"kind": "type_alias", "line": 551, "name": "Elf64_Xword", "signature": "typedef unsigned long long Elf64_Xword;"}, {"kind": "type_alias", "line": 552, "name": "Elf64_Sxword", "signature": "typedef long long Elf64_Sxword;"}, {"doc": "back-buffers, framebuffer, kernel heap) is defined ONCE in the ABI header shared with ring-3 programs. The kernel derives its own constants from it, so growing the window or moving a back-buffer cannot leave the two sides disagreeing -- that mismatch is what made the lua/MicroPython in-OS tests and DOOM's window go dark when the layout moved. Do not hardcode a layout * address in the kernel or in a ring-3 program; put it in minios_abi.h. #include \"minios_abi.h\" #include \"vma.h\" #include \"spinlock.h\" /* ========== Port I/O helpers ========== define ALIGN_UP(x, a) (((x) + (a) - 1) & ~((a) - 1)) ifndef PORT_IO_DEFINED define PORT_IO_DEFINED", "kind": "function", "line": 21, "name": "outb", "signature": "static inline void outb(unsigned short port, unsigned char val)"}, {"kind": "function", "line": 24, "name": "inb", "signature": "static inline unsigned char inb(unsigned short port)"}, {"kind": "function", "line": 29, "name": "outw", "signature": "static inline void outw(unsigned short port, unsigned short val)"}, {"kind": "function", "line": 32, "name": "inw", "signature": "static inline unsigned short inw(unsigned short port)"}, {"kind": "function", "line": 621, "name": "C", "signature": "* it with pointer subtraction in C (undefined behaviour). The value is\n * a link-time difference,..."}, {"kind": "function", "line": 44, "name": "vga_clear", "signature": "void vga_clear(void);"}, {"kind": "function", "line": 45, "name": "vga_putc", "signature": "void vga_putc(char c);"}, {"kind": "function", "line": 46, "name": "vga_puts", "signature": "void vga_puts(const char *s);"}, {"kind": "function", "line": 47, "name": "vga_scroll", "signature": "void vga_scroll(void);"}, {"kind": "function", "line": 48, "name": "vga_set_cursor", "signature": "void vga_set_cursor(int x, int y);"}, {"kind": "function", "line": 49, "name": "vga_newline", "signature": "void vga_newline(void);"}, {"kind": "function", "line": 50, "name": "vga_cursor_enable", "signature": "void vga_cursor_enable(int on);"}, {"doc": "Console output lock (kernel/console.c): serializes SMP console output across CPUs. Held across the whole vga_putc body; try-or-race so an ISR * dump prints rather than deadlocks on a lock held by interrupted context. extern spinlock_t console_lock; /* VGA state getters (kernel/console.c, for scrollback renderer)", "kind": "function", "line": 58, "name": "vga_get_x", "signature": "int vga_get_x(void);"}, {"kind": "function", "line": 59, "name": "vga_get_y", "signature": "int vga_get_y(void);"}, {"kind": "function", "line": 60, "name": "vga_set_xy", "signature": "void vga_set_xy(int x, int y);"}, {"kind": "function", "line": 61, "name": "vga_get_color", "signature": "char vga_get_color(void);"}, {"doc": "Console output lock (kernel/console.c): serializes SMP console output across CPUs. Held across the whole vga_putc body; try-or-race so an ISR * dump prints rather than deadlocks on a lock held by interrupted context. extern spinlock_t console_lock; /* VGA state getters (kernel/console.c, for scrollback renderer) int vga_get_x(void); int vga_get_y(void); void vga_set_xy(int x, int y); char vga_get_color(void); /* ========== Scrollback ring (kernel/scrollback.c) ==========", "kind": "function", "line": 64, "name": "sb_init", "signature": "void sb_init(void);"}, {"kind": "function", "line": 65, "name": "sb_capture_row0", "signature": "void sb_capture_row0(void);"}, {"kind": "function", "line": 66, "name": "sb_reset", "signature": "void sb_reset(void);"}, {"kind": "function", "line": 67, "name": "sb_get_count", "signature": "int sb_get_count(void);"}, {"kind": "function", "line": 68, "name": "sb_get_head", "signature": "int sb_get_head(void);"}, {"kind": "function", "line": 69, "name": "sb_get_char", "signature": "char sb_get_char(int row, int col);"}, {"doc": "int vga_get_x(void); int vga_get_y(void); void vga_set_xy(int x, int y); char vga_get_color(void); /* ========== Scrollback ring (kernel/scrollback.c) ========== void sb_init(void); void sb_capture_row0(void); void sb_reset(void); int sb_get_count(void); int sb_get_head(void); char sb_get_char(int row, int col); /* ========== Serial console (COM1) ==========", "kind": "function", "line": 72, "name": "serial_init", "signature": "void serial_init(void);"}, {"kind": "function", "line": 73, "name": "serial_putc", "signature": "void serial_putc(char c);"}, {"kind": "function", "line": 74, "name": "serial_puts", "signature": "void serial_puts(const char *s);"}, {"kind": "function", "line": 75, "name": "serial_e_count", "signature": "unsigned long serial_e_count(void);"}, {"doc": "/* ========== Scrollback ring (kernel/scrollback.c) ========== void sb_init(void); void sb_capture_row0(void); void sb_reset(void); int sb_get_count(void); int sb_get_head(void); char sb_get_char(int row, int col); /* ========== Serial console (COM1) ========== void serial_init(void); void serial_putc(char c); void serial_puts(const char *s); unsigned long serial_e_count(void); /* E-flood tracer (serial.c) extern unsigned long ser_e_ra, ser_e_cpu; /* first 'E' writer's RA/CPU", "kind": "function", "line": 77, "name": "serial_available", "signature": "int serial_available(void);"}, {"kind": "function", "line": 78, "name": "serial_getc", "signature": "int serial_getc(void);"}, {"kind": "function", "line": 115, "name": "kbd_read", "signature": "int kbd_read(void);"}, {"kind": "function", "line": 116, "name": "kbd_available", "signature": "int kbd_available(void);"}, {"kind": "function", "line": 117, "name": "kbd_reset_for_shell", "signature": "void kbd_reset_for_shell(void);"}, {"kind": "function", "line": 143, "name": "kmalloc", "signature": "void *kmalloc(unsigned long size);"}, {"kind": "function", "line": 145, "name": "kfree", "signature": "void kfree(void *ptr);"}, {"kind": "function", "line": 146, "name": "kcalloc", "signature": "void *kcalloc(unsigned long nmemb, unsigned long size);"}, {"kind": "function", "line": 147, "name": "krealloc", "signature": "void *krealloc(void *ptr, unsigned long size);"}, {"kind": "function", "line": 148, "name": "kallocator_init", "signature": "void kallocator_init(void);"}, {"kind": "function", "line": 149, "name": "kmalloc_percpu", "signature": "void *kmalloc_percpu(unsigned long size, unsigned long align);"}, {"doc": "dlmalloc backend (third_party/dlmalloc): an mspace rooted over the fixed * kernel heap. The kernel's allocator delegates to these.", "kind": "function", "line": 153, "name": "dlmalloc_init", "signature": "void dlmalloc_init(void);"}, {"kind": "function", "line": 154, "name": "dlmalloc_malloc", "signature": "void *dlmalloc_malloc(unsigned long size);"}, {"kind": "function", "line": 155, "name": "dlmalloc_free", "signature": "void dlmalloc_free(void *ptr);"}, {"kind": "function", "line": 156, "name": "dlmalloc_calloc", "signature": "void *dlmalloc_calloc(unsigned long nmemb, unsigned long size);"}, {"kind": "function", "line": 157, "name": "dlmalloc_realloc", "signature": "void *dlmalloc_realloc(void *ptr, unsigned long size);"}, {"doc": "dlmalloc backend (third_party/dlmalloc): an mspace rooted over the fixed * kernel heap. The kernel's allocator delegates to these. void dlmalloc_init(void); void *dlmalloc_malloc(unsigned long size); void dlmalloc_free(void *ptr); void *dlmalloc_calloc(unsigned long nmemb, unsigned long size); void *dlmalloc_realloc(void *ptr, unsigned long size); /** Docstring: Heap usage snapshot for the mem builtin.", "kind": "function", "line": 159, "name": "dlmalloc_usage", "signature": "void dlmalloc_usage(unsigned long *used, unsigned long *free_b, unsigned long *arena);"}, {"kind": "function", "line": 192, "name": "ramdisk_init", "signature": "void ramdisk_init(void);"}, {"kind": "function", "line": 193, "name": "ramdisk_open", "signature": "RDFile *ramdisk_open(const char *name);"}, {"kind": "function", "line": 194, "name": "ramdisk_read", "signature": "int ramdisk_read(RDFile *f, void *buf, unsigned offset, unsigned len);"}, {"kind": "function", "line": 195, "name": "ramdisk_write", "signature": "int ramdisk_write(RDFile *f, const void *buf, unsigned offset, unsigned len);"}, {"kind": "function", "line": 196, "name": "ramdisk_create", "signature": "RDFile *ramdisk_create(const char *name, unsigned size);"}, {"kind": "function", "line": 197, "name": "ramdisk_resize", "signature": "int ramdisk_resize(RDFile *f, unsigned newsize);"}, {"kind": "function", "line": 198, "name": "ramdisk_delete", "signature": "int ramdisk_delete(RDFile *f);"}, {"kind": "function", "line": 199, "name": "ramdisk_list", "signature": "int ramdisk_list(RDFile **out, int max);"}, {"kind": "function", "line": 200, "name": "ramdisk_setup_from", "signature": "void ramdisk_setup_from(void *data, unsigned size);"}, {"kind": "function", "line": 201, "name": "ramdisk_count", "signature": "int ramdisk_count(void);"}, {"kind": "function", "line": 202, "name": "ramdisk_file_name", "signature": "const char *ramdisk_file_name(int idx);"}, {"doc": "} RDFile; void ramdisk_init(void); RDFile *ramdisk_open(const char *name); int ramdisk_read(RDFile *f, void *buf, unsigned offset, unsigned len); int ramdisk_write(RDFile *f, const void *buf, unsigned offset, unsigned len); RDFile *ramdisk_create(const char *name, unsigned size); int ramdisk_resize(RDFile *f, unsigned newsize); int ramdisk_delete(RDFile *f); int ramdisk_list(RDFile **out, int max); void ramdisk_setup_from(void *data, unsigned size); int ramdisk_count(void); const char *ramdisk_file_name(int idx); /** Docstring: Ramdisk usage snapshot for the mem builtin.", "kind": "function", "line": 204, "name": "ramdisk_usage", "signature": "void ramdisk_usage(unsigned *used, unsigned *cap, unsigned *max);"}, {"doc": "Path resolution choke point shared by the shell builtins and the zip builtins. fs_resolve resolves a path against the cwd into `out` (cap >= RAMDISK_FNAME_LEN); a name that does not fit is rejected like a * missing file, never truncated.", "kind": "function", "line": 212, "name": "fs_resolve", "signature": "int fs_resolve(const char *path, char *out, unsigned cap);"}, {"kind": "function", "line": 213, "name": "fs_dir_exists", "signature": "int fs_dir_exists(const char *dir);"}, {"kind": "function", "line": 214, "name": "fs_is_dir", "signature": "int fs_is_dir(const char *resolved);"}, {"kind": "function", "line": 297, "name": "vfs_register", "signature": "int vfs_register(const char *prefix, const vfs_ops_t *ops);"}, {"kind": "function", "line": 298, "name": "vfs_unregister", "signature": "int vfs_unregister(const char *prefix);"}, {"kind": "function", "line": 299, "name": "vfs_open", "signature": "int vfs_open(const char *path, int mode, vfs_file_t *f);"}, {"kind": "function", "line": 300, "name": "vfs_read", "signature": "int vfs_read(vfs_file_t *f, void *buf, unsigned long len);"}, {"kind": "function", "line": 301, "name": "vfs_write", "signature": "int vfs_write(vfs_file_t *f, const void *buf, unsigned long len);"}, {"kind": "function", "line": 302, "name": "vfs_close", "signature": "int vfs_close(vfs_file_t *f);"}, {"kind": "function", "line": 303, "name": "vfs_fstat", "signature": "int vfs_fstat(vfs_file_t *f, unsigned long *size_out);"}, {"kind": "function", "line": 304, "name": "vfs_init", "signature": "void vfs_init(void);"}, {"kind": "function", "line": 305, "name": "vfs_register_builtins", "signature": "void vfs_register_builtins(void);"}, {"kind": "function", "line": 306, "name": "minifs_mkdir_p", "signature": "int minifs_mkdir_p(const char *resolved);"}, {"kind": "function", "line": 357, "name": "kfopen", "signature": "KFILE *kfopen(const char *path, const char *mode);"}, {"kind": "function", "line": 358, "name": "kfclose", "signature": "int kfclose(KFILE *f);"}, {"kind": "function", "line": 359, "name": "kfgetc", "signature": "int kfgetc(KFILE *f);"}, {"kind": "function", "line": 360, "name": "kfgets", "signature": "char *kfgets(char *buf, int size, KFILE *f);"}, {"kind": "function", "line": 361, "name": "kfungetc", "signature": "int kfungetc(int c, KFILE *f);"}, {"kind": "function", "line": 362, "name": "kfread", "signature": "unsigned long kfread(void *ptr, unsigned long size, unsigned long nmemb, KFILE *f);"}, {"kind": "function", "line": 363, "name": "kfwrite", "signature": "unsigned long kfwrite(const void *ptr, unsigned long size, unsigned long nmemb, KFILE *f);"}, {"kind": "function", "line": 364, "name": "kfseek", "signature": "int kfseek(KFILE *f, long offset, int whence);"}, {"kind": "function", "line": 365, "name": "kftell", "signature": "long kftell(KFILE *f);"}, {"kind": "function", "line": 366, "name": "kfputs", "signature": "int kfputs(const char *s, KFILE *f);"}, {"kind": "function", "line": 367, "name": "kfputc", "signature": "int kfputc(int c, KFILE *f);"}, {"kind": "function", "line": 368, "name": "kfflush", "signature": "int kfflush(KFILE *f);"}, {"kind": "function", "line": 369, "name": "krewind", "signature": "void krewind(KFILE *f);"}, {"kind": "function", "line": 374, "name": "kfile_stdin", "signature": "KFILE *kfile_stdin(void);"}, {"kind": "function", "line": 375, "name": "kfile_stdout", "signature": "KFILE *kfile_stdout(void);"}, {"kind": "function", "line": 376, "name": "kfile_stderr", "signature": "KFILE *kfile_stderr(void);"}, {"doc": "long kftell(KFILE *f); int kfputs(const char *s, KFILE *f); int kfputc(int c, KFILE *f); int kfflush(KFILE *f); void krewind(KFILE *f); extern KFILE *kstdin; extern KFILE *kstdout; extern KFILE *kstderr; KFILE *kfile_stdin(void); KFILE *kfile_stdout(void); KFILE *kfile_stderr(void); /* ========== String functions ==========", "kind": "function", "line": 379, "name": "kstrlen", "signature": "unsigned long kstrlen(const char *s);"}, {"kind": "function", "line": 380, "name": "kstrcpy", "signature": "char *kstrcpy(char *dst, const char *src);"}, {"kind": "function", "line": 381, "name": "kstrncpy", "signature": "char *kstrncpy(char *dst, const char *src, unsigned long n);"}, {"kind": "function", "line": 382, "name": "kstrncat", "signature": "char *kstrncat(char *dst, const char *src, unsigned long n);"}, {"kind": "function", "line": 383, "name": "kstrcmp", "signature": "int kstrcmp(const char *a, const char *b);"}, {"kind": "function", "line": 384, "name": "kstrncmp", "signature": "int kstrncmp(const char *a, const char *b, unsigned long n);"}, {"kind": "function", "line": 385, "name": "kstrchr", "signature": "char *kstrchr(const char *s, int c);"}, {"kind": "function", "line": 386, "name": "kstrstr", "signature": "char *kstrstr(const char *hay, const char *ndl);"}, {"kind": "function", "line": 387, "name": "kmemcpy", "signature": "void *kmemcpy(void *dst, const void *src, unsigned long n);"}, {"kind": "function", "line": 388, "name": "kmemset", "signature": "void *kmemset(void *dst, int c, unsigned long n);"}, {"kind": "function", "line": 389, "name": "kmemcmp", "signature": "int kmemcmp(const void *a, const void *b, unsigned long n);"}, {"kind": "function", "line": 390, "name": "kmemmove", "signature": "void *kmemmove(void *dst, const void *src, unsigned long n);"}, {"kind": "function", "line": 391, "name": "katol", "signature": "long katol(const char *s);"}, {"doc": "char *kstrcpy(char *dst, const char *src); char *kstrncpy(char *dst, const char *src, unsigned long n); char *kstrncat(char *dst, const char *src, unsigned long n); int kstrcmp(const char *a, const char *b); int kstrncmp(const char *a, const char *b, unsigned long n); char *kstrchr(const char *s, int c); char *kstrstr(const char *hay, const char *ndl); void *kmemcpy(void *dst, const void *src, unsigned long n); void *kmemset(void *dst, int c, unsigned long n); int kmemcmp(const void *a, const void *b, unsigned long n); void *kmemmove(void *dst, const void *src, unsigned long n); long katol(const char *s); /* ========== printf ==========", "kind": "function", "line": 394, "name": "kprintf", "signature": "int kprintf(const char *fmt, ...);"}, {"kind": "function", "line": 395, "name": "kfprintf", "signature": "int kfprintf(KFILE *f, const char *fmt, ...);"}, {"kind": "function", "line": 396, "name": "ksprintf", "signature": "int ksprintf(char *buf, const char *fmt, ...);"}, {"kind": "function", "line": 397, "name": "ksnprintf", "signature": "int ksnprintf(char *buf, unsigned long size, const char *fmt, ...);"}, {"kind": "function", "line": 412, "name": "klog", "signature": "void klog(log_level_t level, log_subsystem_t subsys, const char *fmt, ...);"}, {"kind": "function", "line": 414, "name": "klog_hexdump", "signature": "void klog_hexdump(log_level_t level, log_subsystem_t subsys, const void *data, unsigned long len, const char *label);"}, {"kind": "function", "line": 416, "name": "klog_set_level", "signature": "void klog_set_level(log_level_t level);"}, {"kind": "function", "line": 417, "name": "klog_set_subsys_level", "signature": "void klog_set_subsys_level(log_subsystem_t subsys, log_level_t level);"}, {"kind": "function", "line": 418, "name": "klog_disable", "signature": "void klog_disable(void);"}, {"kind": "function", "line": 419, "name": "klog_enable", "signature": "void klog_enable(void);"}, {"doc": "LOG_SUBSYS_SHELL, LOG_SUBSYS_BOOT, LOG_SUBSYS_GENERAL, LOG_SUBSYS_COUNT } log_subsystem_t; void klog(log_level_t level, log_subsystem_t subsys, const char *fmt, ...); void klog_hexdump(log_level_t level, log_subsystem_t subsys, const void *data, unsigned long len, const char *label); void klog_set_level(log_level_t level); void klog_set_subsys_level(log_subsystem_t subsys, log_level_t level); void klog_disable(void); void klog_enable(void); /* ========== Shell ==========", "kind": "function", "line": 422, "name": "shell_init", "signature": "void shell_init(void);"}, {"kind": "function", "line": 423, "name": "shell_run", "signature": "void shell_run(void);"}, {"kind": "function", "line": 424, "name": "console_getc", "signature": "int console_getc(void);"}, {"kind": "function", "line": 425, "name": "console_peek", "signature": "int console_peek(void);"}, {"kind": "function", "line": 426, "name": "redirect_suspend", "signature": "int redirect_suspend(void);"}, {"kind": "function", "line": 427, "name": "redirect_resume", "signature": "void redirect_resume(int was);"}, {"kind": "function", "line": 428, "name": "redirect_begin", "signature": "int redirect_begin(void);"}, {"kind": "function", "line": 429, "name": "redirect_commit", "signature": "int redirect_commit(const char *path, int append_mode);"}, {"kind": "function", "line": 430, "name": "redirect_active", "signature": "int redirect_active(void);"}, {"kind": "function", "line": 431, "name": "shell_take_redirect", "signature": "int shell_take_redirect(int *argc, char **argv, char **path, int *append_mode);"}, {"kind": "function", "line": 432, "name": "shell_run_any", "signature": "int shell_run_any(const char *name, int argc, char **argv);"}, {"kind": "function", "line": 433, "name": "shell_exec_builtin", "signature": "void shell_exec_builtin(int argc, char **argv);"}, {"kind": "function", "line": 434, "name": "shell_report_exit", "signature": "void shell_report_exit(int code);"}, {"kind": "function", "line": 435, "name": "shell_report", "signature": "void shell_report(const char *what, const char *detail);"}, {"kind": "function", "line": 460, "name": "kprog_slot", "signature": "KProg *kprog_slot(const char *name);"}, {"kind": "function", "line": 461, "name": "kprog_lookup", "signature": "KProg *kprog_lookup(const char *name);"}, {"kind": "function", "line": 462, "name": "ksym_resolve", "signature": "void *ksym_resolve(const char *name);"}, {"kind": "function", "line": 463, "name": "k_spawn", "signature": "int k_spawn(const char *name, int argc, char **argv);"}, {"kind": "function", "line": 464, "name": "k_register_program", "signature": "void k_register_program(const char *name, prog_entry_t entry);"}, {"kind": "function", "line": 465, "name": "k_register_process", "signature": "void k_register_process(const char *name, void *proc_entry);"}, {"kind": "function", "line": 466, "name": "k_register_symbol", "signature": "void k_register_symbol(const char *name, void *addr);"}, {"doc": "Libc name table for ET_REL programs (kernel/console.c). Called once * from kmain; the table itself lives in kernel/symtab.c.", "kind": "function", "line": 470, "name": "register_libc_symbols", "signature": "void register_libc_symbols(void);"}, {"doc": "Libc name table for ET_REL programs (kernel/console.c). Called once * from kmain; the table itself lives in kernel/symtab.c. void register_libc_symbols(void); /* ========== Process execution (Linux ELF binaries) ==========", "kind": "function", "line": 473, "name": "k_exec_user", "signature": "int k_exec_user(void *entry, int argc, char **argv);"}, {"kind": "function", "line": 474, "name": "k_run_rel", "signature": "int k_run_rel(prog_entry_t entry, int argc, char **argv);"}, {"kind": "function", "line": 475, "name": "kexit", "signature": "void kexit(int code);"}, {"doc": "ET_REL stack switch (arch/x86/ctx_sw.S): runs entry(argc, argv) on * the 64 KB stack ending at stack_top. See the asm contract there.", "kind": "function", "line": 478, "name": "k_run_on_stack", "signature": "int k_run_on_stack(void *stack_top, prog_entry_t entry, int argc, char **argv);"}, {"kind": "function", "line": 483, "name": "ksetjmp", "signature": "int ksetjmp(void *buf) __attribute__((returns_twice));"}, {"kind": "function", "line": 484, "name": "klongjmp", "signature": "void klongjmp(void *buf, int val) __attribute__((noreturn));"}, {"kind": "function", "line": 487, "name": "setup_user_stack", "signature": "unsigned long *setup_user_stack(char *sbase, unsigned long ssize, int argc, char **argv);"}, {"kind": "function", "line": 489, "name": "vga_mode_set", "signature": "void vga_mode_set(int on);"}, {"kind": "function", "line": 490, "name": "vga_mode_is_active", "signature": "int vga_mode_is_active(void);"}, {"kind": "function", "line": 491, "name": "vga_gfx_ran_set", "signature": "void vga_gfx_ran_set(int on);"}, {"doc": "/* ========== Execution infrastructure (kernel/exec.c) ========== typedef struct { unsigned long v[8]; } kjmpbuf; int ksetjmp(void *buf) __attribute__((returns_twice)); void klongjmp(void *buf, int val) __attribute__((noreturn)); extern kjmpbuf exec_return; extern int exec_exit_code; unsigned long *setup_user_stack(char *sbase, unsigned long ssize, int argc, char **argv); void vga_mode_set(int on); int vga_mode_is_active(void); void vga_gfx_ran_set(int on); /* ========== Desktop shortcut launch ==========", "kind": "function", "line": 494, "name": "desktop_launch", "signature": "void desktop_launch(const char *cmd);"}, {"kind": "function", "line": 495, "name": "shell_queue_launch", "signature": "void shell_queue_launch(const char *cmd);"}, {"doc": "void klongjmp(void *buf, int val) __attribute__((noreturn)); extern kjmpbuf exec_return; extern int exec_exit_code; unsigned long *setup_user_stack(char *sbase, unsigned long ssize, int argc, char **argv); void vga_mode_set(int on); int vga_mode_is_active(void); void vga_gfx_ran_set(int on); /* ========== Desktop shortcut launch ========== void desktop_launch(const char *cmd); void shell_queue_launch(const char *cmd); /* ========== Multi-window manager (vga_fb.c) ==========", "kind": "function", "line": 498, "name": "vga_fb_focus_next", "signature": "void vga_fb_focus_next(void);"}, {"kind": "function", "line": 499, "name": "vga_fb_focus_id", "signature": "int vga_fb_focus_id(int id);"}, {"kind": "function", "line": 500, "name": "vga_fb_focus_get", "signature": "int vga_fb_focus_get(void);"}, {"kind": "function", "line": 501, "name": "vga_fb_nterms_get", "signature": "int vga_fb_nterms_get(void);"}, {"kind": "function", "line": 502, "name": "vga_fb_term_split", "signature": "int vga_fb_term_split(void);"}, {"kind": "function", "line": 503, "name": "vga_fb_term_close_focused", "signature": "int vga_fb_term_close_focused(void);"}, {"kind": "function", "line": 504, "name": "vga_fb_tile_all", "signature": "void vga_fb_tile_all(void);"}, {"kind": "function", "line": 505, "name": "vga_fb_list_windows", "signature": "void vga_fb_list_windows(void);"}, {"kind": "function", "line": 506, "name": "vga_fb_park_line", "signature": "void vga_fb_park_line(const char *b, int p);"}, {"kind": "function", "line": 507, "name": "vga_fb_unpark_line", "signature": "int vga_fb_unpark_line(char *b, int *p);"}, {"kind": "function", "line": 508, "name": "vga_fb_set_gfx_program", "signature": "void vga_fb_set_gfx_program(const char *name);"}, {"kind": "function", "line": 509, "name": "vga_fb_act_empty", "signature": "int vga_fb_act_empty(void);"}, {"kind": "function", "line": 510, "name": "vga_fb_prompt_live", "signature": "int vga_fb_prompt_live(void);"}, {"kind": "function", "line": 511, "name": "vga_fb_note_prompt", "signature": "void vga_fb_note_prompt(void);"}, {"kind": "function", "line": 512, "name": "vga_fb_clear_prompt", "signature": "void vga_fb_clear_prompt(void);"}, {"kind": "function", "line": 513, "name": "vga_fb_prompted", "signature": "int vga_fb_prompted(void);"}, {"doc": "Shell side of window focus: park/restore the half-typed input line so it * travels with its window. Implemented in shell.c, called from vga_fb.c.", "kind": "function", "line": 517, "name": "shell_readline_active", "signature": "int shell_readline_active(void);"}, {"kind": "function", "line": 518, "name": "shell_focus_park", "signature": "void shell_focus_park(void);"}, {"kind": "function", "line": 519, "name": "shell_focus_restore", "signature": "void shell_focus_restore(void);"}, {"doc": "Shell side of window focus: park/restore the half-typed input line so it * travels with its window. Implemented in shell.c, called from vga_fb.c. int shell_readline_active(void); void shell_focus_park(void); void shell_focus_restore(void); /** Docstring: Nonzero while the shell blocks in a foreground wait. extern volatile int shell_fg_active; /* ========== User-pointer validation (kernel.c) ==========", "kind": "function", "line": 524, "name": "user_range_ok", "signature": "int user_range_ok(unsigned long p, unsigned long len);"}, {"kind": "function", "line": 525, "name": "user_str_ok", "signature": "int user_str_ok(unsigned long p, unsigned long maxlen);"}, {"doc": "Shell side of window focus: park/restore the half-typed input line so it * travels with its window. Implemented in shell.c, called from vga_fb.c. int shell_readline_active(void); void shell_focus_park(void); void shell_focus_restore(void); /** Docstring: Nonzero while the shell blocks in a foreground wait. extern volatile int shell_fg_active; /* ========== User-pointer validation (kernel.c) ========== int user_range_ok(unsigned long p, unsigned long len); int user_str_ok(unsigned long p, unsigned long maxlen); /* ========== Page table helpers (kernel/mm/paging.c) ==========", "kind": "function", "line": 528, "name": "mm_setup_protections", "signature": "void mm_setup_protections(void);"}, {"kind": "function", "line": 529, "name": "pt_page_alloc", "signature": "void *pt_page_alloc(void);"}, {"kind": "function", "line": 530, "name": "pt_page_free", "signature": "void pt_page_free(void *ptr);"}, {"kind": "function", "line": 531, "name": "mm_user_pte_update", "signature": "void mm_user_pte_update(unsigned long vaddr, int exec, unsigned long cr3);"}, {"kind": "function", "line": 532, "name": "mm_user_set_exec", "signature": "void mm_user_set_exec(unsigned long start, unsigned long end, unsigned long cr3);"}, {"doc": "extern volatile int shell_fg_active; /* ========== User-pointer validation (kernel.c) ========== int user_range_ok(unsigned long p, unsigned long len); int user_str_ok(unsigned long p, unsigned long maxlen); /* ========== Page table helpers (kernel/mm/paging.c) ========== void mm_setup_protections(void); void *pt_page_alloc(void); void pt_page_free(void *ptr); void mm_user_pte_update(unsigned long vaddr, int exec, unsigned long cr3); void mm_user_set_exec(unsigned long start, unsigned long end, unsigned long cr3); /* ========== Swap (kernel/mm/swap.c) ==========", "kind": "function", "line": 535, "name": "swap_out", "signature": "int swap_out(unsigned long window_sz);"}, {"kind": "function", "line": 536, "name": "swap_in", "signature": "int swap_in(void);"}, {"kind": "function", "line": 575, "name": "elf_load", "signature": "void *elf_load(void *data, unsigned size, void **base_out);"}, {"doc": "Elf64_Word e_flags; Elf64_Half e_ehsize; Elf64_Half e_phentsize; Elf64_Half e_phnum; Elf64_Half e_shentsize; Elf64_Half e_shnum; Elf64_Half e_shstrndx; } Elf64_Ehdr; #define ET_REL 1 #define ET_EXEC 2 #define ET_DYN 3 void *elf_load(void *data, unsigned size, void **base_out); /* ET_REL relocatable .o", "kind": "function", "line": 576, "name": "load_exec_elf", "signature": "void *load_exec_elf(void *data, unsigned size);"}, {"doc": "Elf64_Half e_ehsize; Elf64_Half e_phentsize; Elf64_Half e_phnum; Elf64_Half e_shentsize; Elf64_Half e_shnum; Elf64_Half e_shstrndx; } Elf64_Ehdr; #define ET_REL 1 #define ET_EXEC 2 #define ET_DYN 3 void *elf_load(void *data, unsigned size, void **base_out); /* ET_REL relocatable .o void *load_exec_elf(void *data, unsigned size); /* ET_EXEC / ET_DYN", "kind": "function", "line": 577, "name": "load_exec_elf_into", "signature": "void *load_exec_elf_into(void *data, unsigned size, unsigned long cr3, unsigned long *brk_out);"}, {"kind": "function", "line": 579, "name": "pt_clone_user_empty", "signature": "unsigned long pt_clone_user_empty(void);"}, {"kind": "function", "line": 580, "name": "mm_user_ensure_page", "signature": "int mm_user_ensure_page(unsigned long cr3, unsigned long va);"}, {"kind": "function", "line": 581, "name": "mm_copy_user_page", "signature": "int mm_copy_user_page(unsigned long dst_cr3, unsigned long src_cr3, unsigned long va);"}, {"doc": "#define ET_REL 1 #define ET_EXEC 2 #define ET_DYN 3 void *elf_load(void *data, unsigned size, void **base_out); /* ET_REL relocatable .o void *load_exec_elf(void *data, unsigned size); /* ET_EXEC / ET_DYN void *load_exec_elf_into(void *data, unsigned size, unsigned long cr3, unsigned long *brk_out); unsigned long pt_clone_user_empty(void); int mm_user_ensure_page(unsigned long cr3, unsigned long va); int mm_copy_user_page(unsigned long dst_cr3, unsigned long src_cr3, unsigned long va); /* ========== Linux syscall interface ==========", "kind": "function", "line": 585, "name": "syscall_init", "signature": "void syscall_init(void);"}, {"kind": "function", "line": 589, "name": "ksyscall", "signature": "long ksyscall(long n, long a1, long a2, long a3, long a4, long a5, long a6);"}, {"kind": "function", "line": 590, "name": "syscall_trace_enabled", "signature": "long syscall_trace_enabled(void);"}, {"kind": "function", "line": 591, "name": "syscall_trace_set", "signature": "void syscall_trace_set(int on);"}, {"kind": "function", "line": 592, "name": "syscall_trace_verbose_enabled", "signature": "long syscall_trace_verbose_enabled(void);"}, {"kind": "function", "line": 593, "name": "syscall_trace_verbose_set", "signature": "void syscall_trace_verbose_set(int on);"}, {"kind": "function", "line": 594, "name": "syscall_trace_shown", "signature": "unsigned long syscall_trace_shown(void);"}, {"kind": "function", "line": 595, "name": "syscall_name", "signature": "const char *syscall_name(long n);"}, {"kind": "function", "line": 603, "name": "kfd_get", "signature": "KFILE *kfd_get(int fd);"}, {"kind": "function", "line": 604, "name": "kfd_put", "signature": "void kfd_put(KFILE *f);"}, {"kind": "function", "line": 607, "name": "fd_lock", "signature": "* fd_lock (never nested, never held across yields);"}, {"doc": "ramdisk_size is an absolute linker symbol (kernel.ld computes it as ramdisk_end - ramdisk_start, where the subtraction is legal). Its ADDRESS is the size: declare char[], never size_t (that would read memory at that address), read it by address only, and never recompute it with pointer subtraction in C (undefined behaviour). The value is a link-time difference, so it is invariant under the KASLR slide: ramdisk_start and ramdisk_end move together inside the contiguous * image span. static inline unsigned long ramdisk_image_size(void) { return (unsigned long)ramdisk_size; } /* ========== Kernel clock ==========", "kind": "function", "line": 630, "name": "ktime_ms", "signature": "unsigned long ktime_ms(void);"}, {"kind": "function", "line": 631, "name": "ktime_us", "signature": "unsigned long ktime_us(void);"}, {"kind": "function", "line": 632, "name": "wall_us_now", "signature": "unsigned long wall_us_now(void);"}, {"doc": "it with pointer subtraction in C (undefined behaviour). The value is a link-time difference, so it is invariant under the KASLR slide: ramdisk_start and ramdisk_end move together inside the contiguous * image span. static inline unsigned long ramdisk_image_size(void) { return (unsigned long)ramdisk_size; } /* ========== Kernel clock ========== unsigned long ktime_ms(void); unsigned long ktime_us(void); unsigned long wall_us_now(void); /* ========== Boot-phase log (kernel.c, `bootlog` builtin) ==========", "kind": "function", "line": 635, "name": "bootlog_mark", "signature": "void bootlog_mark(const char *name);"}, {"kind": "function", "line": 636, "name": "bootlog_report", "signature": "void bootlog_report(void);"}, {"doc": "static inline unsigned long ramdisk_image_size(void) { return (unsigned long)ramdisk_size; } /* ========== Kernel clock ========== unsigned long ktime_ms(void); unsigned long ktime_us(void); unsigned long wall_us_now(void); /* ========== Boot-phase log (kernel.c, `bootlog` builtin) ========== void bootlog_mark(const char *name); void bootlog_report(void); /* ========== PC speaker ==========", "kind": "function", "line": 639, "name": "pcspk_init", "signature": "void pcspk_init(void);"}, {"kind": "function", "line": 640, "name": "pcspk_tone", "signature": "void pcspk_tone(unsigned freq);"}, {"kind": "function", "line": 641, "name": "pcspk_off", "signature": "void pcspk_off(void);"}, {"kind": "function", "line": 642, "name": "pcspk_set_volume", "signature": "void pcspk_set_volume(unsigned volume);"}, {"kind": "function", "line": 643, "name": "pcspk_get_volume", "signature": "unsigned pcspk_get_volume(void);"}, {"doc": "unsigned long wall_us_now(void); /* ========== Boot-phase log (kernel.c, `bootlog` builtin) ========== void bootlog_mark(const char *name); void bootlog_report(void); /* ========== PC speaker ========== void pcspk_init(void); void pcspk_tone(unsigned freq); void pcspk_off(void); void pcspk_set_volume(unsigned volume); unsigned pcspk_get_volume(void); /* ========== RTC time-of-day ==========", "kind": "function", "line": 646, "name": "rtc_read_tod", "signature": "int rtc_read_tod(int *hour, int *min, int *sec);"}, {"doc": "void bootlog_mark(const char *name); void bootlog_report(void); /* ========== PC speaker ========== void pcspk_init(void); void pcspk_tone(unsigned freq); void pcspk_off(void); void pcspk_set_volume(unsigned volume); unsigned pcspk_get_volume(void); /* ========== RTC time-of-day ========== int rtc_read_tod(int *hour, int *min, int *sec); /* ========== IDE driver ==========", "kind": "function", "line": 649, "name": "ide_init", "signature": "void ide_init(void);"}, {"kind": "function", "line": 650, "name": "ide_read_sectors", "signature": "int ide_read_sectors(unsigned int lba, unsigned int count, void *buf);"}, {"kind": "function", "line": 651, "name": "ide_write_sectors", "signature": "int ide_write_sectors(unsigned int lba, unsigned int count, const void *buf);"}, {"kind": "function", "line": 652, "name": "ide_read_sector", "signature": "int ide_read_sector(unsigned int lba, void *buf);"}, {"kind": "function", "line": 653, "name": "ide_write_sector", "signature": "int ide_write_sector(unsigned int lba, const void *buf);"}, {"kind": "function", "line": 654, "name": "ide_total_sectors", "signature": "unsigned int ide_total_sectors(void);"}, {"kind": "function", "line": 655, "name": "ide_present", "signature": "int ide_present(void);"}, {"doc": "/* ========== RTC time-of-day ========== int rtc_read_tod(int *hour, int *min, int *sec); /* ========== IDE driver ========== void ide_init(void); int ide_read_sectors(unsigned int lba, unsigned int count, void *buf); int ide_write_sectors(unsigned int lba, unsigned int count, const void *buf); int ide_read_sector(unsigned int lba, void *buf); int ide_write_sector(unsigned int lba, const void *buf); unsigned int ide_total_sectors(void); int ide_present(void); /* ========== Block device layer ==========", "kind": "function", "line": 658, "name": "block_init", "signature": "void block_init(void);"}, {"kind": "function", "line": 659, "name": "block_read", "signature": "int block_read(unsigned int block_num, void *buf);"}, {"kind": "function", "line": 660, "name": "block_write", "signature": "int block_write(unsigned int block_num, const void *buf);"}, {"kind": "function", "line": 661, "name": "block_read_multi", "signature": "int block_read_multi(unsigned int block_num, unsigned int count, void *buf);"}, {"kind": "function", "line": 662, "name": "block_write_multi", "signature": "int block_write_multi(unsigned int block_num, unsigned int count, const void *buf);"}, {"kind": "function", "line": 663, "name": "block_total", "signature": "unsigned int block_total(void);"}, {"doc": "int ide_read_sector(unsigned int lba, void *buf); int ide_write_sector(unsigned int lba, const void *buf); unsigned int ide_total_sectors(void); int ide_present(void); /* ========== Block device layer ========== void block_init(void); int block_read(unsigned int block_num, void *buf); int block_write(unsigned int block_num, const void *buf); int block_read_multi(unsigned int block_num, unsigned int count, void *buf); int block_write_multi(unsigned int block_num, unsigned int count, const void *buf); unsigned int block_total(void); /* ========== User-mode fault recovery ==========", "kind": "function", "line": 666, "name": "k_user_fault_return", "signature": "void k_user_fault_return(void);"}, {"doc": "Console output lock (kernel/console.c): serializes SMP console output across CPUs. Held across the whole vga_putc body; try-or-race so an ISR * dump prints rather than deadlocks on a lock held by interrupted context.", "kind": "variable", "line": 55, "name": "console_lock", "signature": "extern spinlock_t console_lock;"}, {"doc": "/* ========== Scrollback ring (kernel/scrollback.c) ========== void sb_init(void); void sb_capture_row0(void); void sb_reset(void); int sb_get_count(void); int sb_get_head(void); char sb_get_char(int row, int col); /* ========== Serial console (COM1) ========== void serial_init(void); void serial_putc(char c); void serial_puts(const char *s); unsigned long serial_e_count(void); /* E-flood tracer (serial.c)", "kind": "variable", "line": 76, "name": "ser_e_cpu", "signature": "extern unsigned long ser_e_ra, ser_e_cpu;"}, {"kind": "variable", "line": 144, "name": "kmalloc_fail_after", "signature": "extern long kmalloc_fail_after;"}, {"kind": "variable", "line": 307, "name": "fs_cwd", "signature": "extern char fs_cwd[];"}, {"kind": "variable", "line": 371, "name": "kstdin", "signature": "extern KFILE *kstdin;"}, {"kind": "variable", "line": 372, "name": "kstdout", "signature": "extern KFILE *kstdout;"}, {"kind": "variable", "line": 373, "name": "kstderr", "signature": "extern KFILE *kstderr;"}, {"kind": "variable", "line": 455, "name": "ksym_table", "signature": "extern KSym ksym_table[];"}, {"kind": "variable", "line": 456, "name": "ksym_count", "signature": "extern int ksym_count;"}, {"kind": "variable", "line": 457, "name": "kprog_table", "signature": "extern KProg kprog_table[];"}, {"kind": "variable", "line": 458, "name": "kprog_count", "signature": "extern int kprog_count;"}, {"kind": "variable", "line": 485, "name": "exec_return", "signature": "extern kjmpbuf exec_return;"}, {"kind": "variable", "line": 486, "name": "exec_exit_code", "signature": "extern int exec_exit_code;"}, {"doc": "Shell side of window focus: park/restore the half-typed input line so it * travels with its window. Implemented in shell.c, called from vga_fb.c. int shell_readline_active(void); void shell_focus_park(void); void shell_focus_restore(void); /** Docstring: Nonzero while the shell blocks in a foreground wait.", "kind": "variable", "line": 521, "name": "shell_fg_active", "signature": "extern volatile int shell_fg_active;"}, {"doc": "int user_str_ok(unsigned long p, unsigned long maxlen); /* ========== Page table helpers (kernel/mm/paging.c) ========== void mm_setup_protections(void); void *pt_page_alloc(void); void pt_page_free(void *ptr); void mm_user_pte_update(unsigned long vaddr, int exec, unsigned long cr3); void mm_user_set_exec(unsigned long start, unsigned long end, unsigned long cr3); /* ========== Swap (kernel/mm/swap.c) ========== int swap_out(unsigned long window_sz); int swap_in(void); /* brk/mmap globals (loader.c)", "kind": "variable", "line": 539, "name": "g_brk", "signature": "extern unsigned long g_brk;"}, {"kind": "variable", "line": 540, "name": "g_brk_limit", "signature": "extern unsigned long g_brk_limit;"}, {"kind": "variable", "line": 541, "name": "user_mmap_cur", "signature": "extern unsigned long user_mmap_cur;"}, {"doc": "define KFD_MAX 32", "kind": "variable", "line": 597, "name": "kfd_table", "signature": "extern KFILE *kfd_table[KFD_MAX];"}, {"doc": "Leaf lock for the table above: taken last, held only across slot scan/assign/clear and refcount bumps, never across file IO, so it cannot deadlock against sched_lock/mm_lock and never stalls ticks * behind a slow device.", "kind": "variable", "line": 602, "name": "fd_lock", "signature": "extern spinlock_t fd_lock;"}, {"doc": "Big filesystem lock, defined in fs/kfile.c: serializes whole kf* bodies plus unlink and dir_list against each other. Leaf like fd_lock (never nested, never held across yields); heavy IO may * delay a tick, which beats torn metadata.", "kind": "variable", "line": 609, "name": "fs_lock", "signature": "extern spinlock_t fs_lock;"}, {"doc": "Big filesystem lock, defined in fs/kfile.c: serializes whole kf* bodies plus unlink and dir_list against each other. Leaf like fd_lock (never nested, never held across yields); heavy IO may * delay a tick, which beats torn metadata. extern spinlock_t fs_lock; /* ========== Kernel info ==========", "kind": "variable", "line": 612, "name": "kernel_end", "signature": "extern unsigned long kernel_end;"}, {"kind": "variable", "line": 613, "name": "ramdisk_start", "signature": "extern char ramdisk_start[];"}, {"kind": "variable", "line": 614, "name": "ramdisk_end", "signature": "extern char ramdisk_end[];"}, {"kind": "variable", "line": 615, "name": "ramdisk_size", "signature": "extern char ramdisk_size[];"}, {"kind": "macro", "line": 2, "name": "KERNEL_H", "signature": "#define KERNEL_H"}, {"kind": "macro", "line": 4, "name": "EFAULT", "signature": "#define EFAULT"}, {"kind": "macro", "line": 18, "name": "ALIGN_UP", "signature": "#define ALIGN_UP(x, a)"}, {"kind": "macro", "line": 20, "name": "PORT_IO_DEFINED", "signature": "#define PORT_IO_DEFINED"}, {"kind": "macro", "line": 40, "name": "VGA_BASE", "signature": "#define VGA_BASE"}, {"kind": "macro", "line": 41, "name": "VGA_COLS", "signature": "#define VGA_COLS"}, {"kind": "macro", "line": 42, "name": "VGA_ROWS", "signature": "#define VGA_ROWS"}, {"kind": "macro", "line": 81, "name": "KEY_BACKSPACE", "signature": "#define KEY_BACKSPACE"}, {"kind": "macro", "line": 82, "name": "KEY_ENTER", "signature": "#define KEY_ENTER"}, {"kind": "macro", "line": 83, "name": "KEY_LSHIFT", "signature": "#define KEY_LSHIFT"}, {"kind": "macro", "line": 84, "name": "KEY_RSHIFT", "signature": "#define KEY_RSHIFT"}, {"kind": "macro", "line": 85, "name": "KEY_CAPS", "signature": "#define KEY_CAPS"}, {"kind": "macro", "line": 86, "name": "KEY_E0", "signature": "#define KEY_E0"}, {"kind": "macro", "line": 87, "name": "KEY_UP", "signature": "#define KEY_UP"}, {"kind": "macro", "line": 88, "name": "KEY_DOWN", "signature": "#define KEY_DOWN"}, {"kind": "macro", "line": 89, "name": "KEY_PGUP", "signature": "#define KEY_PGUP"}, {"kind": "macro", "line": 90, "name": "KEY_PGDN", "signature": "#define KEY_PGDN"}, {"kind": "macro", "line": 91, "name": "KEY_ESC", "signature": "#define KEY_ESC"}, {"kind": "macro", "line": 92, "name": "KEY_CSI", "signature": "#define KEY_CSI"}, {"kind": "macro", "line": 93, "name": "KEY_ARR_UP", "signature": "#define KEY_ARR_UP"}, {"kind": "macro", "line": 94, "name": "KEY_ARR_DOWN", "signature": "#define KEY_ARR_DOWN"}, {"kind": "macro", "line": 95, "name": "KEY_ARR_RIGHT", "signature": "#define KEY_ARR_RIGHT"}, {"kind": "macro", "line": 96, "name": "KEY_ARR_LEFT", "signature": "#define KEY_ARR_LEFT"}, {"kind": "macro", "line": 97, "name": "KEY_HOME_SEQ", "signature": "#define KEY_HOME_SEQ"}, {"kind": "macro", "line": 98, "name": "KEY_END_SEQ", "signature": "#define KEY_END_SEQ"}, {"kind": "macro", "line": 99, "name": "KEY_PGUP_SEQ", "signature": "#define KEY_PGUP_SEQ"}, {"kind": "macro", "line": 100, "name": "KEY_PGDN_SEQ", "signature": "#define KEY_PGDN_SEQ"}, {"kind": "macro", "line": 101, "name": "KEY_LEFT", "signature": "#define KEY_LEFT"}, {"kind": "macro", "line": 102, "name": "KEY_RIGHT", "signature": "#define KEY_RIGHT"}, {"kind": "macro", "line": 103, "name": "KEY_LCTRL", "signature": "#define KEY_LCTRL"}, {"kind": "macro", "line": 104, "name": "KEY_F5", "signature": "#define KEY_F5"}, {"kind": "macro", "line": 105, "name": "KEY_F11", "signature": "#define KEY_F11"}, {"kind": "macro", "line": 106, "name": "KEY_TILDE", "signature": "#define KEY_TILDE"}, {"kind": "macro", "line": 107, "name": "KEY_LALT", "signature": "#define KEY_LALT"}, {"kind": "macro", "line": 108, "name": "KEY_RALT", "signature": "#define KEY_RALT"}, {"kind": "macro", "line": 109, "name": "KEY_HOME", "signature": "#define KEY_HOME"}, {"kind": "macro", "line": 110, "name": "KEY_END", "signature": "#define KEY_END"}, {"kind": "macro", "line": 111, "name": "KEY_TAB", "signature": "#define KEY_TAB"}, {"kind": "macro", "line": 112, "name": "KEY_SUPER_L", "signature": "#define KEY_SUPER_L"}, {"kind": "macro", "line": 113, "name": "KEY_SUPER_R", "signature": "#define KEY_SUPER_R"}, {"kind": "macro", "line": 127, "name": "USER_LOAD_BASE", "signature": "#define USER_LOAD_BASE"}, {"kind": "macro", "line": 128, "name": "USER_LOAD_END", "signature": "#define USER_LOAD_END"}, {"kind": "macro", "line": 129, "name": "USER_STACK_SIZE", "signature": "#define USER_STACK_SIZE"}, {"kind": "macro", "line": 130, "name": "USER_STACK_TOP", "signature": "#define USER_STACK_TOP"}, {"kind": "macro", "line": 131, "name": "USER_STACK_BASE", "signature": "#define USER_STACK_BASE"}, {"kind": "macro", "line": 132, "name": "USER_BRK_END", "signature": "#define USER_BRK_END"}, {"kind": "macro", "line": 137, "name": "SYS_KSTK_TOP", "signature": "#define SYS_KSTK_TOP"}, {"kind": "macro", "line": 138, "name": "SYS_KSTK_BASE", "signature": "#define SYS_KSTK_BASE"}, {"kind": "macro", "line": 140, "name": "HEAP_BASE", "signature": "#define HEAP_BASE"}, {"kind": "macro", "line": 141, "name": "HEAP_SIZE", "signature": "#define HEAP_SIZE"}, {"kind": "macro", "line": 183, "name": "RAMDISK_MAX_FILES", "signature": "#define RAMDISK_MAX_FILES"}, {"kind": "macro", "line": 184, "name": "RAMDISK_FNAME_LEN", "signature": "#define RAMDISK_FNAME_LEN"}, {"kind": "macro", "line": 206, "name": "RD_DATA_MAX", "signature": "#define RD_DATA_MAX"}, {"kind": "macro", "line": 223, "name": "ETREL_TRUSTED_DIR", "signature": "#define ETREL_TRUSTED_DIR"}, {"kind": "macro", "line": 224, "name": "ETREL_TRUSTED_LEN", "signature": "#define ETREL_TRUSTED_LEN"}, {"kind": "macro", "line": 341, "name": "EOF", "signature": "#define EOF"}, {"kind": "macro", "line": 440, "name": "KSYM_MAX", "signature": "#define KSYM_MAX"}, {"kind": "macro", "line": 441, "name": "KPROG_MAX", "signature": "#define KPROG_MAX"}, {"kind": "macro", "line": 546, "name": "EI_NIDENT", "signature": "#define EI_NIDENT"}, {"kind": "macro", "line": 571, "name": "ET_REL", "signature": "#define ET_REL"}, {"kind": "macro", "line": 572, "name": "ET_EXEC", "signature": "#define ET_EXEC"}, {"kind": "macro", "line": 573, "name": "ET_DYN", "signature": "#define ET_DYN"}, {"kind": "macro", "line": 596, "name": "KFD_MAX", "signature": "#define KFD_MAX"}]}, {"doc": "ktime.h -- pure time-conversion helpers shared by the kernel clock", "id": "headers/ktime.h", "kind": "module", "label": "ktime.h", "language": "h", "sha256": "08e578b17ddb098e", "symbol_count": 3, "symbols": [{"kind": "function", "line": 19, "name": "ktime_us_from_delta", "signature": "static inline unsigned long ktime_us_from_delta(unsigned long delta_ticks,\n ..."}, {"doc": "wall_us_from_parts: wall-clock microseconds from an RTC-anchored base. base_sec is the last seen RTC second, base_ktime_us the monotonic clock then, now_ktime_us the monotonic clock now. Pure so the host * suite pins the rollover math; the kernel feeds it live values.", "kind": "function", "line": 30, "name": "wall_us_from_parts", "signature": "static inline unsigned long wall_us_from_parts(unsigned long base_sec,\n ..."}, {"kind": "macro", "line": 2, "name": "KTIME_H", "signature": "#define KTIME_H"}]}, {"id": "headers/lz4_kernel.h", "kind": "module", "label": "lz4_kernel.h", "language": "h", "sha256": "0258eba050878af4", "symbol_count": 4, "symbols": [{"kind": "function", "line": 4, "name": "LZ4_compress_default", "signature": "int LZ4_compress_default(const char *src, char *dst, int srcSize, int dstCapacity);"}, {"kind": "function", "line": 5, "name": "LZ4_compressBound", "signature": "int LZ4_compressBound(int inputSize);"}, {"kind": "function", "line": 6, "name": "LZ4_decompress_safe", "signature": "int LZ4_decompress_safe(const char *src, char *dst, int compressedSize, int dstCapacity);"}, {"kind": "macro", "line": 2, "name": "LZ4_KERNEL_H", "signature": "#define LZ4_KERNEL_H"}]}, {"doc": "Docstring: minifetch.h -- neofetch-style system screen contract.", "id": "headers/minifetch.h", "kind": "module", "label": "minifetch.h", "language": "h", "sha256": "1ef74c09e6c6e3c8", "symbol_count": 2, "symbols": [{"kind": "function", "line": 14, "name": "shell_cmd_minifetch", "signature": "void shell_cmd_minifetch(void);"}, {"kind": "macro", "line": 12, "name": "MINIFETCH_H", "signature": "#define MINIFETCH_H"}]}, {"doc": "MiniFS: a minimal Unix-like filesystem for MiniOS.", "id": "headers/minifs.h", "kind": "module", "label": "minifs.h", "language": "h", "sha256": "e16c535da77bd6a0", "symbol_count": 76, "symbols": [{"kind": "struct", "line": 33, "name": "MiniFSSuper"}, {"kind": "struct", "line": 52, "name": "MiniFSInode"}, {"kind": "struct", "line": 68, "name": "MiniFSDirEntry"}, {"kind": "struct", "line": 90, "name": "MiniFSJournalSuper"}, {"kind": "struct", "line": 98, "name": "MiniFSJournalEntry"}, {"kind": "struct", "line": 110, "name": "MiniFSFile"}, {"kind": "function", "line": 30, "name": "minifs_compress", "signature": "unsigned int minifs_compress(const void *src, unsigned int src_len, void *dst, unsigned int dst_cap);"}, {"kind": "function", "line": 31, "name": "minifs_decompress", "signature": "unsigned int minifs_decompress(const void *src, unsigned int src_len, void *dst, unsigned int dst_cap);"}, {"kind": "function", "line": 117, "name": "minifs_init", "signature": "void minifs_init(void);"}, {"kind": "function", "line": 118, "name": "minifs_mount", "signature": "int minifs_mount(void);"}, {"kind": "function", "line": 119, "name": "minifs_mkfs", "signature": "int minifs_mkfs(unsigned int total_blocks);"}, {"kind": "function", "line": 120, "name": "minifs_sync", "signature": "int minifs_sync(void);"}, {"kind": "function", "line": 121, "name": "minifs_is_mounted", "signature": "int minifs_is_mounted(void);"}, {"kind": "function", "line": 123, "name": "minifs_create", "signature": "int minifs_create(const char *path, unsigned short mode);"}, {"kind": "function", "line": 124, "name": "minifs_mkdir", "signature": "int minifs_mkdir(const char *path, unsigned short mode);"}, {"kind": "function", "line": 125, "name": "minifs_unlink", "signature": "int minifs_unlink(const char *path);"}, {"kind": "function", "line": 126, "name": "minifs_rmdir", "signature": "int minifs_rmdir(const char *path);"}, {"kind": "function", "line": 127, "name": "minifs_read", "signature": "int minifs_read(int inode_num, void *buf, unsigned int offset, unsigned int len);"}, {"kind": "function", "line": 128, "name": "minifs_write", "signature": "int minifs_write(int inode_num, const void *buf, unsigned int offset, unsigned int len);"}, {"kind": "function", "line": 129, "name": "minifs_truncate", "signature": "int minifs_truncate(int inode_num, unsigned int new_size);"}, {"kind": "function", "line": 130, "name": "minifs_stat", "signature": "int minifs_stat(int inode_num, MiniFSInode *out);"}, {"kind": "function", "line": 131, "name": "minifs_access", "signature": "int minifs_access(const char *path);"}, {"kind": "function", "line": 133, "name": "minifs_resolve_path", "signature": "int minifs_resolve_path(const char *path);"}, {"kind": "function", "line": 134, "name": "minifs_dir_lookup", "signature": "int minifs_dir_lookup(int dir_inode, const char *name);"}, {"kind": "function", "line": 135, "name": "minifs_dir_add_entry", "signature": "int minifs_dir_add_entry(int dir_inode, const char *name, int child_inode, unsigned char type);"}, {"kind": "function", "line": 136, "name": "minifs_dir_remove_entry", "signature": "int minifs_dir_remove_entry(int dir_inode, const char *name);"}, {"kind": "function", "line": 137, "name": "minifs_dir_read", "signature": "int minifs_dir_read(int dir_inode, int index, MiniFSDirEntry *out, char *name_out);"}, {"kind": "function", "line": 139, "name": "minifs_alloc_block", "signature": "int minifs_alloc_block(void);"}, {"kind": "function", "line": 140, "name": "minifs_free_block", "signature": "void minifs_free_block(unsigned int block);"}, {"kind": "function", "line": 141, "name": "minifs_alloc_inode", "signature": "int minifs_alloc_inode(void);"}, {"kind": "function", "line": 142, "name": "minifs_free_inode", "signature": "void minifs_free_inode(int inode_num);"}, {"kind": "function", "line": 143, "name": "minifs_inode_get_block", "signature": "int minifs_inode_get_block(MiniFSInode *inode, unsigned int logical_block, unsigned int *phys_block);"}, {"kind": "function", "line": 144, "name": "minifs_inode_alloc_block", "signature": "int minifs_inode_alloc_block(MiniFSInode *inode, unsigned int logical_block);"}, {"kind": "function", "line": 146, "name": "minifs_journal_begin", "signature": "void minifs_journal_begin(unsigned int txn_id);"}, {"kind": "function", "line": 147, "name": "minifs_journal_add_block", "signature": "void minifs_journal_add_block(unsigned int block);"}, {"kind": "function", "line": 148, "name": "minifs_journal_touch", "signature": "void minifs_journal_touch(unsigned int phys);"}, {"kind": "function", "line": 149, "name": "minifs_journal_commit", "signature": "int minifs_journal_commit(unsigned int txn_id);"}, {"kind": "function", "line": 150, "name": "minifs_journal_clear", "signature": "void minifs_journal_clear(void);"}, {"kind": "function", "line": 151, "name": "minifs_journal_abort", "signature": "void minifs_journal_abort(void);"}, {"kind": "function", "line": 152, "name": "minifs_journal_recover", "signature": "void minifs_journal_recover(void);"}, {"kind": "function", "line": 154, "name": "minifs_file_open", "signature": "MiniFSFile *minifs_file_open(int inode_num, int flags);"}, {"kind": "function", "line": 155, "name": "minifs_file_close", "signature": "int minifs_file_close(MiniFSFile *f);"}, {"kind": "function", "line": 157, "name": "minifs_get_lba_start", "signature": "unsigned int minifs_get_lba_start(void);"}, {"kind": "function", "line": 158, "name": "minifs_get_total_blocks", "signature": "unsigned int minifs_get_total_blocks(void);"}, {"doc": "void minifs_journal_begin(unsigned int txn_id); void minifs_journal_add_block(unsigned int block); void minifs_journal_touch(unsigned int phys); int minifs_journal_commit(unsigned int txn_id); void minifs_journal_clear(void); void minifs_journal_abort(void); void minifs_journal_recover(void); MiniFSFile *minifs_file_open(int inode_num, int flags); int minifs_file_close(MiniFSFile *f); unsigned int minifs_get_lba_start(void); unsigned int minifs_get_total_blocks(void); /** Docstring: Filesystem usage snapshot for the mem builtin.", "kind": "function", "line": 160, "name": "minifs_usage", "signature": "void minifs_usage(unsigned int *free_b, unsigned int *total_b, unsigned int *free_i, unsigned int *total_i);"}, {"kind": "macro", "line": 2, "name": "MINIFS_H", "signature": "#define MINIFS_H"}, {"kind": "macro", "line": 8, "name": "MINIFS_MAGIC", "signature": "#define MINIFS_MAGIC"}, {"kind": "macro", "line": 9, "name": "MINIFS_VERSION", "signature": "#define MINIFS_VERSION"}, {"kind": "macro", "line": 10, "name": "MINIFS_BLOCK_SIZE", "signature": "#define MINIFS_BLOCK_SIZE"}, {"kind": "macro", "line": 11, "name": "MINIFS_MAX_FILENAME", "signature": "#define MINIFS_MAX_FILENAME"}, {"kind": "macro", "line": 12, "name": "MINIFS_ROOT_INODE", "signature": "#define MINIFS_ROOT_INODE"}, {"kind": "macro", "line": 13, "name": "MINIFS_INODES_PER_BLOCK", "signature": "#define MINIFS_INODES_PER_BLOCK"}, {"kind": "macro", "line": 14, "name": "MINIFS_DIR_ENTRIES_PER_BLOCK", "signature": "#define MINIFS_DIR_ENTRIES_PER_BLOCK"}, {"kind": "macro", "line": 16, "name": "MINIFS_S_IFMT", "signature": "#define MINIFS_S_IFMT"}, {"kind": "macro", "line": 17, "name": "MINIFS_S_IFREG", "signature": "#define MINIFS_S_IFREG"}, {"kind": "macro", "line": 18, "name": "MINIFS_S_IFDIR", "signature": "#define MINIFS_S_IFDIR"}, {"kind": "macro", "line": 19, "name": "MINIFS_S_IFLNK", "signature": "#define MINIFS_S_IFLNK"}, {"kind": "macro", "line": 20, "name": "MINIFS_S_IRWXU", "signature": "#define MINIFS_S_IRWXU"}, {"kind": "macro", "line": 21, "name": "MINIFS_S_IRWXG", "signature": "#define MINIFS_S_IRWXG"}, {"kind": "macro", "line": 22, "name": "MINIFS_S_IRWXO", "signature": "#define MINIFS_S_IRWXO"}, {"kind": "macro", "line": 24, "name": "MINIFS_FT_FILE", "signature": "#define MINIFS_FT_FILE"}, {"kind": "macro", "line": 25, "name": "MINIFS_FT_DIR", "signature": "#define MINIFS_FT_DIR"}, {"kind": "macro", "line": 26, "name": "MINIFS_FT_SYMLINK", "signature": "#define MINIFS_FT_SYMLINK"}, {"kind": "macro", "line": 28, "name": "MINIFS_INODE_COMPRESSED", "signature": "#define MINIFS_INODE_COMPRESSED"}, {"kind": "macro", "line": 75, "name": "MINIFS_DIR_ENTRY_HDR_SIZE", "signature": "#define MINIFS_DIR_ENTRY_HDR_SIZE"}, {"kind": "macro", "line": 77, "name": "MINIFS_JOURNAL_BLOCKS", "signature": "#define MINIFS_JOURNAL_BLOCKS"}, {"kind": "macro", "line": 78, "name": "MINIFS_JOURNAL_MAX_ENTRIES", "signature": "#define MINIFS_JOURNAL_MAX_ENTRIES"}, {"kind": "macro", "line": 79, "name": "MINIFS_JOP_WRITE", "signature": "#define MINIFS_JOP_WRITE"}, {"kind": "macro", "line": 80, "name": "MINIFS_JOP_CREATE", "signature": "#define MINIFS_JOP_CREATE"}, {"kind": "macro", "line": 81, "name": "MINIFS_JOP_DELETE", "signature": "#define MINIFS_JOP_DELETE"}, {"kind": "macro", "line": 82, "name": "MINIFS_JOP_MKDIR", "signature": "#define MINIFS_JOP_MKDIR"}, {"kind": "macro", "line": 83, "name": "MINIFS_JOP_RMDIR", "signature": "#define MINIFS_JOP_RMDIR"}, {"kind": "macro", "line": 84, "name": "MINIFS_JOP_TRUNCATE", "signature": "#define MINIFS_JOP_TRUNCATE"}, {"kind": "macro", "line": 85, "name": "MINIFS_JOP_COMMIT", "signature": "#define MINIFS_JOP_COMMIT"}, {"kind": "macro", "line": 87, "name": "MINIFS_JSTATE_CLEAN", "signature": "#define MINIFS_JSTATE_CLEAN"}, {"kind": "macro", "line": 88, "name": "MINIFS_JSTATE_DIRTY", "signature": "#define MINIFS_JSTATE_DIRTY"}]}, {"id": "headers/net/rtl8139.h", "kind": "module", "label": "rtl8139.h", "language": "h", "sha256": "d60d1c66cb10d71b", "symbol_count": 8, "symbols": [{"doc": "rtl8139 NIC driver interface. This header is the boundary between the polled rtl8139 driver (rtl8139.c) and the protocol stack (net.c). The driver owns the port I/O, PCI probe, TX/RX rings, the NIC MAC and the PIT-calibrated clock; the stack owns addressing, sockets and the demux that the driver reaches through rtl_poll. All frame sizes and MAC constants come from net.h. #include \"net.h\" /* Nonzero when the rtl8139 was found and initialized.", "kind": "function", "line": 18, "name": "rtl_present", "signature": "int rtl_present(void);"}, {"doc": "This header is the boundary between the polled rtl8139 driver (rtl8139.c) and the protocol stack (net.c). The driver owns the port I/O, PCI probe, TX/RX rings, the NIC MAC and the PIT-calibrated clock; the stack owns addressing, sockets and the demux that the driver reaches through rtl_poll. All frame sizes and MAC constants come from net.h. #include \"net.h\" /* Nonzero when the rtl8139 was found and initialized. int rtl_present(void); /* Calibrate the clock, probe the NIC and set up the TX/RX rings.", "kind": "function", "line": 21, "name": "rtl_init", "signature": "void rtl_init(void);"}, {"doc": "Transmit one raw Ethernet frame. Returns 1 on success, 0 on failure * (no device, frame too large for a slot, or a TX deadline expiry).", "kind": "function", "line": 25, "name": "rtl_send", "signature": "int rtl_send(const unsigned char *frame, unsigned len);"}, {"kind": "function", "line": 28, "name": "net_rx_handle_frame", "signature": "* net_rx_handle_frame (the protocol demux in net.c). */ void rtl_poll(void);"}, {"doc": "Drain the RX ring once; every received frame is handed to * net_rx_handle_frame (the protocol demux in net.c). void rtl_poll(void); /* Copy the NIC MAC into out (NET_ETH_ALEN bytes).", "kind": "function", "line": 32, "name": "rtl_get_mac", "signature": "void rtl_get_mac(unsigned char out[NET_ETH_ALEN]);"}, {"doc": "Drain the RX ring once; every received frame is handed to * net_rx_handle_frame (the protocol demux in net.c). void rtl_poll(void); /* Copy the NIC MAC into out (NET_ETH_ALEN bytes). void rtl_get_mac(unsigned char out[NET_ETH_ALEN]); /* The NIC I/O base, or 0 when the device is absent.", "kind": "function", "line": 35, "name": "rtl_iobase", "signature": "unsigned short rtl_iobase(void);"}, {"doc": "Drain the RX ring once; every received frame is handed to * net_rx_handle_frame (the protocol demux in net.c). void rtl_poll(void); /* Copy the NIC MAC into out (NET_ETH_ALEN bytes). void rtl_get_mac(unsigned char out[NET_ETH_ALEN]); /* The NIC I/O base, or 0 when the device is absent. unsigned short rtl_iobase(void); /* Frame-level TX/RX counters (bytes are protocol counters in net.c).", "kind": "function", "line": 38, "name": "rtl_counters", "signature": "void rtl_counters(unsigned int *tx_frames, unsigned int *rx_frames);"}, {"kind": "macro", "line": 2, "name": "RTL8139_H", "signature": "#define RTL8139_H"}]}, {"doc": "========== Fixed slirp configuration (QEMU -nic user) ==========", "id": "headers/net.h", "kind": "module", "label": "net.h", "language": "h", "sha256": "71ea44e119414ba3", "symbol_count": 59, "symbols": [{"kind": "function", "line": 45, "name": "ring", "signature": "* ring (below) is the rtl8139's 8 KB hardware ring, unrelated. */ #define NET_SOCK_RX_BUF 16384 #define NET_RX_RING_SIZE 8192 #define NET_SOCKETS 16 #define NET_DNS_PORT 53 #define NET_EPHEMERAL_MIN 4"}, {"kind": "function", "line": 64, "name": "net_register_symbols", "signature": "void net_register_symbols(void);"}, {"doc": "net_connect / socket fds are NET_FD_BASE + index for Linux syscalls and * 0..NET_SOCKETS-1 for the libc-style symbols. void net_init(void); void net_register_symbols(void); /* Shell commands", "kind": "function", "line": 67, "name": "net_cmd_status", "signature": "void net_cmd_status(void);"}, {"kind": "function", "line": 68, "name": "net_cmd_ping", "signature": "void net_cmd_ping(const char *ip_text);"}, {"kind": "function", "line": 69, "name": "net_get_addrs", "signature": "void net_get_addrs(unsigned char mac_out[NET_ETH_ALEN], unsigned char ip_out[4]);"}, {"kind": "function", "line": 70, "name": "net_cmd_dns", "signature": "void net_cmd_dns(const char *host);"}, {"doc": "net_connect / socket fds are NET_FD_BASE + index for Linux syscalls and * 0..NET_SOCKETS-1 for the libc-style symbols. void net_init(void); void net_register_symbols(void); /* Shell commands void net_cmd_status(void); void net_cmd_ping(const char *ip_text); void net_get_addrs(unsigned char mac_out[NET_ETH_ALEN], unsigned char ip_out[4]); void net_cmd_dns(const char *host); /* Libc-style API for ET_REL programs", "kind": "function", "line": 73, "name": "net_open", "signature": "int net_open(void);"}, {"kind": "function", "line": 74, "name": "net_connect", "signature": "int net_connect(const char *host, unsigned short port);"}, {"kind": "function", "line": 75, "name": "net_send", "signature": "int net_send(int fd, const char *buf, int len);"}, {"kind": "function", "line": 76, "name": "net_recv", "signature": "int net_recv(int fd, char *buf, int len);"}, {"doc": "void net_register_symbols(void); /* Shell commands void net_cmd_status(void); void net_cmd_ping(const char *ip_text); void net_get_addrs(unsigned char mac_out[NET_ETH_ALEN], unsigned char ip_out[4]); void net_cmd_dns(const char *host); /* Libc-style API for ET_REL programs int net_open(void); int net_connect(const char *host, unsigned short port); int net_send(int fd, const char *buf, int len); int net_recv(int fd, char *buf, int len); /* Blocking receive with a deadline: like net_recv, but -1 on timeout.", "kind": "function", "line": 78, "name": "net_recv_timeout", "signature": "int net_recv_timeout(int fd, char *buf, int len, unsigned long timeout_ms);"}, {"kind": "function", "line": 79, "name": "net_close", "signature": "void net_close(int fd);"}, {"doc": "void net_cmd_ping(const char *ip_text); void net_get_addrs(unsigned char mac_out[NET_ETH_ALEN], unsigned char ip_out[4]); void net_cmd_dns(const char *host); /* Libc-style API for ET_REL programs int net_open(void); int net_connect(const char *host, unsigned short port); int net_send(int fd, const char *buf, int len); int net_recv(int fd, char *buf, int len); /* Blocking receive with a deadline: like net_recv, but -1 on timeout. int net_recv_timeout(int fd, char *buf, int len, unsigned long timeout_ms); void net_close(int fd); /* Linux syscall ABI (sockaddr_in layout matches Linux)", "kind": "function", "line": 82, "name": "net_sys_socket", "signature": "long net_sys_socket(long a1, long a2, long a3);"}, {"kind": "function", "line": 83, "name": "net_sys_connect", "signature": "long net_sys_connect(long fd, long sockaddr, long addrlen);"}, {"kind": "function", "line": 84, "name": "net_sys_sendto", "signature": "long net_sys_sendto(long fd, long buf, long len, long flags, long to, long tolen);"}, {"kind": "function", "line": 85, "name": "net_sys_recvfrom", "signature": "long net_sys_recvfrom(long fd, long buf, long len, long flags, long from, long fromlen);"}, {"kind": "function", "line": 86, "name": "net_sys_shutdown", "signature": "long net_sys_shutdown(long fd, long how);"}, {"kind": "function", "line": 87, "name": "net_sys_close", "signature": "long net_sys_close(long fd);"}, {"kind": "function", "line": 88, "name": "net_sys_poll", "signature": "long net_sys_poll(long fds, long nfds, long timeout_ms);"}, {"kind": "function", "line": 89, "name": "net_sys_dns", "signature": "long net_sys_dns(long host);"}, {"doc": "int net_recv_timeout(int fd, char *buf, int len, unsigned long timeout_ms); void net_close(int fd); /* Linux syscall ABI (sockaddr_in layout matches Linux) long net_sys_socket(long a1, long a2, long a3); long net_sys_connect(long fd, long sockaddr, long addrlen); long net_sys_sendto(long fd, long buf, long len, long flags, long to, long tolen); long net_sys_recvfrom(long fd, long buf, long len, long flags, long from, long fromlen); long net_sys_shutdown(long fd, long how); long net_sys_close(long fd); long net_sys_poll(long fds, long nfds, long timeout_ms); long net_sys_dns(long host); /* Milliseconds since net_init (PIT-calibrated TSC).", "kind": "function", "line": 92, "name": "net_time_ms", "signature": "unsigned long net_time_ms(void);"}, {"doc": "Demux entry point the rtl8139 driver (rtl8139.c) calls for every * frame drained from the RX ring; lives in net.c.", "kind": "function", "line": 96, "name": "net_rx_handle_frame", "signature": "void net_rx_handle_frame(const unsigned char *frame, unsigned len);"}, {"kind": "function", "line": 99, "name": "stack", "signature": "* the stack (dropped fragments);"}, {"doc": "TLS sessions attached to socket fds (tls.c); net_sys_close frees them. With MINIOS_NO_TLS the engine is unlinked and tls.h carries the inline * no-op; this declaration would collide with it, so it is omitted. ifndef MINIOS_NO_TLS", "kind": "function", "line": 106, "name": "tls_free_fd", "signature": "void tls_free_fd(int fd);"}, {"doc": "Aggregate RX drop counter shared between the driver (bad frames) and * the stack (dropped fragments); defined in net.c.", "kind": "variable", "line": 100, "name": "net_rx_dropped", "signature": "extern unsigned int net_rx_dropped;"}, {"kind": "macro", "line": 2, "name": "NET_H", "signature": "#define NET_H"}, {"kind": "macro", "line": 5, "name": "NET_IP_ADDR", "signature": "#define NET_IP_ADDR"}, {"kind": "macro", "line": 6, "name": "NET_NETMASK", "signature": "#define NET_NETMASK"}, {"kind": "macro", "line": 7, "name": "NET_GATEWAY", "signature": "#define NET_GATEWAY"}, {"kind": "macro", "line": 8, "name": "NET_DNS", "signature": "#define NET_DNS"}, {"kind": "macro", "line": 11, "name": "NET_PCI_VENDOR", "signature": "#define NET_PCI_VENDOR"}, {"kind": "macro", "line": 12, "name": "NET_PCI_DEVICE", "signature": "#define NET_PCI_DEVICE"}, {"kind": "macro", "line": 18, "name": "NET_RX_BUF_LEN", "signature": "#define NET_RX_BUF_LEN"}, {"kind": "macro", "line": 19, "name": "NET_RX_ALIGN", "signature": "#define NET_RX_ALIGN"}, {"kind": "macro", "line": 22, "name": "NET_RCR", "signature": "#define NET_RCR"}, {"kind": "macro", "line": 23, "name": "NET_MAX_FRAME", "signature": "#define NET_MAX_FRAME"}, {"kind": "macro", "line": 24, "name": "NET_TX_SLOTS", "signature": "#define NET_TX_SLOTS"}, {"kind": "macro", "line": 27, "name": "NET_ETH_ALEN", "signature": "#define NET_ETH_ALEN"}, {"kind": "macro", "line": 28, "name": "NET_ETHERTYPE_IP", "signature": "#define NET_ETHERTYPE_IP"}, {"kind": "macro", "line": 29, "name": "NET_ETHERTYPE_ARP", "signature": "#define NET_ETHERTYPE_ARP"}, {"kind": "macro", "line": 32, "name": "NET_PROTO_ICMP", "signature": "#define NET_PROTO_ICMP"}, {"kind": "macro", "line": 33, "name": "NET_PROTO_TCP", "signature": "#define NET_PROTO_TCP"}, {"kind": "macro", "line": 34, "name": "NET_PROTO_UDP", "signature": "#define NET_PROTO_UDP"}, {"kind": "macro", "line": 37, "name": "NET_ARP_CACHE", "signature": "#define NET_ARP_CACHE"}, {"kind": "macro", "line": 38, "name": "NET_ARP_REQUEST", "signature": "#define NET_ARP_REQUEST"}, {"kind": "macro", "line": 39, "name": "NET_ARP_REPLY", "signature": "#define NET_ARP_REPLY"}, {"kind": "macro", "line": 42, "name": "NET_TCP_MSS", "signature": "#define NET_TCP_MSS"}, {"kind": "macro", "line": 43, "name": "NET_TCP_WINDOW", "signature": "#define NET_TCP_WINDOW"}, {"kind": "macro", "line": 46, "name": "NET_SOCK_RX_BUF", "signature": "#define NET_SOCK_RX_BUF"}, {"kind": "macro", "line": 47, "name": "NET_RX_RING_SIZE", "signature": "#define NET_RX_RING_SIZE"}, {"kind": "macro", "line": 48, "name": "NET_SOCKETS", "signature": "#define NET_SOCKETS"}, {"kind": "macro", "line": 49, "name": "NET_DNS_PORT", "signature": "#define NET_DNS_PORT"}, {"kind": "macro", "line": 50, "name": "NET_EPHEMERAL_MIN", "signature": "#define NET_EPHEMERAL_MIN"}, {"kind": "macro", "line": 51, "name": "NET_DNS_TRIES", "signature": "#define NET_DNS_TRIES"}, {"kind": "macro", "line": 52, "name": "NET_DNS_TMO_MS", "signature": "#define NET_DNS_TMO_MS"}, {"kind": "macro", "line": 53, "name": "NET_CONNECT_TMO_S", "signature": "#define NET_CONNECT_TMO_S"}, {"kind": "macro", "line": 54, "name": "NET_RETRY_MS", "signature": "#define NET_RETRY_MS"}, {"kind": "macro", "line": 55, "name": "NET_TX_MAX", "signature": "#define NET_TX_MAX"}, {"kind": "macro", "line": 58, "name": "NET_FD_BASE", "signature": "#define NET_FD_BASE"}]}, {"id": "headers/pcspk.h", "kind": "module", "label": "pcspk.h", "language": "h", "sha256": "2f0e0e5c3ed74964", "symbol_count": 9, "symbols": [{"kind": "function", "line": 8, "name": "pcspk_init", "signature": "void pcspk_init(void);"}, {"kind": "function", "line": 9, "name": "pcspk_tone", "signature": "void pcspk_tone(unsigned freq);"}, {"kind": "function", "line": 10, "name": "pcspk_off", "signature": "void pcspk_off(void);"}, {"kind": "function", "line": 11, "name": "pcspk_set_volume", "signature": "void pcspk_set_volume(unsigned volume);"}, {"kind": "function", "line": 12, "name": "pcspk_get_volume", "signature": "unsigned pcspk_get_volume(void);"}, {"kind": "macro", "line": 2, "name": "PCSPK_H", "signature": "#define PCSPK_H"}, {"kind": "macro", "line": 4, "name": "PCSPK_VOL_MIN", "signature": "#define PCSPK_VOL_MIN"}, {"kind": "macro", "line": 5, "name": "PCSPK_VOL_MAX", "signature": "#define PCSPK_VOL_MAX"}, {"kind": "macro", "line": 6, "name": "PCSPK_VOL_DEFAULT", "signature": "#define PCSPK_VOL_DEFAULT"}]}, {"doc": "Docstring: percpu_rq.h -- Per-CPU runqueues with work stealing.", "id": "headers/percpu_rq.h", "kind": "module", "label": "percpu_rq.h", "language": "h", "sha256": "ff5590a3c6a870d6", "symbol_count": 14, "symbols": [{"kind": "struct", "line": 50, "name": "percpu_rq_t"}, {"kind": "function", "line": 61, "name": "rq_init", "signature": "void rq_init(void);"}, {"kind": "function", "line": 62, "name": "rq_enqueue", "signature": "void rq_enqueue(int cpu, int pid);"}, {"kind": "function", "line": 63, "name": "rq_pop_local", "signature": "int rq_pop_local(int cpu);"}, {"kind": "function", "line": 64, "name": "rq_steal_once", "signature": "int rq_steal_once(int self_cpu, int *from_cpu);"}, {"kind": "function", "line": 65, "name": "rq_empty", "signature": "int rq_empty(int cpu);"}, {"kind": "function", "line": 66, "name": "rq_should_rescan", "signature": "int rq_should_rescan(int cpu);"}, {"kind": "function", "line": 67, "name": "rq_note_poll", "signature": "void rq_note_poll(int cpu);"}, {"kind": "function", "line": 68, "name": "rq_stats", "signature": "void rq_stats(int cpu, unsigned long *hits, unsigned long *steals, unsigned long *drops);"}, {"kind": "macro", "line": 2, "name": "PERCPU_RQ_H", "signature": "#define PERCPU_RQ_H"}, {"kind": "macro", "line": 45, "name": "RQ_DEPTH", "signature": "#define RQ_DEPTH"}, {"kind": "macro", "line": 46, "name": "RQ_RESCAN_PERIOD", "signature": "#define RQ_RESCAN_PERIOD"}, {"kind": "macro", "line": 47, "name": "RQ_VALIDATE_ATTEMPTS", "signature": "#define RQ_VALIDATE_ATTEMPTS"}, {"kind": "macro", "line": 48, "name": "WQ_NONE_HINT", "signature": "#define WQ_NONE_HINT"}]}, {"doc": "========== QEMU guest agent channel (COM2, ISA 16550) ==========", "id": "headers/qga.h", "kind": "module", "label": "qga.h", "language": "h", "sha256": "4f867a372f907c8d", "symbol_count": 29, "symbols": [{"kind": "function", "line": 48, "name": "qga_init", "signature": "void qga_init(void);"}, {"kind": "function", "line": 49, "name": "qga_poll", "signature": "void qga_poll(void);"}, {"kind": "macro", "line": 2, "name": "QGA_H", "signature": "#define QGA_H"}, {"kind": "macro", "line": 5, "name": "QGA_COM2_BASE", "signature": "#define QGA_COM2_BASE"}, {"kind": "macro", "line": 6, "name": "QGA_COM2_IRQ", "signature": "#define QGA_COM2_IRQ"}, {"kind": "macro", "line": 9, "name": "QGA_UART_THR", "signature": "#define QGA_UART_THR"}, {"kind": "macro", "line": 10, "name": "QGA_UART_RBR", "signature": "#define QGA_UART_RBR"}, {"kind": "macro", "line": 11, "name": "QGA_UART_DLL", "signature": "#define QGA_UART_DLL"}, {"kind": "macro", "line": 12, "name": "QGA_UART_DLM", "signature": "#define QGA_UART_DLM"}, {"kind": "macro", "line": 13, "name": "QGA_UART_IER", "signature": "#define QGA_UART_IER"}, {"kind": "macro", "line": 14, "name": "QGA_UART_FCR", "signature": "#define QGA_UART_FCR"}, {"kind": "macro", "line": 15, "name": "QGA_UART_LCR", "signature": "#define QGA_UART_LCR"}, {"kind": "macro", "line": 16, "name": "QGA_UART_LSR", "signature": "#define QGA_UART_LSR"}, {"kind": "macro", "line": 17, "name": "QGA_UART_MCR", "signature": "#define QGA_UART_MCR"}, {"kind": "macro", "line": 18, "name": "QGA_UART_LSR_TX_RDY", "signature": "#define QGA_UART_LSR_TX_RDY"}, {"kind": "macro", "line": 19, "name": "QGA_UART_LSR_RX_RDY", "signature": "#define QGA_UART_LSR_RX_RDY"}, {"kind": "macro", "line": 20, "name": "QGA_UART_LCR_DLAB", "signature": "#define QGA_UART_LCR_DLAB"}, {"kind": "macro", "line": 21, "name": "QGA_UART_LCR_8N1", "signature": "#define QGA_UART_LCR_8N1"}, {"kind": "macro", "line": 22, "name": "QGA_UART_FCR_CFG", "signature": "#define QGA_UART_FCR_CFG"}, {"kind": "macro", "line": 23, "name": "QGA_UART_MCR_CFG", "signature": "#define QGA_UART_MCR_CFG"}, {"kind": "macro", "line": 25, "name": "QGA_BAUD_DIVISOR", "signature": "#define QGA_BAUD_DIVISOR"}, {"kind": "macro", "line": 30, "name": "QGA_LINE_MAX", "signature": "#define QGA_LINE_MAX"}, {"kind": "macro", "line": 31, "name": "QGA_RESP_MAX", "signature": "#define QGA_RESP_MAX"}, {"kind": "macro", "line": 34, "name": "QGA_FILE_READ_MAX", "signature": "#define QGA_FILE_READ_MAX"}, {"kind": "macro", "line": 37, "name": "QGA_MAX_PAIRS", "signature": "#define QGA_MAX_PAIRS"}, {"kind": "macro", "line": 38, "name": "QGA_KEY_MAX", "signature": "#define QGA_KEY_MAX"}, {"kind": "macro", "line": 39, "name": "QGA_STR_MAX", "signature": "#define QGA_STR_MAX"}, {"kind": "macro", "line": 42, "name": "QGA_MAX_DEPTH", "signature": "#define QGA_MAX_DEPTH"}, {"kind": "macro", "line": 46, "name": "QGA_FILE_MAX", "signature": "#define QGA_FILE_MAX"}]}, {"doc": "randmix.h -- entropy mixer for getrandom (318).", "id": "headers/randmix.h", "kind": "module", "label": "randmix.h", "language": "h", "sha256": "b99336a166b4fdb6", "symbol_count": 2, "symbols": [{"kind": "function", "line": 11, "name": "source", "signature": "* source (all-zero seed) still walks, because the increment is inside\n * the mixer, not in the ca..."}, {"kind": "macro", "line": 2, "name": "RANDMIX_H", "signature": "#define RANDMIX_H"}]}, {"doc": "Docstring: rcu.h -- Read-copy-update, lite epoch edition.", "id": "headers/rcu.h", "kind": "module", "label": "rcu.h", "language": "h", "sha256": "f0fe67aced0a1864", "symbol_count": 17, "symbols": [{"kind": "function", "line": 30, "name": "retirement", "signature": "* retirement (the writer keeps ownership) instead of dropping the free. * Callbacks run in tick context with interrupts disabled, so they must * be short and non-blocking. rcu_synchronize spins on qui"}, {"kind": "function", "line": 51, "name": "rcu_init", "signature": "void rcu_init(void);"}, {"kind": "function", "line": 52, "name": "rcu_read_lock", "signature": "void rcu_read_lock(void);"}, {"kind": "function", "line": 53, "name": "rcu_read_unlock", "signature": "void rcu_read_unlock(void);"}, {"kind": "function", "line": 54, "name": "rcu_deref", "signature": "void *rcu_deref(void *volatile *pp);"}, {"kind": "function", "line": 55, "name": "rcu_publish", "signature": "void rcu_publish(void *volatile *pp, void *v);"}, {"kind": "function", "line": 56, "name": "rcu_call", "signature": "long rcu_call(rcu_cb_t fn, void *arg);"}, {"kind": "function", "line": 57, "name": "rcu_note_tick", "signature": "void rcu_note_tick(int cpu);"}, {"kind": "function", "line": 58, "name": "rcu_note_idle", "signature": "void rcu_note_idle(int cpu);"}, {"kind": "function", "line": 59, "name": "rcu_poll", "signature": "void rcu_poll(void);"}, {"kind": "function", "line": 60, "name": "rcu_synchronize", "signature": "long rcu_synchronize(void);"}, {"kind": "macro", "line": 2, "name": "RCU_H", "signature": "#define RCU_H"}, {"kind": "macro", "line": 42, "name": "RCU_CB_MAX", "signature": "#define RCU_CB_MAX"}, {"kind": "macro", "line": 43, "name": "RCU_SYNC_SPINS", "signature": "#define RCU_SYNC_SPINS"}, {"kind": "macro", "line": 45, "name": "RCU_OK", "signature": "#define RCU_OK"}, {"kind": "macro", "line": 46, "name": "RCU_ERR_FULL", "signature": "#define RCU_ERR_FULL"}, {"kind": "macro", "line": 47, "name": "RCU_ERR_TIMEOUT", "signature": "#define RCU_ERR_TIMEOUT"}]}, {"id": "headers/rtc.h", "kind": "module", "label": "rtc.h", "language": "h", "sha256": "ace44bb9bd2460f1", "symbol_count": 6, "symbols": [{"doc": "Days since 1970-01-01 for a civil date (Howard Hinnant's algorithm, pure integer arithmetic, no tables). Powers rtc_wall_seconds and the host suite (tests/test_rtc.c); valid for the full 2000..2099 CMOS window and far beyond. Lives here (not in rtc.c) so the host test can * compile it without the port-I/O half of the driver.", "kind": "function", "line": 18, "name": "rtc_days_from_civil", "signature": "static inline long rtc_days_from_civil(long y, long m, long d)"}, {"kind": "function", "line": 4, "name": "rtc_read_tod", "signature": "int rtc_read_tod(int *hour, int *min, int *sec);"}, {"doc": "Calendar date from the CMOS RTC (registers 0x07-0x09). Full year (CMOS carries two digits; 0..99 maps to 2000..2099). Fail-closed like the time reader: impossible month/day (including Feb 29 on a non-leap year) or a clock that never stops updating returns 0 and * writes nothing.", "kind": "function", "line": 11, "name": "rtc_read_date", "signature": "int rtc_read_date(int *year, int *mon, int *day);"}, {"kind": "function", "line": 15, "name": "suite", "signature": "* host suite (tests/test_rtc.c);"}, {"doc": "Wall-clock seconds since the Unix epoch from one RTC snapshot. Returns 1 and stores the value, or 0 on any RTC failure (caller decides the fallback; TLS treats 0 as \"no clock\" and fails the * chain check closed downstream).", "kind": "function", "line": 33, "name": "rtc_wall_seconds", "signature": "int rtc_wall_seconds(unsigned long *out);"}, {"kind": "macro", "line": 2, "name": "RTC_H", "signature": "#define RTC_H"}]}, {"doc": "Docstring: sanitize.h -- Single choke point for syscall argument checks.", "id": "headers/sanitize.h", "kind": "module", "label": "sanitize.h", "language": "h", "sha256": "abfabc818125fd1e", "symbol_count": 5, "symbols": [{"kind": "macro", "line": 2, "name": "SANITIZE_H", "signature": "#define SANITIZE_H"}, {"kind": "macro", "line": 32, "name": "SANITIZE_LEN_NEG", "signature": "#define SANITIZE_LEN_NEG(var)"}, {"kind": "macro", "line": 37, "name": "SANITIZE_RANGE", "signature": "#define SANITIZE_RANGE(ptr, len)"}, {"kind": "macro", "line": 43, "name": "SANITIZE_STR", "signature": "#define SANITIZE_STR(ptr, maxlen)"}, {"kind": "macro", "line": 49, "name": "SANITIZE_COPY_IN", "signature": "#define SANITIZE_COPY_IN(kbuf, uptr, count, elemsz)"}]}, {"doc": "Sound Blaster 16 DMA audio driver contract.", "id": "headers/sb16.h", "kind": "module", "label": "sb16.h", "language": "h", "sha256": "e608608fa922afa2", "symbol_count": 27, "symbols": [{"doc": "Per-stream ring buffer. Each stream gets SB16_STREAM_BUF bytes of kernel-side buffering so multiple producers never interfere. At 22050 Hz * 8-bit mono that is ~366 ms per stream. #define SB16_STREAMS 4u /* max concurrent mixer streams #define SB16_STREAM_BUF (SB16_PCM_BUF * 4u) /* 8192 bytes per stream /* Mixer stream state.", "kind": "struct", "line": 46, "name": "sb16_stream_t"}, {"kind": "struct", "line": 55, "name": "sb16_counters_t"}, {"kind": "function", "line": 65, "name": "sb16_init", "signature": "int sb16_init(void);"}, {"kind": "function", "line": 66, "name": "sb16_present", "signature": "int sb16_present(void);"}, {"kind": "function", "line": 67, "name": "sb16_tone", "signature": "void sb16_tone(unsigned freq);"}, {"kind": "function", "line": 68, "name": "sb16_irq", "signature": "void sb16_irq(void);"}, {"kind": "function", "line": 69, "name": "sb16_poll", "signature": "void sb16_poll(void);"}, {"doc": "Legacy single-stream API (maps to mixer stream 0: pcm_open allocates it, * pcm_submit forwards into it, pcm_close releases it).", "kind": "function", "line": 73, "name": "sb16_pcm_open", "signature": "void sb16_pcm_open(void);"}, {"kind": "function", "line": 74, "name": "sb16_pcm_submit", "signature": "int sb16_pcm_submit(const unsigned char *pcm, unsigned len);"}, {"kind": "function", "line": 75, "name": "sb16_pcm_close", "signature": "void sb16_pcm_close(void);"}, {"kind": "function", "line": 76, "name": "sb16_pump", "signature": "void sb16_pump(void);"}, {"doc": "Legacy single-stream API (maps to mixer stream 0: pcm_open allocates it, * pcm_submit forwards into it, pcm_close releases it). void sb16_pcm_open(void); int sb16_pcm_submit(const unsigned char *pcm, unsigned len); void sb16_pcm_close(void); void sb16_pump(void); /* Mixer stream API.", "kind": "function", "line": 79, "name": "sb16_stream_open", "signature": "int sb16_stream_open(void);"}, {"kind": "function", "line": 80, "name": "sb16_stream_close", "signature": "void sb16_stream_close(int id);"}, {"kind": "function", "line": 81, "name": "sb16_stream_submit", "signature": "int sb16_stream_submit(int id, const unsigned char *pcm, unsigned len);"}, {"kind": "function", "line": 82, "name": "sb16_stream_volume", "signature": "void sb16_stream_volume(int id, unsigned char vol);"}, {"kind": "function", "line": 83, "name": "sb16_stream_count", "signature": "int sb16_stream_count(void);"}, {"kind": "function", "line": 85, "name": "sb16_ring_free", "signature": "unsigned sb16_ring_free(void);"}, {"kind": "function", "line": 86, "name": "sb16_mode_active", "signature": "int sb16_mode_active(void);"}, {"kind": "function", "line": 88, "name": "sb16_counters", "signature": "void sb16_counters(sb16_counters_t *out);"}, {"kind": "macro", "line": 2, "name": "SB16_H", "signature": "#define SB16_H"}, {"kind": "macro", "line": 32, "name": "SB16_PCM_BUF", "signature": "#define SB16_PCM_BUF"}, {"kind": "macro", "line": 33, "name": "SB16_PCM_RATE", "signature": "#define SB16_PCM_RATE"}, {"kind": "macro", "line": 34, "name": "SB16_SLOTS", "signature": "#define SB16_SLOTS"}, {"kind": "macro", "line": 35, "name": "SB16_RING_CAP", "signature": "#define SB16_RING_CAP"}, {"kind": "macro", "line": 36, "name": "SB16_ARM_PERIOD_MS", "signature": "#define SB16_ARM_PERIOD_MS"}, {"kind": "macro", "line": 42, "name": "SB16_STREAMS", "signature": "#define SB16_STREAMS"}, {"kind": "macro", "line": 43, "name": "SB16_STREAM_BUF", "signature": "#define SB16_STREAM_BUF"}]}, {"doc": "---- Process states ----", "id": "headers/sched.h", "kind": "module", "label": "sched.h", "language": "h", "sha256": "e42f77a0ebe11901", "symbol_count": 101, "symbols": [{"doc": "Fields: cpu_id: index into cpus[], 0 for BSP cur_pid: PID of the running process on this CPU syscall_kstack: kernel stack top exchanged on syscall entry kstack_top: per-CPU interrupt stack top last_sched_tick: sys_ticks value of last context switch (Phase 2) lapic_id: APIC ID from hardware is_bsp: 1 for the boot processor, 0 for APs idle: 1 when CPU is in idle loop (Phase 2: idle thread) irq_depth: interrupt nesting count for irqsave (Phase 3) idle_proc: pointer to idle process (Phase 2) run_queue: opaque pointer to per-CPU run queue (Phase 2)", "kind": "struct", "line": 174, "name": "cpu"}, {"doc": "Transient: the owner CPU is between \"decided to switch away\" and \"context fully saved\". Never claimable: a steal here would resume a * stale context. schedule() turns it into READY only after the save. #define PROC_SWITCHING 5 /* ---- Limits ---- #define MAX_PROCS 64 #define PROC_KSTACK_SZ (16UL * 1024) /* ---- SMP limits ---- #define MAX_CPUS 8 #define BOOT_CPU 0 /* ---- Per-process saved registers (offsets must match ctx_sw.S) ----", "kind": "struct", "line": 28, "name": "ctx_regs_t"}, {"doc": "#define MAX_CPUS 8 #define BOOT_CPU 0 /* ---- Per-process saved registers (offsets must match ctx_sw.S) ---- typedef struct { uint64_t rax, rbx, rcx, rdx; uint64_t rsi, rdi, rbp; uint64_t r8, r9, r10, r11; uint64_t r12, r13, r14, r15; uint64_t rip, rsp, rflags; uint64_t cr3; } ctx_regs_t; /* ---- Process Control Block ----", "kind": "struct", "line": 38, "name": "proc_t"}, {"doc": "Per-CPU TSS selectors: slot 5 + 2*cpu in the runtime GDT (each TSS descriptor occupies two 8-byte slots). CPU 0 keeps selector 0x28, * exactly as before. #define TSS_SEL(cpu) ((uint16_t)((5 + 2 * (cpu)) * 8)) /* Exported IDTR for APs to load during SMP bring-up.", "kind": "type_alias", "line": 275, "name": "limit", "signature": "typedef struct __attribute__((packed)) { uint16_t limit;"}, {"doc": "Per-CPU TSS selectors: slot 5 + 2*cpu in the runtime GDT (each TSS descriptor occupies two 8-byte slots). CPU 0 keeps selector 0x28, * exactly as before. #define TSS_SEL(cpu) ((uint16_t)((5 + 2 * (cpu)) * 8)) /* Exported IDTR for APs to load during SMP bring-up.", "kind": "function", "line": 275, "name": "__attribute__", "signature": "typedef struct __attribute__((packed))"}, {"kind": "function", "line": 89, "name": "STR", "signature": "* Both immediates derive from these macros via STR();"}, {"doc": "Per-CPU TSS selectors: slot 5 + 2*cpu in the runtime GDT (each TSS descriptor occupies two 8-byte slots). CPU 0 keeps selector 0x28, * exactly as before. #define TSS_SEL(cpu) ((uint16_t)((5 + 2 * (cpu)) * 8)) /* Exported IDTR for APs to load during SMP bring-up. typedef struct __attribute__((packed)) { uint16_t limit; uint64_t base; } idtr_t; extern idtr_t bsp_idtr; /* ---- Functions ----", "kind": "function", "line": 279, "name": "sched_init", "signature": "void sched_init(void);"}, {"kind": "function", "line": 280, "name": "kstack_report", "signature": "void kstack_report(void);"}, {"kind": "function", "line": 281, "name": "schedtop_report", "signature": "void schedtop_report(void);"}, {"kind": "function", "line": 282, "name": "irqstat_report", "signature": "void irqstat_report(void);"}, {"kind": "function", "line": 283, "name": "gdb_regs_report", "signature": "void gdb_regs_report(int pid);"}, {"kind": "function", "line": 284, "name": "gdb_dump_report", "signature": "void gdb_dump_report(unsigned long addr, unsigned long len);"}, {"kind": "function", "line": 288, "name": "tss_init_ap", "signature": "void tss_init_ap(int cpu);"}, {"kind": "function", "line": 289, "name": "smp_ap_idle_loop", "signature": "void smp_ap_idle_loop(void);"}, {"kind": "function", "line": 290, "name": "proc_create", "signature": "int proc_create(const char *name, int parent_pid);"}, {"kind": "function", "line": 291, "name": "proc_get", "signature": "proc_t *proc_get(int pid);"}, {"kind": "function", "line": 292, "name": "schedule", "signature": "void schedule(void);"}, {"kind": "function", "line": 293, "name": "sched_set_nice", "signature": "int sched_set_nice(int pid, int nice);"}, {"kind": "function", "line": 294, "name": "seccomp_deny_one", "signature": "int seccomp_deny_one(int pid, int n);"}, {"kind": "function", "line": 295, "name": "seccomp_allow_one", "signature": "int seccomp_allow_one(int pid, int n);"}, {"kind": "function", "line": 296, "name": "seccomp_denied", "signature": "int seccomp_denied(int pid, int n);"}, {"kind": "function", "line": 297, "name": "rlimit_cpu_exceeded", "signature": "int rlimit_cpu_exceeded(int pid);"}, {"kind": "function", "line": 298, "name": "rlimit_cpu_tick", "signature": "void rlimit_cpu_tick(int pid);"}, {"kind": "function", "line": 299, "name": "switch_to", "signature": "void switch_to(proc_t *prev, proc_t *next);"}, {"kind": "function", "line": 300, "name": "switch_to_notrap", "signature": "void switch_to_notrap(proc_t *prev, proc_t *next);"}, {"kind": "function", "line": 301, "name": "switch_save_only", "signature": "void switch_save_only(proc_t *prev);"}, {"kind": "function", "line": 302, "name": "resume_iretq", "signature": "void resume_iretq(void);"}, {"kind": "function", "line": 303, "name": "yield", "signature": "void yield(void);"}, {"kind": "function", "line": 304, "name": "do_exit", "signature": "void do_exit(int code);"}, {"kind": "function", "line": 305, "name": "do_clone", "signature": "long do_clone(long flags, long newsp);"}, {"kind": "function", "line": 306, "name": "do_thread_spawn", "signature": "long do_thread_spawn(unsigned long fn, unsigned long stack, unsigned long arg);"}, {"kind": "function", "line": 308, "name": "do_waitpid", "signature": "int do_waitpid(int pid);"}, {"kind": "function", "line": 309, "name": "do_waitpid_nb", "signature": "int do_waitpid_nb(int pid);"}, {"kind": "function", "line": 310, "name": "shell_reap_nb", "signature": "int shell_reap_nb(int *pid_out, int *code_out);"}, {"kind": "function", "line": 311, "name": "shell_reap_one", "signature": "int shell_reap_one(int pid, int *code_out);"}, {"kind": "function", "line": 312, "name": "shell_nchildren", "signature": "int shell_nchildren(void);"}, {"doc": "define WAITPID_NONE (-0x7FFF)", "kind": "function", "line": 314, "name": "do_kill", "signature": "int do_kill(int pid);"}, {"kind": "function", "line": 315, "name": "timer_tick", "signature": "void timer_tick(void);"}, {"doc": "void do_exit(int code); long do_clone(long flags, long newsp); long do_thread_spawn(unsigned long fn, unsigned long stack, unsigned long arg); int do_waitpid(int pid); int do_waitpid_nb(int pid); int shell_reap_nb(int *pid_out, int *code_out); int shell_reap_one(int pid, int *code_out); int shell_nchildren(void); #define WAITPID_NONE (-0x7FFF) int do_kill(int pid); void timer_tick(void); /* ---- Per-process page tables ----", "kind": "function", "line": 318, "name": "pt_clone_user", "signature": "uint64_t pt_clone_user(uint64_t parent_cr3);"}, {"kind": "function", "line": 319, "name": "pt_free_user", "signature": "void pt_free_user(uint64_t cr3);"}, {"kind": "function", "line": 324, "name": "caller", "signature": "* caller (shell mrun) reaps it with do_waitpid. Returns pid or -1. * Programs using mmap/VMA or expecting a shared fd table beyond * O_RDONLY stdin-style use are best-effort in this revision. */ int p"}, {"kind": "variable", "line": 200, "name": "cpus", "signature": "extern cpu_t cpus[MAX_CPUS];"}, {"kind": "variable", "line": 201, "name": "cpu_count", "signature": "extern int cpu_count;"}, {"doc": "Invariant: these structures are accessed by the BSP (boot processor) and will be accessed by APs (application processors) when SMP scheduling is enabled. All modifications must hold sched_lock. Per-CPU data (no lock needed): - cpu_t cpus[]: each CPU reads only its own entry via this_cpu() - GS base: set to &cpus[cpu_id] for kernel execution Shared data (protected by sched_lock): - procs[]: the process table - proc_count: the high-water mark of PIDs - scheduler state in schedule(), do_exit(), do_waitpid()", "kind": "variable", "line": 239, "name": "procs", "signature": "extern proc_t procs[MAX_PROCS];"}, {"kind": "variable", "line": 240, "name": "proc_count", "signature": "extern int proc_count;"}, {"kind": "variable", "line": 241, "name": "sys_ticks", "signature": "extern volatile uint64_t sys_ticks;"}, {"kind": "variable", "line": 242, "name": "user_program_active", "signature": "extern volatile int user_program_active;"}, {"kind": "variable", "line": 243, "name": "sched_lock", "signature": "extern spinlock_t sched_lock;"}, {"kind": "variable", "line": 244, "name": "sched_ready", "signature": "extern volatile int sched_ready;"}, {"doc": "APs (application processors) run CLONE_VM threads: same CR3 as their parent, so no brk/mmap view switch and no TLB shootdown is needed. Non-CLONE_VM processes stay on the BSP, which owns the shared g_brk/user_mmap_cur globals (guarded by mm_lock against concurrent brk/mmap syscalls from AP threads). Per-CPU idle contexts: an AP with no READY thread parks in ap_idle_proc[cpu] (pid -1, never in procs[], never picked by scans) instead of borrowing procs[0], which the BSP owns. current_pid == -1 on a CPU means that CPU is idle. smp_dispatches[cpu] counts threads first dispatched on that CPU; the `smp` shell builtin reports it, so parallel execution is observable * over the serial console without a framebuffer.", "kind": "variable", "line": 262, "name": "ap_idle_proc", "signature": "extern proc_t ap_idle_proc[MAX_CPUS];"}, {"kind": "variable", "line": 263, "name": "smp_dispatches", "signature": "extern volatile unsigned long smp_dispatches[MAX_CPUS];"}, {"kind": "variable", "line": 264, "name": "smp_idle_polls", "signature": "extern volatile unsigned long smp_idle_polls[MAX_CPUS];"}, {"doc": "Timer ticks that arrived with a GS base outside cpus[] (fail-safe * EOI, no scheduling action). Zero in a healthy boot.", "kind": "variable", "line": 267, "name": "smp_dbg_bad_gs", "signature": "extern volatile unsigned smp_dbg_bad_gs;"}, {"kind": "variable", "line": 276, "name": "bsp_idtr", "signature": "extern idtr_t bsp_idtr;"}, {"kind": "variable", "line": 285, "name": "isr_cnt_kbd", "signature": "extern volatile unsigned long isr_cnt_kbd;"}, {"kind": "variable", "line": 286, "name": "isr_cnt_mouse", "signature": "extern volatile unsigned long isr_cnt_mouse;"}, {"kind": "variable", "line": 287, "name": "isr_cnt_sb16", "signature": "extern volatile unsigned long isr_cnt_sb16;"}, {"kind": "macro", "line": 2, "name": "SCHED_H", "signature": "#define SCHED_H"}, {"kind": "macro", "line": 9, "name": "PROC_FREE", "signature": "#define PROC_FREE"}, {"kind": "macro", "line": 10, "name": "PROC_READY", "signature": "#define PROC_READY"}, {"kind": "macro", "line": 11, "name": "PROC_RUNNING", "signature": "#define PROC_RUNNING"}, {"kind": "macro", "line": 12, "name": "PROC_BLOCKED", "signature": "#define PROC_BLOCKED"}, {"kind": "macro", "line": 13, "name": "PROC_ZOMBIE", "signature": "#define PROC_ZOMBIE"}, {"kind": "macro", "line": 17, "name": "PROC_SWITCHING", "signature": "#define PROC_SWITCHING"}, {"kind": "macro", "line": 20, "name": "MAX_PROCS", "signature": "#define MAX_PROCS"}, {"kind": "macro", "line": 21, "name": "PROC_KSTACK_SZ", "signature": "#define PROC_KSTACK_SZ"}, {"kind": "macro", "line": 24, "name": "MAX_CPUS", "signature": "#define MAX_CPUS"}, {"kind": "macro", "line": 25, "name": "BOOT_CPU", "signature": "#define BOOT_CPU"}, {"kind": "macro", "line": 94, "name": "PROC_T_SIZE", "signature": "#define PROC_T_SIZE"}, {"kind": "macro", "line": 95, "name": "PROC_KSTACK_OFF", "signature": "#define PROC_KSTACK_OFF"}, {"kind": "macro", "line": 100, "name": "PROC_FPU_OFF", "signature": "#define PROC_FPU_OFF"}, {"kind": "macro", "line": 107, "name": "PROC_PID_OFF", "signature": "#define PROC_PID_OFF"}, {"kind": "macro", "line": 108, "name": "PROC_FSBASE_OFF", "signature": "#define PROC_FSBASE_OFF"}, {"kind": "macro", "line": 110, "name": "FPU_SAVE_SZ", "signature": "#define FPU_SAVE_SZ"}, {"kind": "macro", "line": 111, "name": "FPU_MXCSR_OFF", "signature": "#define FPU_MXCSR_OFF"}, {"kind": "macro", "line": 112, "name": "FPU_MXCSR_DEFAULT", "signature": "#define FPU_MXCSR_DEFAULT"}, {"kind": "macro", "line": 116, "name": "SECCOMP_MIN", "signature": "#define SECCOMP_MIN"}, {"kind": "macro", "line": 117, "name": "SECCOMP_MAX", "signature": "#define SECCOMP_MAX"}, {"kind": "macro", "line": 118, "name": "SECCOMP_BIT", "signature": "#define SECCOMP_BIT(n)"}, {"kind": "macro", "line": 121, "name": "SECCOMP_OP_DENY_ONE", "signature": "#define SECCOMP_OP_DENY_ONE"}, {"kind": "macro", "line": 122, "name": "SECCOMP_OP_ALLOW_ONE", "signature": "#define SECCOMP_OP_ALLOW_ONE"}, {"kind": "macro", "line": 123, "name": "SECCOMP_OP_DENY_ALL", "signature": "#define SECCOMP_OP_DENY_ALL"}, {"kind": "macro", "line": 130, "name": "RLIM_OP_SET", "signature": "#define RLIM_OP_SET"}, {"kind": "macro", "line": 131, "name": "RLIM_OP_GET", "signature": "#define RLIM_OP_GET"}, {"kind": "macro", "line": 132, "name": "RLIM_AS", "signature": "#define RLIM_AS"}, {"kind": "macro", "line": 133, "name": "RLIM_CPU", "signature": "#define RLIM_CPU"}, {"kind": "macro", "line": 134, "name": "RLIM_NOFILE", "signature": "#define RLIM_NOFILE"}, {"kind": "macro", "line": 135, "name": "RLIM_EXIT_CPU", "signature": "#define RLIM_EXIT_CPU"}, {"kind": "macro", "line": 137, "name": "NICE_MIN", "signature": "#define NICE_MIN"}, {"kind": "macro", "line": 138, "name": "NICE_MAX", "signature": "#define NICE_MAX"}, {"kind": "macro", "line": 139, "name": "NICE_DEFAULT", "signature": "#define NICE_DEFAULT"}, {"kind": "macro", "line": 144, "name": "SCHED_BASE_QUANTUM", "signature": "#define SCHED_BASE_QUANTUM"}, {"kind": "macro", "line": 145, "name": "SCHED_NICE_MULT_KEY", "signature": "#define SCHED_NICE_MULT_KEY"}, {"kind": "macro", "line": 146, "name": "SCHED_NICE_MULT_CHARGE", "signature": "#define SCHED_NICE_MULT_CHARGE"}, {"kind": "macro", "line": 147, "name": "SCHED_NICE_OFFSET", "signature": "#define SCHED_NICE_OFFSET"}, {"kind": "macro", "line": 150, "name": "CLONE_VM", "signature": "#define CLONE_VM"}, {"kind": "macro", "line": 151, "name": "CLONE_FILES", "signature": "#define CLONE_FILES"}, {"kind": "macro", "line": 218, "name": "current_pid", "signature": "#define current_pid"}, {"kind": "macro", "line": 222, "name": "DESKTOP_TICK_INTERVAL", "signature": "#define DESKTOP_TICK_INTERVAL"}, {"kind": "macro", "line": 272, "name": "TSS_SEL", "signature": "#define TSS_SEL(cpu)"}, {"kind": "macro", "line": 313, "name": "WAITPID_NONE", "signature": "#define WAITPID_NONE"}]}, {"doc": "shell.h -- shared shell constants and the line reader/parser reused by", "id": "headers/shell.h", "kind": "module", "label": "shell.h", "language": "h", "sha256": "e15caade47d2ad87", "symbol_count": 7, "symbols": [{"doc": "Read one line into buf with arrow-key editing; used by the built-in * editor to edit file text.", "kind": "function", "line": 18, "name": "shell_readline_buf", "signature": "void shell_readline_buf(char *buf, int size);"}, {"doc": "Read one line into buf with arrow-key editing; used by the built-in * editor to edit file text. void shell_readline_buf(char *buf, int size); /* Tokenize `line` into up to `max_args` argv entries; returns argc.", "kind": "function", "line": 21, "name": "shell_parse", "signature": "int shell_parse(char *line, char **argv, int max_args);"}, {"doc": "Strict signed decimal parse for numeric shell/editor operands: an optional sign followed by at least one digit, whole string consumed, fail-closed on empty input, trailing garbage or overflow. Returns 1 and sets *out on success, 0 otherwise. Replaces katol (which stops at the first non-digit and wraps on overflow) at every builtin call * site, so `kill 12abc` is a diagnostic instead of pid 12.", "kind": "function", "line": 29, "name": "shell_parse_long", "signature": "int shell_parse_long(const char *s, long *out);"}, {"doc": "Execute a shell script: read `path` line by line, skip blanks and `#` comments, parse each line and dispatch it through the normal builtin/ * program path. Returns 0 on success, 1 on file error.", "kind": "function", "line": 34, "name": "shell_cmd_sh", "signature": "int shell_cmd_sh(int argc, char **argv);"}, {"kind": "macro", "line": 2, "name": "SHELL_H", "signature": "#define SHELL_H"}, {"kind": "macro", "line": 13, "name": "CMD_BUF_SZ", "signature": "#define CMD_BUF_SZ"}, {"kind": "macro", "line": 14, "name": "MAX_ARGS", "signature": "#define MAX_ARGS"}]}, {"doc": "SMP bring-up: wake the application processors (APs) via the LAPIC INIT/SIPI", "id": "headers/smp.h", "kind": "module", "label": "smp.h", "language": "h", "sha256": "945281fcfccfc924", "symbol_count": 11, "symbols": [{"kind": "function", "line": 41, "name": "smp_init", "signature": "void smp_init(void);"}, {"kind": "function", "line": 42, "name": "smp_ap_entry", "signature": "void smp_ap_entry(void);"}, {"doc": "PIT-anchored LAPIC calibration (ticks per 10 ms at divide-by-16). Measured once by the BSP in smp_init; the AP periodic timer uses it when MINIOS_AP_TIMER is set. lapic_cal_valid is 0 on the fixed * 625000-tick fallback. extern unsigned lapic_cal_10ms; extern int lapic_cal_valid; void smp_init(void); void smp_ap_entry(void); /* entry point each AP jumps to from ap_entry.S", "kind": "function", "line": 43, "name": "smp_ipi_broadcast", "signature": "void smp_ipi_broadcast(int vector);"}, {"kind": "variable", "line": 25, "name": "smp_lock", "signature": "extern spinlock_t smp_lock;"}, {"doc": "Read-back diagnostics written by the AP after its LAPIC setup; the `smp` builtin prints them so a dead AP's APIC state is visible over * the serial console.", "kind": "variable", "line": 30, "name": "smp_dbg_svr", "signature": "extern volatile unsigned smp_dbg_svr;"}, {"kind": "variable", "line": 31, "name": "smp_dbg_lvt", "signature": "extern volatile unsigned smp_dbg_lvt;"}, {"kind": "variable", "line": 32, "name": "smp_dbg_ipis", "signature": "extern volatile unsigned smp_dbg_ipis;"}, {"doc": "Read-back diagnostics written by the AP after its LAPIC setup; the `smp` builtin prints them so a dead AP's APIC state is visible over * the serial console. extern volatile unsigned smp_dbg_svr; extern volatile unsigned smp_dbg_lvt; extern volatile unsigned smp_dbg_ipis; /* vector-32 ISRs run on APs", "kind": "variable", "line": 33, "name": "smp_dbg_sent", "signature": "extern volatile unsigned smp_dbg_sent;"}, {"doc": "PIT-anchored LAPIC calibration (ticks per 10 ms at divide-by-16). Measured once by the BSP in smp_init; the AP periodic timer uses it when MINIOS_AP_TIMER is set. lapic_cal_valid is 0 on the fixed * 625000-tick fallback.", "kind": "variable", "line": 38, "name": "lapic_cal_10ms", "signature": "extern unsigned lapic_cal_10ms;"}, {"kind": "variable", "line": 39, "name": "lapic_cal_valid", "signature": "extern int lapic_cal_valid;"}, {"kind": "macro", "line": 2, "name": "SMP_H", "signature": "#define SMP_H"}]}, {"doc": "Docstring: Scalar shared-window view saved across a child run.", "id": "headers/spawn.h", "kind": "module", "label": "spawn.h", "language": "h", "sha256": "cb449fa6aeaba8a4", "symbol_count": 9, "symbols": [{"doc": "#ifndef SPAWN_H #define SPAWN_H #include \"kernel.h\" #include \"vma.h\" #include \"sched.h\" /** Docstring: Scalar shared-window view saved across a child run.", "kind": "struct", "line": 9, "name": "spawn_ctx_t"}, {"doc": "typedef struct { unsigned long brk; unsigned long brk_lim; unsigned long mmap_cur; unsigned long fsbase; unsigned long gsbase; uint64_t p0_kstack; vma_node_t *live_root; vma_node_t *free_root; int pool_n; KFILE *kfd[KFD_MAX]; } spawn_ctx_t; /** Docstring: Save the caller shared-window view into ctx.", "kind": "function", "line": 23, "name": "spawn_backup", "signature": "void spawn_backup(spawn_ctx_t *ctx);"}, {"doc": "unsigned long mmap_cur; unsigned long fsbase; unsigned long gsbase; uint64_t p0_kstack; vma_node_t *live_root; vma_node_t *free_root; int pool_n; KFILE *kfd[KFD_MAX]; } spawn_ctx_t; /** Docstring: Save the caller shared-window view into ctx. void spawn_backup(spawn_ctx_t *ctx); /** Docstring: Restore a view previously saved by spawn_backup.", "kind": "function", "line": 26, "name": "spawn_restore", "signature": "void spawn_restore(spawn_ctx_t *ctx);"}, {"doc": "uint64_t p0_kstack; vma_node_t *live_root; vma_node_t *free_root; int pool_n; KFILE *kfd[KFD_MAX]; } spawn_ctx_t; /** Docstring: Save the caller shared-window view into ctx. void spawn_backup(spawn_ctx_t *ctx); /** Docstring: Restore a view previously saved by spawn_backup. void spawn_restore(spawn_ctx_t *ctx); /** Docstring: Validate user argv words against the user window.", "kind": "function", "line": 29, "name": "spawn_validate_argv", "signature": "int spawn_validate_argv(int argc, const char **uargv);"}, {"doc": "int pool_n; KFILE *kfd[KFD_MAX]; } spawn_ctx_t; /** Docstring: Save the caller shared-window view into ctx. void spawn_backup(spawn_ctx_t *ctx); /** Docstring: Restore a view previously saved by spawn_backup. void spawn_restore(spawn_ctx_t *ctx); /** Docstring: Validate user argv words against the user window. int spawn_validate_argv(int argc, const char **uargv); /** Docstring: Copy user argv into kernel memory, zero terminated.", "kind": "function", "line": 32, "name": "spawn_copy_argv", "signature": "char **spawn_copy_argv(int argc, const char **uargv);"}, {"doc": "/** Docstring: Save the caller shared-window view into ctx. void spawn_backup(spawn_ctx_t *ctx); /** Docstring: Restore a view previously saved by spawn_backup. void spawn_restore(spawn_ctx_t *ctx); /** Docstring: Validate user argv words against the user window. int spawn_validate_argv(int argc, const char **uargv); /** Docstring: Copy user argv into kernel memory, zero terminated. char **spawn_copy_argv(int argc, const char **uargv); /** Docstring: Release a copy produced by spawn_copy_argv.", "kind": "function", "line": 35, "name": "spawn_free_argv", "signature": "void spawn_free_argv(char **kargv, int argc);"}, {"doc": "/** Docstring: Restore a view previously saved by spawn_backup. void spawn_restore(spawn_ctx_t *ctx); /** Docstring: Validate user argv words against the user window. int spawn_validate_argv(int argc, const char **uargv); /** Docstring: Copy user argv into kernel memory, zero terminated. char **spawn_copy_argv(int argc, const char **uargv); /** Docstring: Release a copy produced by spawn_copy_argv. void spawn_free_argv(char **kargv, int argc); /** Docstring: Snapshot a resolved path into a kernel buffer.", "kind": "function", "line": 38, "name": "spawn_load_image", "signature": "unsigned char *spawn_load_image(const char *resolved, unsigned *size_out);"}, {"doc": "/** Docstring: Validate user argv words against the user window. int spawn_validate_argv(int argc, const char **uargv); /** Docstring: Copy user argv into kernel memory, zero terminated. char **spawn_copy_argv(int argc, const char **uargv); /** Docstring: Release a copy produced by spawn_copy_argv. void spawn_free_argv(char **kargv, int argc); /** Docstring: Snapshot a resolved path into a kernel buffer. unsigned char *spawn_load_image(const char *resolved, unsigned *size_out); /** Docstring: Run a loaded image by ELF type, return child status.", "kind": "function", "line": 41, "name": "spawn_execute", "signature": "int spawn_execute(const char *resolved, const char *redirect, unsigned char *data, unsigned data_size, int argc, char **kargv, const char **uargv_fallback);"}, {"kind": "macro", "line": 2, "name": "SPAWN_H", "signature": "#define SPAWN_H"}]}, {"doc": "spinlock.h -- Lightweight spinlock for MiniOS kernel.", "id": "headers/spinlock.h", "kind": "module", "label": "spinlock.h", "language": "h", "sha256": "323ebec66667f400", "symbol_count": 19, "symbols": [{"kind": "struct", "line": 37, "name": "spinlock_t"}, {"kind": "type_alias", "line": 40, "name": "irqflags_t", "signature": "typedef unsigned long irqflags_t;"}, {"kind": "function", "line": 45, "name": "spin_init", "signature": "static inline void spin_init(spinlock_t *lock)"}, {"doc": "Host unit-test variants (tests/test_sync.c, `make test-sync`): cli/sti and pushf/popf are privileged and fault in userspace, so the host build spins on the GCC atomics only and treats interrupt state as a dummy value. Kernel builds never define SYNC_HOST_TEST and always take the * real path in the #else branch below.", "kind": "function", "line": 55, "name": "spin_save_irq", "signature": "static inline irqflags_t spin_save_irq(void)"}, {"kind": "function", "line": 56, "name": "spin_restore_irq", "signature": "static inline void spin_restore_irq(irqflags_t flags)"}, {"kind": "function", "line": 57, "name": "spin_lock", "signature": "static inline void spin_lock(spinlock_t *lock)"}, {"kind": "function", "line": 62, "name": "spin_unlock", "signature": "static inline void spin_unlock(spinlock_t *lock)"}, {"kind": "function", "line": 66, "name": "spin_lock_irqsave", "signature": "static inline void spin_lock_irqsave(spinlock_t *lock, irqflags_t *flags)"}, {"kind": "function", "line": 72, "name": "spin_unlock_irqrestore", "signature": "static inline void spin_unlock_irqrestore(spinlock_t *lock, irqflags_t flags)"}, {"kind": "function", "line": 77, "name": "spin_unlock_keep_irq", "signature": "static inline void spin_unlock_keep_irq(spinlock_t *lock)"}, {"kind": "function", "line": 81, "name": "spin_trylock", "signature": "static inline int spin_trylock(spinlock_t *lock)"}, {"doc": "__sync_lock_release(&lock->locked); } static inline void spin_unlock_keep_irq(spinlock_t *lock) { __sync_synchronize(); __sync_lock_release(&lock->locked); } static inline int spin_trylock(spinlock_t *lock) { int was = __sync_lock_test_and_set(&lock->locked, 1); if (!was) __sync_synchronize(); return !was; } #else /* Read RFLAGS and disable interrupts.", "kind": "function", "line": 89, "name": "spin_save_irq", "signature": "static inline irqflags_t spin_save_irq(void)"}, {"doc": "int was = __sync_lock_test_and_set(&lock->locked, 1); if (!was) __sync_synchronize(); return !was; } #else /* Read RFLAGS and disable interrupts. static inline irqflags_t spin_save_irq(void) { irqflags_t flags; __asm__ volatile(\"pushfq; pop %0; cli\" : \"=r\"(flags)); return flags; } /* Restore RFLAGS (including IF) from a saved value.", "kind": "function", "line": 96, "name": "spin_restore_irq", "signature": "static inline void spin_restore_irq(irqflags_t flags)"}, {"doc": "Acquire the lock and disable interrupts. Interrupts are disabled before the CAS loop to prevent ISR re-entry. The memory clobber ensures the compiler does not reorder across the lock. * Use this from ISR context or when a single-level lock is sufficient.", "kind": "function", "line": 104, "name": "spin_lock", "signature": "static inline void spin_lock(spinlock_t *lock)"}, {"doc": "Release the lock and re-enable interrupts. The release uses __sync_lock_release which is a store-release with * the correct memory ordering.", "kind": "function", "line": 114, "name": "spin_unlock", "signature": "static inline void spin_unlock(spinlock_t *lock)"}, {"doc": "Release the lock WITHOUT touching interrupts (IF stays as-is). For context-switch paths: the lock was acquired with interrupts off and they must stay off across the switch, because a timer tick landing between the release and switch_to would park the half-switched state over the incoming thread's ctx. The incoming * context's own rflags decide IF after the switch.", "kind": "function", "line": 126, "name": "spin_unlock_keep_irq", "signature": "static inline void spin_unlock_keep_irq(spinlock_t *lock)"}, {"doc": "Release the lock and restore the saved interrupt state. If the caller's interrupts were enabled before spin_lock_irqsave, * they are re-enabled here. If they were disabled, they stay disabled.", "kind": "function", "line": 145, "name": "spin_unlock_irqrestore", "signature": "static inline void spin_unlock_irqrestore(spinlock_t *lock, irqflags_t flags)"}, {"kind": "macro", "line": 2, "name": "SPINLOCK_H", "signature": "#define SPINLOCK_H"}, {"kind": "macro", "line": 43, "name": "SPINLOCK_INIT", "signature": "#define SPINLOCK_INIT"}]}, {"doc": "sync.h -- Blocking synchronization primitives (roadmap Phase 3.1).", "id": "headers/sync.h", "kind": "module", "label": "sync.h", "language": "h", "sha256": "4047994d1e56bb3e", "symbol_count": 36, "symbols": [{"doc": "wait-queue linkage: procs chain through proc_t.wq_next, WQ_NONE ends the chain and marks an empty queue. PIDs start at 1 (sched.c), so a * zeroed proc_t never aliases a queued entry. #define WQ_NONE (-1) /* ---- Wait queues ----", "kind": "struct", "line": 42, "name": "wait_queue_t"}, {"doc": "--- Mutex (blocking, non-recursive) ---- Priority inheritance (thesis correction 3): a low-priority holder that blocks a high-priority waiter is boosted to the waiter's effective priority, transitively along the blocked-on chain, until it releases. pi_set_base assigns a thread's base priority (default 0); pi_get_eff reports the boosted value the scheduler must honor. State lives in sync.c parallel arrays: proc_t is 248 bytes by asm contract (sched.c * asserts it, syscall_entry hardcodes it), so no field can be added.", "kind": "struct", "line": 63, "name": "mutex_t"}, {"doc": "wait_queue_t waiters; } mutex_t; #define MUTEX_INIT { SPINLOCK_INIT, 0, WQ_NONE, WAIT_QUEUE_INIT } void mutex_init(mutex_t *m); void mutex_lock(mutex_t *m); void mutex_unlock(mutex_t *m); int mutex_trylock(mutex_t *m); void mutex_note_waiter(mutex_t *m, int waiter); void pi_set_base(int pid, int prio); int pi_get_eff(int pid); /* ---- Counting semaphore ----", "kind": "struct", "line": 81, "name": "sem_t"}, {"doc": "--- Condition variable ---- Always paired with a mutex: cond_wait atomically releases the mutex, sleeps, and re-acquires it before returning (Mesa semantics: re-check * the predicate in a loop).", "kind": "struct", "line": 97, "name": "cond_t"}, {"doc": "sleeps, and re-acquires it before returning (Mesa semantics: re-check * the predicate in a loop). typedef struct { wait_queue_t waiters; } cond_t; #define COND_INIT { WAIT_QUEUE_INIT } void cond_init(cond_t *c); void cond_wait(cond_t *c, mutex_t *m); void cond_signal(cond_t *c); void cond_broadcast(cond_t *c); /* ---- Read-write lock (writer-preferring, no recursion) ----", "kind": "struct", "line": 109, "name": "rwlock_t"}, {"kind": "function", "line": 50, "name": "wq_init", "signature": "void wq_init(wait_queue_t *q);"}, {"kind": "function", "line": 51, "name": "sleep_on", "signature": "void sleep_on(wait_queue_t *q);"}, {"kind": "function", "line": 52, "name": "wake_up", "signature": "int wake_up(wait_queue_t *q);"}, {"kind": "function", "line": 53, "name": "wake_up_all", "signature": "int wake_up_all(wait_queue_t *q);"}, {"kind": "function", "line": 56, "name": "inheritance", "signature": "* Priority inheritance (thesis correction 3): a low-priority holder that * blocks a high-priority waiter is boosted to the waiter's effective * priority, transitively along the blocked-on chain, until"}, {"kind": "function", "line": 72, "name": "mutex_init", "signature": "void mutex_init(mutex_t *m);"}, {"kind": "function", "line": 73, "name": "mutex_lock", "signature": "void mutex_lock(mutex_t *m);"}, {"kind": "function", "line": 74, "name": "mutex_unlock", "signature": "void mutex_unlock(mutex_t *m);"}, {"kind": "function", "line": 75, "name": "mutex_trylock", "signature": "int mutex_trylock(mutex_t *m);"}, {"kind": "function", "line": 76, "name": "mutex_note_waiter", "signature": "void mutex_note_waiter(mutex_t *m, int waiter);"}, {"kind": "function", "line": 77, "name": "pi_set_base", "signature": "void pi_set_base(int pid, int prio);"}, {"kind": "function", "line": 78, "name": "pi_get_eff", "signature": "int pi_get_eff(int pid);"}, {"kind": "function", "line": 89, "name": "sem_init", "signature": "void sem_init(sem_t *s, int value);"}, {"kind": "function", "line": 90, "name": "sem_wait", "signature": "void sem_wait(sem_t *s);"}, {"kind": "function", "line": 91, "name": "sem_post", "signature": "void sem_post(sem_t *s);"}, {"kind": "function", "line": 103, "name": "cond_init", "signature": "void cond_init(cond_t *c);"}, {"kind": "function", "line": 104, "name": "cond_wait", "signature": "void cond_wait(cond_t *c, mutex_t *m);"}, {"kind": "function", "line": 105, "name": "cond_signal", "signature": "void cond_signal(cond_t *c);"}, {"kind": "function", "line": 106, "name": "cond_broadcast", "signature": "void cond_broadcast(cond_t *c);"}, {"kind": "function", "line": 118, "name": "rwlock_init", "signature": "void rwlock_init(rwlock_t *rw);"}, {"kind": "function", "line": 119, "name": "rwlock_read_lock", "signature": "void rwlock_read_lock(rwlock_t *rw);"}, {"kind": "function", "line": 120, "name": "rwlock_read_unlock", "signature": "void rwlock_read_unlock(rwlock_t *rw);"}, {"kind": "function", "line": 121, "name": "rwlock_write_lock", "signature": "void rwlock_write_lock(rwlock_t *rw);"}, {"kind": "function", "line": 122, "name": "rwlock_write_unlock", "signature": "void rwlock_write_unlock(rwlock_t *rw);"}, {"kind": "macro", "line": 2, "name": "SYNC_H", "signature": "#define SYNC_H"}, {"kind": "macro", "line": 39, "name": "WQ_NONE", "signature": "#define WQ_NONE"}, {"kind": "macro", "line": 48, "name": "WAIT_QUEUE_INIT", "signature": "#define WAIT_QUEUE_INIT"}, {"kind": "macro", "line": 70, "name": "MUTEX_INIT", "signature": "#define MUTEX_INIT"}, {"kind": "macro", "line": 87, "name": "SEM_INIT", "signature": "#define SEM_INIT(n)"}, {"kind": "macro", "line": 101, "name": "COND_INIT", "signature": "#define COND_INIT"}, {"kind": "macro", "line": 116, "name": "RWLOCK_INIT", "signature": "#define RWLOCK_INIT"}]}, {"doc": "syscalls_proc.h -- process-management syscall handlers shared with the", "id": "headers/syscalls_proc.h", "kind": "module", "label": "syscalls_proc.h", "language": "h", "sha256": "2efb3e64f0f279d0", "symbol_count": 15, "symbols": [{"kind": "function", "line": 5, "name": "dispatcher", "signature": "* dispatcher (kernel/syscalls.c). These handlers touch only scheduler * state (current_pid, procs[], do_* / seccomp_* / yield) plus the * kernel-wide user_range_ok validator, so they live in their own"}, {"kind": "function", "line": 12, "name": "sys_minios_nice", "signature": "long sys_minios_nice(long a1, long a2, long a3, long a4, long a5, long a6);"}, {"kind": "function", "line": 13, "name": "sys_minios_clone", "signature": "long sys_minios_clone(long flags, long newsp, long a3, long a4, long a5, long a6);"}, {"kind": "function", "line": 14, "name": "sys_minios_thread_spawn", "signature": "long sys_minios_thread_spawn(long a1, long a2, long a3, long a4, long a5, long a6);"}, {"kind": "function", "line": 15, "name": "sys_linux_yield", "signature": "long sys_linux_yield(long a1, long a2, long a3, long a4, long a5, long a6);"}, {"kind": "function", "line": 16, "name": "sys_linux_getpid", "signature": "long sys_linux_getpid(long a1, long a2, long a3, long a4, long a5, long a6);"}, {"kind": "function", "line": 17, "name": "sys_linux_gettid", "signature": "long sys_linux_gettid(long a1, long a2, long a3, long a4, long a5, long a6);"}, {"kind": "function", "line": 18, "name": "sys_linux_fork", "signature": "long sys_linux_fork(long a1, long a2, long a3, long a4, long a5, long a6);"}, {"kind": "function", "line": 19, "name": "sys_linux_vfork", "signature": "long sys_linux_vfork(long a1, long a2, long a3, long a4, long a5, long a6);"}, {"kind": "function", "line": 20, "name": "sys_linux_execve", "signature": "long sys_linux_execve(long a1, long a2, long a3, long a4, long a5, long a6);"}, {"kind": "function", "line": 21, "name": "sys_linux_exit", "signature": "long sys_linux_exit(long a1, long a2, long a3, long a4, long a5, long a6);"}, {"kind": "function", "line": 22, "name": "sys_linux_wait4", "signature": "long sys_linux_wait4(long a1, long a2, long a3, long a4, long a5, long a6);"}, {"kind": "function", "line": 23, "name": "sys_linux_kill", "signature": "long sys_linux_kill(long a1, long a2, long a3, long a4, long a5, long a6);"}, {"doc": "long sys_minios_nice(long a1, long a2, long a3, long a4, long a5, long a6); long sys_minios_clone(long flags, long newsp, long a3, long a4, long a5, long a6); long sys_minios_thread_spawn(long a1, long a2, long a3, long a4, long a5, long a6); long sys_linux_yield(long a1, long a2, long a3, long a4, long a5, long a6); long sys_linux_getpid(long a1, long a2, long a3, long a4, long a5, long a6); long sys_linux_gettid(long a1, long a2, long a3, long a4, long a5, long a6); long sys_linux_fork(long a1, long a2, long a3, long a4, long a5, long a6); long sys_linux_vfork(long a1, long a2, long a3, long a4, long a5, long a6); long sys_linux_execve(long a1, long a2, long a3, long a4, long a5, long a6); long sys_linux_exit(long a1, long a2, long a3, long a4, long a5, long a6); long sys_linux_wait4(long a1, long a2, long a3, long a4, long a5, long a6); long sys_linux_kill(long a1, long a2, long a3, long a4, long a5, long a6); /* Shared exit path for sys_linux_exit and the exit_group fall-through.", "kind": "function", "line": 26, "name": "do_proc_exit", "signature": "long do_proc_exit(long code);"}, {"kind": "macro", "line": 2, "name": "SYSCALLS_PROC_H", "signature": "#define SYSCALLS_PROC_H"}]}, {"doc": "Docstring: Tick listener bus contract.", "id": "headers/tick.h", "kind": "module", "label": "tick.h", "language": "h", "sha256": "92bbbae8f58f51b6", "symbol_count": 13, "symbols": [{"doc": "desktop effect, plus a pure gating predicate for the desktop tick. Design: fixed-size tables, no heap, no locks. Registration happens at boot before sti, dispatch happens in ISR context and only reads. A failed registration returns a negative code and changes nothing. A null entry is never dispatched. Dispatch order equals registration order. Behavior of existing listeners is unchanged; only the call path moves. #ifndef TICK_H #define TICK_H /** Docstring: Centralized bounds for the tick listener bus.", "kind": "struct", "line": 21, "name": "tick_config_t"}, {"doc": "#define TICK_MAX_AUDIO_LISTENERS 8 /** Docstring: Default desktop bus capacity. #define TICK_MAX_DESKTOP_LISTENERS 8 /** Docstring: Default bus configuration. #define TICK_CONFIG_DEFAULT ((tick_config_t){ \\ TICK_MAX_AUDIO_LISTENERS, \\ TICK_MAX_DESKTOP_LISTENERS \\ }) /** Docstring: Periodic effect signature. Context is opaque to the bus. typedef void (*tick_fn_t)(void *ctx); /** Docstring: Reset both listener lists to empty.", "kind": "function", "line": 41, "name": "tick_reset", "signature": "void tick_reset(void);"}, {"doc": "Docstring: Register an unconditional BSP audio effect. Returns 0 on success, -1 when the handler is null or the audio table is full. A refusal changes nothing.", "kind": "function", "line": 48, "name": "tick_register_audio", "signature": "int tick_register_audio(tick_fn_t fn, void *ctx);"}, {"doc": "Docstring: Register a gated desktop effect. Returns 0 on success, -1 when the handler is null or the desktop table is full. A refusal changes nothing.", "kind": "function", "line": 55, "name": "tick_register_desktop", "signature": "int tick_register_desktop(tick_fn_t fn, void *ctx);"}, {"doc": "Docstring: Register a gated desktop effect. Returns 0 on success, -1 when the handler is null or the desktop table is full. A refusal changes nothing. int tick_register_desktop(tick_fn_t fn, void *ctx); /** Docstring: Run audio listeners in registration order.", "kind": "function", "line": 58, "name": "tick_run_audio", "signature": "void tick_run_audio(void);"}, {"doc": "Docstring: Register a gated desktop effect. Returns 0 on success, -1 when the handler is null or the desktop table is full. A refusal changes nothing. int tick_register_desktop(tick_fn_t fn, void *ctx); /** Docstring: Run audio listeners in registration order. void tick_run_audio(void); /** Docstring: Run desktop listeners in registration order.", "kind": "function", "line": 61, "name": "tick_run_desktop", "signature": "void tick_run_desktop(void);"}, {"doc": "Docstring: Register a gated desktop effect. Returns 0 on success, -1 when the handler is null or the desktop table is full. A refusal changes nothing. int tick_register_desktop(tick_fn_t fn, void *ctx); /** Docstring: Run audio listeners in registration order. void tick_run_audio(void); /** Docstring: Run desktop listeners in registration order. void tick_run_desktop(void); /** Docstring: Count registered audio listeners.", "kind": "function", "line": 64, "name": "tick_audio_count", "signature": "int tick_audio_count(void);"}, {"doc": "table is full. A refusal changes nothing. int tick_register_desktop(tick_fn_t fn, void *ctx); /** Docstring: Run audio listeners in registration order. void tick_run_audio(void); /** Docstring: Run desktop listeners in registration order. void tick_run_desktop(void); /** Docstring: Count registered audio listeners. int tick_audio_count(void); /** Docstring: Count registered desktop listeners.", "kind": "function", "line": 67, "name": "tick_desktop_count", "signature": "int tick_desktop_count(void);"}, {"doc": "Docstring: Pure desktop gating predicate. Returns nonzero when the given tick count falls on a desktop tick for the given interval. A non-positive interval never fires. Holds for every tick value including zero.", "kind": "function", "line": 75, "name": "tick_desktop_due", "signature": "int tick_desktop_due(unsigned long long ticks, unsigned interval);"}, {"kind": "macro", "line": 18, "name": "TICK_H", "signature": "#define TICK_H"}, {"kind": "macro", "line": 27, "name": "TICK_MAX_AUDIO_LISTENERS", "signature": "#define TICK_MAX_AUDIO_LISTENERS"}, {"kind": "macro", "line": 29, "name": "TICK_MAX_DESKTOP_LISTENERS", "signature": "#define TICK_MAX_DESKTOP_LISTENERS"}, {"kind": "macro", "line": 32, "name": "TICK_CONFIG_DEFAULT", "signature": "#define TICK_CONFIG_DEFAULT"}]}, {"doc": "========== TLS 1.2 client (RFC 5246) ==========", "id": "headers/tls.h", "kind": "module", "label": "tls.h", "language": "h", "sha256": "b2b96cce83ce602a", "symbol_count": 73, "symbols": [{"kind": "struct", "line": 70, "name": "tls_root"}, {"kind": "struct", "line": 79, "name": "sha256_ctx"}, {"kind": "struct", "line": 85, "name": "tls_pubkey"}, {"kind": "struct", "line": 95, "name": "tls_session"}, {"doc": "Kernel built without the TLS engine (net/tls*.c unlinked): no session can ever exist, so the net.c close path needs no call. Inline no-op * keeps the reference without pulling the engine back in.", "kind": "function", "line": 293, "name": "tls_free_fd", "signature": "static inline void tls_free_fd(int fd)"}, {"kind": "function", "line": 168, "name": "sha256_init", "signature": "void sha256_init(struct sha256_ctx *c);"}, {"kind": "function", "line": 169, "name": "sha256_update", "signature": "void sha256_update(struct sha256_ctx *c, const unsigned char *data, unsigned len);"}, {"kind": "function", "line": 170, "name": "sha256_final", "signature": "void sha256_final(struct sha256_ctx *c, unsigned char out[32]);"}, {"kind": "function", "line": 171, "name": "sha256", "signature": "void sha256(const unsigned char *data, unsigned len, unsigned char out[32]);"}, {"kind": "function", "line": 172, "name": "sha384", "signature": "void sha384(const unsigned char *data, unsigned len, unsigned char out[48]);"}, {"kind": "function", "line": 174, "name": "hmac_sha256", "signature": "void hmac_sha256(const unsigned char *key, unsigned klen, const unsigned char *data, unsigned dlen, unsigned char out[32]);"}, {"doc": "/* ========== Crypto (tls_crypto.c) ========== void sha256_init(struct sha256_ctx *c); void sha256_update(struct sha256_ctx *c, const unsigned char *data, unsigned len); void sha256_final(struct sha256_ctx *c, unsigned char out[32]); void sha256(const unsigned char *data, unsigned len, unsigned char out[32]); void sha384(const unsigned char *data, unsigned len, unsigned char out[48]); void hmac_sha256(const unsigned char *key, unsigned klen, const unsigned char *data, unsigned dlen, unsigned char out[32]); /* TLS 1.2 PRF with SHA-256", "kind": "function", "line": 179, "name": "tls_prf", "signature": "void tls_prf(const unsigned char *secret, unsigned secret_len, const char *label, const unsigned char *seed, unsigned seed_len, unsigned char *out, unsigned out_len);"}, {"doc": "void sha256_final(struct sha256_ctx *c, unsigned char out[32]); void sha256(const unsigned char *data, unsigned len, unsigned char out[32]); void sha384(const unsigned char *data, unsigned len, unsigned char out[48]); void hmac_sha256(const unsigned char *key, unsigned klen, const unsigned char *data, unsigned dlen, unsigned char out[32]); /* TLS 1.2 PRF with SHA-256 void tls_prf(const unsigned char *secret, unsigned secret_len, const char *label, const unsigned char *seed, unsigned seed_len, unsigned char *out, unsigned out_len); /* AES-128 block cipher (key expansion internal; T-table implementation)", "kind": "function", "line": 184, "name": "aes128_encrypt_block", "signature": "void aes128_encrypt_block(const unsigned char key[16], const unsigned char in[16], unsigned char out[16]);"}, {"doc": "GCM. Each call seals one record: tag = 16 bytes appended to ct. * Returns 0 on success, -1 on overflow (len > TLS_REC_MAX).", "kind": "function", "line": 189, "name": "aes128_gcm_seal", "signature": "int aes128_gcm_seal(const unsigned char key[16], const unsigned char salt[4], unsigned long long seq, const unsigned char *aad, unsigned aad_len, const unsigned char *pt, unsigned pt_len, unsigned cha"}, {"doc": "GCM. Each call seals one record: tag = 16 bytes appended to ct. * Returns 0 on success, -1 on overflow (len > TLS_REC_MAX). int aes128_gcm_seal(const unsigned char key[16], const unsigned char salt[4], unsigned long long seq, const unsigned char *aad, unsigned aad_len, const unsigned char *pt, unsigned pt_len, unsigned char *ct, unsigned char tag[16]); /* Returns 0 when the tag verifies, -1 otherwise (constant-time compare).", "kind": "function", "line": 197, "name": "aes128_gcm_open", "signature": "int aes128_gcm_open(const unsigned char key[16], const unsigned char salt[4], unsigned long long seq, const unsigned char *aad, unsigned aad_len, const unsigned char *ct, unsigned ct_len, const unsign"}, {"doc": "Core GCM with an arbitrary 12-byte nonce (the TLS API above is the 4-byte salt + 8-byte sequence special case). Used by the host tests * against the NIST vectors.", "kind": "function", "line": 208, "name": "aes128_gcm_seal_core", "signature": "int aes128_gcm_seal_core(const unsigned char key[16], const unsigned char nonce[12], const unsigned char *aad, unsigned aad_len, const unsigned char *pt, unsigned pt_len, unsigned char *ct, unsigned c"}, {"kind": "function", "line": 213, "name": "aes128_gcm_open_core", "signature": "int aes128_gcm_open_core(const unsigned char key[16], const unsigned char nonce[12], const unsigned char *aad, unsigned aad_len, const unsigned char *ct, unsigned ct_len, const unsigned char tag[16], "}, {"doc": "secp256r1 / secp384r1: shared Jacobian point arithmetic over NIST * primes. curve: 0 = P-256, 1 = P-384.", "kind": "function", "line": 222, "name": "p256_scalar_mult", "signature": "int p256_scalar_mult(const unsigned char scalar[32], const unsigned char qx[32], const unsigned char qy[32], unsigned char rx[32], unsigned char ry[32]);"}, {"kind": "function", "line": 225, "name": "p384_scalar_mult", "signature": "int p384_scalar_mult(const unsigned char scalar[48], const unsigned char qx[48], const unsigned char qy[48], unsigned char rx[48], unsigned char ry[48]);"}, {"doc": "ECDH shared secret: Z = priv * peer_pub (P-256). Returns 0 on success, * -1 when the peer point is not on the curve (fail closed).", "kind": "function", "line": 231, "name": "p256_ecdh", "signature": "int p256_ecdh(const unsigned char priv[32], const unsigned char peer_x[32], const unsigned char peer_y[32], unsigned char z[32]);"}, {"doc": "ECDH shared secret: Z = priv * peer_pub (P-256). Returns 0 on success, * -1 when the peer point is not on the curve (fail closed). int p256_ecdh(const unsigned char priv[32], const unsigned char peer_x[32], const unsigned char peer_y[32], unsigned char z[32]); /* P-256 point validation and helpers for the handshake", "kind": "function", "line": 236, "name": "p256_point_valid", "signature": "int p256_point_valid(const unsigned char x[32], const unsigned char y[32]);"}, {"kind": "function", "line": 237, "name": "p256_pub", "signature": "int p256_pub(const unsigned char priv[32], unsigned char x[32], unsigned char y[32]);"}, {"kind": "function", "line": 239, "name": "p256_scalar_valid", "signature": "int p256_scalar_valid(const unsigned char scalar[32]);"}, {"doc": "ECDSA verify over a SHA-256 or SHA-384 digest. curve: 0 = P-256, * 1 = P-384. Returns 0 when the signature verifies.", "kind": "function", "line": 243, "name": "ecdsa_verify", "signature": "int ecdsa_verify(int curve, const unsigned char pub_x[], const unsigned char pub_y[], const unsigned char digest[], unsigned digest_len, const unsigned char sig[], unsigned sig_len);"}, {"doc": "RSA PKCS#1 v1.5 signature verify with SHA-256. modulus up to 4096 bits. * digest is the SHA-256 of the signed data. Returns 0 on success.", "kind": "function", "line": 249, "name": "rsa_pkcs1_verify_sha256", "signature": "int rsa_pkcs1_verify_sha256(const unsigned char *n, unsigned n_len, const unsigned char *e, unsigned e_len, const unsigned char digest[32], const unsigned char *sig, unsigned sig_len);"}, {"kind": "function", "line": 253, "name": "rsa_pkcs1_verify_sha384", "signature": "int rsa_pkcs1_verify_sha384(const unsigned char *n, unsigned n_len, const unsigned char *e, unsigned e_len, const unsigned char digest[48], const unsigned char *sig, unsigned sig_len);"}, {"doc": "RSA PKCS#1 v1.5 signature verify with SHA-256. modulus up to 4096 bits. * digest is the SHA-256 of the signed data. Returns 0 on success. int rsa_pkcs1_verify_sha256(const unsigned char *n, unsigned n_len, const unsigned char *e, unsigned e_len, const unsigned char digest[32], const unsigned char *sig, unsigned sig_len); int rsa_pkcs1_verify_sha384(const unsigned char *n, unsigned n_len, const unsigned char *e, unsigned e_len, const unsigned char digest[48], const unsigned char *sig, unsigned sig_len); /* ========== X.509 (tls_x509.c) ========== /* Parse one DER certificate into a public key. Returns 0 on success.", "kind": "function", "line": 261, "name": "tls_x509_parse_pubkey", "signature": "int tls_x509_parse_pubkey(const unsigned char *der, unsigned len, struct tls_pubkey *pk);"}, {"kind": "function", "line": 267, "name": "now", "signature": "* window against now (days since epoch). Returns 0 on success. */ int tls_x509_verify_chain(const unsigned char *chain, unsigned chain_len, unsigned cert_lens[], int n_certs, const char *host, long no"}, {"doc": "Blocking TLS 1.2 handshake over an open TCP socket (net fd index). host is the SNI + certificate hostname. Returns 0 on success, -1 with * a diagnostic on the console. The session lives on the kernel heap.", "kind": "function", "line": 277, "name": "tls_handshake", "signature": "int tls_handshake(int fd, const char *host);"}, {"doc": "Blocking TLS 1.2 handshake over an open TCP socket (net fd index). host is the SNI + certificate hostname. Returns 0 on success, -1 with * a diagnostic on the console. The session lives on the kernel heap. int tls_handshake(int fd, const char *host); /* Send len plaintext bytes as one TLS record. All-or-error.", "kind": "function", "line": 280, "name": "tls_send", "signature": "int tls_send(int fd, const char *buf, int len);"}, {"doc": "Receive decrypted application bytes. 0 = clean EOF (close_notify or FIN * at a record boundary); -1 = protocol error / truncation (diagnostic).", "kind": "function", "line": 284, "name": "tls_recv", "signature": "int tls_recv(int fd, char *buf, int len);"}, {"doc": "Kernel built without the TLS engine (net/tls*.c unlinked): no session can ever exist, so the net.c close path needs no call. Inline no-op * keeps the reference without pulling the engine back in. static inline void tls_free_fd(int fd) { (void)fd; } #endif /* ========== Syscalls (kernel wiring in tls.c) ==========", "kind": "function", "line": 297, "name": "tls_sys_handshake", "signature": "long tls_sys_handshake(long fd, long host);"}, {"kind": "function", "line": 298, "name": "tls_sys_send", "signature": "long tls_sys_send(long fd, long buf, long len);"}, {"kind": "function", "line": 299, "name": "tls_sys_recv", "signature": "long tls_sys_recv(long fd, long buf, long len);"}, {"kind": "variable", "line": 75, "name": "tls_roots", "signature": "extern const struct tls_root tls_roots[TLS_ROOT_COUNT];"}, {"kind": "macro", "line": 2, "name": "TLS_H", "signature": "#define TLS_H"}, {"kind": "macro", "line": 7, "name": "TLS_CT_CCS", "signature": "#define TLS_CT_CCS"}, {"kind": "macro", "line": 8, "name": "TLS_CT_ALERT", "signature": "#define TLS_CT_ALERT"}, {"kind": "macro", "line": 9, "name": "TLS_CT_HANDSHAKE", "signature": "#define TLS_CT_HANDSHAKE"}, {"kind": "macro", "line": 10, "name": "TLS_CT_APPDATA", "signature": "#define TLS_CT_APPDATA"}, {"kind": "macro", "line": 11, "name": "TLS_REC_HEADER", "signature": "#define TLS_REC_HEADER"}, {"kind": "macro", "line": 12, "name": "TLS_REC_MAX", "signature": "#define TLS_REC_MAX"}, {"kind": "macro", "line": 13, "name": "TLS_MSG_MAX", "signature": "#define TLS_MSG_MAX"}, {"kind": "macro", "line": 14, "name": "TLS_PLAIN_MAX", "signature": "#define TLS_PLAIN_MAX"}, {"kind": "macro", "line": 15, "name": "TLS_VERSION_TLS12", "signature": "#define TLS_VERSION_TLS12"}, {"kind": "macro", "line": 16, "name": "TLS_VERSION_TLS10", "signature": "#define TLS_VERSION_TLS10"}, {"kind": "macro", "line": 19, "name": "TLS_HS_CLIENT_HELLO", "signature": "#define TLS_HS_CLIENT_HELLO"}, {"kind": "macro", "line": 20, "name": "TLS_HS_SERVER_HELLO", "signature": "#define TLS_HS_SERVER_HELLO"}, {"kind": "macro", "line": 21, "name": "TLS_HS_CERTIFICATE", "signature": "#define TLS_HS_CERTIFICATE"}, {"kind": "macro", "line": 22, "name": "TLS_HS_SERVER_KEY_EXCHANGE", "signature": "#define TLS_HS_SERVER_KEY_EXCHANGE"}, {"kind": "macro", "line": 23, "name": "TLS_HS_SERVER_HELLO_DONE", "signature": "#define TLS_HS_SERVER_HELLO_DONE"}, {"kind": "macro", "line": 24, "name": "TLS_HS_CLIENT_KEY_EXCHANGE", "signature": "#define TLS_HS_CLIENT_KEY_EXCHANGE"}, {"kind": "macro", "line": 25, "name": "TLS_HS_FINISHED", "signature": "#define TLS_HS_FINISHED"}, {"kind": "macro", "line": 28, "name": "TLS_CSUITE_ECDHE_RSA_AES128GCM", "signature": "#define TLS_CSUITE_ECDHE_RSA_AES128GCM"}, {"kind": "macro", "line": 29, "name": "TLS_CSUITE_ECDHE_ECDSA_AES128GCM", "signature": "#define TLS_CSUITE_ECDHE_ECDSA_AES128GCM"}, {"kind": "macro", "line": 32, "name": "TLS_SIG_RSA_PKCS1_SHA256", "signature": "#define TLS_SIG_RSA_PKCS1_SHA256"}, {"kind": "macro", "line": 33, "name": "TLS_SIG_ECDSA_P256_SHA256", "signature": "#define TLS_SIG_ECDSA_P256_SHA256"}, {"kind": "macro", "line": 34, "name": "TLS_SIG_ECDSA_P384_SHA384", "signature": "#define TLS_SIG_ECDSA_P384_SHA384"}, {"kind": "macro", "line": 37, "name": "TLS_GROUP_SECP256R1", "signature": "#define TLS_GROUP_SECP256R1"}, {"kind": "macro", "line": 40, "name": "TLS_EXT_SERVER_NAME", "signature": "#define TLS_EXT_SERVER_NAME"}, {"kind": "macro", "line": 41, "name": "TLS_EXT_SUPPORTED_GROUPS", "signature": "#define TLS_EXT_SUPPORTED_GROUPS"}, {"kind": "macro", "line": 42, "name": "TLS_EXT_EC_POINT_FORMATS", "signature": "#define TLS_EXT_EC_POINT_FORMATS"}, {"kind": "macro", "line": 43, "name": "TLS_EXT_SIGNATURE_ALGS", "signature": "#define TLS_EXT_SIGNATURE_ALGS"}, {"kind": "macro", "line": 46, "name": "TLS_ALERT_LEVEL_WARNING", "signature": "#define TLS_ALERT_LEVEL_WARNING"}, {"kind": "macro", "line": 47, "name": "TLS_ALERT_LEVEL_FATAL", "signature": "#define TLS_ALERT_LEVEL_FATAL"}, {"kind": "macro", "line": 50, "name": "TLS_HS_TIMEOUT_MS", "signature": "#define TLS_HS_TIMEOUT_MS"}, {"kind": "macro", "line": 51, "name": "TLS_READ_TIMEOUT_MS", "signature": "#define TLS_READ_TIMEOUT_MS"}, {"kind": "macro", "line": 54, "name": "TLS_HOST_MAX", "signature": "#define TLS_HOST_MAX"}, {"kind": "macro", "line": 57, "name": "TLS_CHAIN_MAX", "signature": "#define TLS_CHAIN_MAX"}, {"kind": "macro", "line": 58, "name": "TLS_CERT_MAX", "signature": "#define TLS_CERT_MAX"}, {"kind": "macro", "line": 62, "name": "TLS_BN_4096_WORDS", "signature": "#define TLS_BN_4096_WORDS"}, {"kind": "macro", "line": 63, "name": "TLS_BN_384_WORDS", "signature": "#define TLS_BN_384_WORDS"}, {"kind": "macro", "line": 68, "name": "TLS_ROOT_COUNT", "signature": "#define TLS_ROOT_COUNT"}]}, {"doc": "Portability shim between the MiniOS kernel and the host-side test", "id": "headers/tls_port.h", "kind": "module", "label": "tls_port.h", "language": "h", "sha256": "14c905896a8ab332", "symbol_count": 49, "symbols": [{"kind": "function", "line": 40, "name": "tls_now_days", "signature": "static inline long tls_now_days(void)"}, {"kind": "function", "line": 44, "name": "tls_random", "signature": "static inline void tls_random(unsigned char *out, unsigned len)"}, {"kind": "function", "line": 29, "name": "these", "signature": "* of these (tls_test.c). */ extern int tls_test_send(int fd, const char *buf, int len);"}, {"kind": "function", "line": 31, "name": "tls_test_recv", "signature": "extern int tls_test_recv(int fd, char *buf, int len);"}, {"kind": "function", "line": 32, "name": "tls_test_recv_timeout", "signature": "extern int tls_test_recv_timeout(int fd, char *buf, int len, unsigned long ms);"}, {"kind": "function", "line": 33, "name": "tls_test_close", "signature": "extern void tls_test_close(int fd);"}, {"kind": "function", "line": 62, "name": "sockets", "signature": "* sockets (glibc maps socket/connect/send/recv/poll onto the MiniOS * Linux ABI numbers the kernel implements);"}, {"kind": "function", "line": 64, "name": "gettimeofday", "signature": "* gettimeofday(96) and entropy from /dev/urandom with a time/pid * fallback. Session slots are indexed by raw OS fd, so TLS_FD_MAX * covers both the MiniOS socket range (100+) and host small fds. */ #"}, {"kind": "function", "line": 82, "name": "tls_u_recv", "signature": "int tls_u_recv(int fd, char *buf, int len);"}, {"kind": "function", "line": 83, "name": "tls_u_recv_timeout", "signature": "int tls_u_recv_timeout(int fd, char *buf, int len, unsigned long ms);"}, {"kind": "function", "line": 84, "name": "tls_u_close", "signature": "void tls_u_close(int fd);"}, {"kind": "function", "line": 95, "name": "syscall", "signature": "* the MiniOS DNS syscall (200, invoked sig-0-safe). 0 on success. */ int tls_u_resolve(const char *host, unsigned *ip_out);"}, {"kind": "macro", "line": 2, "name": "TLS_PORT_H", "signature": "#define TLS_PORT_H"}, {"kind": "macro", "line": 18, "name": "TLS_FD_MAX", "signature": "#define TLS_FD_MAX"}, {"kind": "macro", "line": 20, "name": "TLS_PRINTF", "signature": "#define TLS_PRINTF"}, {"kind": "macro", "line": 21, "name": "TLS_MALLOC", "signature": "#define TLS_MALLOC(n)"}, {"kind": "macro", "line": 22, "name": "TLS_FREE", "signature": "#define TLS_FREE(p)"}, {"kind": "macro", "line": 23, "name": "TLS_MEMCPY", "signature": "#define TLS_MEMCPY"}, {"kind": "macro", "line": 24, "name": "TLS_MEMSET", "signature": "#define TLS_MEMSET"}, {"kind": "macro", "line": 25, "name": "TLS_MEMCMP", "signature": "#define TLS_MEMCMP"}, {"kind": "macro", "line": 26, "name": "TLS_STRLEN", "signature": "#define TLS_STRLEN"}, {"kind": "macro", "line": 35, "name": "TLS_SEND", "signature": "#define TLS_SEND"}, {"kind": "macro", "line": 36, "name": "TLS_RECV", "signature": "#define TLS_RECV"}, {"kind": "macro", "line": 37, "name": "TLS_RECV_TIMEOUT", "signature": "#define TLS_RECV_TIMEOUT"}, {"kind": "macro", "line": 38, "name": "TLS_CLOSE", "signature": "#define TLS_CLOSE"}, {"kind": "macro", "line": 71, "name": "TLS_FD_MAX", "signature": "#define TLS_FD_MAX"}, {"kind": "macro", "line": 73, "name": "TLS_PRINTF", "signature": "#define TLS_PRINTF"}, {"kind": "macro", "line": 74, "name": "TLS_MALLOC", "signature": "#define TLS_MALLOC(n)"}, {"kind": "macro", "line": 75, "name": "TLS_FREE", "signature": "#define TLS_FREE(p)"}, {"kind": "macro", "line": 76, "name": "TLS_MEMCPY", "signature": "#define TLS_MEMCPY"}, {"kind": "macro", "line": 77, "name": "TLS_MEMSET", "signature": "#define TLS_MEMSET"}, {"kind": "macro", "line": 78, "name": "TLS_MEMCMP", "signature": "#define TLS_MEMCMP"}, {"kind": "macro", "line": 79, "name": "TLS_STRLEN", "signature": "#define TLS_STRLEN"}, {"kind": "macro", "line": 86, "name": "TLS_SEND", "signature": "#define TLS_SEND"}, {"kind": "macro", "line": 87, "name": "TLS_RECV", "signature": "#define TLS_RECV"}, {"kind": "macro", "line": 88, "name": "TLS_RECV_TIMEOUT", "signature": "#define TLS_RECV_TIMEOUT"}, {"kind": "macro", "line": 89, "name": "TLS_CLOSE", "signature": "#define TLS_CLOSE"}, {"kind": "macro", "line": 103, "name": "TLS_PRINTF", "signature": "#define TLS_PRINTF"}, {"kind": "macro", "line": 104, "name": "TLS_MALLOC", "signature": "#define TLS_MALLOC(n)"}, {"kind": "macro", "line": 105, "name": "TLS_FREE", "signature": "#define TLS_FREE(p)"}, {"kind": "macro", "line": 106, "name": "TLS_MEMCPY", "signature": "#define TLS_MEMCPY"}, {"kind": "macro", "line": 107, "name": "TLS_MEMSET", "signature": "#define TLS_MEMSET"}, {"kind": "macro", "line": 108, "name": "TLS_MEMCMP", "signature": "#define TLS_MEMCMP"}, {"kind": "macro", "line": 109, "name": "TLS_STRLEN", "signature": "#define TLS_STRLEN"}, {"kind": "macro", "line": 111, "name": "TLS_SEND", "signature": "#define TLS_SEND"}, {"kind": "macro", "line": 112, "name": "TLS_RECV", "signature": "#define TLS_RECV"}, {"kind": "macro", "line": 113, "name": "TLS_RECV_TIMEOUT", "signature": "#define TLS_RECV_TIMEOUT"}, {"kind": "macro", "line": 114, "name": "TLS_CLOSE", "signature": "#define TLS_CLOSE"}, {"kind": "macro", "line": 115, "name": "TLS_FD_MAX", "signature": "#define TLS_FD_MAX"}]}, {"doc": "tls_roots.h - embedded CA roots (DER), generated by mkroots.sh.", "id": "headers/tls_roots.h", "kind": "module", "label": "tls_roots.h", "language": "h", "sha256": "fff6d33493ca669c", "symbol_count": 0, "symbols": []}, {"doc": "tls_test_roots.h - generated by tls_test.py; never built into the kernel. The test root replaces the production table.", "id": "headers/tls_test_roots.h", "kind": "module", "label": "tls_test_roots.h", "language": "h", "sha256": "94f2ec3d1da5c461", "symbol_count": 0, "symbols": []}, {"doc": "Framebuffer geometry. The boot loader probes VESA BIOS Extensions for a", "id": "headers/vga_fb.h", "kind": "module", "label": "vga_fb.h", "language": "h", "sha256": "725cbc5835ae9ebb", "symbol_count": 125, "symbols": [{"doc": "Title-bar window controls (minimize, maximize, close). Drawn as a strip of three FONT_W-wide glyph buttons at the right end of any titled window * (terminal, DOOM, Nuklear); the mouse tick hit-tests them before drag. #define WM_BTN_W FONT_W #define WM_BTN_H FONT_H #define WM_BTN_PAD 2 #define WM_BTN_MIN 1 #define WM_BTN_MAX 2 #define WM_BTN_CLOSE 3 /* Terminal geometry (set by vga_fb layout engine) extern int term_x, term_y, term_cols, term_rows; /* ---- Mouse state (updated by IRQ12 handler in sched.c) ----", "kind": "struct", "line": 153, "name": "mouse_state_t"}, {"doc": "Bytes per framebuffer pixel derived from fb_bpp (1 for 8-bit, 3 for 24, * 4 for 32).", "kind": "function", "line": 30, "name": "fb_bytes_per_pixel", "signature": "int fb_bytes_per_pixel(void);"}, {"doc": "Read one desktop pixel as packed 0x00RRGGBB (palette-resolved in 8-bit mode, native in true color). Backstop for `gfx pixel`/`gfx shot`, which * must report colors instead of DAC indices once the DAC is gone.", "kind": "function", "line": 34, "name": "vga_fb_read_rgb", "signature": "unsigned long vga_fb_read_rgb(int x, int y);"}, {"doc": "Store the graphics program's 768-byte palette (SYS_PALETTE). In 8-bit mode it is also programmed into the DAC; in true color it is only kept so the * DOOM/Nuklear blits can expand their indexed back-buffers to RGB.", "kind": "function", "line": 38, "name": "vga_fb_set_gfx_palette", "signature": "void vga_fb_set_gfx_palette(const unsigned char *pal);"}, {"kind": "function", "line": 40, "name": "vga_fb_boot_config", "signature": "void vga_fb_boot_config(void);"}, {"kind": "function", "line": 44, "name": "SYS_DOOM_FRAME", "signature": "* and calls SYS_DOOM_FRAME (211) to have the kernel composite it onto the * desktop at its native resolution, so the shell window stays visible. */ #define DOOM_W MINIOS_DOOM_W #define DOOM_H MINIOS_D"}, {"kind": "function", "line": 63, "name": "SYS_NK_FRAME", "signature": "* SYS_NK_FRAME (220);"}, {"doc": "Nuklear UI back-buffer. A ring-3 program (the node editor) renders a UI into a kernel-heap back-buffer mapped into the user window and calls SYS_NK_FRAME (220); the kernel composites it as a titled window on the desktop exactly like the DOOM window, so the shell stays visible. It sits in the reserved tail with the framebuffer, above DOOM_BACKBUF_ADDR (the brk * cap), so neither a growing heap nor the mmap zone can ever reach it. define NK_W MINIOS_NK_W define NK_H MINIOS_NK_H define NK_BACKBUF_ADDR MINIOS_NK_BACKBUF_ADDR", "kind": "function", "line": 70, "name": "vga_fb_blit_nk_window", "signature": "void vga_fb_blit_nk_window(void);"}, {"kind": "function", "line": 93, "name": "below", "signature": "* file below (800x600 RGB PNG on the ramdisk, produced by * tools/gen_desktop_pngs.py) is decoded once per boot via stbi_load_file, * stretched to the framebuffer and mapped to a fixed 6x6x6 websafe c"}, {"doc": "A scrollback line can be up to the widest terminal (TERM_MAX_COLS), and a long logical line that wrapped across several screen rows is stored whole, * so the ring must not truncate it or a re-rendered line would be cut short. #define SB_MAX_LINES 256 #define SB_LINE_MAX TERM_MAX_COLS /* ---- Public API ----", "kind": "function", "line": 171, "name": "vga_fb_init", "signature": "void vga_fb_init(void);"}, {"kind": "function", "line": 172, "name": "vga_fb_clear", "signature": "void vga_fb_clear(void);"}, {"kind": "function", "line": 173, "name": "vga_fb_pixel", "signature": "void vga_fb_pixel(int x, int y, uint8_t color);"}, {"kind": "function", "line": 174, "name": "vga_fb_rect", "signature": "void vga_fb_rect(int x, int y, int w, int h, uint8_t color);"}, {"kind": "function", "line": 175, "name": "vga_fb_char", "signature": "void vga_fb_char(int col, int row, char c, uint8_t fg, uint8_t bg);"}, {"kind": "function", "line": 176, "name": "vga_fb_str", "signature": "void vga_fb_str(int col, int row, const char *s, uint8_t fg, uint8_t bg);"}, {"kind": "function", "line": 177, "name": "vga_fb_putc_term", "signature": "void vga_fb_putc_term(char c);"}, {"kind": "function", "line": 178, "name": "vga_fb_puts_term", "signature": "void vga_fb_puts_term(const char *s);"}, {"kind": "function", "line": 179, "name": "vga_fb_text_cursor", "signature": "void vga_fb_text_cursor(int col);"}, {"kind": "function", "line": 180, "name": "vga_fb_hide_text_cursor", "signature": "void vga_fb_hide_text_cursor(void);"}, {"doc": "Packed-pixel primitives (0x00RRGGBB): the cursor layer draws through * these so it never touches raw framebuffer memory itself.", "kind": "function", "line": 183, "name": "fb_read_packed", "signature": "unsigned long fb_read_packed(int x, int y);"}, {"kind": "function", "line": 184, "name": "fb_write_packed", "signature": "void fb_write_packed(int x, int y, unsigned long rgb);"}, {"kind": "function", "line": 185, "name": "vga_fb_draw_desktop", "signature": "void vga_fb_draw_desktop(void);"}, {"kind": "function", "line": 186, "name": "vga_fb_toggle_fullscreen", "signature": "void vga_fb_toggle_fullscreen(void);"}, {"kind": "function", "line": 187, "name": "vga_fb_move_terminal", "signature": "void vga_fb_move_terminal(int dx, int dy);"}, {"kind": "function", "line": 188, "name": "vga_fb_snap_window", "signature": "void vga_fb_snap_window(int zone);"}, {"kind": "function", "line": 189, "name": "vga_fb_resize", "signature": "void vga_fb_resize(int dcols, int drows);"}, {"kind": "function", "line": 190, "name": "vga_fb_reset_default", "signature": "void vga_fb_reset_default(void);"}, {"kind": "function", "line": 191, "name": "vga_fb_toggle_minimize", "signature": "void vga_fb_toggle_minimize(void);"}, {"kind": "function", "line": 192, "name": "vga_fb_is_minimized", "signature": "int vga_fb_is_minimized(void);"}, {"kind": "function", "line": 193, "name": "vga_fb_is_fullscreen", "signature": "int vga_fb_is_fullscreen(void);"}, {"kind": "function", "line": 194, "name": "vga_fb_close_active", "signature": "int vga_fb_close_active(void);"}, {"doc": "Multi-window manager: Alt-Tab focus cycle, Super-Tab tiling, second * terminal. Focus ids 0/1 = terminals, 2 = graphics window. define WM_FOCUS_GFX 2", "kind": "function", "line": 198, "name": "vga_fb_focus_next", "signature": "void vga_fb_focus_next(void);"}, {"kind": "function", "line": 199, "name": "vga_fb_focus_id", "signature": "int vga_fb_focus_id(int id);"}, {"kind": "function", "line": 200, "name": "vga_fb_focus_get", "signature": "int vga_fb_focus_get(void);"}, {"doc": "Focus event bus (wm_notify.h): last move for serial-observable state, * plus programmatic reporting for focus moves owned by other units.", "kind": "function", "line": 203, "name": "vga_fb_focus_event", "signature": "const wm_notify_event_t *vga_fb_focus_event(void);"}, {"kind": "function", "line": 204, "name": "vga_fb_focus_report", "signature": "void vga_fb_focus_report(int before, int source);"}, {"kind": "function", "line": 205, "name": "vga_fb_theme_name", "signature": "int vga_fb_theme_name(char *dst, int cap);"}, {"doc": "PS/2 ownership for pid: 1 when pid may consume the keyboard port. One keyboard feeds every window, so the focused window owns it: a background gfx job reads only while the gfx window is focused, the shell only while a terminal is. A legacy foreground program owns everything (its shell is * blocked, so there is nobody to steal from). Serial stays shell-only.", "kind": "function", "line": 211, "name": "vga_fb_ps2_owner", "signature": "int vga_fb_ps2_owner(int pid);"}, {"kind": "function", "line": 212, "name": "vga_fb_nterms_get", "signature": "int vga_fb_nterms_get(void);"}, {"kind": "function", "line": 213, "name": "vga_fb_term_split", "signature": "int vga_fb_term_split(void);"}, {"kind": "function", "line": 214, "name": "vga_fb_term_close_focused", "signature": "int vga_fb_term_close_focused(void);"}, {"kind": "function", "line": 215, "name": "vga_fb_tile_all", "signature": "void vga_fb_tile_all(void);"}, {"kind": "function", "line": 216, "name": "vga_fb_layout_set", "signature": "int vga_fb_layout_set(int mode);"}, {"kind": "function", "line": 217, "name": "vga_fb_layout_cycle", "signature": "void vga_fb_layout_cycle(void);"}, {"kind": "function", "line": 218, "name": "vga_fb_layout_get", "signature": "int vga_fb_layout_get(void);"}, {"kind": "function", "line": 219, "name": "vga_fb_layout_name", "signature": "const char *vga_fb_layout_name(void);"}, {"kind": "function", "line": 220, "name": "vga_fb_list_windows", "signature": "void vga_fb_list_windows(void);"}, {"kind": "function", "line": 221, "name": "wm_close_pending", "signature": "int wm_close_pending(void);"}, {"kind": "function", "line": 222, "name": "wm_clear_close", "signature": "void wm_clear_close(void);"}, {"kind": "function", "line": 223, "name": "wm_gfx_mode_active", "signature": "int wm_gfx_mode_active(void);"}, {"kind": "function", "line": 224, "name": "vga_fb_mouse_tick", "signature": "void vga_fb_mouse_tick(void);"}, {"kind": "function", "line": 225, "name": "vga_fb_mouse_init", "signature": "void vga_fb_mouse_init(void);"}, {"doc": "Graphics-mode pointer. SYS_VGA_MODE toggles vga_fb_set_gfx_mode; while a ring-3 graphics program owns the display the kernel idle loop (and with it vga_fb_mouse_tick) never runs, so the frame-composite functions restore the previous frame's pointer before the blit and redraw it after, keeping the * desktop pointer visible over the whole display without leaving trails.", "kind": "function", "line": 232, "name": "vga_fb_set_gfx_mode", "signature": "void vga_fb_set_gfx_mode(int on);"}, {"doc": "high-resolution linear framebuffer (32-bit true color first, then the 8-bit-palette modes) and records width, height, pitch, physical base and bits per pixel in the fixed VBE_INFO_ADDR struct; vga_fb_boot_config loads them into the globals below before the kernel maps the framebuffer. Without VBE the values are the Mode 13h defaults (320x200x8, phys 0xA0000). In a true-color mode the kernel's palette-index drawing is expanded to RGB on write, so desktop, icons and wallpaper are no longer quantized to the 256-entry VGA DAC; in 8-bit mode the DAC path is used unchanged. FB_ADDR is the fixed virtual address in the user window that both the kernel desktop and graphics programs write through. It sits in the reserved tail above DOOM_BACKBUF_ADDR (which is also the brk cap), so a program's heap can never grow over the framebuffer. All three pinned addresses derive from * progs/minios_abi.h (single source of truth for the kernel-ABI layout). define FB_ADDR ((volatile uint8_t *)MINIOS_FB_ADDR)", "kind": "variable", "line": 23, "name": "fb_width", "signature": "extern int fb_width;"}, {"kind": "variable", "line": 24, "name": "fb_height", "signature": "extern int fb_height;"}, {"kind": "variable", "line": 25, "name": "fb_pitch", "signature": "extern int fb_pitch;"}, {"kind": "variable", "line": 26, "name": "fb_bpp", "signature": "extern int fb_bpp;"}, {"kind": "variable", "line": 27, "name": "fb_phys_base", "signature": "extern unsigned long fb_phys_base;"}, {"kind": "variable", "line": 50, "name": "gfx_win_title", "signature": "extern const char *gfx_win_title;"}, {"doc": "Number of frames a ring-3 graphics program (DOOM, Quake 2, Nuklear) has composited through SYS_DOOM_FRAME / SYS_NK_FRAME since boot. The shell's `gfx frames` builtin reports it over the serial console, so the BDD suite can prove a game actually rendered frames -- not merely launched -- by * running a demo and checking the counter climbed.", "kind": "variable", "line": 59, "name": "gfx_frames_composited", "signature": "extern unsigned long gfx_frames_composited;"}, {"doc": "Window origin of the last Nuklear composite, so SYS_NK_FRAME can report * where the UI landed for mouse-coordinate translation.", "kind": "variable", "line": 73, "name": "nk_win_y", "signature": "extern int nk_win_x, nk_win_y;"}, {"doc": "Title-bar window controls (minimize, maximize, close). Drawn as a strip of three FONT_W-wide glyph buttons at the right end of any titled window * (terminal, DOOM, Nuklear); the mouse tick hit-tests them before drag. #define WM_BTN_W FONT_W #define WM_BTN_H FONT_H #define WM_BTN_PAD 2 #define WM_BTN_MIN 1 #define WM_BTN_MAX 2 #define WM_BTN_CLOSE 3 /* Terminal geometry (set by vga_fb layout engine)", "kind": "variable", "line": 150, "name": "term_rows", "signature": "extern int term_x, term_y, term_cols, term_rows;"}, {"kind": "variable", "line": 161, "name": "mouse_state", "signature": "extern mouse_state_t mouse_state;"}, {"kind": "variable", "line": 234, "name": "vga_fb_active", "signature": "extern int vga_fb_active;"}, {"kind": "macro", "line": 2, "name": "VGA_FB_H", "signature": "#define VGA_FB_H"}, {"kind": "macro", "line": 22, "name": "FB_ADDR", "signature": "#define FB_ADDR"}, {"kind": "macro", "line": 46, "name": "DOOM_W", "signature": "#define DOOM_W"}, {"kind": "macro", "line": 47, "name": "DOOM_H", "signature": "#define DOOM_H"}, {"kind": "macro", "line": 48, "name": "DOOM_BACKBUF_ADDR", "signature": "#define DOOM_BACKBUF_ADDR"}, {"kind": "macro", "line": 52, "name": "GFX_TITLE_DEFAULT", "signature": "#define GFX_TITLE_DEFAULT"}, {"kind": "macro", "line": 67, "name": "NK_W", "signature": "#define NK_W"}, {"kind": "macro", "line": 68, "name": "NK_H", "signature": "#define NK_H"}, {"kind": "macro", "line": 69, "name": "NK_BACKBUF_ADDR", "signature": "#define NK_BACKBUF_ADDR"}, {"kind": "macro", "line": 76, "name": "COL_BLACK", "signature": "#define COL_BLACK"}, {"kind": "macro", "line": 77, "name": "COL_BG", "signature": "#define COL_BG"}, {"kind": "macro", "line": 78, "name": "COL_TASKBAR", "signature": "#define COL_TASKBAR"}, {"kind": "macro", "line": 79, "name": "COL_TASKBAR_TXT", "signature": "#define COL_TASKBAR_TXT"}, {"kind": "macro", "line": 80, "name": "COL_TITLEBAR", "signature": "#define COL_TITLEBAR"}, {"kind": "macro", "line": 81, "name": "COL_TITLE_TXT", "signature": "#define COL_TITLE_TXT"}, {"kind": "macro", "line": 82, "name": "COL_TERMINAL", "signature": "#define COL_TERMINAL"}, {"kind": "macro", "line": 83, "name": "COL_TERM_TXT", "signature": "#define COL_TERM_TXT"}, {"kind": "macro", "line": 84, "name": "COL_TERM_CUR", "signature": "#define COL_TERM_CUR"}, {"kind": "macro", "line": 85, "name": "COL_BORDER", "signature": "#define COL_BORDER"}, {"kind": "macro", "line": 86, "name": "COL_WHITE", "signature": "#define COL_WHITE"}, {"kind": "macro", "line": 87, "name": "COL_SHADOW", "signature": "#define COL_SHADOW"}, {"kind": "macro", "line": 88, "name": "COL_HIGHLIGHT", "signature": "#define COL_HIGHLIGHT"}, {"kind": "macro", "line": 89, "name": "COL_SCROLLBAR", "signature": "#define COL_SCROLLBAR"}, {"kind": "macro", "line": 90, "name": "COL_SCROLL_THUMB", "signature": "#define COL_SCROLL_THUMB"}, {"kind": "macro", "line": 97, "name": "WALLPAPER_PATH", "signature": "#define WALLPAPER_PATH"}, {"kind": "macro", "line": 98, "name": "WALL_PAL_BASE", "signature": "#define WALL_PAL_BASE"}, {"kind": "macro", "line": 99, "name": "WALL_PAL_SIZE", "signature": "#define WALL_PAL_SIZE"}, {"kind": "macro", "line": 101, "name": "FONT_W", "signature": "#define FONT_W"}, {"kind": "macro", "line": 102, "name": "FONT_H", "signature": "#define FONT_H"}, {"kind": "macro", "line": 107, "name": "TERM_MAX_COLS", "signature": "#define TERM_MAX_COLS"}, {"kind": "macro", "line": 108, "name": "TERM_MAX_ROWS", "signature": "#define TERM_MAX_ROWS"}, {"kind": "macro", "line": 111, "name": "TASKBAR_H", "signature": "#define TASKBAR_H"}, {"kind": "macro", "line": 112, "name": "TASKBAR_PAD", "signature": "#define TASKBAR_PAD"}, {"kind": "macro", "line": 113, "name": "TASKBAR_CLOCK_CH", "signature": "#define TASKBAR_CLOCK_CH"}, {"kind": "macro", "line": 114, "name": "TASKBAR_VOL_CH", "signature": "#define TASKBAR_VOL_CH"}, {"kind": "macro", "line": 115, "name": "TASKBAR_VOL_STEP", "signature": "#define TASKBAR_VOL_STEP"}, {"kind": "macro", "line": 116, "name": "TASKBAR_ICON_W", "signature": "#define TASKBAR_ICON_W"}, {"kind": "macro", "line": 117, "name": "TASKBAR_BTN_W", "signature": "#define TASKBAR_BTN_W"}, {"kind": "macro", "line": 119, "name": "TASKBAR_KBD_CH", "signature": "#define TASKBAR_KBD_CH"}, {"kind": "macro", "line": 120, "name": "TASKBAR_KBD_W", "signature": "#define TASKBAR_KBD_W"}, {"kind": "macro", "line": 122, "name": "TASKBAR_THEME_CH", "signature": "#define TASKBAR_THEME_CH"}, {"kind": "macro", "line": 123, "name": "TASKBAR_THEME_W", "signature": "#define TASKBAR_THEME_W"}, {"kind": "macro", "line": 126, "name": "TILING_LEFT", "signature": "#define TILING_LEFT"}, {"kind": "macro", "line": 127, "name": "TILING_RIGHT", "signature": "#define TILING_RIGHT"}, {"kind": "macro", "line": 128, "name": "TILING_TOP", "signature": "#define TILING_TOP"}, {"kind": "macro", "line": 129, "name": "TILING_BOTTOM", "signature": "#define TILING_BOTTOM"}, {"kind": "macro", "line": 130, "name": "TILING_TOP_LEFT", "signature": "#define TILING_TOP_LEFT"}, {"kind": "macro", "line": 131, "name": "TILING_TOP_RIGHT", "signature": "#define TILING_TOP_RIGHT"}, {"kind": "macro", "line": 132, "name": "TILING_BOTTOM_LEFT", "signature": "#define TILING_BOTTOM_LEFT"}, {"kind": "macro", "line": 133, "name": "TILING_BOTTOM_RIGHT", "signature": "#define TILING_BOTTOM_RIGHT"}, {"kind": "macro", "line": 136, "name": "SCROLLBAR_W", "signature": "#define SCROLLBAR_W"}, {"kind": "macro", "line": 137, "name": "SCROLLBAR_PAD", "signature": "#define SCROLLBAR_PAD"}, {"kind": "macro", "line": 142, "name": "WM_BTN_W", "signature": "#define WM_BTN_W"}, {"kind": "macro", "line": 143, "name": "WM_BTN_H", "signature": "#define WM_BTN_H"}, {"kind": "macro", "line": 144, "name": "WM_BTN_PAD", "signature": "#define WM_BTN_PAD"}, {"kind": "macro", "line": 145, "name": "WM_BTN_MIN", "signature": "#define WM_BTN_MIN"}, {"kind": "macro", "line": 146, "name": "WM_BTN_MAX", "signature": "#define WM_BTN_MAX"}, {"kind": "macro", "line": 147, "name": "WM_BTN_CLOSE", "signature": "#define WM_BTN_CLOSE"}, {"kind": "macro", "line": 167, "name": "SB_MAX_LINES", "signature": "#define SB_MAX_LINES"}, {"kind": "macro", "line": 168, "name": "SB_LINE_MAX", "signature": "#define SB_LINE_MAX"}, {"kind": "macro", "line": 197, "name": "WM_FOCUS_GFX", "signature": "#define WM_FOCUS_GFX"}]}, {"id": "headers/vma.h", "kind": "module", "label": "vma.h", "language": "h", "sha256": "6df2ee766f05fa96", "symbol_count": 21, "symbols": [{"kind": "struct", "line": 21, "name": "vma_node"}, {"doc": "Per-process VMA context (multitask foundation): every non-CLONE_VM process owns its live/free trees plus a private node pool, so two concurrent jobs never corrupt each other's mmap bookkeeping the way the old single global tree did (the DOOM-in-isolation #GP came from exactly that: a fresh window over a stale shared tree). CLONE_VM threads share their parent's context pointer. The kernel-global VMA_NIL/roots/pool below are a *view* onto the running process's context, rebound by vma_ctx_bind on every brk/mmap-view switch; the legacy single-window path keeps using the static vma_legacy context, so its behavior is byte-for-byte unchanged. Pools live on the kernel * heap (a static per-proc pool would blow the USER_LOAD_BASE budget).", "kind": "struct", "line": 41, "name": "vma_ctx_t"}, {"doc": "Replaces the former flat mmap_used/mmap_free arrays with an O(log n) tree. A single fixed node pool backs the tree for the life of one ring-3 program; both the live and free trees draw from it. The pool is reset by vma_tree_init on every exec, so a fresh program starts empty. The current kernel runs a single address space, so the tree is a set of process-wide globals (vma_live_root, vma_free_root, VMA_NIL, vma_pool) rather than a per-process instance. The SPAWN syscall saves and restores those globals across a child ET_EXEC/DYN execution. All operations are integer-only and free of kernel dependencies, which lets the tree be exercised host-side by tests/test_vma.c.", "kind": "type_alias", "line": 20, "name": "base", "signature": "typedef struct vma_node { unsigned long base;"}, {"kind": "function", "line": 59, "name": "vma_tree_init", "signature": "void vma_tree_init(void);"}, {"kind": "function", "line": 60, "name": "vma_tree_insert", "signature": "vma_node_t *vma_tree_insert(vma_node_t **root, unsigned long base, unsigned long len);"}, {"kind": "function", "line": 61, "name": "vma_tree_find", "signature": "vma_node_t *vma_tree_find(vma_node_t *root, unsigned long base);"}, {"kind": "function", "line": 62, "name": "vma_tree_delete", "signature": "int vma_tree_delete(vma_node_t **root, unsigned long base);"}, {"kind": "function", "line": 63, "name": "vma_ctx_init", "signature": "void vma_ctx_init(vma_ctx_t *c, vma_node_t *pool);"}, {"kind": "function", "line": 64, "name": "vma_ctx_bind", "signature": "void vma_ctx_bind(vma_ctx_t *c);"}, {"kind": "function", "line": 65, "name": "vma_ctx_save", "signature": "void vma_ctx_save(vma_ctx_t *c);"}, {"doc": "Heap-backed contexts live in sched.c (vma.c stays host-testable): * alloc returns a fresh context with a private pool, or 0 on OOM.", "kind": "function", "line": 68, "name": "vma_ctx_alloc", "signature": "vma_ctx_t *vma_ctx_alloc(void);"}, {"kind": "function", "line": 69, "name": "vma_ctx_free", "signature": "void vma_ctx_free(vma_ctx_t *c);"}, {"kind": "variable", "line": 51, "name": "VMA_NIL", "signature": "extern vma_node_t *VMA_NIL;"}, {"kind": "variable", "line": 52, "name": "vma_live_root", "signature": "extern vma_node_t *vma_live_root;"}, {"kind": "variable", "line": 53, "name": "vma_free_root", "signature": "extern vma_node_t *vma_free_root;"}, {"kind": "variable", "line": 54, "name": "vma_pool", "signature": "extern vma_node_t vma_pool[VMA_MAX];"}, {"kind": "variable", "line": 55, "name": "vma_pool_n", "signature": "extern int vma_pool_n;"}, {"kind": "variable", "line": 56, "name": "vma_pool_ptr", "signature": "extern vma_node_t *vma_pool_ptr;"}, {"kind": "variable", "line": 57, "name": "vma_legacy", "signature": "extern vma_ctx_t vma_legacy;"}, {"kind": "macro", "line": 2, "name": "VMA_H", "signature": "#define VMA_H"}, {"kind": "macro", "line": 28, "name": "VMA_MAX", "signature": "#define VMA_MAX"}]}, {"doc": "Docstring: Window event contract for the MiniOS desktop.", "id": "headers/wm_events.h", "kind": "module", "label": "wm_events.h", "language": "h", "sha256": "c4af1a314675fd41", "symbol_count": 39, "symbols": [{"doc": "#define WM_EVENTS_H #include \"drivers/modifiers.h\" /** Docstring: Discrete window manager event kinds. typedef enum { WM_EVT_NONE = 0, WM_EVT_CLICK = 1, WM_EVT_RELEASE = 2, WM_EVT_MOVE = 3, WM_EVT_SCROLL = 4 } wm_event_type_t; /** Docstring: Raw mouse snapshot consumed by the translator.", "kind": "struct", "line": 25, "name": "wm_mouse_t"}, {"doc": "WM_EVT_MOVE = 3, WM_EVT_SCROLL = 4 } wm_event_type_t; /** Docstring: Raw mouse snapshot consumed by the translator. typedef struct { int x; int y; int buttons; int wheel; int present; } wm_mouse_t; /** Docstring: Translated window manager event.", "kind": "struct", "line": 34, "name": "wm_event_t"}, {"doc": "int wheel; int present; } wm_mouse_t; /** Docstring: Translated window manager event. typedef struct { wm_event_type_t type; int x; int y; int button; int wheel; } wm_event_t; /** Docstring: Centralized event translator configuration.", "kind": "struct", "line": 43, "name": "wm_event_config_t"}, {"doc": "WM_COMBO_FOCUS_NEXT = 1, WM_COMBO_TILE_ALL = 2, WM_COMBO_FULLSCREEN = 3, WM_COMBO_MINIMIZE = 4, WM_COMBO_CLOSE = 5, WM_COMBO_SNAP = 6, WM_COMBO_RESIZE_DEC_W = 7, WM_COMBO_RESIZE_INC_W = 8, WM_COMBO_RESIZE_DEC_BOTH = 9, WM_COMBO_RESIZE_INC_BOTH = 10, WM_COMBO_RESET = 11 } wm_combo_action_t; /** Docstring: One row of the shared Alt/Super combo table.", "kind": "struct", "line": 158, "name": "wm_combo_t"}, {"doc": "int button; int wheel; } wm_event_t; /** Docstring: Centralized event translator configuration. typedef struct { int left_mask; int wheel_step; } wm_event_config_t; /** Docstring: Default event configuration matching the PS/2 mouse path. #define WM_EVENT_CONFIG_DEFAULT { 1, 3 } /** Docstring: True on the rising edge of the left button.", "kind": "function", "line": 52, "name": "wm_is_click_edge", "signature": "static inline int wm_is_click_edge(const wm_event_config_t *cfg, int prev_buttons, int curr_buttons)"}, {"doc": "int wheel_step; } wm_event_config_t; /** Docstring: Default event configuration matching the PS/2 mouse path. #define WM_EVENT_CONFIG_DEFAULT { 1, 3 } /** Docstring: True on the rising edge of the left button. static inline int wm_is_click_edge(const wm_event_config_t *cfg, int prev_buttons, int curr_buttons) { int mask = (cfg != 0 && cfg->left_mask != 0) ? cfg->left_mask : 1; return (curr_buttons & mask) && !(prev_buttons & mask); } /** Docstring: True on the falling edge of the left button.", "kind": "function", "line": 59, "name": "wm_is_release_edge", "signature": "static inline int wm_is_release_edge(const wm_event_config_t *cfg, int prev_buttons, int curr_but..."}, {"doc": "static inline int wm_is_click_edge(const wm_event_config_t *cfg, int prev_buttons, int curr_buttons) { int mask = (cfg != 0 && cfg->left_mask != 0) ? cfg->left_mask : 1; return (curr_buttons & mask) && !(prev_buttons & mask); } /** Docstring: True on the falling edge of the left button. static inline int wm_is_release_edge(const wm_event_config_t *cfg, int prev_buttons, int curr_buttons) { int mask = (cfg != 0 && cfg->left_mask != 0) ? cfg->left_mask : 1; return !(curr_buttons & mask) && (prev_buttons & mask); } /** Docstring: Translate two consecutive mouse snapshots into one event.", "kind": "function", "line": 66, "name": "wm_translate_event", "signature": "static inline wm_event_t wm_translate_event(const wm_event_config_t *cfg, const wm_mouse_t *prev,..."}, {"doc": "return evt; } if (curr->wheel != 0) { evt.type = WM_EVT_SCROLL; return evt; } if (curr->x != prev->x || curr->y != prev->y) { evt.type = WM_EVT_MOVE; return evt; } return evt; } /** Docstring: True when the event must suppress a title drag on this tick.", "kind": "function", "line": 104, "name": "wm_event_suppresses_drag", "signature": "static inline int wm_event_suppresses_drag(const wm_event_t *evt)"}, {"doc": "{1, 0, 1, WM_SC_HOME, WM_PATH_COOKED, WM_COMBO_SNAP, WM_SNAP_TOP_LEFT}, {1, 0, 1, WM_SC_END, WM_PATH_COOKED, WM_COMBO_SNAP, WM_SNAP_BOTTOM_RIGHT}, {0, 1, 1, WM_SC_UP, WM_PATH_COOKED | WM_PATH_RAW, WM_COMBO_SNAP, WM_SNAP_TOP}, {0, 1, 1, WM_SC_DOWN, WM_PATH_COOKED | WM_PATH_RAW, WM_COMBO_SNAP, WM_SNAP_BOTTOM}, {0, 1, 1, WM_SC_LEFT, WM_PATH_COOKED | WM_PATH_RAW, WM_COMBO_SNAP, WM_SNAP_LEFT}, {0, 1, 1, WM_SC_RIGHT, WM_PATH_COOKED | WM_PATH_RAW, WM_COMBO_SNAP, WM_SNAP_RIGHT}, {0, 1, 1, WM_SC_HOME, WM_PATH_COOKED | WM_PATH_RAW, WM_COMBO_SNAP, WM_SNAP_TOP_LEFT}, {0, 1, 1, WM_SC_END, WM_PATH_COOKED | WM_PATH_RAW, WM_COMBO_SNAP, WM_SNAP_BOTTOM_RIGHT} }; /** Docstring: Row count of the shared combo table. #define WM_COMBOS_N (sizeof(WM_COMBOS) / sizeof(WM_COMBOS[0])) /** Docstring: Lookup one Alt/Super combo, fail closed on AltGr or mismatch.", "kind": "function", "line": 201, "name": "wm_combo_lookup", "signature": "static inline int wm_combo_lookup(int alt, int altgr, int sup, int e0, int sc, int path, int *zon..."}, {"doc": "continue; } if (!(WM_COMBOS[i].paths & path)) { continue; } if (zone_out != 0) { zone_out = WM_COMBOS[i].zone; } return WM_COMBOS[i].action; } return WM_COMBO_NONE; } /** Docstring: Lookup through one modifier state, AltGr fail-closed.", "kind": "function", "line": 238, "name": "wm_combo_lookup_mods", "signature": "static inline int wm_combo_lookup_mods(const modifier_state_t *st, int e0, int sc, int path, int ..."}, {"kind": "macro", "line": 11, "name": "WM_EVENTS_H", "signature": "#define WM_EVENTS_H"}, {"kind": "macro", "line": 49, "name": "WM_EVENT_CONFIG_DEFAULT", "signature": "#define WM_EVENT_CONFIG_DEFAULT"}, {"kind": "macro", "line": 110, "name": "WM_SC_TAB", "signature": "#define WM_SC_TAB"}, {"kind": "macro", "line": 111, "name": "WM_SC_ENTER", "signature": "#define WM_SC_ENTER"}, {"kind": "macro", "line": 112, "name": "WM_SC_MINUS", "signature": "#define WM_SC_MINUS"}, {"kind": "macro", "line": 113, "name": "WM_SC_EQUAL", "signature": "#define WM_SC_EQUAL"}, {"kind": "macro", "line": 114, "name": "WM_SC_ZERO", "signature": "#define WM_SC_ZERO"}, {"kind": "macro", "line": 115, "name": "WM_SC_Q", "signature": "#define WM_SC_Q"}, {"kind": "macro", "line": 116, "name": "WM_SC_LBRACKET", "signature": "#define WM_SC_LBRACKET"}, {"kind": "macro", "line": 117, "name": "WM_SC_RBRACKET", "signature": "#define WM_SC_RBRACKET"}, {"kind": "macro", "line": 118, "name": "WM_SC_M", "signature": "#define WM_SC_M"}, {"kind": "macro", "line": 119, "name": "WM_SC_X", "signature": "#define WM_SC_X"}, {"kind": "macro", "line": 120, "name": "WM_SC_UP", "signature": "#define WM_SC_UP"}, {"kind": "macro", "line": 121, "name": "WM_SC_DOWN", "signature": "#define WM_SC_DOWN"}, {"kind": "macro", "line": 122, "name": "WM_SC_LEFT", "signature": "#define WM_SC_LEFT"}, {"kind": "macro", "line": 123, "name": "WM_SC_RIGHT", "signature": "#define WM_SC_RIGHT"}, {"kind": "macro", "line": 124, "name": "WM_SC_HOME", "signature": "#define WM_SC_HOME"}, {"kind": "macro", "line": 125, "name": "WM_SC_END", "signature": "#define WM_SC_END"}, {"kind": "macro", "line": 128, "name": "WM_SNAP_LEFT", "signature": "#define WM_SNAP_LEFT"}, {"kind": "macro", "line": 129, "name": "WM_SNAP_RIGHT", "signature": "#define WM_SNAP_RIGHT"}, {"kind": "macro", "line": 130, "name": "WM_SNAP_TOP", "signature": "#define WM_SNAP_TOP"}, {"kind": "macro", "line": 131, "name": "WM_SNAP_BOTTOM", "signature": "#define WM_SNAP_BOTTOM"}, {"kind": "macro", "line": 132, "name": "WM_SNAP_TOP_LEFT", "signature": "#define WM_SNAP_TOP_LEFT"}, {"kind": "macro", "line": 133, "name": "WM_SNAP_TOP_RIGHT", "signature": "#define WM_SNAP_TOP_RIGHT"}, {"kind": "macro", "line": 134, "name": "WM_SNAP_BOTTOM_LEFT", "signature": "#define WM_SNAP_BOTTOM_LEFT"}, {"kind": "macro", "line": 135, "name": "WM_SNAP_BOTTOM_RIGHT", "signature": "#define WM_SNAP_BOTTOM_RIGHT"}, {"kind": "macro", "line": 138, "name": "WM_PATH_COOKED", "signature": "#define WM_PATH_COOKED"}, {"kind": "macro", "line": 139, "name": "WM_PATH_RAW", "signature": "#define WM_PATH_RAW"}, {"kind": "macro", "line": 198, "name": "WM_COMBOS_N", "signature": "#define WM_COMBOS_N"}]}, {"doc": "Docstring: Focus manager contract for the MiniOS desktop.", "id": "headers/wm_focus.h", "kind": "module", "label": "wm_focus.h", "language": "h", "sha256": "22b2ccdaea76a456", "symbol_count": 5, "symbols": [{"doc": "Docstring: Focus manager contract for the MiniOS desktop. Single-file header-only contract owning focus state transitions. Focus ids share one space across terminals and the graphics window; every transition validates against present flags and the graphics mode so an invalid id can never steal the keyboard. The state struct carries no kernel dependency, keeping all transitions host-testable. #ifndef WM_FOCUS_H #define WM_FOCUS_H #include \"wm_window.h\" /** Docstring: Focus state snapshot consumed by every transition.", "kind": "struct", "line": 15, "name": "wm_focus_state_t"}, {"doc": "#ifndef WM_FOCUS_H #define WM_FOCUS_H #include \"wm_window.h\" /** Docstring: Focus state snapshot consumed by every transition. typedef struct { int focus; int nterms; int present[4]; int gfx_active; } wm_focus_state_t; /** Docstring: True when id is a selectable focus target in this state.", "kind": "function", "line": 23, "name": "wm_focus_selectable", "signature": "static inline int wm_focus_selectable(const wm_focus_state_t *st, int id)"}, {"doc": "{ if (st == 0) { return 0; } if (id == WM_WINDOW_GFX_ID) { return st->gfx_active ? 1 : 0; } if (id < 0 || id >= st->nterms || id >= 4) { return 0; } return st->present[id] ? 1 : 0; } /** Docstring: Next focus id in rotation order, unchanged when < 2 targets.", "kind": "function", "line": 38, "name": "wm_focus_next", "signature": "static inline int wm_focus_next(const wm_focus_state_t *st)"}, {"doc": "int i; if (st == 0) { return 0; } for (i = 0; i < 4; i++) { flat[i] = 0; } for (i = 0; i < st->nterms && i < 4; i++) { flat[i] = st->present[i]; } return wm_focus_next_id(flat, st->nterms > 4 ? 4 : st->nterms, st->gfx_active, st->focus); } /** Docstring: Validated focus assignment, -1 when id is not selectable.", "kind": "function", "line": 55, "name": "wm_focus_set", "signature": "static inline int wm_focus_set(const wm_focus_state_t *st, int id)"}, {"kind": "macro", "line": 10, "name": "WM_FOCUS_H", "signature": "#define WM_FOCUS_H"}]}, {"doc": "Docstring: Window geometry contract for the MiniOS desktop.", "id": "headers/wm_geom.h", "kind": "module", "label": "wm_geom.h", "language": "h", "sha256": "a72ef1326e46d7d3", "symbol_count": 11, "symbols": [{"doc": "Docstring: Window geometry contract for the MiniOS desktop. Single-file header-only contract owning every rectangle computation the window manager performs. All dimensions arrive through wm_geom_config_t so no caller hardcodes font metrics, title height or scrollbar width. Every predicate fails closed on degenerate rectangles and every constructor clamps negative extents to zero instead of producing inverted ranges that a hit test could misread. #ifndef WM_GEOM_H #define WM_GEOM_H /** Docstring: Centralized geometry configuration for one WM layout engine.", "kind": "struct", "line": 14, "name": "wm_geom_config_t"}, {"doc": "#define WM_GEOM_H /** Docstring: Centralized geometry configuration for one WM layout engine. typedef struct { int font_w; int font_h; int scrollbar_w; int title_h; } wm_geom_config_t; /** Docstring: Default geometry matching the kernel 8x8 font layout. #define WM_GEOM_CONFIG_DEFAULT { 8, 8, 8, 8 } /** Docstring: Axis-aligned rectangle in framebuffer pixels.", "kind": "struct", "line": 25, "name": "wm_rect_t"}, {"doc": "} wm_geom_config_t; /** Docstring: Default geometry matching the kernel 8x8 font layout. #define WM_GEOM_CONFIG_DEFAULT { 8, 8, 8, 8 } /** Docstring: Axis-aligned rectangle in framebuffer pixels. typedef struct { int x; int y; int w; int h; } wm_rect_t; /** Docstring: True when the rectangle can contain any point.", "kind": "function", "line": 33, "name": "wm_rect_valid", "signature": "static inline int wm_rect_valid(const wm_rect_t *r)"}, {"doc": "typedef struct { int x; int y; int w; int h; } wm_rect_t; /** Docstring: True when the rectangle can contain any point. static inline int wm_rect_valid(const wm_rect_t *r) { return r != 0 && r->w > 0 && r->h > 0; } /** Docstring: True when point px,py lies inside rectangle r.", "kind": "function", "line": 39, "name": "wm_rect_contains", "signature": "static inline int wm_rect_contains(const wm_rect_t *r, int px, int py)"}, {"doc": "{ return r != 0 && r->w > 0 && r->h > 0; } /** Docstring: True when point px,py lies inside rectangle r. static inline int wm_rect_contains(const wm_rect_t *r, int px, int py) { if (!wm_rect_valid(r)) { return 0; } return px >= r->x && px < r->x + r->w && py >= r->y && py < r->y + r->h; } /** Docstring: Title bar strip for a window at px,py with total width w.", "kind": "function", "line": 48, "name": "wm_title_bar_rect", "signature": "static inline wm_rect_t wm_title_bar_rect(const wm_geom_config_t *cfg, int px, int py, int w)"}, {"doc": "} /** Docstring: Title bar strip for a window at px,py with total width w. static inline wm_rect_t wm_title_bar_rect(const wm_geom_config_t *cfg, int px, int py, int w) { wm_rect_t r; r.x = px; r.y = py; r.w = w > 0 ? w : 0; r.h = (cfg != 0 && cfg->title_h > 0) ? cfg->title_h : 0; return r; } /** Docstring: Text content area below the title bar.", "kind": "function", "line": 59, "name": "wm_content_rect", "signature": "static inline wm_rect_t wm_content_rect(const wm_geom_config_t *cfg, int px, int py, int w, int h)"}, {"doc": "/** Docstring: Text content area below the title bar. static inline wm_rect_t wm_content_rect(const wm_geom_config_t *cfg, int px, int py, int w, int h) { wm_rect_t r; int th = (cfg != 0 && cfg->title_h > 0) ? cfg->title_h : 0; r.x = px; r.y = py + th; r.w = w > 0 ? w : 0; r.h = h - th > 0 ? h - th : 0; return r; } /** Docstring: Scrollbar strip at the right edge of the content area.", "kind": "function", "line": 71, "name": "wm_scrollbar_rect", "signature": "static inline wm_rect_t wm_scrollbar_rect(const wm_geom_config_t *cfg, int px, int py, int conten..."}, {"doc": "/** Docstring: Scrollbar strip at the right edge of the content area. static inline wm_rect_t wm_scrollbar_rect(const wm_geom_config_t *cfg, int px, int py, int content_w, int content_h) { wm_rect_t r; int th = (cfg != 0 && cfg->title_h > 0) ? cfg->title_h : 0; int sw = (cfg != 0 && cfg->scrollbar_w > 0) ? cfg->scrollbar_w : 0; r.x = px + content_w; r.y = py + th; r.w = sw; r.h = content_h > 0 ? content_h : 0; return r; } /** Docstring: True when point px,py hits the title bar of a window at wx,wy with total width w.", "kind": "function", "line": 84, "name": "wm_hit_title_bar", "signature": "static inline int wm_hit_title_bar(const wm_geom_config_t *cfg, int wx, int wy, int w, int px, in..."}, {"doc": "r.y = py + th; r.w = sw; r.h = content_h > 0 ? content_h : 0; return r; } /** Docstring: True when point px,py hits the title bar of a window at wx,wy with total width w. static inline int wm_hit_title_bar(const wm_geom_config_t *cfg, int wx, int wy, int w, int px, int py) { wm_rect_t r = wm_title_bar_rect(cfg, wx, wy, w); return wm_rect_contains(&r, px, py); } /** Docstring: Clamp a point into the framebuffer bounds.", "kind": "function", "line": 91, "name": "wm_clamp_point", "signature": "static inline void wm_clamp_point(int *px, int *py, int fb_w, int fb_h)"}, {"kind": "macro", "line": 11, "name": "WM_GEOM_H", "signature": "#define WM_GEOM_H"}, {"kind": "macro", "line": 22, "name": "WM_GEOM_CONFIG_DEFAULT", "signature": "#define WM_GEOM_CONFIG_DEFAULT"}]}, {"doc": "Docstring: Unified layout contract for the MiniOS desktop.", "id": "headers/wm_layout.h", "kind": "module", "label": "wm_layout.h", "language": "h", "sha256": "31d48fd93877b2b6", "symbol_count": 16, "symbols": [{"doc": "/** Docstring: Layout modes sharing one compute entry point. typedef enum { WM_LAYOUT_TILE = 0, WM_LAYOUT_BSP = 1, WM_LAYOUT_CASCADE = 2, WM_LAYOUT_FIBONACCI = 3, WM_LAYOUT_FULLSCREEN = 4 } wm_layout_mode_t; /** Docstring: Total layout modes in the mode table. #define WM_LAYOUT_MODE_COUNT 5 /** Docstring: One input window for layout computation.", "kind": "struct", "line": 27, "name": "wm_layout_window_t"}, {"doc": "/** Docstring: Total layout modes in the mode table. #define WM_LAYOUT_MODE_COUNT 5 /** Docstring: One input window for layout computation. typedef struct { int kind; int id; int present; int min_cols; int min_rows; } wm_layout_window_t; /** Docstring: Centralized layout configuration for one engine.", "kind": "struct", "line": 36, "name": "wm_layout_config_t"}, {"doc": "/** Docstring: Centralized layout configuration for one engine. typedef struct { int gap; int cascade_dx; int cascade_dy; int fib_num; int fib_den; } wm_layout_config_t; /** Docstring: Default layout matching the legacy two terminal split. #define WM_LAYOUT_CONFIG_DEFAULT { 0, 4, 2, 618, 1000 } /** Docstring: One computed cell in character units.", "kind": "struct", "line": 48, "name": "wm_layout_cell_t"}, {"doc": "/** Docstring: Default layout matching the legacy two terminal split. #define WM_LAYOUT_CONFIG_DEFAULT { 0, 4, 2, 618, 1000 } /** Docstring: One computed cell in character units. typedef struct { int x; int y; int cols; int rows; int fullscreen; } wm_layout_cell_t; /** Docstring: Human name for one layout mode, else zero.", "kind": "function", "line": 57, "name": "wm_layout_mode_name", "signature": "static inline const char *wm_layout_mode_name(int mode)"}, {"doc": "case WM_LAYOUT_BSP: return \"bsp\"; case WM_LAYOUT_CASCADE: return \"cascade\"; case WM_LAYOUT_FIBONACCI: return \"fibonacci\"; case WM_LAYOUT_FULLSCREEN: return \"fullscreen\"; default: return 0; } } /** Docstring: True when mode is a selectable layout mode.", "kind": "function", "line": 76, "name": "wm_layout_mode_valid", "signature": "static inline int wm_layout_mode_valid(int mode)"}, {"doc": "case WM_LAYOUT_FULLSCREEN: return \"fullscreen\"; default: return 0; } } /** Docstring: True when mode is a selectable layout mode. static inline int wm_layout_mode_valid(int mode) { return mode >= WM_LAYOUT_TILE && mode <= WM_LAYOUT_FULLSCREEN; } /** Docstring: Clamp cell extents into the grid, fail closed on nulls.", "kind": "function", "line": 82, "name": "wm_layout_clamp_cell", "signature": "static inline int wm_layout_clamp_cell(wm_layout_cell_t *cell, int max_cols, int max_rows)"}, {"doc": "} if (cell->rows < 1) { cell->rows = 1; } if (cell->x + cell->cols > max_cols) { cell->cols = max_cols - cell->x; } if (cell->y + cell->rows > max_rows) { cell->rows = max_rows - cell->y; } return cell->cols > 0 && cell->rows > 0; } /** Docstring: Full grid cell for the focused window.", "kind": "function", "line": 118, "name": "wm_layout_fullscreen_cell", "signature": "static inline int wm_layout_fullscreen_cell(int max_cols, int max_rows, wm_layout_cell_t *out)"}, {"doc": "return 0; } if (max_cols <= 0 || max_rows <= 0) { return 0; } out->x = 0; out->y = 0; out->cols = max_cols; out->rows = max_rows; out->fullscreen = 1; return 1; } /** Docstring: Tile split across the long axis, legacy dual split exactly.", "kind": "function", "line": 135, "name": "wm_layout_compute_tile", "signature": "static inline int wm_layout_compute_tile(const wm_layout_window_t *wins, int nwin, int max_cols, ..."}, {"doc": "} base = max_rows / nwin; rem = max_rows - base * nwin; for (i = 0; i < nwin; i++) { out[i].x = 0; out[i].y = i * base; out[i].cols = max_cols; out[i].rows = base + ((i == nwin - 1) ? rem : 0); out[i].fullscreen = 0; } return nwin; } /** Docstring: Recursive binary splits alternating axes, bspwm feel.", "kind": "function", "line": 182, "name": "wm_layout_compute_bsp", "signature": "static inline int wm_layout_compute_bsp(const wm_layout_window_t *wins, int nwin, int max_cols, i..."}, {"doc": "} out[i].x = rx; out[i].y = ry; out[i].cols = rw; out[i].rows = half; out[i].fullscreen = 0; ry = ry + half; rh = rh - half; } } return nwin; } /** Docstring: Cascaded offsets so every title stays visible.", "kind": "function", "line": 250, "name": "wm_layout_compute_cascade", "signature": "static inline int wm_layout_compute_cascade(const wm_layout_config_t *cfg, const wm_layout_window..."}, {"doc": "out[i].cols = max_cols - ox; out[i].rows = max_rows - oy; out[i].fullscreen = 0; if (out[i].cols < 1) { out[i].cols = 1; } if (out[i].rows < 1) { out[i].rows = 1; } } return nwin; } /** Docstring: Fibonacci spiral carving integer ratio strips.", "kind": "function", "line": 285, "name": "wm_layout_compute_fibonacci", "signature": "static inline int wm_layout_compute_fibonacci(const wm_layout_config_t *cfg, const wm_layout_wind..."}, {"doc": "} out[i].x = rx; out[i].y = ry; out[i].cols = rw; out[i].rows = cut; out[i].fullscreen = 0; ry = ry + cut; rh = rh - cut; } } return nwin; } /** Docstring: Compute one cell per present window in input order.", "kind": "function", "line": 361, "name": "wm_layout_compute", "signature": "static inline int wm_layout_compute(const wm_layout_config_t *cfg, const wm_layout_window_t *wins..."}, {"doc": "} if (n != nc) { return 0; } for (i = 0; i < nc; i++) { if (!wm_layout_clamp_cell(&cells[i], max_cols, max_rows)) { return 0; } out[i] = cells[i]; } return nc; } /** Docstring: True when two plans cover identical cells in order.", "kind": "function", "line": 443, "name": "wm_layout_same", "signature": "static inline int wm_layout_same(const wm_layout_cell_t *a, const wm_layout_cell_t *b, int n)"}, {"kind": "macro", "line": 12, "name": "WM_LAYOUT_H", "signature": "#define WM_LAYOUT_H"}, {"kind": "macro", "line": 24, "name": "WM_LAYOUT_MODE_COUNT", "signature": "#define WM_LAYOUT_MODE_COUNT"}, {"kind": "macro", "line": 45, "name": "WM_LAYOUT_CONFIG_DEFAULT", "signature": "#define WM_LAYOUT_CONFIG_DEFAULT"}]}, {"doc": "Docstring: Focus event bus for the MiniOS desktop.", "id": "headers/wm_notify.h", "kind": "module", "label": "wm_notify.h", "language": "h", "sha256": "965ce6fe6ba8cc6c", "symbol_count": 9, "symbols": [{"doc": "typedef enum { WM_NOTIFY_FOCUS = 1 } wm_notify_type_t; typedef enum { WM_FOCUS_SRC_KEYBOARD = 1, WM_FOCUS_SRC_POINTER = 2, WM_FOCUS_SRC_TASKBAR = 3, WM_FOCUS_SRC_MODE = 4, WM_FOCUS_SRC_PROGRAM = 5 } wm_focus_source_t; /** Docstring: One focus move, old and new ids share the focus space.", "kind": "struct", "line": 30, "name": "wm_notify_event_t"}, {"kind": "struct", "line": 43, "name": "wm_notify_bus_t"}, {"doc": "/** Docstring: Focus listener, runs synchronously inside emit. typedef void (*wm_notify_handler_t)(const wm_notify_event_t *event); /** Docstring: Static subscriber table plus last emitted event. #define WM_NOTIFY_MAX_HANDLERS 4 typedef struct { wm_notify_handler_t handlers[WM_NOTIFY_MAX_HANDLERS]; int count; wm_notify_event_t last; int has_event; } wm_notify_bus_t; /** Docstring: Drop every subscriber and forget the last event.", "kind": "function", "line": 51, "name": "wm_notify_reset", "signature": "static inline void wm_notify_reset(wm_notify_bus_t *bus)"}, {"doc": "{ int i; if (bus == 0) return; for (i = 0; i < WM_NOTIFY_MAX_HANDLERS; i++) bus->handlers[i] = 0; bus->count = 0; bus->last.type = 0; bus->last.old_focus = 0; bus->last.new_focus = 0; bus->last.source = 0; bus->has_event = 0; } /** Docstring: Register one listener, -1 when full or null.", "kind": "function", "line": 66, "name": "wm_notify_subscribe", "signature": "static inline int wm_notify_subscribe(wm_notify_bus_t *bus,\n ..."}, {"doc": "bus->has_event = 0; } /** Docstring: Register one listener, -1 when full or null. static inline int wm_notify_subscribe(wm_notify_bus_t *bus, wm_notify_handler_t handler) { if (bus == 0 || handler == 0) return -1; if (bus->count >= WM_NOTIFY_MAX_HANDLERS) return -1; bus->handlers[bus->count++] = handler; return 0; } /** Docstring: Deliver one event to every listener, then record it.", "kind": "function", "line": 76, "name": "wm_notify_emit", "signature": "static inline void wm_notify_emit(wm_notify_bus_t *bus,\n const w..."}, {"doc": "static inline void wm_notify_emit(wm_notify_bus_t *bus, const wm_notify_event_t *event) { int i; if (bus == 0 || event == 0) return; for (i = 0; i < bus->count; i++) { if (bus->handlers[i]) bus->handlers[i](event); } bus->last = *event; bus->has_event = 1; } /** Docstring: Last emitted event, 0 when none was ever emitted.", "kind": "function", "line": 90, "name": "wm_notify_last", "signature": "static inline const wm_notify_event_t *wm_notify_last(\n const wm_notify_bus_t *bus)"}, {"doc": "} bus->last = *event; bus->has_event = 1; } /** Docstring: Last emitted event, 0 when none was ever emitted. static inline const wm_notify_event_t *wm_notify_last( const wm_notify_bus_t *bus) { if (bus == 0 || !bus->has_event) return 0; return &bus->last; } /** Docstring: Short source name for serial-observable state.", "kind": "function", "line": 98, "name": "wm_notify_src_name", "signature": "static inline const char *wm_notify_src_name(int source)"}, {"kind": "macro", "line": 2, "name": "WM_NOTIFY_H", "signature": "#define WM_NOTIFY_H"}, {"kind": "macro", "line": 41, "name": "WM_NOTIFY_MAX_HANDLERS", "signature": "#define WM_NOTIFY_MAX_HANDLERS"}]}, {"doc": "Docstring: Render pipeline contract for the MiniOS desktop.", "id": "headers/wm_render.h", "kind": "module", "label": "wm_render.h", "language": "h", "sha256": "0ba1765e1e02af68", "symbol_count": 5, "symbols": [{"doc": "#define WM_RENDER_H #include \"wm_window.h\" /** Docstring: Composition layers from back to front. typedef enum { WM_LAYER_WALLPAPER = 0, WM_LAYER_SHORTCUTS = 1, WM_LAYER_TASKBAR = 2, WM_LAYER_TERMINAL = 3, WM_LAYER_GRAPHICS = 4 } wm_layer_t; /** Docstring: One composited item in back-to-front order.", "kind": "struct", "line": 25, "name": "wm_render_item_t"}, {"doc": "WM_LAYER_WALLPAPER = 0, WM_LAYER_SHORTCUTS = 1, WM_LAYER_TASKBAR = 2, WM_LAYER_TERMINAL = 3, WM_LAYER_GRAPHICS = 4 } wm_layer_t; /** Docstring: One composited item in back-to-front order. typedef struct { wm_layer_t layer; int id; } wm_render_item_t; /** Docstring: Centralized render pipeline configuration.", "kind": "struct", "line": 31, "name": "wm_render_config_t"}, {"doc": "typedef struct { wm_layer_t layer; int id; } wm_render_item_t; /** Docstring: Centralized render pipeline configuration. typedef struct { int max_items; } wm_render_config_t; /** Docstring: Default pipeline bound for two terminals plus chrome. #define WM_RENDER_CONFIG_DEFAULT { 8 } /** Docstring: Build the back-to-front composition plan for one frame.", "kind": "function", "line": 39, "name": "wm_build_render_plan", "signature": "static inline int wm_build_render_plan(const wm_render_config_t *cfg, const int *present, int nte..."}, {"kind": "macro", "line": 11, "name": "WM_RENDER_H", "signature": "#define WM_RENDER_H"}, {"kind": "macro", "line": 36, "name": "WM_RENDER_CONFIG_DEFAULT", "signature": "#define WM_RENDER_CONFIG_DEFAULT"}]}, {"doc": "Docstring: Tiling layout contract for the MiniOS desktop.", "id": "headers/wm_tiling.h", "kind": "module", "label": "wm_tiling.h", "language": "h", "sha256": "35b80d2faec87b9c", "symbol_count": 3, "symbols": [{"doc": "Docstring: Tiling layout contract for the MiniOS desktop. Single-file header-only contract owning terminal cell layout. Given the usable grid and which windows exist, it computes one cell per terminal in character units so no caller hardcodes half splits or stack math. Graphics placement stays in the kernel; this contract only reserves its half by narrowing the terminals. All functions fail closed. #ifndef WM_TILING_H #define WM_TILING_H /** Docstring: Terminal cell in character units.", "kind": "struct", "line": 13, "name": "wm_tile_cell_t"}, {"doc": "#ifndef WM_TILING_H #define WM_TILING_H /** Docstring: Terminal cell in character units. typedef struct { int x; int y; int cols; int rows; int fullscreen; } wm_tile_cell_t; /** Docstring: Compute terminal cells for the current window set.", "kind": "function", "line": 22, "name": "wm_tile_layout", "signature": "static inline int wm_tile_layout(const int *present, int nterms, int gfx_active, int max_cols, in..."}, {"kind": "macro", "line": 10, "name": "WM_TILING_H", "signature": "#define WM_TILING_H"}]}, {"doc": "Docstring: Unified window contract for the MiniOS desktop.", "id": "headers/wm_window.h", "kind": "module", "label": "wm_window.h", "language": "h", "sha256": "b7b2f8c44d03ab7d", "symbol_count": 10, "symbols": [{"doc": "/** Docstring: Window kinds sharing one focus space. typedef enum { WM_WIN_NONE = 0, WM_WIN_TERMINAL = 1, WM_WIN_GRAPHICS = 2 } wm_window_kind_t; /** Docstring: Focus id for the graphics window in the shared focus space. #define WM_WINDOW_GFX_ID 2 /** Docstring: Maximum terminal windows sharing the focus space. #define WM_WINDOW_MAX_TERMS 2 /** Docstring: Unified window descriptor in framebuffer pixels.", "kind": "struct", "line": 29, "name": "wm_window_t"}, {"doc": "/** Docstring: Unified window descriptor in framebuffer pixels. typedef struct { wm_window_kind_t kind; int id; int x; int y; int w; int h; int present; int minimized; } wm_window_t; /** Docstring: True when the window can receive input or pointer hits.", "kind": "function", "line": 41, "name": "wm_window_active", "signature": "static inline int wm_window_active(const wm_window_t *w)"}, {"doc": "int y; int w; int h; int present; int minimized; } wm_window_t; /** Docstring: True when the window can receive input or pointer hits. static inline int wm_window_active(const wm_window_t *w) { return w != 0 && w->kind != WM_WIN_NONE && w->present && !w->minimized && w->w > 0 && w->h > 0; } /** Docstring: Rectangle covering the whole window including decorations.", "kind": "function", "line": 47, "name": "wm_window_rect", "signature": "static inline wm_rect_t wm_window_rect(const wm_window_t *w)"}, {"doc": "} /** Docstring: Rectangle covering the whole window including decorations. static inline wm_rect_t wm_window_rect(const wm_window_t *w) { wm_rect_t r; r.x = (w != 0) ? w->x : 0; r.y = (w != 0) ? w->y : 0; r.w = (w != 0 && w->w > 0) ? w->w : 0; r.h = (w != 0 && w->h > 0) ? w->h : 0; return r; } /** Docstring: True when point px,py hits the window body or decorations.", "kind": "function", "line": 58, "name": "wm_window_contains", "signature": "static inline int wm_window_contains(const wm_window_t *w, int px, int py)"}, {"doc": "return r; } /** Docstring: True when point px,py hits the window body or decorations. static inline int wm_window_contains(const wm_window_t *w, int px, int py) { wm_rect_t r = wm_window_rect(w); if (!wm_window_active(w)) { return 0; } return wm_rect_contains(&r, px, py); } /** Docstring: True when point px,py hits the window title bar.", "kind": "function", "line": 68, "name": "wm_window_title_hits", "signature": "static inline int wm_window_title_hits(const wm_geom_config_t *cfg, const wm_window_t *w, int px,..."}, {"doc": "} return wm_rect_contains(&r, px, py); } /** Docstring: True when point px,py hits the window title bar. static inline int wm_window_title_hits(const wm_geom_config_t *cfg, const wm_window_t *w, int px, int py) { if (!wm_window_active(w)) { return 0; } return wm_hit_title_bar(cfg, w->x, w->y, w->w, px, py); } /** Docstring: Next focus id across present terminals plus graphics when active.", "kind": "function", "line": 77, "name": "wm_focus_next_id", "signature": "static inline int wm_focus_next_id(const int *present, int nterms, int gfx_active, int focus)"}, {"doc": "return focus; } for (k = 0; k < n; k++) { if (ids[k] == focus) { at = k; } } if (at < 0) { return ids[0]; } return ids[(at + 1) % n]; } /** Docstring: Paint order for terminals with focused window last.", "kind": "function", "line": 114, "name": "wm_paint_order", "signature": "static inline int wm_paint_order(const int *present, int nterms, int focus, int *order, int cap)"}, {"kind": "macro", "line": 11, "name": "WM_WINDOW_H", "signature": "#define WM_WINDOW_H"}, {"kind": "macro", "line": 23, "name": "WM_WINDOW_GFX_ID", "signature": "#define WM_WINDOW_GFX_ID"}, {"kind": "macro", "line": 26, "name": "WM_WINDOW_MAX_TERMS", "signature": "#define WM_WINDOW_MAX_TERMS"}]}, {"doc": "zip.h — MiniOS integration API for the miniz zip library.", "id": "headers/zip.h", "kind": "module", "label": "zip.h", "language": "h", "sha256": "49df234e67f3e432", "symbol_count": 3, "symbols": [{"kind": "function", "line": 6, "name": "miniz", "signature": "* * The shell builtins over miniz (see zip.c) are declared here so kernel.c's * shell dispatcher can route the unzip/zip commands. Both builtins work * whole-file in memory over the unified file API ("}, {"kind": "function", "line": 15, "name": "shell_cmd_zip", "signature": "void shell_cmd_zip(int argc, char **argv);"}, {"kind": "macro", "line": 2, "name": "ZIP_H", "signature": "#define ZIP_H"}]}, {"doc": "Docstring: kernel/abi.c -- Boot-time ABI manifest gate.", "id": "kernel/abi.c", "kind": "module", "label": "abi.c", "language": "c", "sha256": "c64807fe670492cb", "symbol_count": 3, "symbols": [{"doc": "order, junk, overflow, missing newline) fails closed as BAD_FORMAT. Number parsing carries its own overflow guard so a hostile manifest can never wrap into a false match. The file has no kernel dependency beyond the manifest check itself, so the host test compiles it with ABI_HOST_TEST and covers every branch without a QEMU boot. #include \"abi.h\" #ifndef ABI_HOST_TEST #include \"kernel.h\" #endif /** Docstring: Parse one decimal field, overflow-guarded.", "kind": "function", "line": 20, "name": "abi_parse_num", "signature": "static int abi_parse_num(const char **pp, const char *end, unsigned long *out)"}, {"doc": "return 0; while (p < end && *p >= '0' && *p <= '9') { unsigned digit = (unsigned)(*p - '0'); if (v > (0xFFFFFFFFFFFFFFFFUL - digit) / 10) return 0; v = v * 10 + digit; p++; } pp = p; out = v; return 1; } /** Docstring: Verify manifest text against the running ABI.", "kind": "function", "line": 38, "name": "abi_verify", "signature": "int abi_verify(const char *text, long version, unsigned long checksum)"}, {"doc": "p += 2; if (!abi_parse_num(&p, end, &c)) return ABI_BAD_FORMAT; if (p + 1 != end || *p != '\\n') return ABI_BAD_FORMAT; if ((long)v != version) return ABI_VERSION_MISMATCH; if (c != checksum) return ABI_CHECKSUM_MISMATCH; return ABI_OK; } #ifndef ABI_HOST_TEST /** Docstring: Read etc/abi from the ramdisk and verify the running ABI.", "kind": "function", "line": 74, "name": "abi_check_manifest", "signature": "int abi_check_manifest(void)"}]}, {"doc": "Docstring: kernel/batch.c -- Ordered batch executor.", "id": "kernel/batch.c", "kind": "module", "label": "batch.c", "language": "c", "sha256": "ce040dbb0abc0441", "symbol_count": 1, "symbols": [{"doc": "Docstring: Run ops in order, storing one result per index. Returns BATCH_OK when every operation dispatched without a negative result. On the first negative dispatch result, stops immediately and returns that error. completed always reports the number of successful operations, including on early refusal (zero). A null dispatch table entry for a known opcode is treated as BATCH_ERR_OPCODE, never called.", "kind": "function", "line": 19, "name": "batch_exec", "signature": "long batch_exec(const batch_op_t *ops, long *results, int count,\n int *completed, ..."}]}, {"doc": "console.c -- Execution-context output: text console, capture, libc names.", "id": "kernel/console.c", "kind": "module", "label": "console.c", "language": "c", "sha256": "11f293bd06244ad2", "symbol_count": 24, "symbols": [{"kind": "function", "line": 18, "name": "vga_get_x", "signature": "int vga_get_x(void)"}, {"kind": "function", "line": 19, "name": "vga_get_y", "signature": "int vga_get_y(void)"}, {"kind": "function", "line": 20, "name": "vga_set_xy", "signature": "void vga_set_xy(int x, int y)"}, {"kind": "function", "line": 21, "name": "vga_get_color", "signature": "char vga_get_color(void)"}, {"kind": "function", "line": 23, "name": "vga_offset", "signature": "static inline unsigned vga_offset(int x, int y)"}, {"kind": "function", "line": 25, "name": "vga_clear", "signature": "void vga_clear(void)"}, {"kind": "function", "line": 36, "name": "vga_set_cursor", "signature": "void vga_set_cursor(int x, int y)"}, {"kind": "function", "line": 56, "name": "vga_scroll", "signature": "void vga_scroll(void)"}, {"kind": "function", "line": 75, "name": "vga_newline", "signature": "void vga_newline(void)"}, {"kind": "function", "line": 81, "name": "vga_cursor_enable", "signature": "void vga_cursor_enable(int on)"}, {"kind": "function", "line": 88, "name": "vga_raw_space", "signature": "static void vga_raw_space(void)"}, {"kind": "function", "line": 105, "name": "redir_grow", "signature": "static int redir_grow(void)"}, {"kind": "function", "line": 115, "name": "redirect_active", "signature": "int redirect_active(void)"}, {"kind": "function", "line": 117, "name": "redirect_putc", "signature": "static int redirect_putc(char c)"}, {"kind": "function", "line": 124, "name": "redirect_suspend", "signature": "int redirect_suspend(void)"}, {"kind": "function", "line": 130, "name": "redirect_resume", "signature": "void redirect_resume(int was)"}, {"kind": "function", "line": 134, "name": "redirect_begin", "signature": "int redirect_begin(void)"}, {"kind": "function", "line": 142, "name": "redirect_commit", "signature": "int redirect_commit(const char *path, int append_mode)"}, {"kind": "function", "line": 161, "name": "vga_putc", "signature": "void vga_putc(char c)"}, {"kind": "function", "line": 205, "name": "vga_puts", "signature": "void vga_puts(const char *s)"}, {"kind": "function", "line": 209, "name": "register_libc_symbols", "signature": "void register_libc_symbols(void)"}, {"kind": "macro", "line": 4, "name": "XXH_STATIC_LINKING_ONLY", "signature": "#define XXH_STATIC_LINKING_ONLY"}, {"kind": "macro", "line": 96, "name": "REDIR_INITIAL_CAP", "signature": "#define REDIR_INITIAL_CAP"}, {"kind": "macro", "line": 97, "name": "REDIR_MAX_BYTES", "signature": "#define REDIR_MAX_BYTES"}]}, {"doc": "Docstring: Console input device (kernel/console_in.c).", "id": "kernel/console_in.c", "kind": "module", "label": "console_in.c", "language": "c", "sha256": "26228cc473f2f361", "symbol_count": 26, "symbols": [{"kind": "function", "line": 19, "name": "pb_empty", "signature": "static int pb_empty(void)"}, {"kind": "function", "line": 20, "name": "pb_count", "signature": "static int pb_count(void)"}, {"kind": "function", "line": 21, "name": "pb_push_back", "signature": "static void pb_push_back(unsigned char c)"}, {"kind": "function", "line": 26, "name": "pb_push_front", "signature": "static void pb_push_front(unsigned char c)"}, {"kind": "function", "line": 31, "name": "pb_pop", "signature": "static int pb_pop(void)"}, {"kind": "function", "line": 37, "name": "pb_peek", "signature": "static int pb_peek(void)"}, {"doc": "Docstring: Push one byte back into the console FIFO; the next * console_getc/console_peek serves it first. Drops the byte when full.", "kind": "function", "line": 44, "name": "console_ungetc", "signature": "void console_ungetc(unsigned char c)"}, {"doc": "Docstring: Next raw byte (kbd queue, then serial, then PS/2) without * touching the pushback FIFO; blocks until one is available.", "kind": "function", "line": 50, "name": "raw_blocking_getc", "signature": "static int raw_blocking_getc(void)"}, {"doc": "int c = serial_getc(); if (c >= 0) return c; } if (kbd_available()) { int c = kbd_read(); if (c >= 0) return c; } if (vga_fb_active && (++mouse_tick_cnt & 0xFF) == 0) vga_fb_mouse_tick(); __asm__ volatile(\"pause\"); } } /** Docstring: Non-blocking variant of the above for sequence lookahead.", "kind": "function", "line": 69, "name": "raw_try_getc", "signature": "static int raw_try_getc(void)"}, {"kind": "function", "line": 85, "name": "ESC", "signature": "* The bound keeps a bare ESC (never completed into a sequence) from\n * hanging the reader. */\n#de..."}, {"doc": "Docstring: Called after an ESC byte has been read. Pulls the remainder of the sequence non-blocking and classifies it. Returns 1 (PageUp), 2 (PageDown), or 0 for \"not a page key\" — in which case every byte pulled EXCEPT the leading ESC is re-injected into the pushback FIFO so the caller can hand them back to the readline layer exactly as it would * a raw escape.", "kind": "function", "line": 106, "name": "consume_page_after_esc", "signature": "static int consume_page_after_esc(void)"}, {"doc": "Docstring: Blocking read from either the PS/2 keyboard or COM1 serial line. Recognises the PageUp/PageDown escape sequences and detours into the scrollback view; the view re-injects any terminating key into the pushback FIFO, so once it returns console_getc() simply serves the FIFO * again.", "kind": "function", "line": 133, "name": "console_getc", "signature": "int console_getc(void)"}, {"doc": "Docstring: Next buffered byte without consuming it, or -1 when nothing is available right now. Used to tell an ESC prefix from a complete escape sequence, which always arrives in one burst. Global so SYS_SPAWN waits in spawn.c can poll for Ctrl+C exactly like the shell foreground * wait does.", "kind": "function", "line": 156, "name": "console_peek", "signature": "int console_peek(void)"}, {"doc": "Docstring: Raw console multiplexer for the GETC_RAW syscall. The same serial + PS/2 sources console_getc funnels, but without the line buffering, echo or scrollback detour: a ring-3 fullscreen program reads keystrokes byte by byte. Blocking spins with a pause (and the desktop tick, as the shell idle loop does); the try variant returns -1 when * nothing is available so user space can implement its own timeout.", "kind": "function", "line": 169, "name": "console_raw_try", "signature": "int console_raw_try(void)"}, {"kind": "function", "line": 173, "name": "console_raw_get", "signature": "int console_raw_get(void)"}, {"doc": "serial + PS/2 sources console_getc funnels, but without the line buffering, echo or scrollback detour: a ring-3 fullscreen program reads keystrokes byte by byte. Blocking spins with a pause (and the desktop tick, as the shell idle loop does); the try variant returns -1 when * nothing is available so user space can implement its own timeout. int console_raw_try(void) { return raw_try_getc(); } int console_raw_get(void) { return raw_blocking_getc(); } /** Docstring: PS/2-only GETC_RAW source for ring-3 background jobs.", "kind": "function", "line": 178, "name": "console_job_try", "signature": "int console_job_try(void)"}, {"doc": "int console_raw_get(void) { return raw_blocking_getc(); } /** Docstring: PS/2-only GETC_RAW source for ring-3 background jobs. int console_job_try(void) { if (kbd_available()) { int c = kbd_read(); if (c >= 0) return c; } return -1; } /** Docstring: Blocking PS/2-only GETC_RAW source for background jobs.", "kind": "function", "line": 187, "name": "console_job_get", "signature": "int console_job_get(void)"}, {"kind": "function", "line": 203, "name": "scrollback_render", "signature": "static void scrollback_render(int voff, int total, const unsigned char *saved)"}, {"doc": "Docstring: Reads the next scrollback key event: PageUp/PageDown navigate; any other key (or a non-page escape sequence) is re-injected * and reported as SB_EXIT.", "kind": "function", "line": 231, "name": "sb_next", "signature": "static int sb_next(void)"}, {"kind": "function", "line": 241, "name": "scrollback_view", "signature": "static void scrollback_view(int initial_dir)"}, {"kind": "macro", "line": 15, "name": "PB_LEN", "signature": "#define PB_LEN"}, {"kind": "macro", "line": 87, "name": "MAX_SEQ_POLL", "signature": "#define MAX_SEQ_POLL"}, {"kind": "macro", "line": 201, "name": "SB_LEN", "signature": "#define SB_LEN"}, {"kind": "macro", "line": 224, "name": "SB_PGUP", "signature": "#define SB_PGUP"}, {"kind": "macro", "line": 225, "name": "SB_PGDN", "signature": "#define SB_PGDN"}, {"kind": "macro", "line": 226, "name": "SB_EXIT", "signature": "#define SB_EXIT"}]}, {"id": "kernel/cvm_host.c", "kind": "module", "label": "cvm_host.c", "language": "c", "sha256": "4a747ec5381c90a4", "symbol_count": 45, "symbols": [{"kind": "function", "line": 22, "name": "n_strcmp", "signature": "static int64_t n_strcmp(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 28, "name": "n_strncmp", "signature": "static int64_t n_strncmp(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 35, "name": "n_strcpy", "signature": "static int64_t n_strcpy(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 41, "name": "n_strncpy", "signature": "static int64_t n_strncpy(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 48, "name": "n_memcpy", "signature": "static int64_t n_memcpy(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 55, "name": "n_memset", "signature": "static int64_t n_memset(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 61, "name": "n_memmove", "signature": "static int64_t n_memmove(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 68, "name": "n_memcmp", "signature": "static int64_t n_memcmp(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 75, "name": "n_strchr", "signature": "static int64_t n_strchr(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 81, "name": "n_strstr", "signature": "static int64_t n_strstr(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 88, "name": "n_malloc", "signature": "static int64_t n_malloc(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 93, "name": "n_free", "signature": "static int64_t n_free(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 98, "name": "n_calloc", "signature": "static int64_t n_calloc(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 106, "name": "n_realloc", "signature": "static int64_t n_realloc(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 114, "name": "n_exit", "signature": "static int64_t n_exit(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 121, "name": "n_fopen", "signature": "static int64_t n_fopen(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 128, "name": "n_fclose", "signature": "static int64_t n_fclose(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 134, "name": "n_fread", "signature": "static int64_t n_fread(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 141, "name": "n_fwrite", "signature": "static int64_t n_fwrite(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 148, "name": "n_fseek", "signature": "static int64_t n_fseek(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 154, "name": "n_ftell", "signature": "static int64_t n_ftell(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 160, "name": "n_rewind", "signature": "static int64_t n_rewind(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 167, "name": "n_fputs", "signature": "static int64_t n_fputs(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 173, "name": "n_fputc", "signature": "static int64_t n_fputc(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 179, "name": "n_fgetc", "signature": "static int64_t n_fgetc(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 185, "name": "n_ungetc", "signature": "static int64_t n_ungetc(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 191, "name": "n_fflush", "signature": "static int64_t n_fflush(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 197, "name": "n_putchar", "signature": "static int64_t n_putchar(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 204, "name": "n_write", "signature": "static int64_t n_write(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 213, "name": "n_read", "signature": "static int64_t n_read(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 228, "name": "n_puts", "signature": "static int64_t n_puts(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 236, "name": "n_atol", "signature": "static int64_t n_atol(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 249, "name": "n_strtol", "signature": "static int64_t n_strtol(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 262, "name": "n_stderr_addr", "signature": "static int64_t n_stderr_addr(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 267, "name": "n_stdout_addr", "signature": "static int64_t n_stdout_addr(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 272, "name": "n_stdin_addr", "signature": "static int64_t n_stdin_addr(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 277, "name": "kout_char", "signature": "static void kout_char(void *ctx, char c)"}, {"kind": "function", "line": 283, "name": "kout_uint", "signature": "static void kout_uint(void *ctx, unsigned long long v, int base, int upper)"}, {"kind": "function", "line": 296, "name": "kformat", "signature": "static void kformat(void *ctx, const char *fmt, uint64_t *argv, int argc)"}, {"kind": "function", "line": 362, "name": "n_fprintf", "signature": "static int64_t n_fprintf(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 369, "name": "n_printf", "signature": "static int64_t n_printf(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 376, "name": "n_sprintf", "signature": "static int64_t n_sprintf(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 384, "name": "n_snprintf", "signature": "static int64_t n_snprintf(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 392, "name": "register_host_natives", "signature": "static void register_host_natives(CvmState *vm)"}, {"kind": "function", "line": 437, "name": "cvm_main", "signature": "int cvm_main(int argc, char **argv)"}]}, {"doc": "================================================================", "id": "kernel/editor.c", "kind": "module", "label": "editor.c", "language": "c", "sha256": "c0869a6c0a165ab5", "symbol_count": 22, "symbols": [{"kind": "struct", "line": 24, "name": "EditLine"}, {"kind": "struct", "line": 29, "name": "EditBuf"}, {"kind": "function", "line": 38, "name": "edit_alloc", "signature": "static EditBuf *edit_alloc(const char *fname)"}, {"kind": "function", "line": 55, "name": "edit_free", "signature": "static void edit_free(EditBuf *e)"}, {"kind": "function", "line": 61, "name": "edit_load", "signature": "static int edit_load(EditBuf *e)"}, {"kind": "function", "line": 99, "name": "edit_save", "signature": "static int edit_save(EditBuf *e)"}, {"kind": "function", "line": 113, "name": "edit_print", "signature": "static void edit_print(EditBuf *e, int idx)"}, {"doc": "List a (possibly empty) range [start, end], both 1-based inclusive. A * single argument lists from that line; no argument lists everything.", "kind": "function", "line": 123, "name": "edit_list", "signature": "static void edit_list(EditBuf *e, int start, int end)"}, {"kind": "function", "line": 135, "name": "edit_set_line", "signature": "static int edit_set_line(EditBuf *e, int idx, const char *text)"}, {"kind": "function", "line": 144, "name": "edit_insert", "signature": "static int edit_insert(EditBuf *e, int idx, const char *text)"}, {"kind": "function", "line": 154, "name": "edit_delete", "signature": "static int edit_delete(EditBuf *e, int idx)"}, {"doc": "Copy a line into a NUL-terminated scratch buffer (lines are otherwise * stored length-prefixed without a terminator).", "kind": "function", "line": 166, "name": "edit_line_cstr", "signature": "static void edit_line_cstr(EditLine *l, char *out)"}, {"kind": "function", "line": 171, "name": "edit_search", "signature": "static void edit_search(EditBuf *e, const char *needle)"}, {"kind": "function", "line": 188, "name": "edit_status", "signature": "static void edit_status(EditBuf *e)"}, {"kind": "function", "line": 196, "name": "edit_usage", "signature": "static void edit_usage(void)"}, {"doc": "A buffer that did not hold the whole file must never be written back: * saving it would drop the part that was never loaded.", "kind": "function", "line": 207, "name": "edit_refuse_save", "signature": "static int edit_refuse_save(EditBuf *e)"}, {"kind": "function", "line": 213, "name": "edit_arg_line", "signature": "static int edit_arg_line(int argc, char **argv, EditBuf *e, int *out)"}, {"kind": "function", "line": 224, "name": "edit_loop", "signature": "static void edit_loop(EditBuf *e)"}, {"kind": "function", "line": 329, "name": "shell_cmd_edit", "signature": "void shell_cmd_edit(int argc, char **argv)"}, {"kind": "macro", "line": 20, "name": "EDIT_MAX_LINES", "signature": "#define EDIT_MAX_LINES"}, {"kind": "macro", "line": 21, "name": "EDIT_LINE_MAX", "signature": "#define EDIT_LINE_MAX"}, {"kind": "macro", "line": 22, "name": "EDIT_FILE_MAX", "signature": "#define EDIT_FILE_MAX"}]}, {"doc": "exec.c - Process execution: setjmp/longjmp, k_exec_user, k_run_rel, kexit.", "id": "kernel/exec.c", "kind": "module", "label": "exec.c", "language": "c", "sha256": "0ac7f6edcf369d9e", "symbol_count": 10, "symbols": [{"kind": "function", "line": 60, "name": "vga_mode_set", "signature": "void vga_mode_set(int on)"}, {"kind": "function", "line": 61, "name": "vga_mode_is_active", "signature": "int vga_mode_is_active(void)"}, {"kind": "function", "line": 62, "name": "vga_gfx_ran_set", "signature": "void vga_gfx_ran_set(int on)"}, {"doc": "VGA mode tracking: set/cleared by k_exec_user and k_run_rel when a * graphics program owns the display. static int vga_mode13h; static int graphics_program_ran; void vga_mode_set(int on) { vga_mode13h = on; } int vga_mode_is_active(void) { return vga_mode13h; } void vga_gfx_ran_set(int on) { graphics_program_ran = on; } /* Called from the ISR exception handler when a ring-3 user program faults.", "kind": "function", "line": 65, "name": "k_user_fault_return", "signature": "void k_user_fault_return(void)"}, {"kind": "function", "line": 82, "name": "setup_user_stack", "signature": "unsigned long *setup_user_stack(char *sbase, unsigned long ssize,\n ..."}, {"kind": "function", "line": 227, "name": "k_run_rel", "signature": "int k_run_rel(prog_entry_t entry, int argc, char **argv)"}, {"kind": "function", "line": 278, "name": "kexit", "signature": "void kexit(int code)"}, {"doc": "unsigned long sp = ((unsigned long)p - (unsigned long)nwords * 8) & ~15UL; unsigned long *w = (unsigned long *)sp; int idx = 0; w[idx++] = (unsigned long)argc; for (i = 0; i < argc; i++) w[idx++] = (unsigned long)argp[i]; w[idx++] = 0; w[idx++] = 0; w[idx++] = 6; w[idx++] = 4096; w[idx++] = 25; w[idx++] = (unsigned long)randp; w[idx++] = 0; w[idx++] = 0; return w; } /* Enter a ring-3 program via iretq.", "kind": "variable", "line": 115, "name": "syscall_kstack", "signature": "extern unsigned long syscall_kstack;"}, {"kind": "macro", "line": 123, "name": "EXEC_KSTACK_SZ", "signature": "#define EXEC_KSTACK_SZ"}, {"kind": "macro", "line": 132, "name": "ETREL_CHILD_STACK_SZ", "signature": "#define ETREL_CHILD_STACK_SZ"}]}, {"doc": "Docstring: kernel/futex.c -- Kernel side of the futex contract.", "id": "kernel/futex.c", "kind": "module", "label": "futex.c", "language": "c", "sha256": "2a6c4d511e992ed9", "symbol_count": 7, "symbols": [{"kind": "struct", "line": 16, "name": "futex_table_t"}, {"kind": "function", "line": 23, "name": "futex_hash", "signature": "static unsigned long futex_hash(unsigned long uaddr)"}, {"kind": "function", "line": 31, "name": "futex_bucket", "signature": "static futex_bucket_t *futex_bucket(unsigned long uaddr)"}, {"doc": "static unsigned long futex_hash(unsigned long uaddr) { unsigned long word = uaddr >> 2; word ^= word >> 16; word *= FUTEX_HASH_GOLDEN; word ^= word >> 13; return word & FUTEX_BUCKET_MASK; } static futex_bucket_t *futex_bucket(unsigned long uaddr) { return &futex_table.buckets[futex_hash(uaddr)]; } /** Docstring: Initialize every bucket queue and clear the awaited table.", "kind": "function", "line": 36, "name": "futex_init", "signature": "void futex_init(void)"}, {"doc": "futex_table.awaited[cur->pid] = uaddr; if (b->head == WQ_NONE) { b->head = cur->pid; b->tail = cur->pid; } else { procs[b->tail].wq_next = cur->pid; b->tail = cur->pid; } spin_unlock_irqrestore(&b->lock, flags); schedule(); return FUTEX_OK; } /** Docstring: Decode a Linux futex(2) op to WAIT/WAKE.", "kind": "function", "line": 84, "name": "futex_linux_cmd", "signature": "int futex_linux_cmd(long op)"}, {"doc": "Docstring: Wake up to n sleepers waiting on uaddr. Only entries whose recorded address equals uaddr change state; hash collisions sleep through. Returns the number of threads woken, zero when the bucket holds no waiter for this address. Never sleeps.", "kind": "function", "line": 97, "name": "futex_wake", "signature": "long futex_wake(unsigned long uaddr, int n)"}, {"doc": "ifdef SYNC_HOST_CURRENT_PID", "kind": "variable", "line": 13, "name": "t_cur_pid", "signature": "extern int t_cur_pid;"}]}, {"doc": "klog.c - Structured kernel logging with levels and subsystems.", "id": "kernel/klog.c", "kind": "module", "label": "klog.c", "language": "c", "sha256": "1dcfe0e3242a8601", "symbol_count": 6, "symbols": [{"kind": "function", "line": 29, "name": "klog_set_level", "signature": "void klog_set_level(log_level_t level)"}, {"kind": "function", "line": 33, "name": "klog_set_subsys_level", "signature": "void klog_set_subsys_level(log_subsystem_t subsys, log_level_t level)"}, {"kind": "function", "line": 38, "name": "klog_disable", "signature": "void klog_disable(void)"}, {"kind": "function", "line": 39, "name": "klog_enable", "signature": "void klog_enable(void)"}, {"kind": "function", "line": 41, "name": "klog", "signature": "void klog(log_level_t level, log_subsystem_t subsys,\n const char *fmt, ...)"}, {"kind": "function", "line": 119, "name": "klog_hexdump", "signature": "void klog_hexdump(log_level_t level, log_subsystem_t subsys,\n const void *data, ..."}]}, {"doc": "================================================================", "id": "kernel/loader.c", "kind": "module", "label": "loader.c", "language": "c", "sha256": "41c57a43534cf7be", "symbol_count": 37, "symbols": [{"kind": "struct", "line": 90, "name": "exec_range"}, {"kind": "struct", "line": 15, "name": "Elf64_Shdr"}, {"kind": "struct", "line": 28, "name": "Elf64_Sym"}, {"kind": "struct", "line": 37, "name": "Elf64_Rela"}, {"kind": "struct", "line": 43, "name": "Elf64_Phdr"}, {"kind": "function", "line": 100, "name": "elf_name_copy", "signature": "static void elf_name_copy(char *out, unsigned out_cap, const char *tab,\n ..."}, {"kind": "function", "line": 114, "name": "elf_load_fail", "signature": "static void elf_load_fail(void *base, void **sec_addrs, const char *why)"}, {"kind": "function", "line": 122, "name": "elf_load", "signature": "void *elf_load(void *data, unsigned size, void **base_out)"}, {"kind": "function", "line": 362, "name": "apply_exec_relocs", "signature": "static void apply_exec_relocs(void *data, unsigned size, unsigned long base,\n ..."}, {"kind": "function", "line": 445, "name": "load_exec_elf", "signature": "void *load_exec_elf(void *data, unsigned size)"}, {"doc": "--- Isolated loader (multitask foundation) ---- Same validation as load_exec_elf, but the segments land in the user window of `cr3` (built by pt_clone_user_empty) instead of the live one. Pages are allocated with mm_user_ensure_page and filled under a short CR3 switch with interrupts off; the caller's address space is restored before return. Globals (g_brk, VMA) stay untouched: the caller owns the per-process brk, reported via brk_out. Shared graphics slots are never written. Returns the entry VA, or 0 with a diagnostic. No relocation fixups: static ET_EXEC binaries load identity-clean; ET_DYN without RELA still runs when linked * non-PIE by the MiniOS toolchain path.", "kind": "function", "line": 559, "name": "load_exec_elf_into", "signature": "void *load_exec_elf_into(void *data, unsigned size, unsigned long cr3,\n u..."}, {"kind": "function", "line": 468, "name": "process", "signature": "* atomic section: a 100 Hz tick between two segments would switch * CR3 into another process (copies landing in its pages, NX marks * and brk carved from its view) and corrupt whoever loses. The * iso"}, {"kind": "macro", "line": 54, "name": "ELF64_R_SYM", "signature": "#define ELF64_R_SYM(i)"}, {"kind": "macro", "line": 55, "name": "ELF64_R_TYPE", "signature": "#define ELF64_R_TYPE(i)"}, {"kind": "macro", "line": 56, "name": "SHN_UNDEF", "signature": "#define SHN_UNDEF"}, {"kind": "macro", "line": 63, "name": "ETREL_IMAGE_MAX", "signature": "#define ETREL_IMAGE_MAX"}, {"kind": "macro", "line": 65, "name": "SHT_SYMTAB", "signature": "#define SHT_SYMTAB"}, {"kind": "macro", "line": 66, "name": "SHT_STRTAB", "signature": "#define SHT_STRTAB"}, {"kind": "macro", "line": 67, "name": "SHT_RELA", "signature": "#define SHT_RELA"}, {"kind": "macro", "line": 68, "name": "SHT_PROGBITS", "signature": "#define SHT_PROGBITS"}, {"kind": "macro", "line": 69, "name": "SHT_NOBITS", "signature": "#define SHT_NOBITS"}, {"kind": "macro", "line": 70, "name": "SHF_ALLOC", "signature": "#define SHF_ALLOC"}, {"kind": "macro", "line": 71, "name": "SHF_EXECINSTR", "signature": "#define SHF_EXECINSTR"}, {"kind": "macro", "line": 73, "name": "EM_X86_64", "signature": "#define EM_X86_64"}, {"kind": "macro", "line": 74, "name": "PT_LOAD", "signature": "#define PT_LOAD"}, {"kind": "macro", "line": 76, "name": "R_X86_64_64", "signature": "#define R_X86_64_64"}, {"kind": "macro", "line": 77, "name": "R_X86_64_PC32", "signature": "#define R_X86_64_PC32"}, {"kind": "macro", "line": 78, "name": "R_X86_64_PLT32", "signature": "#define R_X86_64_PLT32"}, {"kind": "macro", "line": 79, "name": "R_X86_64_GLOB_DAT", "signature": "#define R_X86_64_GLOB_DAT"}, {"kind": "macro", "line": 80, "name": "R_X86_64_JUMP_SLOT", "signature": "#define R_X86_64_JUMP_SLOT"}, {"kind": "macro", "line": 81, "name": "R_X86_64_RELATIVE", "signature": "#define R_X86_64_RELATIVE"}, {"kind": "macro", "line": 82, "name": "R_X86_64_32", "signature": "#define R_X86_64_32"}, {"kind": "macro", "line": 83, "name": "R_X86_64_32S", "signature": "#define R_X86_64_32S"}, {"kind": "macro", "line": 84, "name": "R_X86_64_IRELATIVE", "signature": "#define R_X86_64_IRELATIVE"}, {"kind": "macro", "line": 86, "name": "PF_X", "signature": "#define PF_X"}, {"kind": "macro", "line": 87, "name": "ELF_MAX_SEGMENTS", "signature": "#define ELF_MAX_SEGMENTS"}, {"kind": "macro", "line": 88, "name": "ELF_NAME_MAX", "signature": "#define ELF_NAME_MAX"}]}, {"id": "kernel/lz4_kernel.c", "kind": "module", "label": "lz4_kernel.c", "language": "c", "sha256": "6d1d884e928c0d06", "symbol_count": 10, "symbols": [{"kind": "function", "line": 7, "name": "LZ4_read32", "signature": "static inline unsigned int LZ4_read32(const unsigned char *p)"}, {"kind": "function", "line": 14, "name": "LZ4_read16", "signature": "static inline unsigned int LZ4_read16(const unsigned char *p)"}, {"kind": "function", "line": 21, "name": "LZ4_write16", "signature": "static inline void LZ4_write16(unsigned char *dst, unsigned short v)"}, {"kind": "function", "line": 26, "name": "LZ4_hash", "signature": "static unsigned int LZ4_hash(const unsigned char *p)"}, {"kind": "function", "line": 33, "name": "LZ4_compressBound", "signature": "int LZ4_compressBound(int inputSize)"}, {"kind": "function", "line": 40, "name": "LZ4_compress_default", "signature": "int LZ4_compress_default(const char *src, char *dst, int srcSize, int dstCapacity)"}, {"kind": "function", "line": 176, "name": "LZ4_decompress_safe", "signature": "int LZ4_decompress_safe(const char *src, char *dst, int compressedSize, int dstCapacity)"}, {"kind": "function", "line": 43, "name": "slots", "signature": "* runs from file writes on 16 KB proc slots (stack discipline, * CLAUDE.md). OOM returns 0 and the caller stores uncompressed. */ int *hash_table = (int *)kmalloc(sizeof(int) * HASH_SIZE);"}, {"kind": "macro", "line": 4, "name": "HASH_BITS", "signature": "#define HASH_BITS"}, {"kind": "macro", "line": 5, "name": "HASH_SIZE", "signature": "#define HASH_SIZE"}]}, {"doc": "Docstring: kernel/minifetch.c -- neofetch-style system screen.", "id": "kernel/minifetch.c", "kind": "module", "label": "minifetch.c", "language": "c", "sha256": "f177ac211f885aa1", "symbol_count": 6, "symbols": [{"kind": "struct", "line": 21, "name": "minifetch_cfg"}, {"doc": "\" DOOM ready. \", \" \", \" \", \" \", \" \", \" \", \" \", \" \", \" \", \" \", \" \", }; /** Docstring: Render one logo row into out from RGBA pixels.", "kind": "function", "line": 57, "name": "minifetch_row", "signature": "static void minifetch_row(const unsigned char *img, int w, int h, int row,\n ..."}, {"doc": "const unsigned char *p1 = img + ((y1 * w) + sx) * 4; unsigned lum; if (p0[3] < 128 && p1[3] < 128) { out[x] = ' '; continue; } lum = (unsigned)(p0[0] + p0[1] + p0[2] + p1[0] + p1[1] + p1[2]) / 6; c = (int)(lum * (unsigned)(ramp_len - 1) / 255); out[x] = mf_cfg.ramp[c]; } out[mf_cfg.logo_cols] = 0; } /** Docstring: Fill rows with the live logo or the fallback text.", "kind": "function", "line": 81, "name": "minifetch_logo", "signature": "static void minifetch_logo(char rows[16][33])"}, {"doc": "stbi_image_free(img); for (r = 0; r < mf_cfg.logo_rows; r++) { for (i = 0; i < mf_cfg.logo_cols; i++) rows[r][i] = mf_fallback[r][i]; rows[r][mf_cfg.logo_cols] = 0; } return; } for (r = 0; r < mf_cfg.logo_rows; r++) minifetch_row(img, w, h, r, rows[r]); stbi_image_free(img); } /** Docstring: Print the spec column into lines, return line count.", "kind": "function", "line": 101, "name": "minifetch_specs", "signature": "static int minifetch_specs(char lines[20][96])"}, {"doc": "ksprintf(lines[n++], \"Display: %dx%dx%d\", fb_width, fb_height, fb_bpp); ksprintf(lines[n++], \"Net: %02x:%02x:%02x:%02x:%02x:%02x %u.%u.%u.%u\", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5], ip[0], ip[1], ip[2], ip[3]); if (ok) ksprintf(lines[n++], \"Date: %02d:%02d:%02d CMOS\", hh, mm, ss); else ksprintf(lines[n++], \"Date: unavailable\"); ksprintf(lines[n++], \"Toolchain: minigcc.o + ld.o + cvm.o\"); ksprintf(lines[n++], \"Shell: minios sh + lua + micropython\"); return n; } /** Docstring: Print the two-column fetch screen.", "kind": "function", "line": 156, "name": "shell_cmd_minifetch", "signature": "void shell_cmd_minifetch(void)"}, {"kind": "function", "line": 159, "name": "frame", "signature": "* frame (stack discipline, CLAUDE.md). Fail-closed on OOM. */ char (*specs)[96] = (char (*)[96])kmalloc(20 * 96);"}]}, {"doc": "paging.c - Page table management for the user window and per-process KPTI.", "id": "kernel/mm/paging.c", "kind": "module", "label": "paging.c", "language": "c", "sha256": "9bfe327bbfb6663d", "symbol_count": 14, "symbols": [{"doc": "Page-align a kmalloc'd region. The framebuffer/back-buffer PTEs are built once per 4 KB page from the buffer's base address, and x86 masks the low 12 bits of a PTE into flags, so a 16-byte-aligned `kmalloc` pointer would make the first mapped page start at `buf & ~0xFFF` — i.e. up to 4095 bytes BEFORE the buffer. A guest writing its frame to the mapped VA then overwrote the heap chunk in front of the buffer (a live KFILE), which is the corrupt-handle black screen. Over- allocate one page and round the base up so VA offset 0 is buffer offset 0. The raw pointer is deliberately untracked: both callers * allocate once at boot and never free.", "kind": "function", "line": 29, "name": "mm_page_aligned_alloc", "signature": "static unsigned char *mm_page_aligned_alloc(unsigned size,\n ..."}, {"kind": "function", "line": 39, "name": "mm_setup_protections", "signature": "void mm_setup_protections(void)"}, {"kind": "function", "line": 136, "name": "mm_user_pte_update", "signature": "void mm_user_pte_update(unsigned long vaddr, int exec, unsigned long cr3)"}, {"kind": "function", "line": 157, "name": "mm_user_set_exec", "signature": "void mm_user_set_exec(unsigned long start, unsigned long end, unsigned long cr3)"}, {"kind": "function", "line": 169, "name": "pt_page_alloc", "signature": "void *pt_page_alloc(void)"}, {"kind": "function", "line": 179, "name": "pt_page_free", "signature": "void pt_page_free(void *ptr)"}, {"kind": "function", "line": 185, "name": "pt_clone_user", "signature": "uint64_t pt_clone_user(uint64_t parent_cr3)"}, {"doc": "The legacy path identity-maps the user window (VA == PA), so every CR3 built by pt_clone_user aliases the same physical pages. That is why only one ET_EXEC can run at a time today. The helpers below build an EMPTY user window instead: fresh page tables with no user data pages mapped, except the kernel-owned graphics slots (FB, DOOM/NK back-buffers) which stay shared on purpose. Data pages come from the kernel heap via pt_page_alloc, so each process owns its bytes and switch_to's CR3 swap already isolates them. Pages are freed by the extended pt_free_user below, which releases heap-owned data pages in private slots and never touches identity pages or * the shared graphics slots. /* 1 when this PD slot holds kernel-shared graphics mappings.", "kind": "function", "line": 298, "name": "mt_shared_slot", "signature": "static int mt_shared_slot(unsigned long pd_idx)"}, {"doc": "Fresh user window: kernel mappings copied, every user PT zeroed, graphics slots re-shared from the boot tables. Returns PML4 phys * (usable as CR3), or 0 on OOM. No user data page is mapped.", "kind": "function", "line": 315, "name": "pt_clone_user_empty", "signature": "unsigned long pt_clone_user_empty(void)"}, {"doc": "Ensure one 4 KB user page at va inside cr3 exists (heap-owned). * Returns 0 on success, -1 on OOM or when va leaves the user window.", "kind": "function", "line": 372, "name": "mm_user_ensure_page", "signature": "int mm_user_ensure_page(unsigned long cr3, unsigned long va)"}, {"doc": "Copy one present user page from src_cr3 to the same VA in dst_cr3, * allocating the destination page. Used by fork-style clones.", "kind": "function", "line": 400, "name": "mm_copy_user_page", "signature": "int mm_copy_user_page(unsigned long dst_cr3, unsigned long src_cr3, unsigned long va)"}, {"kind": "function", "line": 472, "name": "pt_free_user", "signature": "void pt_free_user(uint64_t cr3)"}, {"kind": "variable", "line": 47, "name": "_kernel_end", "signature": "extern char _kernel_end[];"}, {"kind": "macro", "line": 167, "name": "PT_ALLOC_HDR", "signature": "#define PT_ALLOC_HDR"}]}, {"doc": "swap.c - Swap-out/swap-in for the user window (LZ4-compressed disk swap).", "id": "kernel/mm/swap.c", "kind": "module", "label": "swap.c", "language": "c", "sha256": "303d10fecbf70d76", "symbol_count": 8, "symbols": [{"kind": "function", "line": 24, "name": "swap_lba", "signature": "static unsigned long swap_lba(void)"}, {"kind": "function", "line": 30, "name": "swap_out", "signature": "int swap_out(unsigned long window_sz)"}, {"kind": "function", "line": 79, "name": "swap_in", "signature": "int swap_in(void)"}, {"kind": "macro", "line": 15, "name": "SWAP_CHUNK_RAW", "signature": "#define SWAP_CHUNK_RAW"}, {"kind": "macro", "line": 16, "name": "SWAP_CHUNK_SECTORS", "signature": "#define SWAP_CHUNK_SECTORS"}, {"kind": "macro", "line": 17, "name": "SWAP_HDR_SECTORS", "signature": "#define SWAP_HDR_SECTORS"}, {"kind": "macro", "line": 18, "name": "SWAP_MAX_SECTORS", "signature": "#define SWAP_MAX_SECTORS"}, {"kind": "macro", "line": 19, "name": "SWAP_MAGIC", "signature": "#define SWAP_MAGIC"}]}, {"doc": "================================================================", "id": "kernel/mm.c", "kind": "module", "label": "mm.c", "language": "c", "sha256": "c8015b4f6a1d61e5", "symbol_count": 6, "symbols": [{"kind": "function", "line": 13, "name": "kallocator_init", "signature": "void kallocator_init(void)"}, {"kind": "function", "line": 21, "name": "kmalloc", "signature": "void *kmalloc(unsigned long size)"}, {"kind": "function", "line": 28, "name": "kfree", "signature": "void kfree(void *ptr)"}, {"kind": "function", "line": 45, "name": "kcalloc", "signature": "void *kcalloc(unsigned long nmemb, unsigned long size)"}, {"kind": "function", "line": 49, "name": "krealloc", "signature": "void *krealloc(void *ptr, unsigned long size)"}, {"doc": "Per-CPU memory allocation. Allocates cpu_count * size bytes, aligned to `align`, zeroed. Each CPU accesses its own region at offset cpu_id * size. Returns NULL on failure. The caller must not free individual CPU regions; the whole block is freed as one allocation. This is a building block for Phase 2 (per-CPU run queues) and Phase 3 (per-CPU wait queue caches). Not wired into * any subsystem yet; the API is established for future use.", "kind": "function", "line": 65, "name": "kmalloc_percpu", "signature": "void *kmalloc_percpu(unsigned long size, unsigned long align)"}]}, {"doc": "Docstring: kernel/percpu_rq.c -- Per-CPU runqueue hints and stealing.", "id": "kernel/percpu_rq.c", "kind": "module", "label": "percpu_rq.c", "language": "c", "sha256": "76b5b74a61d347a5", "symbol_count": 9, "symbols": [{"kind": "function", "line": 14, "name": "rq_cpu_valid", "signature": "static int rq_cpu_valid(int cpu)"}, {"doc": "topology and on spinlock.h for the ring locks, which keeps it host-testable (tests/test_percpu_rq.c, make test-percpu-rq) with a stub topology of fake CPUs. #include \"percpu_rq.h\" static percpu_rq_t rqueues[MAX_CPUS]; static int rq_cpu_valid(int cpu) { return cpu >= 0 && cpu < MAX_CPUS && cpu < cpu_count; } /** Docstring: Clear every ring and counter. Called once from sched_init.", "kind": "function", "line": 19, "name": "rq_init", "signature": "void rq_init(void)"}, {"doc": "Docstring: Record pid as READY work for cpu. Lossy by contract: a full ring drops the hint and counts the drop. The global scan remains the fallback, so a drop costs one rescan period of latency at most, never correctness. Pids outside the table are refused.", "kind": "function", "line": 41, "name": "rq_enqueue", "signature": "void rq_enqueue(int cpu, int pid)"}, {"doc": "return; spin_lock_irqsave(&rqueues[cpu].lock, &flags); if (rqueues[cpu].count >= RQ_DEPTH) { rqueues[cpu].drops++; spin_unlock_irqrestore(&rqueues[cpu].lock, flags); return; } slot = (rqueues[cpu].head + rqueues[cpu].count) % RQ_DEPTH; rqueues[cpu].ring[slot] = pid; rqueues[cpu].count++; spin_unlock_irqrestore(&rqueues[cpu].lock, flags); } /** Docstring: Pop one hint from the local ring, WQ_NONE_HINT when empty.", "kind": "function", "line": 61, "name": "rq_pop_local", "signature": "int rq_pop_local(int cpu)"}, {"doc": "Docstring: Non-blocking steal of one hint from another CPU's ring. Tries every remote ring once with spin_trylock and returns the first hint found, reporting the donor through from_cpu. Rings that are busy are skipped, never waited on. Returns WQ_NONE_HINT when nothing could be stolen without blocking. The thief's steal counter is owner-written but updated under the donor's lock, so it uses an atomic add (the same pattern as smp_dispatches) instead of relying on the donor's lock.", "kind": "function", "line": 89, "name": "rq_steal_once", "signature": "int rq_steal_once(int self_cpu, int *from_cpu)"}, {"doc": "pid = rqueues[c].ring[rqueues[c].head]; rqueues[c].ring[rqueues[c].head] = WQ_NONE_HINT; rqueues[c].head = (rqueues[c].head + 1) % RQ_DEPTH; rqueues[c].count--; __sync_fetch_and_add(&rqueues[self_cpu].steals, 1); spin_unlock(&rqueues[c].lock); if (from_cpu) from_cpu = c; return pid; } return WQ_NONE_HINT; } /** Docstring: True when cpu holds no hint. Lock-protected peek.", "kind": "function", "line": 115, "name": "rq_empty", "signature": "int rq_empty(int cpu)"}, {"doc": "/** Docstring: True when cpu holds no hint. Lock-protected peek. int rq_empty(int cpu) { irqflags_t flags; int empty; if (!rq_cpu_valid(cpu)) return 1; spin_lock_irqsave(&rqueues[cpu].lock, &flags); empty = (rqueues[cpu].count <= 0); spin_unlock_irqrestore(&rqueues[cpu].lock, flags); return empty; } /** Docstring: Count an unsuccessful claim poll for the rescan schedule.", "kind": "function", "line": 127, "name": "rq_note_poll", "signature": "void rq_note_poll(int cpu)"}, {"doc": "return empty; } /** Docstring: Count an unsuccessful claim poll for the rescan schedule. void rq_note_poll(int cpu) { irqflags_t flags; if (!rq_cpu_valid(cpu)) return; spin_lock_irqsave(&rqueues[cpu].lock, &flags); rqueues[cpu].polls++; spin_unlock_irqrestore(&rqueues[cpu].lock, flags); } /** Docstring: True every RQ_RESCAN_PERIOD polls, bounding hint staleness.", "kind": "function", "line": 137, "name": "rq_should_rescan", "signature": "int rq_should_rescan(int cpu)"}, {"doc": "irqflags_t flags; int due = 0; if (!rq_cpu_valid(cpu)) return 1; spin_lock_irqsave(&rqueues[cpu].lock, &flags); if (rqueues[cpu].polls >= RQ_RESCAN_PERIOD) { rqueues[cpu].polls = 0; due = 1; } spin_unlock_irqrestore(&rqueues[cpu].lock, flags); return due; } /** Docstring: Snapshot hits, steals and drops for diagnostics.", "kind": "function", "line": 152, "name": "rq_stats", "signature": "void rq_stats(int cpu, unsigned long *hits, unsigned long *steals,\n unsigned long *d..."}]}, {"doc": "================================================================", "id": "kernel/printf.c", "kind": "module", "label": "printf.c", "language": "c", "sha256": "716a8080b07cfaa8", "symbol_count": 10, "symbols": [{"kind": "struct", "line": 177, "name": "snctx"}, {"kind": "function", "line": 7, "name": "putc_buf", "signature": "static void putc_buf(char c, void *ctx, int *written)"}, {"kind": "function", "line": 13, "name": "putc_file", "signature": "static void putc_file(char c, void *ctx, int *written)"}, {"kind": "function", "line": 19, "name": "putc_str", "signature": "static void putc_str(char c, void *ctx, int *written)"}, {"kind": "function", "line": 26, "name": "emit_num", "signature": "static void emit_num(void (*emit)(char, void *, int *), void *ctx, int *written,\n ..."}, {"kind": "function", "line": 44, "name": "kformat", "signature": "static void kformat(void (*emit)(char, void *, int *), void *ctx,\n int *writte..."}, {"kind": "function", "line": 157, "name": "kfprintf", "signature": "int kfprintf(KFILE *f, const char *fmt, ...)"}, {"kind": "function", "line": 166, "name": "ksprintf", "signature": "int ksprintf(char *buf, const char *fmt, ...)"}, {"kind": "function", "line": 178, "name": "putc_snbuf", "signature": "static void putc_snbuf(char c, void *ctx, int *written)"}, {"kind": "function", "line": 184, "name": "ksnprintf", "signature": "int ksnprintf(char *buf, unsigned long size, const char *fmt, ...)"}]}, {"doc": "Docstring: kernel/rcu.c -- Epoch grace periods over scheduler ticks.", "id": "kernel/rcu.c", "kind": "module", "label": "rcu.c", "language": "c", "sha256": "7963266ec52397d8", "symbol_count": 14, "symbols": [{"kind": "struct", "line": 22, "name": "rcu_slot_t"}, {"kind": "struct", "line": 28, "name": "rcu_state_t"}, {"kind": "function", "line": 13, "name": "rcu_me", "signature": "static cpu_t *rcu_me(void)"}, {"doc": "else", "kind": "function", "line": 17, "name": "rcu_me", "signature": "static cpu_t *rcu_me(void)"}, {"kind": "function", "line": 40, "name": "rcu_cpu_valid", "signature": "static int rcu_cpu_valid(int cpu)"}, {"doc": "unsigned long qs[MAX_CPUS]; unsigned long depth[MAX_CPUS]; rcu_slot_t pending[RCU_CB_MAX]; int pending_count; unsigned long completed; } rcu_state_t; static rcu_state_t rcu_state; static int rcu_cpu_valid(int cpu) { return cpu >= 0 && cpu < MAX_CPUS && cpu < cpu_count; } /** Docstring: Reset epoch, quiescent marks, depths and callbacks.", "kind": "function", "line": 45, "name": "rcu_init", "signature": "void rcu_init(void)"}, {"doc": "for (i = 0; i < MAX_CPUS; i++) { rcu_state.qs[i] = 0; rcu_state.depth[i] = 0; } for (i = 0; i < RCU_CB_MAX; i++) { rcu_state.pending[i].fn = 0; rcu_state.pending[i].arg = 0; rcu_state.pending[i].epoch = 0; } rcu_state.pending_count = 0; rcu_state.completed = 0; } /** Docstring: Enter a read section on the current CPU. Nests.", "kind": "function", "line": 63, "name": "rcu_read_lock", "signature": "void rcu_read_lock(void)"}, {"doc": "/** Docstring: Enter a read section on the current CPU. Nests. void rcu_read_lock(void) { cpu_t *me = rcu_me(); int cpu = me->cpu_id; irqflags_t flags; if (!rcu_cpu_valid(cpu)) return; spin_lock_irqsave(&rcu_state.lock, &flags); rcu_state.depth[cpu]++; spin_unlock_irqrestore(&rcu_state.lock, flags); } /** Docstring: Leave a read section. Underflow is clamped, never wraps.", "kind": "function", "line": 75, "name": "rcu_read_unlock", "signature": "void rcu_read_unlock(void)"}, {"doc": "/** Docstring: Leave a read section. Underflow is clamped, never wraps. void rcu_read_unlock(void) { cpu_t *me = rcu_me(); int cpu = me->cpu_id; irqflags_t flags; if (!rcu_cpu_valid(cpu)) return; spin_lock_irqsave(&rcu_state.lock, &flags); if (rcu_state.depth[cpu] > 0) rcu_state.depth[cpu]--; spin_unlock_irqrestore(&rcu_state.lock, flags); } /** Docstring: Load a published pointer inside a read section.", "kind": "function", "line": 88, "name": "rcu_deref", "signature": "void *rcu_deref(void *volatile *pp)"}, {"doc": "return; spin_lock_irqsave(&rcu_state.lock, &flags); if (rcu_state.depth[cpu] > 0) rcu_state.depth[cpu]--; spin_unlock_irqrestore(&rcu_state.lock, flags); } /** Docstring: Load a published pointer inside a read section. void *rcu_deref(void *volatile *pp) { __sync_synchronize(); return *pp; } /** Docstring: Publish a new pointer value with release ordering.", "kind": "function", "line": 94, "name": "rcu_publish", "signature": "void rcu_publish(void *volatile *pp, void *v)"}, {"doc": "if (rcu_state.pending_count >= RCU_CB_MAX) { r = RCU_ERR_FULL; } else { rcu_slot_t *s = &rcu_state.pending[rcu_state.pending_count]; s->fn = fn; s->arg = arg; s->epoch = rcu_state.epoch; rcu_state.pending_count++; } spin_unlock_irqrestore(&rcu_state.lock, flags); return r; } /** Docstring: Record a quiescent state for cpu at the current epoch.", "kind": "function", "line": 126, "name": "rcu_note_tick", "signature": "void rcu_note_tick(int cpu)"}, {"doc": "} /** Docstring: Record a quiescent state for cpu at the current epoch. void rcu_note_tick(int cpu) { irqflags_t flags; if (!rcu_cpu_valid(cpu)) return; spin_lock_irqsave(&rcu_state.lock, &flags); if (rcu_state.depth[cpu] == 0) rcu_state.qs[cpu] = rcu_state.epoch; spin_unlock_irqrestore(&rcu_state.lock, flags); } /** Docstring: Idle CPUs are always quiescent.", "kind": "function", "line": 137, "name": "rcu_note_idle", "signature": "void rcu_note_idle(int cpu)"}, {"doc": "Docstring: Advance the epoch and run due callbacks. A grace period closes when every online CPU reported quiescence at the current epoch. Callbacks stamped with an older epoch then run inline and the epoch advances. Runs from the timer tick; never blocks.", "kind": "function", "line": 152, "name": "rcu_poll", "signature": "void rcu_poll(void)"}, {"kind": "function", "line": 193, "name": "expires", "signature": "* expires (ticks stalled, never a hang). No completion assert is\n * possible here by design: a re..."}]}, {"doc": "================================================================", "id": "kernel/redirect.c", "kind": "module", "label": "redirect.c", "language": "c", "sha256": "c3f7b977c726c6b0", "symbol_count": 3, "symbols": [{"kind": "function", "line": 11, "name": "shell_report_exit", "signature": "void shell_report_exit(int code)"}, {"kind": "function", "line": 17, "name": "shell_report", "signature": "void shell_report(const char *what, const char *detail)"}, {"kind": "function", "line": 25, "name": "shell_take_redirect", "signature": "int shell_take_redirect(int *argc, char **argv, char **path, int *append_mode)"}]}, {"id": "kernel/sched.c", "kind": "module", "label": "sched.c", "language": "c", "sha256": "33e2da39e6298221", "symbol_count": 92, "symbols": [{"kind": "struct", "line": 288, "name": "stop_row"}, {"doc": "if (len == 0 || len > 256) { kprintf(\"gdb: dump length 1..256 (got %lu)\\n\", len); return; } p = (const unsigned char *)addr; for (i = 0; i < len; i += 16) { kprintf(\"gdb: 0x%lx:\", addr + i); for (j = 0; j < 16 && i + j < len; j++) kprintf(\" %02x\", p[i + j]); kprintf(\"\\n\"); } } /* ---- Trap frame (must match isr_stubs.S) ----", "kind": "struct", "line": 427, "name": "trap_frame_t"}, {"doc": "--- TSS (one per CPU) ---- Every CPU that runs ring-3 code needs a private TSS: a timer tick that preempts ring 3 switches to TSS.rsp0, so two CPUs sharing one TSS would run their ISRs on the same stack. The runtime GDT grows from 7 entries (5 from stage 2 + 1 TSS descriptor of 2 slots) to 5 + 2*MAX_CPUS entries; CPU 0 keeps selector 0x28 exactly as before. The GDT lives at 0x8000 with 4 KB reserved up to stage 2 at 0x9000, so 21 entries * (168 bytes) fit with room to spare.", "kind": "type_alias", "line": 81, "name": "res0", "signature": "typedef struct __attribute__((packed)) { uint32_t res0;"}, {"doc": "Per-CPU idle stacks: a park into the idle context re-enters * smp_ap_idle_loop here (idle_proc ctx.rsp points at the top). static char ap_idle_stack[MAX_CPUS][4096] __attribute__((aligned(16))); proc_t ap_idle_proc[MAX_CPUS]; volatile unsigned long smp_dispatches[MAX_CPUS]; volatile unsigned long smp_idle_polls[MAX_CPUS]; static volatile int ser_e_reported; /* ---- IDT ----", "kind": "type_alias", "line": 102, "name": "off_lo", "signature": "typedef struct __attribute__((packed)) { uint16_t off_lo;"}, {"doc": "#include \"smp.h\" #include \"sync.h\" #include \"futex.h\" #include \"percpu_rq.h\" #include \"rcu.h\" #include \"bootdefs.h\" #include \"vga_fb.h\" #include \"sb16.h\" #include \"tick.h\" #include \"arch/x86/hal_io.h\" #include \"arch/x86/msr.h\" #include \"drivers/mouse.h\" /** Docstring: Audio tick adapter, forwards the bus dispatch to sb16_poll.", "kind": "function", "line": 20, "name": "sched_tick_audio", "signature": "static void sched_tick_audio(void *ctx)"}, {"doc": "#include \"vga_fb.h\" #include \"sb16.h\" #include \"tick.h\" #include \"arch/x86/hal_io.h\" #include \"arch/x86/msr.h\" #include \"drivers/mouse.h\" /** Docstring: Audio tick adapter, forwards the bus dispatch to sb16_poll. static void sched_tick_audio(void *ctx) { (void)ctx; sb16_poll(); } /** Docstring: Desktop tick adapter, forwards the bus dispatch to the compositor tick.", "kind": "function", "line": 26, "name": "sched_tick_desktop", "signature": "static void sched_tick_desktop(void *ctx)"}, {"kind": "function", "line": 51, "name": "read_cr3", "signature": "static inline unsigned long read_cr3(void)"}, {"doc": "--- TSS (one per CPU) ---- Every CPU that runs ring-3 code needs a private TSS: a timer tick that preempts ring 3 switches to TSS.rsp0, so two CPUs sharing one TSS would run their ISRs on the same stack. The runtime GDT grows from 7 entries (5 from stage 2 + 1 TSS descriptor of 2 slots) to 5 + 2*MAX_CPUS entries; CPU 0 keeps selector 0x28 exactly as before. The GDT lives at 0x8000 with 4 KB reserved up to stage 2 at 0x9000, so 21 entries * (168 bytes) fit with room to spare.", "kind": "function", "line": 81, "name": "__attribute__", "signature": "typedef struct __attribute__((packed))"}, {"doc": "Per-CPU idle stacks: a park into the idle context re-enters * smp_ap_idle_loop here (idle_proc ctx.rsp points at the top). static char ap_idle_stack[MAX_CPUS][4096] __attribute__((aligned(16))); proc_t ap_idle_proc[MAX_CPUS]; volatile unsigned long smp_dispatches[MAX_CPUS]; volatile unsigned long smp_idle_polls[MAX_CPUS]; static volatile int ser_e_reported; /* ---- IDT ----", "kind": "function", "line": 102, "name": "__attribute__", "signature": "typedef struct __attribute__((packed))"}, {"kind": "function", "line": 130, "name": "kstack_paint", "signature": "static void kstack_paint(uint64_t top, unsigned long size)"}, {"doc": "allocation rate only, never in the ISR path; the report is fail-closed * (a dead canary prints OVERFLOW, never a forged number). #define KSTACK_PAINT 0xA5A5A5A5A5A5A5A5ULL #define KSTACK_CANARY 0x4B535441434B3735ULL static void kstack_paint(uint64_t top, unsigned long size) { unsigned long long *p = (unsigned long long *)(top - size); unsigned long n = size / 8; unsigned long i; for (i = 1; i < n; i++) p[i] = (unsigned long long)KSTACK_PAINT; p[0] = (unsigned long long)KSTACK_CANARY; } /* 0 = intact (used_out = high-water bytes), -1 = canary dead.", "kind": "function", "line": 139, "name": "kstack_usage", "signature": "static int kstack_usage(uint64_t top, unsigned long size,\n unsigned long *..."}, {"kind": "function", "line": 154, "name": "alloc_kstack", "signature": "static uint64_t alloc_kstack(void)"}, {"kind": "function", "line": 166, "name": "free_kstack", "signature": "static void free_kstack(uint64_t top)"}, {"kind": "function", "line": 177, "name": "MXCSR", "signature": "* A fresh image is explicit zeros plus the default MXCSR (0x1F80, all\n * exceptions masked): fxsa..."}, {"kind": "function", "line": 185, "name": "fpu_restore_from", "signature": "static inline void fpu_restore_from(void *area)"}, {"kind": "function", "line": 189, "name": "fpu_alloc_clean", "signature": "static void *fpu_alloc_clean(void)"}, {"kind": "function", "line": 207, "name": "fpu_free_proc", "signature": "static void fpu_free_proc(proc_t *p)"}, {"doc": "Per-process VMA contexts (vma.h contract; defined here so vma.c stays * host-testable). A private pool is VMA_MAX nodes from the kernel heap.", "kind": "function", "line": 213, "name": "vma_ctx_alloc", "signature": "vma_ctx_t *vma_ctx_alloc(void)"}, {"kind": "function", "line": 223, "name": "vma_ctx_free", "signature": "void vma_ctx_free(vma_ctx_t *c)"}, {"kind": "function", "line": 229, "name": "vma_owned", "signature": "static int vma_owned(proc_t *p)"}, {"doc": "Rebind the global VMA view alongside the brk/mmap view. Callers already hold sched_lock (+mm_lock at the swap sites); the bind itself is a few * stores. Shared (VM/legacy) contexts make this a semantic no-op.", "kind": "function", "line": 237, "name": "vma_save_proc", "signature": "static void vma_save_proc(proc_t *p)"}, {"kind": "function", "line": 241, "name": "vma_load_proc", "signature": "static void vma_load_proc(proc_t *p)"}, {"doc": "Serial-observable stack health: per-proc high-water marks plus the legacy 32 KB syscall stack, ending in `kstack: ok` or * `kstack: OVERFLOW`. The shell `kstack` builtin calls this.", "kind": "function", "line": 248, "name": "kstack_report", "signature": "void kstack_report(void)"}, {"doc": "`schedtop` -- one screenful of scheduler state: uptime from the 100 Hz tick, per-CPU current pid, then one row per live proc (state, nice, virtual runtime, consumed ticks). Snapshot under sched_lock, print * after release so console I/O never runs with the scheduler held.", "kind": "function", "line": 287, "name": "schedtop_report", "signature": "void schedtop_report(void)"}, {"doc": "`irqstat` -- interrupt arrivals per source. Timer ticks come from sys_ticks (PIT 100 Hz on the BSP, broadcast as IPIs to APs); kbd/mouse/ sb16 are counted at the top of their isr_dispatch arms. NIC and audio queue health ride along from rtl/sb16 counters so one screen answers * \"is the hardware talking and is the guest keeping up\".", "kind": "function", "line": 344, "name": "irqstat_report", "signature": "void irqstat_report(void)"}, {"kind": "function", "line": 363, "name": "stub", "signature": "* gdb stub (`make gdb`, then `target remote :1234` from the host). These\n * helpers are the seria..."}, {"kind": "function", "line": 410, "name": "gdb_dump_report", "signature": "void gdb_dump_report(unsigned long addr, unsigned long len)"}, {"doc": "Parked trap frames for preempted ring-3 contexts, one slot per pid. The ISR copies the preempted frame here (never onto a live stack: the TSS stack is reused by the next tick and a thread's own kstack may be mid-syscall), points ctx at the copy and resumes it later through resume_iretq + iretq. Dedicated slots mean parking can never clobber * live kernel state. static trap_frame_t isr_park[MAX_PROCS]; /* ---- IDT init ----", "kind": "function", "line": 443, "name": "idt_set", "signature": "static void idt_set(int vec, void (*h)(void))"}, {"kind": "function", "line": 454, "name": "idt_init", "signature": "static void idt_init(void)"}, {"doc": "} static void idt_init(void) { kmemset(idt, 0, sizeof(idt)); int i; for (i = 0; i < 256; i++) if (isr_stub_table[i]) idt_set(i, (void(*)(void))isr_stub_table[i]); bsp_idtr.limit = sizeof(idt) - 1; bsp_idtr.base = (uint64_t)&idt; __asm__ volatile(\"lidt %0\" :: \"m\"(bsp_idtr)); } /* ---- PIC ----", "kind": "function", "line": 466, "name": "pic_init", "signature": "static void pic_init(void)"}, {"doc": "Master: unmask IRQ0 (timer) + IRQ1 (keyboard) + IRQ2 (cascade) + IRQ4 (COM1, UART IER stays 0 so it never fires) + IRQ5 (Sound Blaster 16 DMA done). In the mask register a bit set means masked, so 0xC8 masks only IRQ3, IRQ6 and IRQ7. Masking IRQ5 here starves the SB16 completion interrupt and leaves audio on the * timer watchdog alone (audible as jitter); keep it unmasked. hal_outb(HAL_PIC1_DATA, 0xC8); /* Slave: unmask IRQ12 (mouse) only. 0xEF = ~bit4. hal_outb(HAL_PIC2_DATA, 0xEF); } /* ---- PIT channel 0: 100 Hz ----", "kind": "function", "line": 501, "name": "pit_init", "signature": "static void pit_init(void)"}, {"kind": "function", "line": 508, "name": "pic_eoi", "signature": "static void pic_eoi(int irq)"}, {"kind": "function", "line": 515, "name": "tss_write_desc", "signature": "static void tss_write_desc(int cpu)"}, {"kind": "function", "line": 532, "name": "tss_init", "signature": "static void tss_init(void)"}, {"doc": "Load this AP's task register. The BSP wrote every descriptor in tss_init before the APs were woken, so the AP only points its TR at its own slot; its ring-3 preempts then land on its private rsp0 * stack instead of the BSP's.", "kind": "function", "line": 563, "name": "tss_init_ap", "signature": "void tss_init_ap(int cpu)"}, {"kind": "function", "line": 581, "name": "context", "signature": "* context (anything entered via k_exec_user) is inside a syscall\n * (entry swapped 0 in), and a c..."}, {"kind": "function", "line": 594, "name": "point", "signature": "* return address as the resume point (\"continue the ISR\"), which\n * required the stranded ISR fra..."}, {"doc": "Fair-share scan with sched_lock HELD. Returns a claimed (PROC_RUNNING) pid or -1. vm_only restricts the pick to CLONE_VM threads, which is what APs run: same CR3, no brk/mmap view switch, no TLB work. Boyscout fix for static round-robin starvation: every READY candidate is compared by vruntime (plus nice bias), the minimum wins, and the winner is charged one quantum weighted by its nice. A CPU-bound nice-0 task can no longer starve an interactive nice--10 task; equal nice degrades to * round-robin order via the rotating start.", "kind": "function", "line": 623, "name": "sched_next_locked", "signature": "static int sched_next_locked(int start, int vm_only)"}, {"doc": "for (t = 0; t < MAX_PROCS; t++) { int cand = (start + 1 + t) % MAX_PROCS; unsigned long key; if (procs[cand].state != PROC_READY) continue; if (vm_only && !(procs[cand].clone_flags & CLONE_VM)) continue; key = procs[cand].vruntime + (unsigned long)(procs[cand].nice + SCHED_NICE_OFFSET) * SCHED_NICE_MULT_KEY; if (best < 0 || key < best_key) { best = cand; best_key = key; } } if (best < 0) return -1; procs[best].state = PROC_RUNNING; procs[best].vruntime += SCHED_BASE_QUANTUM + (unsigned long)(procs[best].nice + SCHED_NICE_OFFSET) * SCHED_NICE_MULT_CHARGE; return best; } /* Set scheduling niceness for pid (-20..19, clamped). Returns 0 or -1.", "kind": "function", "line": 641, "name": "sched_set_nice", "signature": "int sched_set_nice(int pid, int nice)"}, {"doc": "procs[best].state = PROC_RUNNING; procs[best].vruntime += SCHED_BASE_QUANTUM + (unsigned long)(procs[best].nice + SCHED_NICE_OFFSET) * SCHED_NICE_MULT_CHARGE; return best; } /* Set scheduling niceness for pid (-20..19, clamped). Returns 0 or -1. int sched_set_nice(int pid, int nice) { if (pid < 0 || pid >= MAX_PROCS) return -1; if (procs[pid].state == PROC_FREE) return -1; if (nice < NICE_MIN) nice = NICE_MIN; if (nice > NICE_MAX) nice = NICE_MAX; procs[pid].nice = nice; return 0; } /* Seccomp-basic helpers: deny/allow one MiniOS syscall for pid.", "kind": "function", "line": 650, "name": "seccomp_deny_one", "signature": "int seccomp_deny_one(int pid, int n)"}, {"kind": "function", "line": 657, "name": "seccomp_allow_one", "signature": "int seccomp_allow_one(int pid, int n)"}, {"kind": "function", "line": 664, "name": "seccomp_denied", "signature": "int seccomp_denied(int pid, int n)"}, {"doc": "Claim one READY thread for this CPU's idle loop (the AP only claims CLONE_VM threads): marks it RUNNING under lock and installs it as the * CPU's current pid. Returns the pid, or -1 when nothing is ready.", "kind": "function", "line": 673, "name": "smp_try_claim_hint", "signature": "static int smp_try_claim_hint(int pid, int vm_only)"}, {"kind": "function", "line": 689, "name": "smp_claim_thread_v", "signature": "static int smp_claim_thread_v(int vm_only)"}, {"doc": "AP idle loop: hlt until a CLONE_VM thread is ready, run it, repeat. Entered once from smp_ap_entry on the AP stub stack; the first switch_to out of here saves these registers into ap_idle_proc[cpu], so every return to idle resumes this loop. Interrupts stay OFF from the claim through the switch: a LAPIC tick landing in between would park this half-switched state over the incoming thread's ctx. Threads enter with their own rflags (IF=1); a resume back to idle restores IF=0, so sti runs after every * switch_to return. The hlt itself needs IF=1 to wake.", "kind": "function", "line": 728, "name": "smp_ap_idle_loop", "signature": "void smp_ap_idle_loop(void)"}, {"doc": "AP timer preemption: time-slice the AP's current CLONE_VM thread with the next READY one. An idle AP (cur_pid -1) needs nothing: its idle loop polls. The park/unclaim discipline is the same as the BSP tick: park the trap frame (complete ctx), publish READY, claim the next, switch NOTRAP (load-only) so a stealing CPU always resumes a valid context. A non-VM proc can never run here by construction; if one is * ever observed, leave it alone (fail safe, never migrate it).", "kind": "function", "line": 762, "name": "sched_ap_preempt", "signature": "static void sched_ap_preempt(trap_frame_t *frame)"}, {"doc": "True when some AP is idle. The BSP tick uses this to leave freshly parked CLONE_VM threads unclaimed: the idle AP's next poll (IPI wake) picks them up, which keeps thread execution biased to the APs * instead of the BSP winning every claim race.", "kind": "function", "line": 832, "name": "smp_any_ap_idle", "signature": "static int smp_any_ap_idle(void)"}, {"kind": "function", "line": 868, "name": "rlimit_cpu_exceeded", "signature": "int rlimit_cpu_exceeded(int pid)"}, {"kind": "function", "line": 889, "name": "isr_dispatch", "signature": "void isr_dispatch(int vector, trap_frame_t *frame)"}, {"kind": "function", "line": 1373, "name": "BSP", "signature": "* CPU believe it is the BSP (wrong per-CPU identity, two CPUs\n * running the shell contex..."}, {"kind": "function", "line": 1394, "name": "proc_get", "signature": "proc_t *proc_get(int pid)"}, {"kind": "function", "line": 1400, "name": "proc_create", "signature": "int proc_create(const char *name, int parent_pid)"}, {"doc": "proc_spawn_elf(name, data, size, argc, argv) - multitask spawn. A non-CLONE_VM process with a FRESH user window (pt_clone_user_empty): its pages are heap-owned, so two spawned ELFs never alias each other the way the legacy shared-window loader does. The image loads via load_exec_elf_into, the stack is built under the child's CR3, and the process starts at the ELF entry through user_trampoline + iretq with IF=1. The BSP time-slices it with the existing preempt path (brk view save/restore included); APs never claim it (vm_only). Exit flows through do_proc_exit -> do_exit -> ZOMBIE, reaped by do_waitpid which frees the isolated tables. Fail closed (-1) with * nothing published: OOM at any step releases what was claimed.", "kind": "function", "line": 1496, "name": "proc_spawn_elf", "signature": "int proc_spawn_elf(const char *name, void *data, unsigned size,\n int argc, char..."}, {"kind": "function", "line": 1623, "name": "schedule", "signature": "* that keeps schedule()'s own rbp runs the caller's frame accesses\n * (locals, leave/ret) on the ..."}, {"kind": "function", "line": 1634, "name": "schedule", "signature": "void schedule(void)"}, {"kind": "function", "line": 1716, "name": "yield", "signature": "void yield(void)"}, {"kind": "function", "line": 1731, "name": "do_exit", "signature": "void do_exit(int code)"}, {"doc": "frame is ambiguous, this one starts cleanly at fn(arg) on the given stack: child RIP = fn, child RSP = stack, child RDI = arg (SysV first arg), entered through the same user_trampoline + iretq path as proc_create. The caller (pthread-like user code) owns the stack: it must be allocated before the call (8 KB each per the roadmap) with its TOP passed here, and must stay alive until the thread is joined. fn and stack must lie in the user window (checked by the syscall wrapper). The thread shares CR3, the file table and (by the schedule() CLONE_VM rule) the live brk/mmap view with its parent; the parent joins it with do_waitpid, which reaps the exit code without freeing the shared page tables. * Returns the child PID, or -1 when no slot or stack is usable.", "kind": "function", "line": 1770, "name": "do_thread_spawn", "signature": "long do_thread_spawn(unsigned long fn, unsigned long stack,\n unsigned long arg)"}, {"kind": "function", "line": 1964, "name": "do_waitpid", "signature": "int do_waitpid(int pid)"}, {"doc": "Reap one zombie child for `jobs`/auto-reap messages: returns 1 with * pid+code, or 0 when none is ready. Never blocks.", "kind": "function", "line": 1980, "name": "shell_reap_nb", "signature": "int shell_reap_nb(int *pid_out, int *code_out)"}, {"doc": "Reap one specific zombie child (foreground wait). Returns 1 with the * code, or 0 when that pid is not a reaped zombie right now.", "kind": "function", "line": 1994, "name": "shell_reap_one", "signature": "int shell_reap_one(int pid, int *code_out)"}, {"doc": "Reap one specific zombie child (foreground wait). Returns 1 with the * code, or 0 when that pid is not a reaped zombie right now. int shell_reap_one(int pid, int *code_out) { int code, found = -1; if (!proc_get(current_pid)) return 0; spin_lock(&sched_lock); code = waitpid_scan(pid, &found); spin_unlock(&sched_lock); if (code == WAITPID_NONE) return 0; if (code_out) *code_out = code; return 1; } /* Live non-free children of the caller (shell job table size).", "kind": "function", "line": 2006, "name": "shell_nchildren", "signature": "int shell_nchildren(void)"}, {"doc": "True kill: the TARGET becomes a zombie for its parent to reap (its stack/tables free in do_waitpid, never here). Killing self keeps the old do_exit path. A zombie on an AP is abandoned by the AP preempt * path, so a kill never leaves a corpse running.", "kind": "function", "line": 2032, "name": "do_kill", "signature": "int do_kill(int pid)"}, {"kind": "function", "line": 2057, "name": "timer_tick", "signature": "void timer_tick(void)"}, {"kind": "function", "line": 2062, "name": "sched_init", "signature": "void sched_init(void)"}, {"kind": "function", "line": 49, "name": "user_trampoline", "signature": "extern void user_trampoline(void);"}, {"kind": "function", "line": 59, "name": "PROC_KSTACK_OFF", "signature": "* PROC_KSTACK_OFF (it cannot use C here). The asm derives both immediates * from the sched.h macros via STR(), so this assert is the single check: * if it fires, the struct changed and the macros in s"}, {"kind": "function", "line": 69, "name": "descriptor", "signature": "* descriptor (two slots) per CPU past the 5 stage-2 entries. */ _Static_assert((5 + 2 * MAX_CPUS) * 8 == GDT64_SMP_BYTES, \"GDT SMP size\");"}, {"kind": "function", "line": 94, "name": "here", "signature": "* smp_ap_idle_loop here (idle_proc ctx.rsp points at the top). */ static char ap_idle_stack[MAX_CPUS][4096] __attribute__((aligned(16)));"}, {"kind": "function", "line": 235, "name": "sched_lock", "signature": "* hold sched_lock (+mm_lock at the swap sites);"}, {"kind": "function", "line": 291, "name": "slot", "signature": "* must not eat a quarter of a 16 KB slot (see the stack discipline * contract in CLAUDE.md). Fail-closed on OOM. */ struct stop_row *snap = (struct stop_row *)kmalloc(sizeof(struct stop_row) * MAX_PRO"}, {"kind": "function", "line": 340, "name": "sys_ticks", "signature": "* sys_ticks (PIT 100 Hz on the BSP, broadcast as IPIs to APs);"}, {"kind": "function", "line": 347, "name": "rtl_counters", "signature": "extern void rtl_counters(unsigned int *tx_frames, unsigned int *rx_frames);"}, {"kind": "function", "line": 349, "name": "rtl_present", "signature": "extern int rtl_present(void);"}, {"kind": "function", "line": 490, "name": "IRQ4", "signature": "* IRQ4 (COM1, UART IER stays 0 so it never fires) + * IRQ5 (Sound Blaster 16 DMA done). In the mask register a bit set * means masked, so 0xC8 masks only IRQ3, IRQ6 and IRQ7. Masking IRQ5 * here starv"}, {"kind": "function", "line": 606, "name": "FSBASE", "signature": "* for FSBASE (per-proc TLS): a thread preempted after arch_prctl * would otherwise resume with whatever base the next thread left * behind. GSBASE is deliberately untouched (live kernel per-CPU). */ i"}, {"kind": "function", "line": 1006, "name": "syscall", "signature": "* outgoing syscall (see sched_rearm_kgs). Without * this the next entry swapgs puts garbage under GS * and the pid math faults. */ sched_rearm_kgs();"}, {"kind": "function", "line": 1660, "name": "PROC_SWITCHING", "signature": "* while the thread is still PROC_SWITCHING (never claimable), * then set the resume point and publish. A BLOCKED/ZOMBIE * thread keeps its state (no one claims it until a wake). */ switch_save_only(cu"}, {"kind": "function", "line": 1724, "name": "returns", "signature": "* that returns (and the resumed thread returns with IF=1). */ __asm__ volatile(\"cli\");"}, {"kind": "function", "line": 1802, "name": "registers", "signature": "* registers (float args would need XMM inheritance, which the * arg-passing contract does not carry: fn takes one integer arg). */ child->fpu_save = fpu_alloc_clean();"}, {"kind": "function", "line": 2070, "name": "it", "signature": "* it (SPAWN/exec point proc 0 here transiently);"}, {"kind": "function", "line": 2121, "name": "park", "signature": "* an image its live FPU registers would be dropped by the preempt * park (the save path skips a null area). */ procs[0].fpu_save = fpu_alloc_clean();"}, {"kind": "function", "line": 2131, "name": "zeroed", "signature": "* still zeroed (kmemset happens inside idt_init) faults through a * null gate. Handlers for 32/33/44 are safe pre-mouse-init. */ idt_init();"}, {"kind": "variable", "line": 111, "name": "isr_stub_table", "signature": "extern void *isr_stub_table[];"}, {"kind": "variable", "line": 348, "name": "net_rx_dropped", "signature": "extern unsigned int net_rx_dropped;"}, {"doc": "Guards the shared g_brk/g_brk_limit/user_mmap_cur view and the VMA trees against concurrent brk/mmap/munmap syscalls from threads on different CPUs. Defined in kernel/syscalls.c; always taken INSIDE sched_lock (lock order: sched_lock -> mm_lock), never alone in the * scheduler paths.", "kind": "variable", "line": 575, "name": "mm_lock", "signature": "extern spinlock_t mm_lock;"}, {"kind": "macro", "line": 36, "name": "MY_SYS_KSTK_TOP", "signature": "#define MY_SYS_KSTK_TOP"}, {"kind": "macro", "line": 37, "name": "MY_USER_STACK_TOP", "signature": "#define MY_USER_STACK_TOP"}, {"kind": "macro", "line": 38, "name": "MY_USER_LOAD_BASE", "signature": "#define MY_USER_LOAD_BASE"}, {"kind": "macro", "line": 114, "name": "KSTACK_SZ", "signature": "#define KSTACK_SZ"}, {"kind": "macro", "line": 127, "name": "KSTACK_PAINT", "signature": "#define KSTACK_PAINT"}, {"kind": "macro", "line": 128, "name": "KSTACK_CANARY", "signature": "#define KSTACK_CANARY"}]}, {"doc": "scrollback.c - Console scrollback ring buffer.", "id": "kernel/scrollback.c", "kind": "module", "label": "scrollback.c", "language": "c", "sha256": "225281a42b933059", "symbol_count": 8, "symbols": [{"kind": "function", "line": 17, "name": "sb_init", "signature": "void sb_init(void)"}, {"kind": "function", "line": 23, "name": "sb_capture_row0", "signature": "void sb_capture_row0(void)"}, {"kind": "function", "line": 34, "name": "sb_reset", "signature": "void sb_reset(void)"}, {"kind": "function", "line": 38, "name": "sb_get_count", "signature": "int sb_get_count(void)"}, {"kind": "function", "line": 39, "name": "sb_get_head", "signature": "int sb_get_head(void)"}, {"kind": "function", "line": 41, "name": "sb_get_char", "signature": "char sb_get_char(int row, int col)"}, {"kind": "function", "line": 4, "name": "vga_scroll", "signature": "* Captured lazily from vga_scroll();"}, {"kind": "macro", "line": 12, "name": "SCROLLBACK_ROWS", "signature": "#define SCROLLBACK_ROWS"}]}, {"doc": "serial.c -- COM1 16550 UART driver.", "id": "kernel/serial.c", "kind": "module", "label": "serial.c", "language": "c", "sha256": "521a991bc7d3a6f2", "symbol_count": 9, "symbols": [{"kind": "function", "line": 20, "name": "serial_init", "signature": "void serial_init(void)"}, {"kind": "function", "line": 30, "name": "serial_tx_ready", "signature": "static int serial_tx_ready(void)"}, {"kind": "function", "line": 31, "name": "serial_rx_ready", "signature": "static int serial_rx_ready(void)"}, {"kind": "function", "line": 33, "name": "serial_putc", "signature": "void serial_putc(char c)"}, {"kind": "function", "line": 38, "name": "serial_e_count", "signature": "unsigned long serial_e_count(void)"}, {"kind": "function", "line": 40, "name": "serial_puts", "signature": "void serial_puts(const char *s)"}, {"kind": "function", "line": 42, "name": "serial_available", "signature": "int serial_available(void)"}, {"kind": "function", "line": 44, "name": "serial_getc", "signature": "int serial_getc(void)"}, {"kind": "macro", "line": 18, "name": "COM1", "signature": "#define COM1"}]}, {"doc": "================================================================", "id": "kernel/shell.c", "kind": "module", "label": "shell.c", "language": "c", "sha256": "a56103c909c8df54", "symbol_count": 79, "symbols": [{"kind": "struct", "line": 1841, "name": "job_row"}, {"kind": "struct", "line": 2624, "name": "ps_row"}, {"doc": "Runnable-file lookup: a bare name is mapped to a toolchain directory by its suffix, so `ld.o` finds objects/ld.o, `fib.elf` finds bin/fib.elf and `w1.cvm` finds cvm/w1.cvm. A bare name with no recognised suffix (cp, freedom, ...) resolves through bin/, the command path. Every candidate is checked for existence before it is run, so a name can never be truncated * into a path it does not own.", "kind": "struct", "line": 47, "name": "ShellRunDir"}, {"doc": "Queue a desktop-icon command to run after the current user program exits. Overwrites any earlier pending launch; safe to call from the ISR (it only * copies into a kernel buffer).", "kind": "function", "line": 73, "name": "shell_queue_launch", "signature": "void shell_queue_launch(const char *cmd)"}, {"kind": "function", "line": 101, "name": "shell_readline_active", "signature": "int shell_readline_active(void)"}, {"kind": "function", "line": 102, "name": "shell_focus_park", "signature": "void shell_focus_park(void)"}, {"kind": "function", "line": 107, "name": "shell_focus_restore", "signature": "void shell_focus_restore(void)"}, {"kind": "function", "line": 134, "name": "shell_prompt", "signature": "static void shell_prompt(void)"}, {"doc": "Strict decimal parse for the `vol` builtin: delegates the digit and overflow work to shell_parse_long and clamps the result to the * speaker's valid range. Garbage is rejected, never silently zero.", "kind": "function", "line": 142, "name": "shell_parse_vol", "signature": "static int shell_parse_vol(const char *s, unsigned *out)"}, {"doc": "Read one line into buf (at most size-1 chars). Echoes input and * honours backspace. Shared by the shell prompt and the editor.", "kind": "function", "line": 168, "name": "shell_readline_buf", "signature": "void shell_readline_buf(char *buf, int size)"}, {"doc": "The component of a ramdisk path after the last '/', or the whole path when * there is no '/'. Used to match a bare command word against a file's name.", "kind": "function", "line": 197, "name": "shell_name_base", "signature": "static const char *shell_name_base(const char *path)"}, {"doc": "Runnable tier of a file name for first-word TAB completion: 0=.elf, 1=.cvm, 2=.o, 3=anything else. A bare command word completes toward the highest-priority non-empty tier, so `poke` offers the game binary instead * of its icon PNG.", "kind": "function", "line": 222, "name": "shell_complete_tier", "signature": "static int shell_complete_tier(const char *nm)"}, {"kind": "function", "line": 234, "name": "shell_complete_replace", "signature": "static void shell_complete_replace(char *buf, int size, int *pos,\n ..."}, {"kind": "function", "line": 249, "name": "shell_readline", "signature": "static void shell_readline(void)"}, {"doc": "Redraw the edit line: erase what is shown, then write `text` into buf and onto the console, leaving the text cursor at `*pos`. The cursor is drawn on the framebuffer terminal; on the serial console the text is rewritten * and the reader's position is implied by the console cursor.", "kind": "function", "line": 257, "name": "shell_hist_show", "signature": "static void shell_hist_show(char *buf, int size, int *pos, const char *text)"}, {"doc": "Repaint the edit line after a cursor move or mid-line edit: erase the whole visible line, rewrite buf, then back the console cursor up to `pos` and redraw the framebuffer text cursor there. `shell_cur` holds the on-screen cursor column, so the erase backs up to the line start before blanking it * (a serial backspace alone does not clear a character).", "kind": "function", "line": 279, "name": "shell_line_repaint", "signature": "static void shell_line_repaint(char *buf, int size, int pos)"}, {"doc": "Insert character c into buf at `pos`, shifting the tail right. Bounds * checked; the caller repaints afterwards.", "kind": "function", "line": 292, "name": "shell_line_insert", "signature": "static void shell_line_insert(char *buf, int size, int *pos, char c)"}, {"doc": "Insert character c into buf at `pos`, shifting the tail right. Bounds * checked; the caller repaints afterwards. static void shell_line_insert(char *buf, int size, int *pos, char c) { int len = (int)kstrlen(buf); if (len >= size - 1) return; kmemmove(buf + *pos + 1, buf + *pos, (unsigned long)(len - *pos + 1)); buf[*pos] = c; (*pos)++; } /* Delete the character before the cursor (backspace).", "kind": "function", "line": 301, "name": "shell_line_backspace", "signature": "static void shell_line_backspace(char *buf, int size, int *pos)"}, {"doc": "kmemmove(buf + *pos + 1, buf + *pos, (unsigned long)(len - *pos + 1)); buf[*pos] = c; (*pos)++; } /* Delete the character before the cursor (backspace). static void shell_line_backspace(char *buf, int size, int *pos) { int len = (int)kstrlen(buf); if (*pos <= 0) return; kmemmove(buf + *pos - 1, buf + *pos, (unsigned long)(len - *pos + 1)); (*pos)--; } /* Delete the character at the cursor (Delete key).", "kind": "function", "line": 309, "name": "shell_line_delete", "signature": "static void shell_line_delete(char *buf, int size, int *pos)"}, {"doc": "int len = (int)kstrlen(buf); if (*pos <= 0) return; kmemmove(buf + *pos - 1, buf + *pos, (unsigned long)(len - *pos + 1)); (*pos)--; } /* Delete the character at the cursor (Delete key). static void shell_line_delete(char *buf, int size, int *pos) { int len = (int)kstrlen(buf); if (*pos >= len) return; kmemmove(buf + *pos, buf + *pos + 1, (unsigned long)(len - *pos)); } /* Delete from the cursor to the start of the line (Ctrl+U).", "kind": "function", "line": 316, "name": "shell_line_kill_front", "signature": "static void shell_line_kill_front(char *buf, int size, int *pos)"}, {"doc": "static void shell_line_delete(char *buf, int size, int *pos) { int len = (int)kstrlen(buf); if (*pos >= len) return; kmemmove(buf + *pos, buf + *pos + 1, (unsigned long)(len - *pos)); } /* Delete from the cursor to the start of the line (Ctrl+U). static void shell_line_kill_front(char *buf, int size, int *pos) { int len = (int)kstrlen(buf); kmemmove(buf, buf + *pos, (unsigned long)(len - *pos + 1)); pos = 0; } /* Delete from the cursor to the end of the line (Ctrl+K).", "kind": "function", "line": 323, "name": "shell_line_kill_tail", "signature": "static void shell_line_kill_tail(char *buf, int size, int *pos)"}, {"doc": "/* Delete from the cursor to the start of the line (Ctrl+U). static void shell_line_kill_front(char *buf, int size, int *pos) { int len = (int)kstrlen(buf); kmemmove(buf, buf + *pos, (unsigned long)(len - *pos + 1)); pos = 0; } /* Delete from the cursor to the end of the line (Ctrl+K). static void shell_line_kill_tail(char *buf, int size, int *pos) { buf[*pos] = '\\0'; } /* Delete the word before the cursor (Ctrl+W): skip spaces, then non-spaces.", "kind": "function", "line": 328, "name": "shell_line_kill_word", "signature": "static void shell_line_kill_word(char *buf, int size, int *pos)"}, {"doc": "Most recent history entry starting with `prefix` (of length plen) that is strictly longer than the prefix, or -1 when there is none. The suggestion * for a typed prefix is always the newest match, zsh-style.", "kind": "function", "line": 340, "name": "shell_hist_newest_match", "signature": "static int shell_hist_newest_match(const char *prefix, unsigned long plen)"}, {"kind": "function", "line": 357, "name": "line", "signature": "* to the live line (handled by the caller resetting shell_hist_idx). */\nstatic void shell_hist_na..."}, {"doc": "Shell prompt readline: like shell_readline_buf plus command history. Up arrow (ESC [ A) recalls the previous command starting with the typed prefix (empty prefix recalls everything), down arrow moves forward. Right arrow at end of line accepts the newest history match for the prefix; TAB completes programs, files and recent history words. Any * editing key while scrolling returns to the live line.", "kind": "function", "line": 402, "name": "shell_readline_hist", "signature": "static void shell_readline_hist(char *buf, int size)"}, {"kind": "function", "line": 715, "name": "shell_parse", "signature": "int shell_parse(char *line, char **argv, int max_args)"}, {"kind": "function", "line": 739, "name": "shell_run", "signature": "void shell_run(void)"}, {"doc": "Load an ELF file from the ramdisk and register it under its filename stem. Returns 1 for an ET_REL program, 2 for an ET_EXEC/ET_DYN Linux process, * 0 on failure. progname_out must hold at least 32 bytes.", "kind": "function", "line": 806, "name": "shell_load", "signature": "static int shell_load(const char *fname, char *progname_out, void **entry_out)"}, {"kind": "function", "line": 869, "name": "outw_port", "signature": "static inline void outw_port(unsigned short port, unsigned short val)"}, {"kind": "function", "line": 875, "name": "shell_cmd_poweroff", "signature": "static void shell_cmd_poweroff(void)"}, {"doc": "The toolchain directory that owns `name`, chosen by suffix. Bare names with * no recognised suffix fall through to the command path bin/.", "kind": "function", "line": 891, "name": "shell_run_dir_for", "signature": "static const ShellRunDir *shell_run_dir_for(const char *name)"}, {"doc": "Is `resolved` (already normalised against the cwd) a real ramdisk file? A * directory name or a non-existent path is rejected, never run.", "kind": "function", "line": 909, "name": "shell_file_is_real", "signature": "static int shell_file_is_real(const char *resolved)"}, {"doc": "Resolve `name` to a full ramdisk path suitable for running. A bare name is tried first against the cwd, then through the suffix-picked toolchain directory, then through the remaining directories as fallback. Returns 1 and fills `out` (cap bytes) on success, 0 when no candidate is a real file. A candidate that cannot fit `cap` is skipped like a missing file, never * truncated.", "kind": "function", "line": 921, "name": "shell_resolve_run", "signature": "static int shell_resolve_run(const char *name, char *out, unsigned cap)"}, {"doc": "ET_REL trust gate (boyscout fix for ring-0 .o without validation): relocatables execute as kernel extensions, so only the toolchain directory (ETREL_TRUSTED_DIR in kernel.h) owns them. `full` is already normalised by fs_resolve (\"..\"/\".\"/\"//\" collapsed, no symlinks on MiniFS), so a prefix match is a containment proof, not a string hope. TOCTOU note: the bytes are snapshotted into a kernel buffer at open time and the gate checks the same resolved path the bytes were read from; swapping the file between resolve and open only changes WHICH bytes load, and hostile bytes still face the ELF/reloc validators plus * the ETREL_IMAGE_MAX cap. ET_EXEC/ET_DYN/CVM are unaffected.", "kind": "function", "line": 963, "name": "etrel_path_trusted", "signature": "static int etrel_path_trusted(const char *full)"}, {"doc": "Run a raw ELF image (ET_REL, ET_EXEC or ET_DYN) already read into `data`. argv[0] is the program name the program sees. Returns the exit code, or -1 when the buffer is not a loadable ELF. The image is not registered; it is * relocated and executed fresh, then dropped.", "kind": "function", "line": 977, "name": "shell_run_elf_buf_path", "signature": "static int shell_run_elf_buf_path(const char *data, unsigned size, int argc,\n ..."}, {"doc": "Load the ramdisk file at `full` and run it as an ELF. Returns the exit * code, or -1 when the file cannot be read or loaded.", "kind": "function", "line": 1007, "name": "shell_run_elf_file", "signature": "static int shell_run_elf_file(const char *full, int argc, char **argv)"}, {"doc": "Load a Linux ELF from the MiniFS disk and run it (preserves the historical * `run` fallback when a name is not on the ramdisk).", "kind": "function", "line": 1020, "name": "shell_run_elf_minifs", "signature": "static int shell_run_elf_minifs(const char *name, int argc, char **argv)"}, {"doc": "Run a `.cvm` module at the resolved path `full`. The interpreter is loaded from the ramdisk on first use and cached. argv[0] is the module name the module sees; the interpreter passes it and the remaining words through as * a Linux-style argv.", "kind": "function", "line": 1070, "name": "shell_run_cvm", "signature": "static int shell_run_cvm(const char *full, int argc, char **argv)"}, {"doc": "Run `name` as a ramdisk/MiniFS file: `.cvm` modules through the interpreter, ELF files by content through the matching loader. Returns the * exit code, or -1 when the name resolves to nothing runnable.", "kind": "function", "line": 1106, "name": "shell_run_file", "signature": "static int shell_run_file(const char *name, int argc, char **argv)"}, {"doc": "--- Multitask run (mrun): concurrent isolated ELFs ---- `mrun a.elf b.elf ...` loads each ET_EXEC/ET_DYN into its own user window (proc_spawn_elf) and waits for all of them. The 100 Hz timer preempts the BSP across the READY set, so small programs overlap in time instead of running one after another. ET_REL is refused (ring-0 extensions are not multitask-safe); `.cvm` keeps the `run` path. Best-effort limits of this revision: no mmap/VMA isolation between the children (programs that mmap concurrently share the global VMA * tree) and one shared fd table; exit codes print per program.", "kind": "function", "line": 1150, "name": "shell_read_elf_bytes", "signature": "static int shell_read_elf_bytes(const char *name, unsigned char **out,\n ..."}, {"kind": "function", "line": 1216, "name": "code", "signature": "* the last exit code (130 when interrupted). */\nstatic int shell_wait_fg(int *pids, int n, int ki..."}, {"kind": "function", "line": 1252, "name": "shell_cmd_mrun", "signature": "static void shell_cmd_mrun(int argc, char **argv)"}, {"doc": "`run &`: background a single isolated ELF (same spawn path as mrun). ET_REL and .cvm stay foreground-only: ring-0 extensions and the * single cached interpreter cannot run detached.", "kind": "function", "line": 1300, "name": "shell_run_bg", "signature": "static void shell_run_bg(const char *name, int argc, char **argv)"}, {"kind": "function", "line": 1343, "name": "desktop_path", "signature": "static void desktop_path(const char *name, char *dst, unsigned cap)"}, {"kind": "function", "line": 1352, "name": "desktop_flag", "signature": "static void desktop_flag(const char *name)"}, {"kind": "function", "line": 1362, "name": "desktop_flag_on", "signature": "static int desktop_flag_on(const char *name)"}, {"kind": "function", "line": 1376, "name": "flows", "signature": "* and external flows (make wl) set it themselves. */\nstatic void desktop_unflag(const char *name)"}, {"kind": "function", "line": 1384, "name": "desktop_srv_alive", "signature": "static int desktop_srv_alive(void)"}, {"kind": "function", "line": 1400, "name": "shell_cmd_desktop", "signature": "static void shell_cmd_desktop(int argc, char **argv)"}, {"doc": "Unified dispatcher used by `run` and by bare commands: a registered program wins, then the runnable-file resolver. argv[0] is the command/program name * as typed. Returns the exit code, or -1 when the name cannot be run.", "kind": "function", "line": 1453, "name": "shell_run_any", "signature": "int shell_run_any(const char *name, int argc, char **argv)"}, {"doc": "--- Graphics debugging (`gfx` builtin) ---- The serial console is the observability surface the BDD suite drives, but a framebuffer program's output never reaches it. `gfx` lifts the graphics side onto the console: state, single-pixel sampling, region statistics and a PPM screenshot are all reported as text, so the desktop and the windowed graphics programs are testable from the shell exactly like `date`/`vol` are. Every coordinate is clamped to the framebuffer and every parse is * strict, so a malformed invocation is a usage diagnostic, never a crash.", "kind": "function", "line": 1524, "name": "gfx_parse_int", "signature": "static int gfx_parse_int(const char *s, int *out)"}, {"doc": "Read the current 256-entry VGA DAC palette (3x6-bit per entry, read at 8-bit precision by the kernel's normalisation). Used by `gfx shot` to turn the * indexed framebuffer into an RGB PPM.", "kind": "function", "line": 1544, "name": "gfx_read_palette", "signature": "static void gfx_read_palette(unsigned char pal[768])"}, {"kind": "function", "line": 1551, "name": "shell_cmd_gfx", "signature": "static void shell_cmd_gfx(int argc, char **argv)"}, {"doc": "`wm ` — window-manager operations, exposed as a shell builtin so the tiling-WM behaviour is observable and testable over the serial console exactly like `date`/`vol`. The operations are the same functions the title-bar buttons, the Alt/Super shortcuts and the mouse tick call, so * the framebuffer and the shell can never disagree.", "kind": "function", "line": 1703, "name": "shell_cmd_wm", "signature": "static void shell_cmd_wm(int argc, char **argv)"}, {"kind": "function", "line": 1827, "name": "tree", "signature": "* tree (mmap-heavy jobs stay best-effort), legacy blocking `run` ignores\n * Ctrl+C (it never poll..."}, {"kind": "function", "line": 1840, "name": "shell_cmd_jobs", "signature": "static void shell_cmd_jobs(void)"}, {"kind": "function", "line": 1863, "name": "shell_cmd_wait", "signature": "static void shell_cmd_wait(int argc, char **argv)"}, {"kind": "function", "line": 1895, "name": "shell_cmd_kill", "signature": "static void shell_cmd_kill(int argc, char **argv)"}, {"doc": "`mem` — memory and disk pressure in one screenful: kernel heap use (dlmalloc), ramdisk use versus its cap, MiniFS free blocks/inodes and live processes. The demo-scale failure mode is a silent exhaustion (a big Zone alloc or a ramdisk write fails closed far from its cause), * so this is the first thing to read when a load stops loading.", "kind": "function", "line": 1920, "name": "shell_cmd_mem", "signature": "static void shell_cmd_mem(void)"}, {"kind": "function", "line": 1949, "name": "VMA", "signature": "* plus the live VMA (mmap) tree. The walk is bounded (64-deep explicit\n * stack, 128 regions prin..."}, {"kind": "function", "line": 2024, "name": "to", "signature": "* actually trap to (brk/mmap/munmap/mprotect) and says so up front. */\nstatic void shell_cmd_trac..."}, {"doc": "Strict unsigned parse for debugger/inspector operands: `0x`-prefixed hex or plain decimal, no signs, no trailing garbage, fail-closed on overflow or empty input. katol is decimal-only, so `gdb dump 0x400000` used to parse as 0; this is the single choke point for numeric * inspector arguments.", "kind": "function", "line": 2093, "name": "shell_parse_u64", "signature": "static int shell_parse_u64(const char *s, unsigned long *out)"}, {"doc": "Strict signed decimal twin of shell_parse_u64: optional sign, at least one digit, whole string consumed, overflow fail-closed. The bound comes from the compiler's __LONG_MAX__ (freestanding-safe, no libc header needed); a negative sign allows one extra unit of magnitude for LONG_MIN. Shared through shell.h so the editor's line * numbers use the same choke point instead of a second copy.", "kind": "function", "line": 2109, "name": "shell_parse_long", "signature": "int shell_parse_long(const char *s, long *out)"}, {"doc": "`gdb ` -- in-OS inspector half of the debugger story. Full register-level debugging (breakpoints, single-step, live register edit) stays on the QEMU gdb stub: `make gdb`, then from the host `gdb -ex 'target remote :1234' -ex 'add-symbol-file kernel.elf 0x100000'`. Here: `gdb regs [pid]` dumps the stored context (LIVE sampled registers for the running pid), `gdb dump ` hexdumps 1..256 bytes * (decimal or 0x-hex), `gdb qemu` prints the remote hookup.", "kind": "function", "line": 2134, "name": "shell_cmd_gdb", "signature": "static void shell_cmd_gdb(int argc, char **argv)"}, {"doc": "`hash ` — XXH64 (64-bit, seed 0) of a ramdisk/MiniFS file, streamed in bounded chunks so a large MiniFS file never needs a whole-file buffer. This is the integrity tool for CVM modules and any ramdisk payload: an image built from source is compared against a recorded hash, and a module * that drifted is detected before it is trusted.", "kind": "function", "line": 2177, "name": "shell_cmd_hash", "signature": "static void shell_cmd_hash(int argc, char **argv)"}, {"doc": "Docstring: Resolve `arg` against the cwd into `out` (`RAMDISK_FNAME_LEN` bytes); on failure print `: : ` and return 0. Unifies the resolve-or-diagnose prelude every path-taking * builtin repeats.", "kind": "function", "line": 2196, "name": "shell_resolve_arg", "signature": "static int shell_resolve_arg(const char *cmd, const char *arg,\n const..."}, {"doc": "Dispatcher exemption from the -Wframe-larger-than=2048 gate: this function runs only on the shell's own boot stack (generous), never on a 16 KB proc slot — no ring-3 syscall path reaches it — and -Os inlines single-use command helpers into its frame. Shrinking the number further would mean splitting every branch for the metric without changing peak stack one byte, so the exemption stands while * every syscall/ISR-reachable function stays gated. pragma GCC diagnostic push pragma GCC diagnostic ignored \"-Wframe-larger-than=\"", "kind": "function", "line": 2283, "name": "shell_exec_builtin", "signature": "void shell_exec_builtin(int argc, char **argv)"}, {"kind": "function", "line": 562, "name": "root", "signature": "* MiniFS root (where the big ELFs live under bare names), * and only the highest-priority non-empty tier is kept. An * explicit path or an argument word keeps every match, so * navigating to data file"}, {"kind": "function", "line": 737, "name": "desktop_unflag", "signature": "static void desktop_unflag(const char *name);"}, {"kind": "function", "line": 1143, "name": "window", "signature": "* window (proc_spawn_elf) and waits for all of them. The 100 Hz timer * preempts the BSP across the READY set, so small programs overlap in * time instead of running one after another. ET_REL is refus"}, {"kind": "function", "line": 1330, "name": "this", "signature": "* boot into the tiled Wayland desktop: every NK app started after * this (paint, vedit, file, nuklear, doomedit, piano) runs as a * Wayland client (pixels to its pid-unique mailbox, input from its * ."}, {"kind": "function", "line": 1479, "name": "context", "signature": "* from ISR context (which corrupts the running program's state). */ shell_queue_launch(cmd);"}, {"kind": "function", "line": 2626, "name": "frame", "signature": "* not live in this frame (stack discipline, CLAUDE.md). */ struct ps_row *snap = (struct ps_row *)kmalloc(sizeof(struct ps_row) * MAX_PROCS);"}, {"kind": "macro", "line": 14, "name": "XXH_STATIC_LINKING_ONLY", "signature": "#define XXH_STATIC_LINKING_ONLY"}, {"kind": "macro", "line": 39, "name": "SHELL_CVM_INTERP", "signature": "#define SHELL_CVM_INTERP"}, {"kind": "macro", "line": 58, "name": "SHELL_RUN_DIRS", "signature": "#define SHELL_RUN_DIRS"}, {"kind": "macro", "line": 84, "name": "SHELL_HIST_MAX", "signature": "#define SHELL_HIST_MAX"}, {"kind": "macro", "line": 216, "name": "SHELL_BUILTIN_COUNT", "signature": "#define SHELL_BUILTIN_COUNT"}, {"kind": "macro", "line": 873, "name": "QEMU_PM_PORT", "signature": "#define QEMU_PM_PORT"}]}, {"doc": "Docstring: File-static VMA pool copy, stack-safe by construction.", "id": "kernel/spawn.c", "kind": "module", "label": "spawn.c", "language": "c", "sha256": "eac342abca091cff", "symbol_count": 9, "symbols": [{"doc": "#include \"kernel.h\" #include \"sched.h\" #include \"vma.h\" #include \"spawn.h\" #include \"minifs.h\" #include \"vga_fb.h\" #include \"arch/x86/msr.h\" /** Docstring: File-static VMA pool copy, stack-safe by construction. static vma_node_t spawn_vma_copy[VMA_MAX]; /** Docstring: Save the caller shared-window view into ctx.", "kind": "function", "line": 13, "name": "spawn_backup", "signature": "void spawn_backup(spawn_ctx_t *ctx)"}, {"doc": "ctx->mmap_cur = user_mmap_cur; ctx->fsbase = rdmsr(MSR_FSBASE); ctx->gsbase = rdmsr(MSR_GSBASE); ctx->p0_kstack = procs[0].kstack; for (i = 0; i < vma_pool_n; i++) spawn_vma_copy[i] = vma_pool[i]; ctx->live_root = vma_live_root; ctx->free_root = vma_free_root; ctx->pool_n = vma_pool_n; for (i = 0; i < KFD_MAX; i++) ctx->kfd[i] = kfd_get(i); } /** Docstring: Restore a view previously saved by spawn_backup.", "kind": "function", "line": 32, "name": "spawn_restore", "signature": "void spawn_restore(spawn_ctx_t *ctx)"}, {"doc": "ctx->kfd[i] = 0; if (old) { old->ref--; if (old->ref <= 0 && ndrop < KFD_MAX) drop[ndrop++] = old; } } spin_unlock_irqrestore(&fd_lock, flags_irq); for (i = 0; i < ndrop; i++) kfclose(drop[i]); } } /** Docstring: Release a copy produced by spawn_copy_argv.", "kind": "function", "line": 68, "name": "spawn_free_argv", "signature": "void spawn_free_argv(char **kargv, int argc)"}, {"doc": "} } /** Docstring: Release a copy produced by spawn_copy_argv. void spawn_free_argv(char **kargv, int argc) { int i; if (!kargv) return; for (i = 0; i < argc; i++) if (kargv[i]) kfree(kargv[i]); kfree(kargv); } /** Docstring: Copy user argv into kernel memory, zero terminated.", "kind": "function", "line": 78, "name": "spawn_copy_argv", "signature": "char **spawn_copy_argv(int argc, const char **uargv)"}, {"doc": "for (i = 0; i <= argc; i++) kargv[i] = 0; for (i = 0; i < argc; i++) { unsigned slen; if (!uargv[i]) break; slen = (unsigned)kstrlen(uargv[i]) + 1; kargv[i] = (char *)kmalloc(slen); if (!kargv[i]) { spawn_free_argv(kargv, i); return 0; } kmemcpy(kargv[i], uargv[i], slen); } kargv[argc] = 0; return kargv; } /** Docstring: Validate user argv words against the user window.", "kind": "function", "line": 99, "name": "spawn_validate_argv", "signature": "int spawn_validate_argv(int argc, const char **uargv)"}, {"doc": "if (!user_range_ok((unsigned long)uargv, (unsigned long)(argc + 1) * sizeof(char *))) return 0; for (i = 0; i < argc; i++) { unsigned long s; if (!uargv[i]) break; s = (unsigned long)uargv[i]; if (s < USER_LOAD_BASE || s >= USER_LOAD_END) return 0; if (!user_str_ok(s, USER_LOAD_END - s)) return 0; } return 1; } /** Docstring: Snapshot a resolved path into a kernel buffer.", "kind": "function", "line": 117, "name": "spawn_load_image", "signature": "unsigned char *spawn_load_image(const char *resolved, unsigned *size_out)"}, {"doc": "MiniFSInode mi; if (minifs_stat(ino, &mi) >= 0 && mi.size > 0) { data_size = mi.size; data = (unsigned char *)kmalloc(data_size); if (data) minifs_read(ino, data, 0, data_size); } } } if (!data) return 0; size_out = data_size; return data; } /** Docstring: Run one ET_REL child through the ring-0 loader.", "kind": "function", "line": 152, "name": "spawn_run_rel", "signature": "static int spawn_run_rel(const char *resolved, const char *redirect,\n uns..."}, {"doc": "return EFAULT; } entry = elf_load((void *)data, data_size, &base); if (redirect && redirect[0]) did_redirect = redirect_begin(); rc = EFAULT; if (entry) rc = k_run_rel(entry, argc, kargv ? kargv : (char **)uargv_fallback); kfree(base); if (did_redirect && redirect_commit(redirect, 0) != 0) kprintf(\"SPAWN: redirect to %s failed, output dropped\", redirect); return rc; } /** Docstring: Run one ET_EXEC child in an isolated window.", "kind": "function", "line": 178, "name": "spawn_run_exec", "signature": "static int spawn_run_exec(const char *resolved, const char *redirect,\n ..."}, {"doc": "do_kill(pid); do_waitpid(pid); rc = 130; break; } yield(); } } if (did_redirect && redirect_commit(redirect, 0) != 0) kprintf(\"SPAWN: redirect to %s failed, output dropped\", redirect); return rc; } /** Docstring: Run a loaded image by ELF type, return child status.", "kind": "function", "line": 223, "name": "spawn_execute", "signature": "int spawn_execute(const char *resolved, const char *redirect,\n unsigned char *da..."}]}, {"doc": "string.c -- Kernel string and memory functions.", "id": "kernel/string.c", "kind": "module", "label": "string.c", "language": "c", "sha256": "e6abe6a08b089cd0", "symbol_count": 13, "symbols": [{"kind": "function", "line": 17, "name": "kstrlen", "signature": "unsigned long kstrlen(const char *s)"}, {"kind": "function", "line": 23, "name": "kstrcpy", "signature": "char *kstrcpy(char *dst, const char *src)"}, {"kind": "function", "line": 29, "name": "kstrncpy", "signature": "char *kstrncpy(char *dst, const char *src, unsigned long n)"}, {"kind": "function", "line": 35, "name": "kstrncat", "signature": "char *kstrncat(char *dst, const char *src, unsigned long n)"}, {"kind": "function", "line": 43, "name": "kstrcmp", "signature": "int kstrcmp(const char *a, const char *b)"}, {"kind": "function", "line": 48, "name": "kstrncmp", "signature": "int kstrncmp(const char *a, const char *b, unsigned long n)"}, {"kind": "function", "line": 53, "name": "kstrchr", "signature": "char *kstrchr(const char *s, int c)"}, {"kind": "function", "line": 58, "name": "kstrstr", "signature": "char *kstrstr(const char *hay, const char *ndl)"}, {"kind": "function", "line": 68, "name": "kmemcpy", "signature": "void *kmemcpy(void *dst, const void *src, unsigned long n)"}, {"kind": "function", "line": 75, "name": "kmemset", "signature": "void *kmemset(void *dst, int c, unsigned long n)"}, {"kind": "function", "line": 81, "name": "kmemcmp", "signature": "int kmemcmp(const void *a, const void *b, unsigned long n)"}, {"kind": "function", "line": 87, "name": "kmemmove", "signature": "void *kmemmove(void *dst, const void *src, unsigned long n)"}, {"kind": "function", "line": 95, "name": "katol", "signature": "long katol(const char *s)"}]}, {"doc": "================================================================", "id": "kernel/symtab.c", "kind": "module", "label": "symtab.c", "language": "c", "sha256": "8042baa7abfec625", "symbol_count": 7, "symbols": [{"kind": "function", "line": 10, "name": "k_register_symbol", "signature": "void k_register_symbol(const char *name, void *addr)"}, {"kind": "function", "line": 18, "name": "ksym_resolve", "signature": "void *ksym_resolve(const char *name)"}, {"kind": "function", "line": 34, "name": "kprog_slot", "signature": "KProg *kprog_slot(const char *name)"}, {"kind": "function", "line": 42, "name": "kprog_lookup", "signature": "KProg *kprog_lookup(const char *name)"}, {"kind": "function", "line": 49, "name": "k_register_program", "signature": "void k_register_program(const char *name, prog_entry_t entry)"}, {"kind": "function", "line": 57, "name": "k_register_process", "signature": "void k_register_process(const char *name, void *proc_entry)"}, {"kind": "function", "line": 65, "name": "k_spawn", "signature": "int k_spawn(const char *name, int argc, char **argv)"}]}, {"doc": "sync.c -- Blocking synchronization primitives (roadmap Phase 3.1).", "id": "kernel/sync.c", "kind": "module", "label": "sync.c", "language": "c", "sha256": "ead43e08a158c21b", "symbol_count": 26, "symbols": [{"kind": "function", "line": 27, "name": "wq_init", "signature": "void wq_init(wait_queue_t *q)"}, {"kind": "function", "line": 33, "name": "sleep_on", "signature": "void sleep_on(wait_queue_t *q)"}, {"kind": "function", "line": 54, "name": "wake_up", "signature": "int wake_up(wait_queue_t *q)"}, {"kind": "function", "line": 70, "name": "wake_up_all", "signature": "int wake_up_all(wait_queue_t *q)"}, {"kind": "function", "line": 76, "name": "mutex_init", "signature": "void mutex_init(mutex_t *m)"}, {"kind": "function", "line": 93, "name": "pi_valid", "signature": "static int pi_valid(int pid)"}, {"kind": "function", "line": 99, "name": "pi_set_base", "signature": "void pi_set_base(int pid, int prio)"}, {"kind": "function", "line": 108, "name": "pi_get_eff", "signature": "int pi_get_eff(int pid)"}, {"kind": "function", "line": 113, "name": "pi_recompute", "signature": "static void pi_recompute(int pid)"}, {"kind": "function", "line": 124, "name": "pi_boost", "signature": "static void pi_boost(int waiter, int owner)"}, {"kind": "function", "line": 150, "name": "mutex_lock", "signature": "void mutex_lock(mutex_t *m)"}, {"kind": "function", "line": 170, "name": "mutex_trylock", "signature": "int mutex_trylock(mutex_t *m)"}, {"kind": "function", "line": 186, "name": "mutex_unlock", "signature": "void mutex_unlock(mutex_t *m)"}, {"kind": "function", "line": 207, "name": "sem_init", "signature": "void sem_init(sem_t *s, int value)"}, {"kind": "function", "line": 213, "name": "sem_wait", "signature": "void sem_wait(sem_t *s)"}, {"kind": "function", "line": 227, "name": "sem_post", "signature": "void sem_post(sem_t *s)"}, {"kind": "function", "line": 235, "name": "cond_init", "signature": "void cond_init(cond_t *c)"}, {"kind": "function", "line": 239, "name": "cond_wait", "signature": "void cond_wait(cond_t *c, mutex_t *m)"}, {"kind": "function", "line": 245, "name": "cond_signal", "signature": "void cond_signal(cond_t *c)"}, {"kind": "function", "line": 249, "name": "cond_broadcast", "signature": "void cond_broadcast(cond_t *c)"}, {"kind": "function", "line": 253, "name": "rwlock_init", "signature": "void rwlock_init(rwlock_t *rw)"}, {"kind": "function", "line": 260, "name": "rwlock_read_lock", "signature": "void rwlock_read_lock(rwlock_t *rw)"}, {"kind": "function", "line": 274, "name": "rwlock_read_unlock", "signature": "void rwlock_read_unlock(rwlock_t *rw)"}, {"kind": "function", "line": 283, "name": "rwlock_write_lock", "signature": "void rwlock_write_lock(rwlock_t *rw)"}, {"kind": "function", "line": 297, "name": "rwlock_write_unlock", "signature": "void rwlock_write_unlock(rwlock_t *rw)"}, {"doc": "Host unit-test hook (tests/test_sync.c, `make test-sync`): current_pid * is mapped to this test global by -Dcurrent_pid=t_cur_pid.", "kind": "variable", "line": 24, "name": "t_cur_pid", "signature": "extern int t_cur_pid;"}]}, {"doc": "syscalls.c - Linux x86-64 syscall dispatcher and SYS_SPAWN.", "id": "kernel/syscalls.c", "kind": "module", "label": "syscalls.c", "language": "c", "sha256": "b3aa17e43dbd94c3", "symbol_count": 104, "symbols": [{"kind": "struct", "line": 713, "name": "kiovec"}, {"doc": "strace-style name resolver: Linux table first, then the MiniOS window, then the out-of-table Linux numbers the dispatcher answers (openat, newfstatat, clock_gettime, ...). The tail is a data table, not a switch: a `case N:` ladder would trip tools/check_abi_numbers.py (its CASE_RE parses every `case N:` in this file as a dispatch site) and forces a comment per number to satisfy Rule C. Unknown numbers stay numeric so a * new stub never prints a wrong name.", "kind": "struct", "line": 1282, "name": "sc_extra_name"}, {"kind": "struct", "line": 102, "name": "minios_syscall_entry_t"}, {"kind": "function", "line": 63, "name": "kfd_get", "signature": "KFILE *kfd_get(int fd)"}, {"kind": "function", "line": 75, "name": "kfd_put", "signature": "void kfd_put(KFILE *f)"}, {"doc": "wall_us_now: RTC-anchored wall clock in microseconds (Phase 0.2/0.3). The RTC gives whole seconds; the fraction is the free-running ktime_us rebased at every RTC second edge, so successive reads order correctly across the edge. Shared by gettimeofday (96), clock_gettime (228) and the shell `clock` builtin: one source, never three disagreeing clocks. On RTC failure the base stays 0 and time reads as small uptime-like * values; callers that need an epoch treat 0 as \"no clock\".", "kind": "function", "line": 120, "name": "wall_us_now", "signature": "unsigned long wall_us_now(void)"}, {"kind": "function", "line": 130, "name": "sys_minios_dns", "signature": "static long sys_minios_dns(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 135, "name": "sys_minios_tls_retired", "signature": "static long sys_minios_tls_retired(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 142, "name": "sys_linux_futex", "signature": "static long sys_linux_futex(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 171, "name": "sys_minios_time", "signature": "static long sys_minios_time(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 175, "name": "sys_minios_kbd", "signature": "static long sys_minios_kbd(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 195, "name": "sys_minios_palette", "signature": "static long sys_minios_palette(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 207, "name": "sys_minios_kbd_raw", "signature": "static long sys_minios_kbd_raw(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 213, "name": "sys_minios_vga_mode", "signature": "static long sys_minios_vga_mode(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 220, "name": "sys_minios_pcspk_init", "signature": "static long sys_minios_pcspk_init(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 224, "name": "sys_minios_pcspk_tone", "signature": "static long sys_minios_pcspk_tone(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 238, "name": "sys_minios_doom_frame", "signature": "static long sys_minios_doom_frame(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"doc": "2x nearest-neighbour zoom for the 320x200 game window (a1 0/1). * Scalar only, no pointer to validate; anything else is EINVAL.", "kind": "function", "line": 245, "name": "sys_minios_gfx_zoom", "signature": "static long sys_minios_gfx_zoom(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 252, "name": "sys_minios_rtc", "signature": "static long sys_minios_rtc(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 265, "name": "sys_minios_fb_info", "signature": "static long sys_minios_fb_info(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 276, "name": "sys_minios_pcspk_vol", "signature": "static long sys_minios_pcspk_vol(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 284, "name": "sys_minios_spawn", "signature": "static long sys_minios_spawn(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 295, "name": "sys_minios_lz4_compress", "signature": "static long sys_minios_lz4_compress(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 308, "name": "sys_minios_lz4_decompress", "signature": "static long sys_minios_lz4_decompress(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 322, "name": "sys_minios_mouse", "signature": "static long sys_minios_mouse(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 345, "name": "sys_minios_nk_frame", "signature": "static long sys_minios_nk_frame(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"doc": "} static long sys_minios_nk_frame(long a1, long a2, long a3, long a4, long a5, long a6) { (void)a2; (void)a3; (void)a4; (void)a5; (void)a6; if (a1) SANITIZE_RANGE(a1, 2 * sizeof(int)); gfx_note_compositor(); vga_fb_blit_nk_window(); if (a1) { int *o = (int *)(unsigned long)a1; o[0] = nk_win_x; o[1] = nk_win_y + FONT_H; } return 0; } /** Docstring: Resolve the registered PCM sink, 0 when absent.", "kind": "function", "line": 358, "name": "sb16_audio_device", "signature": "static device_t *sb16_audio_device(void)"}, {"kind": "function", "line": 364, "name": "sys_minios_sb16_open", "signature": "static long sys_minios_sb16_open(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 376, "name": "sys_minios_sb16_submit", "signature": "static long sys_minios_sb16_submit(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 387, "name": "sys_minios_gfx_title", "signature": "static long sys_minios_gfx_title(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 401, "name": "sys_minios_sb16_pump", "signature": "static long sys_minios_sb16_pump(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 405, "name": "sys_minios_sb16_stream_open", "signature": "static long sys_minios_sb16_stream_open(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 409, "name": "sys_minios_sb16_stream_close", "signature": "static long sys_minios_sb16_stream_close(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 413, "name": "sys_minios_sb16_stream_submit", "signature": "static long sys_minios_sb16_stream_submit(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 421, "name": "sys_minios_sb16_stream_vol", "signature": "static long sys_minios_sb16_stream_vol(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 434, "name": "sys_minios_futex_wait", "signature": "static long sys_minios_futex_wait(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 440, "name": "sys_minios_futex_wake", "signature": "static long sys_minios_futex_wake(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 449, "name": "batch_kdispatch", "signature": "static long batch_kdispatch(uint32_t opcode)"}, {"kind": "function", "line": 463, "name": "DOOM_FRAME", "signature": "* DOOM_FRAME (211) and NK_FRAME (220) stay as compat aliases. */\nstatic long sys_minios_gfx_prese..."}, {"doc": "Raw keystroke read for fullscreen ring-3 programs (vedit): one byte from the serial + PS/2 multiplexer with no line buffering, no echo and no scrollback detour. a1 == 0 polls (-1 when idle, so user space can bound its own escape-sequence timeout); otherwise blocks until a byte. * Bytes are the same CSI form both consoles carry, PS/2 included.", "kind": "function", "line": 484, "name": "sys_minios_getc_raw", "signature": "static long sys_minios_getc_raw(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 495, "name": "sys_minios_submit_batch", "signature": "static long sys_minios_submit_batch(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"doc": "RLIMIT/cgroups-lite (240): a1 = op (SET/GET), a2 = resource (AS/CPU/NOFILE), a3 = value for SET. Values are bytes, ticks, count; 0 clears (unlimited). Only lowers... no: any non-negative value sets (raising allowed; the threat model is cooperative containment, not * privilege). Returns the old value on SET, current on GET.", "kind": "function", "line": 518, "name": "sys_minios_rlimit", "signature": "static long sys_minios_rlimit(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"doc": "Docstring: unified directory listing for the ring-3 file browser. a1 = path, a2 = user buffer, a3 = buffer capacity. The buffer is filled with NUL-separated entry names relative to the directory; subdirectory names carry a trailing '/'. Returns the entry count, or a negative errno on failure. Ramdisk entries win; MiniFS entries merge underneath with exact-name dedupe. Truncation is safe: the call stops before an entry that would not fit and returns the entries that did fit. Paths resolve through fs_resolve, so '..' * cannot escape, and overlong names fail closed.", "kind": "function", "line": 559, "name": "sys_minios_dir_list", "signature": "static long sys_minios_dir_list(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 725, "name": "syscall_trace_enabled", "signature": "long syscall_trace_enabled(void)"}, {"kind": "function", "line": 726, "name": "syscall_trace_set", "signature": "void syscall_trace_set(int on)"}, {"kind": "function", "line": 727, "name": "syscall_trace_verbose_enabled", "signature": "long syscall_trace_verbose_enabled(void)"}, {"kind": "function", "line": 728, "name": "syscall_trace_verbose_set", "signature": "void syscall_trace_verbose_set(int on)"}, {"kind": "function", "line": 729, "name": "syscall_trace_shown", "signature": "unsigned long syscall_trace_shown(void)"}, {"kind": "function", "line": 781, "name": "sys_linux_write", "signature": "static long sys_linux_write(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 797, "name": "sys_linux_writev", "signature": "static long sys_linux_writev(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"doc": "Shared by sys_linux_open (2) and the openat fall-through (257). The slot scan and the publish re-check under fd_lock, so two racing opens can never claim the same slot; the slow kfopen runs outside * the lock with nothing published yet.", "kind": "function", "line": 830, "name": "do_open_path", "signature": "static long do_open_path(const char *path, long flags)"}, {"kind": "function", "line": 860, "name": "sys_linux_open", "signature": "static long sys_linux_open(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 865, "name": "sys_linux_close", "signature": "static long sys_linux_close(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 886, "name": "sys_linux_lseek", "signature": "static long sys_linux_lseek(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"doc": "Back isolated user windows (mrun/proc_spawn_elf): their page tables start with only segments + stack mapped, so heap/mmap growth must materialize pages. Shared-window PTEs are already present and the call * below is a no-op there: zero behavior change on the legacy path.", "kind": "function", "line": 904, "name": "mm_ensure_cur", "signature": "static int mm_ensure_cur(unsigned long start, unsigned long end)"}, {"kind": "function", "line": 913, "name": "sys_linux_brk", "signature": "static long sys_linux_brk(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 942, "name": "sys_linux_mmap", "signature": "static long sys_linux_mmap(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 997, "name": "sys_linux_munmap", "signature": "static long sys_linux_munmap(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 1015, "name": "sys_linux_mprotect", "signature": "static long sys_linux_mprotect(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 1020, "name": "sys_linux_sigaction", "signature": "static long sys_linux_sigaction(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 1025, "name": "sys_linux_sigprocmask", "signature": "static long sys_linux_sigprocmask(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 1030, "name": "sys_linux_ioctl", "signature": "static long sys_linux_ioctl(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 1035, "name": "sys_linux_access", "signature": "static long sys_linux_access(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 1057, "name": "sys_linux_socket", "signature": "static long sys_linux_socket(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 1062, "name": "sys_linux_connect", "signature": "static long sys_linux_connect(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 1068, "name": "sys_linux_sendto", "signature": "static long sys_linux_sendto(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 1073, "name": "sys_linux_recvfrom", "signature": "static long sys_linux_recvfrom(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 1078, "name": "sys_linux_shutdown", "signature": "static long sys_linux_shutdown(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 1083, "name": "sys_linux_poll", "signature": "static long sys_linux_poll(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 1090, "name": "sys_linux_flock", "signature": "static long sys_linux_flock(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"doc": "fsync/fdatasync: the ramdisk is memory (always durable) and MiniFS persists through kfclose/minifs_sync, so there is nothing to flush that close would not already flush. Success is truthful here, not a * lie: no write-back cache sits between the caller and the medium.", "kind": "function", "line": 1099, "name": "sys_linux_fsync", "signature": "static long sys_linux_fsync(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 1104, "name": "sys_linux_fdatasync", "signature": "static long sys_linux_fdatasync(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 1109, "name": "sys_linux_getcwd", "signature": "static long sys_linux_getcwd(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 1121, "name": "sys_linux_unlink", "signature": "static long sys_linux_unlink(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 1140, "name": "sys_linux_readlink", "signature": "static long sys_linux_readlink(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 1145, "name": "sys_linux_fstat", "signature": "static long sys_linux_fstat(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 1168, "name": "sys_linux_gettimeofday", "signature": "static long sys_linux_gettimeofday(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 1191, "name": "sys_linux_arch_prctl", "signature": "static long sys_linux_arch_prctl(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 1203, "name": "sys_linux_uname", "signature": "static long sys_linux_uname(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 1270, "name": "trace_is_noisy", "signature": "static int trace_is_noisy(long n)"}, {"doc": "define SC_EXTRA_COUNT (sizeof(sc_extra_names) / sizeof(sc_extra_names[0]))", "kind": "function", "line": 1298, "name": "syscall_name", "signature": "const char *syscall_name(long n)"}, {"kind": "function", "line": 1339, "name": "trace_hint_print", "signature": "static void trace_hint_print(long n, int kind, const char *path,\n lon..."}, {"kind": "function", "line": 1352, "name": "ksyscall", "signature": "long ksyscall(long n, long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 1390, "name": "user_range_ok", "signature": "int user_range_ok(unsigned long p, unsigned long len)"}, {"kind": "function", "line": 1407, "name": "products", "signature": "* products (writev cnt*sizeof, poll a2*8, spawn (argc+1)*sizeof) are\n * pre-bounded against (END-..."}, {"kind": "function", "line": 1420, "name": "ksyscall_dispatch", "signature": "static long ksyscall_dispatch(long n, long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 1626, "name": "k_syscall_spawn", "signature": "static int k_syscall_spawn(const char *path, const char *redirect,\n i..."}, {"kind": "function", "line": 89, "name": "by", "signature": "* is indexed by (syscall_number - 200). New syscalls are added by: * 1. Adding a MINIOS_SYS_* constant to progs/minios_abi.h * 2. Implementing a static long sys_*(long a1, ..., long a6) function here "}, {"kind": "function", "line": 1403, "name": "Discipline", "signature": "* * Discipline (audit 2026-09, kept as comment, not a deprecation: both * primitives are legitimate): user_range_ok is ONLY for exact-size * buffers (sizeof(int), 144-byte stat, fixed PCM length);"}, {"kind": "function", "line": 1617, "name": "proc_spawn_elf", "signature": "* proc_spawn_elf (the same path mrun uses) and the caller blocks in * do_waitpid, so the parent address space is left intact. */ #include \"spawn.h\" static int k_syscall_spawn(const char *path, const c"}, {"kind": "variable", "line": 247, "name": "gfx_zoom_2x", "signature": "extern int gfx_zoom_2x;"}, {"kind": "variable", "line": 392, "name": "gfx_win_title", "signature": "extern const char *gfx_win_title;"}, {"kind": "macro", "line": 45, "name": "KFD_MAX", "signature": "#define KFD_MAX"}, {"kind": "macro", "line": 107, "name": "MINIOS_SYSCALL_BASE", "signature": "#define MINIOS_SYSCALL_BASE"}, {"kind": "macro", "line": 108, "name": "MINIOS_SYSCALL_COUNT", "signature": "#define MINIOS_SYSCALL_COUNT"}, {"kind": "macro", "line": 715, "name": "SYSCALL_TRACE", "signature": "#define SYSCALL_TRACE"}, {"kind": "macro", "line": 735, "name": "SYS_NOISY_TIME", "signature": "#define SYS_NOISY_TIME"}, {"kind": "macro", "line": 736, "name": "SYS_NOISY_KBD", "signature": "#define SYS_NOISY_KBD"}, {"kind": "macro", "line": 737, "name": "SYS_NOISY_MOUSE", "signature": "#define SYS_NOISY_MOUSE"}, {"kind": "macro", "line": 738, "name": "SYS_NOISY_GETC_RAW", "signature": "#define SYS_NOISY_GETC_RAW"}, {"kind": "macro", "line": 1224, "name": "LINUX_SYSCALL_COUNT", "signature": "#define LINUX_SYSCALL_COUNT"}, {"kind": "macro", "line": 1297, "name": "SC_EXTRA_COUNT", "signature": "#define SC_EXTRA_COUNT"}, {"kind": "macro", "line": 1319, "name": "TRACE_HINT_NONE", "signature": "#define TRACE_HINT_NONE"}, {"kind": "macro", "line": 1320, "name": "TRACE_HINT_PATH", "signature": "#define TRACE_HINT_PATH"}]}, {"doc": "syscalls_proc.c - Process-management syscall handlers.", "id": "kernel/syscalls_proc.c", "kind": "module", "label": "syscalls_proc.c", "language": "c", "sha256": "d1d228c2f84eeef5", "symbol_count": 14, "symbols": [{"kind": "function", "line": 15, "name": "sys_minios_clone", "signature": "long sys_minios_clone(long flags, long newsp, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 21, "name": "sys_minios_thread_spawn", "signature": "long sys_minios_thread_spawn(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"doc": "Seccomp-basic (238): a1 = op (1 deny-one, 2 allow-one, 3 deny-all), a2 = syscall number (ops 1-2). Applies to current_pid only; the * 200..231 window is filterable, Linux numbers never are.", "kind": "function", "line": 34, "name": "sys_minios_seccomp", "signature": "long sys_minios_seccomp(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"doc": "if (a1 == SECCOMP_OP_DENY_ONE) return seccomp_deny_one(pid, (int)a2); if (a1 == SECCOMP_OP_ALLOW_ONE) return seccomp_allow_one(pid, (int)a2); if (a1 == SECCOMP_OP_DENY_ALL) { int n; if (pid < 0 || pid >= MAX_PROCS) return -1; if (procs[pid].state == PROC_FREE) return -1; for (n = SECCOMP_MIN; n <= SECCOMP_MAX; n++) procs[pid].seccomp_deny |= SECCOMP_BIT(n); procs[pid].seccomp_deny &= ~SECCOMP_BIT(MINIOS_SYS_TIME); return 0; } return -22; } /* Nice (239): a1 = new nice when a2 != 0, else query. Clamped NICE_MIN..NICE_MAX.", "kind": "function", "line": 51, "name": "sys_minios_nice", "signature": "long sys_minios_nice(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 64, "name": "sys_linux_yield", "signature": "long sys_linux_yield(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 69, "name": "sys_linux_getpid", "signature": "long sys_linux_getpid(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 74, "name": "sys_linux_fork", "signature": "long sys_linux_fork(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 79, "name": "sys_linux_vfork", "signature": "long sys_linux_vfork(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 84, "name": "sys_linux_execve", "signature": "long sys_linux_execve(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 106, "name": "sys_linux_exit", "signature": "long sys_linux_exit(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 114, "name": "code", "signature": "* exit code (no WEXITSTATUS encoding: MiniOS reports codes directly). */\nlong sys_linux_wait4(lon..."}, {"kind": "function", "line": 133, "name": "sys_linux_kill", "signature": "long sys_linux_kill(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 138, "name": "sys_linux_gettid", "signature": "long sys_linux_gettid(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 5, "name": "state", "signature": "* touches only scheduler state (current_pid, procs[], do_* / * seccomp_* / yield) plus the kernel-wide user_range_ok validator, so * this TU includes only kernel.h and sched.h. The dispatch tables in "}]}, {"doc": "Docstring: Tick listener bus implementation.", "id": "kernel/tick.c", "kind": "module", "label": "tick.c", "language": "c", "sha256": "2427efe9dea833d0", "symbol_count": 9, "symbols": [{"doc": "Docstring: Tick listener bus implementation. Owns two fixed listener tables behind the tick.h contract. Tables are static storage, cleared by tick_reset, appended by the register calls and read by the run calls. No allocation, no locks, no user pointers. Registration is boot-time only; dispatch is ISR-safe because it only reads entries written before sti. #include \"tick.h\" #include /** Docstring: Single registered listener slot.", "kind": "struct", "line": 15, "name": "tick_slot_t"}, {"doc": "tick_fn_t fn; void *ctx; } tick_slot_t; /** Docstring: Audio listener table. static tick_slot_t tick_audio_slots[TICK_MAX_AUDIO_LISTENERS]; /** Docstring: Desktop listener table. static tick_slot_t tick_desktop_slots[TICK_MAX_DESKTOP_LISTENERS]; /** Docstring: Active audio listener count. static int tick_audio_used; /** Docstring: Active desktop listener count. static int tick_desktop_used; /** Docstring: Reset both listener lists to empty.", "kind": "function", "line": 30, "name": "tick_reset", "signature": "void tick_reset(void)"}, {"doc": "Docstring: Register an unconditional BSP audio effect. Returns 0 on success, -1 when the handler is null or the audio table is full. A refusal changes nothing.", "kind": "function", "line": 49, "name": "tick_register_audio", "signature": "int tick_register_audio(tick_fn_t fn, void *ctx)"}, {"doc": "Docstring: Register a gated desktop effect. Returns 0 on success, -1 when the handler is null or the desktop table is full. A refusal changes nothing.", "kind": "function", "line": 67, "name": "tick_register_desktop", "signature": "int tick_register_desktop(tick_fn_t fn, void *ctx)"}, {"doc": "int tick_register_desktop(tick_fn_t fn, void *ctx) { if (fn == NULL) { return -1; } if (tick_desktop_used < 0 || tick_desktop_used >= TICK_MAX_DESKTOP_LISTENERS) { return -1; } tick_desktop_slots[tick_desktop_used].fn = fn; tick_desktop_slots[tick_desktop_used].ctx = ctx; tick_desktop_used++; return 0; } /** Docstring: Run audio listeners in registration order.", "kind": "function", "line": 81, "name": "tick_run_audio", "signature": "void tick_run_audio(void)"}, {"doc": "return 0; } /** Docstring: Run audio listeners in registration order. void tick_run_audio(void) { int i; for (i = 0; i < tick_audio_used; i++) { if (tick_audio_slots[i].fn != NULL) { tick_audio_slots[i].fn(tick_audio_slots[i].ctx); } } } /** Docstring: Run desktop listeners in registration order.", "kind": "function", "line": 91, "name": "tick_run_desktop", "signature": "void tick_run_desktop(void)"}, {"doc": "} } /** Docstring: Run desktop listeners in registration order. void tick_run_desktop(void) { int i; for (i = 0; i < tick_desktop_used; i++) { if (tick_desktop_slots[i].fn != NULL) { tick_desktop_slots[i].fn(tick_desktop_slots[i].ctx); } } } /** Docstring: Count registered audio listeners.", "kind": "function", "line": 101, "name": "tick_audio_count", "signature": "int tick_audio_count(void)"}, {"doc": "} /** Docstring: Count registered audio listeners. int tick_audio_count(void) { if (tick_audio_used < 0) { return 0; } if (tick_audio_used > TICK_MAX_AUDIO_LISTENERS) { return TICK_MAX_AUDIO_LISTENERS; } return tick_audio_used; } /** Docstring: Count registered desktop listeners.", "kind": "function", "line": 112, "name": "tick_desktop_count", "signature": "int tick_desktop_count(void)"}, {"doc": "Docstring: Pure desktop gating predicate. Returns nonzero when the given tick count falls on a desktop tick for the given interval. A non-positive interval never fires. Holds for every tick value including zero.", "kind": "function", "line": 128, "name": "tick_desktop_due", "signature": "int tick_desktop_due(unsigned long long ticks, unsigned interval)"}]}, {"doc": "================================================================", "id": "kernel/time.c", "kind": "module", "label": "time.c", "language": "c", "sha256": "239b97bd61db0646", "symbol_count": 4, "symbols": [{"kind": "function", "line": 13, "name": "ktime_rdtsc", "signature": "static unsigned long ktime_rdtsc(void)"}, {"kind": "function", "line": 19, "name": "ktime_init", "signature": "static void ktime_init(void)"}, {"kind": "function", "line": 33, "name": "ktime_ms", "signature": "unsigned long ktime_ms(void)"}, {"doc": "Microsecond resolution over the same calibrated ratio (Phase 0.2/0.3: clock_gettime nsec and gettimeofday usec both derive from here, so the * two clocks share one source and never disagree about ordering).", "kind": "function", "line": 41, "name": "ktime_us", "signature": "unsigned long ktime_us(void)"}]}, {"doc": "Docstring: Hardware pointer sprite layer (kernel/vga_cursor.c).", "id": "kernel/vga_cursor.c", "kind": "module", "label": "vga_cursor.c", "language": "c", "sha256": "06c92faa7870cf95", "symbol_count": 13, "symbols": [{"doc": "The cursor is drawn with its top-left corner at (mx, my), so the sprite spans down-right of the pointer. The caller clamps mx/my so the position stays inside the framebuffer; pixels outside the screen are clipped by the packed helpers, and the snapshot holds packed RGB so a restore is exact in * any color depth.", "kind": "function", "line": 40, "name": "cursor_save_bg", "signature": "static void cursor_save_bg(int mx, int my)"}, {"doc": "spans down-right of the pointer. The caller clamps mx/my so the position stays inside the framebuffer; pixels outside the screen are clipped by the packed helpers, and the snapshot holds packed RGB so a restore is exact in * any color depth. static void cursor_save_bg(int mx, int my) { int i, j; int x0 = mx - CURSOR_TIP_X; int y0 = my - CURSOR_TIP_Y; for (j = 0; j < 8; j++) for (i = 0; i < 8; i++) cursor_save[j][i] = fb_read_packed(x0 + i, y0 + j); } /** Docstring: True when the arrow bitmap sets pixel i,j.", "kind": "function", "line": 50, "name": "cursor_is_set", "signature": "static int cursor_is_set(int i, int j)"}, {"doc": "int y0 = my - CURSOR_TIP_Y; for (j = 0; j < 8; j++) for (i = 0; i < 8; i++) cursor_save[j][i] = fb_read_packed(x0 + i, y0 + j); } /** Docstring: True when the arrow bitmap sets pixel i,j. static int cursor_is_set(int i, int j) { if (i < 0 || i >= 8 || j < 0 || j >= 8) return 0; return (cursor_bmp[j] & (0x80 >> i)) ? 1 : 0; } /** Docstring: True when an 8-neighbour of i,j belongs to the arrow.", "kind": "function", "line": 57, "name": "cursor_has_set_neighbour", "signature": "static int cursor_has_set_neighbour(int i, int j)"}, {"kind": "function", "line": 68, "name": "cursor_draw", "signature": "static void cursor_draw(int mx, int my)"}, {"kind": "function", "line": 81, "name": "cursor_restore", "signature": "static void cursor_restore(int mx, int my)"}, {"doc": "Docstring: True when the cursor sprite overlaps the given screen rectangle. Used to decide whether a partial repaint overwrote the cursor, in which case its saved background must be refreshed; otherwise the cursor keeps its saved background and moves without leaving a trail. The sprite is CURSOR_W x CURSOR_H with its top-left corner at * (mx, my).", "kind": "function", "line": 96, "name": "cursor_over", "signature": "int cursor_over(int x0, int y0, int w, int h)"}, {"doc": "Docstring: Paint the pointer at mx/my unconditionally: save the * background, draw the sprite, record the position.", "kind": "function", "line": 106, "name": "cursor_place", "signature": "void cursor_place(int mx, int my)"}, {"doc": "Docstring: Desktop-tick pointer update: repaint only when the position * moved since the last paint, otherwise keep the saved background.", "kind": "function", "line": 116, "name": "cursor_move", "signature": "void cursor_move(int mx, int my)"}, {"doc": "Docstring: Restore the saved background when the pointer is up, then mark it hidden. A repaint that covered the sprite calls * cursor_invalidate instead: the background is gone, nothing to restore.", "kind": "function", "line": 133, "name": "cursor_erase", "signature": "void cursor_erase(void)"}, {"doc": "Docstring: Mark the pointer hidden without touching the framebuffer. * Used after any repaint that may have covered the sprite.", "kind": "function", "line": 141, "name": "cursor_invalidate", "signature": "void cursor_invalidate(void)"}, {"doc": "Docstring: Invalidate the pointer when it overlaps a repainted screen * rectangle, so the next move re-saves a fresh background.", "kind": "function", "line": 147, "name": "cursor_note_repaint", "signature": "void cursor_note_repaint(int x0, int y0, int w, int h)"}, {"kind": "macro", "line": 28, "name": "CURSOR_TIP_X", "signature": "#define CURSOR_TIP_X"}, {"kind": "macro", "line": 29, "name": "CURSOR_TIP_Y", "signature": "#define CURSOR_TIP_Y"}]}, {"id": "kernel/vga_fb.c", "kind": "module", "label": "vga_fb.c", "language": "c", "sha256": "7a7c9cae72c48c28", "symbol_count": 150, "symbols": [{"kind": "struct", "line": 617, "name": "termwin_t"}, {"doc": "/** Docstring: Focus ids share one space across terminals and graphics. _Static_assert(WM_FOCUS_GFX == WM_WINDOW_GFX_ID, \"gfx focus id drifted from unified window contract\"); /** Docstring: File-scope drag state shared by the tick and focus paths. static int wm_dragging; static int wm_grab_cx; static int wm_skip_drag; static int wm_gdrag; static int wm_ggx; static int wm_ggy; /** Docstring: Geometry config derived once from the font layout.", "kind": "function", "line": 47, "name": "wm_geom_cfg", "signature": "static wm_geom_config_t wm_geom_cfg(void)"}, {"doc": "static int wm_ggy; /** Docstring: Geometry config derived once from the font layout. static wm_geom_config_t wm_geom_cfg(void) { wm_geom_config_t cfg; cfg.font_w = FONT_W; cfg.font_h = FONT_H; cfg.scrollbar_w = SCROLLBAR_W; cfg.title_h = FONT_H; return cfg; } /** Docstring: Event config for the PS/2 mouse button mask.", "kind": "function", "line": 58, "name": "wm_event_cfg", "signature": "static wm_event_config_t wm_event_cfg(void)"}, {"doc": "cfg.title_h = FONT_H; return cfg; } /** Docstring: Event config for the PS/2 mouse button mask. static wm_event_config_t wm_event_cfg(void) { wm_event_config_t cfg; cfg.left_mask = 1; cfg.wheel_step = 3; return cfg; } /** Docstring: Reset terminal and graphics drag grabs on focus change.", "kind": "function", "line": 67, "name": "wm_drag_reset", "signature": "static void wm_drag_reset(void)"}, {"kind": "function", "line": 88, "name": "vga_fb_boot_config", "signature": "void vga_fb_boot_config(void)"}, {"kind": "function", "line": 115, "name": "fb_bytes_per_pixel", "signature": "int fb_bytes_per_pixel(void)"}, {"doc": "There is deliberately no \"scroll the screen up\" operation. A completed logical line is pushed to the ring exactly once, when it ends with '\\n'; that eliminates the duplicated/partial scrollback entries the old two-buffer * scheme produced, which were the source of the pixel artifacts. static char lg[SB_MAX_LINES][SB_LINE_MAX]; /* completed logical lines static int lg_head, lg_tail, lg_count; static char act[SB_LINE_MAX]; /* in-progress line static int act_len; static int disp_off; /* scrollback rows above the bottom static int term_cursor_col = -1; /* text cursor column (-1 = hidden) static int csi_state; /* ANSI CSI drop: 1 after ESC, 2 in params /* Ring accessor: logical line at age i (0 = oldest, count-1 = newest).", "kind": "function", "line": 173, "name": "lg_get", "signature": "static const char *lg_get(int i)"}, {"doc": "Append a completed logical line to the ring. The line is stored whole (no * width-dependent wrap), so it can be re-wrapped on any future resize.", "kind": "function", "line": 179, "name": "lg_push", "signature": "static void lg_push(const char *line, int len)"}, {"doc": "Append a completed logical line to the ring. The line is stored whole (no * width-dependent wrap), so it can be re-wrapped on any future resize. static void lg_push(const char *line, int len) { int k, idx; if (len >= SB_LINE_MAX) len = SB_LINE_MAX - 1; idx = lg_tail; for (k = 0; k < len; k++) lg[idx][k] = line[k]; lg[idx][len] = '\\0'; lg_tail = (lg_tail + 1) % SB_MAX_LINES; if (lg_count < SB_MAX_LINES) lg_count++; else lg_head = (lg_head + 1) % SB_MAX_LINES; } /* Display rows a logical line of `len` characters occupies at term_cols.", "kind": "function", "line": 191, "name": "line_nrows", "signature": "static int line_nrows(int len)"}, {"kind": "function", "line": 198, "name": "act_nrows", "signature": "static int act_nrows(void)"}, {"doc": "else lg_head = (lg_head + 1) % SB_MAX_LINES; } /* Display rows a logical line of `len` characters occupies at term_cols. static int line_nrows(int len) { int w = term_cols > 0 ? term_cols : 1; int n = len / w + (len % w ? 1 : 0); if (n < 1) n = 1; /* an empty line still shows as one row return n; } static int act_nrows(void) { return line_nrows(act_len); } /* Total display rows of the whole history (completed lines + active line).", "kind": "function", "line": 201, "name": "total_rows", "signature": "static int total_rows(void)"}, {"doc": "return n; } static int act_nrows(void) { return line_nrows(act_len); } /* Total display rows of the whole history (completed lines + active line). static int total_rows(void) { int t = 0, i; for (i = 0; i < lg_count; i++) t += line_nrows((int)kstrlen(lg_get(i))); return t + act_nrows(); } /* Clamp disp_off to a legal scroll range.", "kind": "function", "line": 209, "name": "disp_clamp", "signature": "static void disp_clamp(void)"}, {"doc": "Locate the logical line contributing the display row `abs`, and set *off to the character offset where that display row starts. Returns the line text, * or 0 when abs is beyond the history.", "kind": "function", "line": 227, "name": "line_at", "signature": "static const char *line_at(int abs, int *off)"}, {"kind": "function", "line": 286, "name": "gfx_keep_save", "signature": "static void gfx_keep_save(int x, int y, int w, int h)"}, {"kind": "function", "line": 317, "name": "gfx_keep_restore", "signature": "static void gfx_keep_restore(void)"}, {"kind": "function", "line": 355, "name": "vga_fb_set_gfx_program", "signature": "void vga_fb_set_gfx_program(const char *name)"}, {"doc": "Basename of a shortcut command's program: first token after an optional `run`, then past the last '/'. \"run quake2generic.elf +set basedir .\" -> * \"quake2generic.elf\"; \"nuklear\" -> \"nuklear\".", "kind": "function", "line": 374, "name": "shcmd_base", "signature": "static void shcmd_base(const char *cmd, char *out, unsigned long cap)"}, {"kind": "function", "line": 391, "name": "ci_eq", "signature": "static int ci_eq(const char *a, const char *b)"}, {"doc": "Icon of the running program via the shortcuts config: whoever composited * last, resolved through its launch command. Zero hardcoded names.", "kind": "function", "line": 404, "name": "gfx_prog_icon", "signature": "static const uint8_t *gfx_prog_icon(void)"}, {"kind": "function", "line": 417, "name": "vga_fb_set_gfx_mode", "signature": "void vga_fb_set_gfx_mode(int on)"}, {"doc": "Centered origin of a w×h graphics window, plus the WM offset, clamped on screen. Every blit positions through here, so move/snap/tile/drag * govern graphics windows exactly like terminals.", "kind": "function", "line": 438, "name": "gfx_place", "signature": "static void gfx_place(int w, int h, int *ox, int *oy)"}, {"doc": "Restore the last composite's pointer before the new frame covers it. Only meaningful in graphics mode; the desktop path (vga_fb_mouse_tick) manages * its own cursor with the same functions.", "kind": "function", "line": 454, "name": "vga_fb_gfx_cursor_erase", "signature": "static void vga_fb_gfx_cursor_erase(void)"}, {"doc": "Clamp the mouse into the framebuffer (the idle loop that normally clamps * never runs in graphics mode) and draw the pointer at the current position.", "kind": "function", "line": 461, "name": "vga_fb_gfx_cursor_draw", "signature": "static void vga_fb_gfx_cursor_draw(void)"}, {"doc": "char eline[WM_ELINE_SZ]; int epos, has_line; int prompted; } termwin_t; static termwin_t twins[WM_MAX_TERMS]; static int wm_nterms = 1; static int wm_focus; static int wm_term; static int wm_inited; /** Docstring: Single focus event bus owned by the desktop. static wm_notify_bus_t wm_bus; static int wm_bus_ready; /** Docstring: Focus listener clearing a possibly stale cursor sprite.", "kind": "function", "line": 640, "name": "wm_focus_cursor_sync", "signature": "static void wm_focus_cursor_sync(const wm_notify_event_t *e)"}, {"doc": "static int wm_term; static int wm_inited; /** Docstring: Single focus event bus owned by the desktop. static wm_notify_bus_t wm_bus; static int wm_bus_ready; /** Docstring: Focus listener clearing a possibly stale cursor sprite. static void wm_focus_cursor_sync(const wm_notify_event_t *e) { (void)e; cursor_invalidate(); } /** Docstring: Emit one focus event when the id actually moved.", "kind": "function", "line": 647, "name": "wm_emit_focus_moved", "signature": "static void wm_emit_focus_moved(int before, int source)"}, {"doc": "/** Docstring: Emit one focus event when the id actually moved. static void wm_emit_focus_moved(int before, int source) { wm_notify_event_t e; if (before == wm_focus) return; e.type = WM_NOTIFY_FOCUS; e.old_focus = before; e.new_focus = wm_focus; e.source = source; wm_notify_emit(&wm_bus, &e); } /** Docstring: Last focus event for serial-observable state.", "kind": "function", "line": 659, "name": "vga_fb_focus_event", "signature": "const wm_notify_event_t *vga_fb_focus_event(void)"}, {"doc": "e.type = WM_NOTIFY_FOCUS; e.old_focus = before; e.new_focus = wm_focus; e.source = source; wm_notify_emit(&wm_bus, &e); } /** Docstring: Last focus event for serial-observable state. const wm_notify_event_t *vga_fb_focus_event(void) { return wm_notify_last(&wm_bus); } /** Docstring: Record a programmatic focus move from another unit.", "kind": "function", "line": 665, "name": "vga_fb_focus_report", "signature": "void vga_fb_focus_report(int before, int source)"}, {"kind": "function", "line": 674, "name": "tw_park", "signature": "static void tw_park(int i)"}, {"kind": "function", "line": 704, "name": "tw_unpark", "signature": "static void tw_unpark(int i)"}, {"kind": "function", "line": 736, "name": "wm_init_once", "signature": "static void wm_init_once(void)"}, {"doc": "twins[k].has_line = 0; twins[k].eline[0] = '\\0'; twins[k].epos = 0; twins[k].prompted = 0; } twins[0].lg = lg; if (!wm_bus_ready) { wm_bus_ready = 1; wm_notify_reset(&wm_bus); wm_notify_subscribe(&wm_bus, wm_focus_cursor_sync); } } /** Docstring: Select window i and drop any in-flight drag grab.", "kind": "function", "line": 761, "name": "tw_select", "signature": "static void tw_select(int i)"}, {"kind": "function", "line": 773, "name": "vga_fb_focus_get", "signature": "int vga_fb_focus_get(void)"}, {"kind": "function", "line": 774, "name": "vga_fb_nterms_get", "signature": "int vga_fb_nterms_get(void)"}, {"doc": "if (!twins[i].present) return; if (shell_readline_active()) shell_focus_park(); tw_park(wm_term); wm_focus = i; wm_term = i; tw_unpark(i); wm_drag_reset(); if (shell_readline_active()) shell_focus_restore(); } int vga_fb_focus_get(void) { return wm_focus; } int vga_fb_nterms_get(void) { return wm_nterms; } /** Docstring: Single snapshot of every window for focus decisions.", "kind": "function", "line": 777, "name": "wm_snapshot_state", "signature": "static void wm_snapshot_state(wm_focus_state_t *st)"}, {"doc": "/** Docstring: Single snapshot of every window for focus decisions. static void wm_snapshot_state(wm_focus_state_t *st) { int i; wm_init_once(); st->focus = wm_focus; st->nterms = wm_nterms; st->gfx_active = vga_fb_gfx_mode ? 1 : 0; for (i = 0; i < 4; i++) st->present[i] = 0; for (i = 0; i < wm_nterms && i < 4; i++) st->present[i] = twins[i].present ? 1 : 0; } /** Docstring: Cycle focus across terminals plus graphics when active.", "kind": "function", "line": 790, "name": "vga_fb_focus_next", "signature": "void vga_fb_focus_next(void)"}, {"doc": "Docstring: Route WM focus with the graphics mode switch. A program that enables the display owns the keyboard: without this, a gfx child spawned from another gfx app (file -> vedit) keeps the terminal focused, so its keys and wheel keep landing on the shell while the app looks hung. The enable arm mirrors the focus-gfx path (park shell line, flush stale raw bytes); the disable arm hands the * terminal back silently, never with the Alt-Tab nag.", "kind": "function", "line": 827, "name": "wm_gfx_focus_sync", "signature": "static void wm_gfx_focus_sync(int on)"}, {"doc": "tw_park(wm_term); wm_focus = WM_FOCUS_GFX; kbd_raw_flush(); wm_emit_focus_moved(before, WM_FOCUS_SRC_MODE); } } else { if (wm_focus == WM_FOCUS_GFX) { tw_select(wm_term); wm_emit_focus_moved(before, WM_FOCUS_SRC_MODE); } } } /** Docstring: Focus window id directly, fail closed on invalid id.", "kind": "function", "line": 846, "name": "vga_fb_focus_id", "signature": "int vga_fb_focus_id(int id)"}, {"kind": "function", "line": 871, "name": "content", "signature": "* windows would share content (same prompt/output on both) and a park\n * would alias src == dst. ..."}, {"doc": "if (twins[1].lg && twins[1].lg != lg) kfree(twins[1].lg); twins[1].lg = 0; twins[1].present = 0; twins[1].has_line = 0; twins[1].eline[0] = '\\0'; twins[1].epos = 0; twins[1].prompted = 0; wm_nterms = 1; vga_fb_reset_default(); return 1; } /** Docstring: Tile terminals through the tiling contract, graphics right. /** Docstring: Set active layout mode, fail closed on bad mode.", "kind": "function", "line": 946, "name": "vga_fb_layout_set", "signature": "int vga_fb_layout_set(int mode)"}, {"doc": "/** Docstring: Tile terminals through the tiling contract, graphics right. /** Docstring: Set active layout mode, fail closed on bad mode. int vga_fb_layout_set(int mode) { if (!wm_layout_mode_valid(mode)) { return -1; } wm_layout_mode = mode; wm_last_n = -1; return 0; } /** Docstring: Cycle layout mode tile bsp cascade fibonacci.", "kind": "function", "line": 957, "name": "vga_fb_layout_cycle", "signature": "void vga_fb_layout_cycle(void)"}, {"doc": "if (wm_layout_mode == WM_LAYOUT_TILE) { wm_layout_mode = WM_LAYOUT_BSP; } else if (wm_layout_mode == WM_LAYOUT_BSP) { wm_layout_mode = WM_LAYOUT_CASCADE; } else if (wm_layout_mode == WM_LAYOUT_CASCADE) { wm_layout_mode = WM_LAYOUT_FIBONACCI; } else { wm_layout_mode = WM_LAYOUT_TILE; } wm_last_n = -1; vga_fb_tile_all(); } /** Docstring: Active layout mode id.", "kind": "function", "line": 973, "name": "vga_fb_layout_get", "signature": "int vga_fb_layout_get(void)"}, {"doc": "} else { wm_layout_mode = WM_LAYOUT_TILE; } wm_last_n = -1; vga_fb_tile_all(); } /** Docstring: Active layout mode id. int vga_fb_layout_get(void) { return wm_layout_mode; } /** Docstring: Active layout mode name, never null.", "kind": "function", "line": 979, "name": "vga_fb_layout_name", "signature": "const char *vga_fb_layout_name(void)"}, {"kind": "function", "line": 985, "name": "vga_fb_tile_all", "signature": "void vga_fb_tile_all(void)"}, {"doc": "twins[i].sz_cols = cells[i].cols; twins[i].sz_rows = cells[i].rows; twins[i].x = cells[i].x; twins[i].y = cells[i].y; wm_last_cells[i] = cells[i]; } wm_last_n = n; if (vga_fb_gfx_mode) gfx_tile_right(); } tw_unpark(cur); term_finish_layout(); } /** Docstring: Park the graphics window right, side-tiled when it fits.", "kind": "function", "line": 1040, "name": "gfx_tile_right", "signature": "static void gfx_tile_right(void)"}, {"doc": "Serial-observable window list for `wm list` (BDD surface). Parked state is read from the slots, never by disturbing the live globals: the focused window's live values sit in the globals, the rest in twins. A parked slot's derived cols/rows lag resizes (tile/snap write x/y/sz only), so they are derived from the authoritative size here; the live * window reports its globals.", "kind": "function", "line": 1059, "name": "vga_fb_list_windows", "signature": "void vga_fb_list_windows(void)"}, {"doc": "int gx, gy; gfx_target(&gx, &gy); ksprintf(b, \"win gfx %c %s x=%d y=%d w=%d h=%d\\n\", (wm_focus == WM_FOCUS_GFX) ? '*' : ' ', gfx_win_title, gx, gy, gfx_win_w, gfx_win_h); serial_puts(b); taskbar_layout(); ksprintf(b, \"win gfxbtn x=%d w=%d %s\\n\", tb_gfx_x, tb_gfx_w, gfx_task_icon() ? \"icon\" : \"text\"); serial_puts(b); } } /* 1 when the focused window's active line is empty (fresh prompt spot).", "kind": "function", "line": 1102, "name": "vga_fb_act_empty", "signature": "int vga_fb_act_empty(void)"}, {"doc": "The shell loop calls note after printing a prompt (it is live in the * focused window) and clear once the line is submitted for execution.", "kind": "function", "line": 1106, "name": "vga_fb_note_prompt", "signature": "void vga_fb_note_prompt(void)"}, {"kind": "function", "line": 1111, "name": "vga_fb_clear_prompt", "signature": "void vga_fb_clear_prompt(void)"}, {"kind": "function", "line": 1116, "name": "vga_fb_prompted", "signature": "int vga_fb_prompted(void)"}, {"doc": "1 when the active line is empty or holds exactly a fresh prompt, so printing another one would stack duplicate `miniOS> ` lines on every * refocus. Compares the whole line, not a prefix.", "kind": "function", "line": 1125, "name": "vga_fb_prompt_live", "signature": "int vga_fb_prompt_live(void)"}, {"doc": "1 when the active line is empty or holds exactly a fresh prompt, so printing another one would stack duplicate `miniOS> ` lines on every * refocus. Compares the whole line, not a prefix. int vga_fb_prompt_live(void) { if (act_len == 0) return 1; if (kstrcmp(act, \"miniOS> \") == 0) return 1; return 0; } /* Park the shell's half-typed line into the focused window slot.", "kind": "function", "line": 1132, "name": "vga_fb_park_line", "signature": "void vga_fb_park_line(const char *b, int p)"}, {"doc": "A fresh prompt parks empty: record no line, so `wm list` does not * claim a half-typed command that never existed. t->has_line = (b[0] != '\\0' || p > 0) ? 1 : 0; } /* Restore the focused window's parked line. Returns 1 when one existed.", "kind": "function", "line": 1147, "name": "vga_fb_unpark_line", "signature": "int vga_fb_unpark_line(char *b, int *p)"}, {"doc": "termwin_t *t; int k; wm_init_once(); if (wm_focus < 0 || wm_focus >= WM_MAX_TERMS) return 0; t = &twins[wm_focus]; if (!t->has_line) return 0; for (k = 0; k < WM_ELINE_SZ - 1 && t->eline[k]; k++) b[k] = t->eline[k]; b[k] = '\\0'; p = t->epos; return 1; } /* Hit-test: is (mx,my) inside terminal i's rectangle (title + content)? /** Docstring: True when point hits terminal window i including decorations.", "kind": "function", "line": 1162, "name": "tw_hit", "signature": "static int tw_hit(int i, int mx, int my)"}, {"doc": "wm_window_t w; if (i < 0 || i >= WM_MAX_TERMS) return 0; w.kind = WM_WIN_TERMINAL; w.id = i; w.x = t->px_x; w.y = t->px_y; w.w = t->px_w + SCROLLBAR_W; w.h = t->px_h + FONT_H; w.present = t->present; w.minimized = t->minimized; return wm_window_contains(&w, mx, my); } /** Docstring: True when point hits the graphics window including content.", "kind": "function", "line": 1178, "name": "gfx_hit", "signature": "static int gfx_hit(int mx, int my)"}, {"kind": "function", "line": 1276, "name": "vga_fb_set_gfx_palette", "signature": "void vga_fb_set_gfx_palette(const unsigned char *pal)"}, {"doc": "--- True-color pixel layer ---- VBE true-color framebuffers store pixels natively as B,G,R(,X) bytes, so the DAC is bypassed entirely. Every index the desktop draws with resolves here: UI 0-14 through desk_pal, wallpaper 16-231 through the websafe cube, icons 240-255 through icon_pal. Indices with no owner (15, 232-239) are black. Graphics back-buffers never pass through this table; they expand * through gfx_pal at blit time.", "kind": "function", "line": 1291, "name": "fb_pack_idx", "signature": "static unsigned long fb_pack_idx(unsigned idx)"}, {"kind": "function", "line": 1307, "name": "fb_write_packed", "signature": "void fb_write_packed(int x, int y, unsigned long rgb)"}, {"kind": "function", "line": 1327, "name": "fb_read_packed", "signature": "unsigned long fb_read_packed(int x, int y)"}, {"kind": "function", "line": 1351, "name": "vga_fb_read_rgb", "signature": "unsigned long vga_fb_read_rgb(int x, int y)"}, {"doc": "8-bit: return the raw palette index, not its resolved RGB. The cursor save/restore round-trips through fb_write_packed, which in 8-bit writes the low byte straight back into the framebuffer; resolving to RGB here (and thus restoring only the blue channel as an index) is what smeared * the pointer into a trail. return p[x]; } unsigned long vga_fb_read_rgb(int x, int y) { return fb_read_packed(x, y); } /* Nearest cube level for one 0-255 channel (boundaries at 25/76/127/178/229).", "kind": "function", "line": 1354, "name": "wall_level", "signature": "static int wall_level(int v)"}, {"kind": "function", "line": 1363, "name": "vga_fb_set_palette", "signature": "static void vga_fb_set_palette(void)"}, {"doc": "Resolve one byte to its 8-row glyph: ASCII through font8x8, Spanish Latin-1 through the table above, anything else (including control codes) as a blank. Takes an unsigned value so Latin-1 bytes above 127 survive a * signed-char parameter.", "kind": "function", "line": 1416, "name": "fb_glyph", "signature": "static const uint8_t *fb_glyph(unsigned char c)"}, {"doc": "case 0xAC: return glyph_notsign; case 0xB4: return glyph_acute; case 0xB7: return glyph_middot; case 0xBA: return glyph_ord_masc; case 0xBF: return glyph_inv_quest; case 0xC7: return glyph_Ccedil; case 0xD1: return glyph_Ntilde; case 0xE7: return glyph_ccedil; case 0xF1: return glyph_ntilde; default: return font8x8[0]; } } /* ---- Drawing primitives ----", "kind": "function", "line": 1437, "name": "vga_fb_pixel", "signature": "void vga_fb_pixel(int x, int y, uint8_t color)"}, {"kind": "function", "line": 1446, "name": "vga_fb_rect", "signature": "void vga_fb_rect(int x, int y, int w, int h, uint8_t color)"}, {"kind": "function", "line": 1453, "name": "vga_fb_char", "signature": "void vga_fb_char(int col, int row, char c, uint8_t fg, uint8_t bg)"}, {"kind": "function", "line": 1467, "name": "vga_fb_str", "signature": "void vga_fb_str(int col, int row, const char *s, uint8_t fg, uint8_t bg)"}, {"doc": "Blit a text string at an absolute pixel position. Used for window chrome (title bar, taskbar) which lives outside the content-relative coordinate * space that vga_fb_char/str operate in.", "kind": "function", "line": 1478, "name": "text_px", "signature": "static void text_px(int px, int py, const char *s, uint8_t fg, uint8_t bg)"}, {"doc": "--- Window controls ---- Three glyph buttons at the right end of a window's title bar: minimize (_), maximize (square) and close (X). They are shared by the terminal window and the composited graphics windows (DOOM/Nuklear), so hit-testing must work on * any titled window. Each button is FONT_W x FONT_H, separated by WM_BTN_PAD. static int wm_buttons_x0(int win_x, int win_w) { return win_x + win_w - 3 * (WM_BTN_W + WM_BTN_PAD); } /* Draw the three window-control glyphs at (px,py), the title bar's top-left.", "kind": "function", "line": 1504, "name": "wm_draw_buttons", "signature": "static void wm_draw_buttons(int px, int py, int win_w, uint8_t fg, uint8_t bg)"}, {"doc": "} for (i = 1; i < WM_BTN_H - 1; i++) { vga_fb_pixel(bx + 1, by + i, fg); vga_fb_pixel(bx + WM_BTN_W - 2, by + i, fg); } bx += WM_BTN_W + WM_BTN_PAD; /* close: two crossing diagonals. for (i = 1; i < WM_BTN_W - 1; i++) { vga_fb_pixel(bx + i, by + i, fg); vga_fb_pixel(bx + WM_BTN_W - 1 - i, by + i, fg); } } /* Return which window-control button is under (mx,my), or 0 for none.", "kind": "function", "line": 1530, "name": "wm_buttons_hit", "signature": "static int wm_buttons_hit(int mx, int my, int win_x, int win_y, int win_w)"}, {"doc": "Close request bridge: the syscall dispatcher polls this so a graphics * program's next syscall exits it on the child's own stack.", "kind": "function", "line": 1545, "name": "wm_close_pending", "signature": "int wm_close_pending(void)"}, {"kind": "function", "line": 1546, "name": "wm_clear_close", "signature": "void wm_clear_close(void)"}, {"kind": "function", "line": 1547, "name": "wm_gfx_mode_active", "signature": "int wm_gfx_mode_active(void)"}, {"doc": "Close request bridge: the syscall dispatcher polls this so a graphics * program's next syscall exits it on the child's own stack. int wm_close_pending(void) { return wm_close_request; } void wm_clear_close(void) { wm_close_request = 0; } int wm_gfx_mode_active(void) { return vga_fb_gfx_mode; } /** Docstring: PS/2 owner check with pid range validation, focus routed.", "kind": "function", "line": 1550, "name": "vga_fb_ps2_owner", "signature": "int vga_fb_ps2_owner(int pid)"}, {"doc": "Hit-test and dispatch a click on a titled window's controls. The active window is the graphics window when one is composited, else the terminal. * Returns 1 when the click was consumed by a window control.", "kind": "function", "line": 1569, "name": "wm_button_click", "signature": "static int wm_button_click(int mx, int my)"}, {"kind": "function", "line": 1618, "name": "USER_LOAD_BASE", "signature": "* table: the kernel image must end below USER_LOAD_BASE (mm guard) and it\n * fits with ~1 KB to s..."}, {"doc": "Docstring: 2x nearest-neighbour zoom for the 320x200 game window, * set via SYS_GFX_ZOOM. One int of .bss; the NK buffer never zooms. int gfx_zoom_2x; /** Docstring: Composite one indexed back-buffer as a titled graphics window.", "kind": "function", "line": 1665, "name": "blit_gfx_buf", "signature": "static void blit_gfx_buf(const volatile uint8_t *bb, int bw, int bh)"}, {"kind": "function", "line": 1750, "name": "vga_fb_blit_gfx_window", "signature": "void vga_fb_blit_gfx_window(void)"}, {"kind": "function", "line": 1755, "name": "vga_fb_clear", "signature": "void vga_fb_clear(void)"}, {"doc": "Composite the Nuklear UI back-buffer onto the desktop as a titled window, mirroring the DOOM window: the back-buffer is a kernel-heap region mapped into the user window that the ring-3 app renders into, and the kernel blits it to the framebuffer on SYS_NK_FRAME. The window is centered and the shell * window stays visible around it.", "kind": "function", "line": 1770, "name": "vga_fb_blit_nk_window", "signature": "void vga_fb_blit_nk_window(void)"}, {"kind": "function", "line": 1782, "name": "term_recalc", "signature": "static void term_recalc(void)"}, {"doc": "Preserve the current window position, clamping it into range so a * drag or Ctrl+arrow move is not undone by the next layout pass. if (term_x < 0) term_x = 0; if (term_y < 0) term_y = 0; if (term_x > max_cols - term_cols) term_x = max_cols - term_cols; if (term_y > max_rows - term_rows) term_y = max_rows - term_rows; } term_px_x = term_x * FONT_W; term_px_y = term_y * FONT_H; term_px_w = term_cols * FONT_W; term_px_h = term_rows * FONT_H; } /* ---- Desktop ----", "kind": "function", "line": 1808, "name": "draw_title_win", "signature": "static void draw_title_win(int idx, int focused)"}, {"kind": "function", "line": 1839, "name": "taskbar_layout", "signature": "static void taskbar_layout(void)"}, {"doc": "Running-app button right after it: mini icon + title while a graphics program owns the display. Clicking it focuses the app (brings it to * the front), so a window buried by Alt+Tab/tile is always reachable. tb_gfx_x = tb_restore_x + tb_restore_w + TASKBAR_PAD; tb_gfx_w = 0; if (vga_fb_gfx_mode) { int tl = (int)kstrlen(gfx_win_title); if (tl > TB_GFX_TITLE_MAX) tl = TB_GFX_TITLE_MAX; tb_gfx_w = FONT_W + 2 + tl * FONT_W; } } /* 8x8 speaker glyph: body on the left, two sound arcs to the right.", "kind": "function", "line": 1870, "name": "draw_speaker_icon", "signature": "static void draw_speaker_icon(int x, int y, uint8_t color)"}, {"kind": "function", "line": 1879, "name": "taskbar_render", "signature": "static void taskbar_render(void)"}, {"doc": "Redraw the clock only when the wall-clock second changes. Only the taskbar strip is repainted, so the cursor must be re-saved (invalidated) only when it actually sat over the taskbar; otherwise it keeps its saved * background and moves normally, which is what prevents pointer trails.", "kind": "function", "line": 1958, "name": "taskbar_tick", "signature": "static void taskbar_tick(void)"}, {"doc": "Docstring: Active Nuklear theme name for the taskbar widget. Reads etc/themes/current (ramdisk); a missing file, a bad name or an * overlong read falls back to \"dark\", never a stale or partial name.", "kind": "function", "line": 1973, "name": "vga_fb_theme_name", "signature": "int vga_fb_theme_name(char *dst, int cap)"}, {"doc": "Cycle the active theme to the next etc/themes/ entry (ramdisk). Holds no locks; click context only. Writes the choice back to current so the * next app launch picks it up; running apps keep their theme.", "kind": "function", "line": 1994, "name": "taskbar_theme_cycle", "signature": "static void taskbar_theme_cycle(void)"}, {"doc": "Click handling for the keyboard widget, the speaker icon and -/+ buttons, plus the restore button that reappears while the terminal window is minimized. A click on \"EN\" switches to Spanish and a click on \"ES\" * switches back to English. A click on the theme name cycles etc/themes.", "kind": "function", "line": 2034, "name": "taskbar_handle_click", "signature": "static void taskbar_handle_click(int mx, int my)"}, {"doc": "return; } if (mx >= tb_minus_x && mx < tb_minus_x + TASKBAR_BTN_W) { v = pcspk_get_volume(); pcspk_set_volume(v > TASKBAR_VOL_STEP ? v - TASKBAR_VOL_STEP : 0); return; } if (mx >= tb_plus_x && mx < tb_plus_x + TASKBAR_BTN_W) { pcspk_set_volume(pcspk_get_volume() + TASKBAR_VOL_STEP); return; } } /* ---- Scrollbar (attached to the window's right edge) ----", "kind": "function", "line": 2090, "name": "draw_scrollbar", "signature": "static void draw_scrollbar(void)"}, {"doc": "Blank one viewport row: every cell is repainted with the terminal background. vga_fb_str with an empty string would draw nothing and leave * whatever pixels the previous content left behind, so blanking is explicit.", "kind": "function", "line": 2125, "name": "render_blank_row", "signature": "static void render_blank_row(int vrow)"}, {"doc": "Render one display row at viewport row `vrow` for the absolute display row `abs`. Rows outside the history (above the oldest line, or below the active line) are blanked. When this is a row of the active line and a text cursor * is shown, the cursor cell is drawn inverted (COL_TERM_CUR background).", "kind": "function", "line": 2135, "name": "render_row", "signature": "static void render_row(int vrow, int abs)"}, {"doc": "Full repaint of the terminal window from the logical history, honouring the current scroll position. Used on desktop redraws, resize, wrap, scroll and * any structural change.", "kind": "function", "line": 2163, "name": "term_render", "signature": "static void term_render(void)"}, {"doc": "Repaint only the bottom region that a live edit touches: from the active line's first visible display row to the bottom of the window. Used for a character append/backspace that does not change the number of display rows, * so typing stays cheap while remaining correct.", "kind": "function", "line": 2176, "name": "term_render_active", "signature": "static void term_render_active(void)"}, {"kind": "function", "line": 2217, "name": "line", "signature": "* display stale bytes left over from a longer previous line (e.g. the prompt\n * would show the ta..."}, {"kind": "function", "line": 2226, "name": "escapes", "signature": "* swallowing them here keeps the escapes (which the serial side needs)\n * from printing as li..."}, {"kind": "function", "line": 2283, "name": "vga_fb_puts_term", "signature": "void vga_fb_puts_term(const char *s)"}, {"doc": "Show the text cursor at character column `col` of the active line, or hide * it with a negative column. The cursor is a block rendered by render_row.", "kind": "function", "line": 2289, "name": "vga_fb_text_cursor", "signature": "void vga_fb_text_cursor(int col)"}, {"doc": "Show the text cursor at character column `col` of the active line, or hide * it with a negative column. The cursor is a block rendered by render_row. void vga_fb_text_cursor(int col) { if (col < 0) { term_cursor_col = -1; } else { term_cursor_col = col; } disp_clamp(); term_render(); } /* Hide the text cursor (used when a live edit starts or the window redraws).", "kind": "function", "line": 2297, "name": "vga_fb_hide_text_cursor", "signature": "void vga_fb_hide_text_cursor(void)"}, {"doc": "it with a negative column. The cursor is a block rendered by render_row. void vga_fb_text_cursor(int col) { if (col < 0) { term_cursor_col = -1; } else { term_cursor_col = col; } disp_clamp(); term_render(); } /* Hide the text cursor (used when a live edit starts or the window redraws). void vga_fb_hide_text_cursor(void) { term_cursor_col = -1; } /** Docstring: Repaint the desktop through the shared render plan.", "kind": "function", "line": 2302, "name": "vga_fb_draw_desktop", "signature": "void vga_fb_draw_desktop(void)"}, {"doc": "term_recalc(); if (!term_minimized) { draw_title_win(plan[i].id, plan[i].id == wm_focus); disp_clamp(); term_render(); } } tw_unpark(cur); gfx_keep_restore(); cursor_invalidate(); } /* ---- Keyboard shortcuts ---- /** Docstring: Toggle fullscreen on the focused window, recenter graphics.", "kind": "function", "line": 2343, "name": "vga_fb_toggle_fullscreen", "signature": "void vga_fb_toggle_fullscreen(void)"}, {"doc": "Minimize/restore the terminal window. The content is not touched; the window is merely hidden and repainted on restore. Fullscreen and minimize * are mutually exclusive: entering fullscreen un-minimizes.", "kind": "function", "line": 2362, "name": "vga_fb_toggle_minimize", "signature": "void vga_fb_toggle_minimize(void)"}, {"kind": "function", "line": 2369, "name": "vga_fb_is_minimized", "signature": "int vga_fb_is_minimized(void)"}, {"kind": "function", "line": 2370, "name": "vga_fb_is_fullscreen", "signature": "int vga_fb_is_fullscreen(void)"}, {"doc": "Target origin of the graphics window under the current offsets (same * math as the blits, for hit-testing and `wm list` without a frame).", "kind": "function", "line": 2374, "name": "gfx_target", "signature": "static void gfx_target(int *x, int *y)"}, {"doc": "Snap the focused graphics window into a screen region (halves place it against that edge, quadrants into that corner). Redraws immediately so the persistent layer re-blits at the new offset: without it the old * pixels stay and the window duplicates until the next Alt-Tab/composite.", "kind": "function", "line": 2382, "name": "gfx_snap", "signature": "static void gfx_snap(int zone)"}, {"doc": "Close the focused window. For the graphics window (focused) this arms the close request that the syscall dispatcher honours on the child's next syscall; for a terminal it restores the default position (the shell cannot be closed). Returns 1 when a close was armed, 0 * otherwise.", "kind": "function", "line": 2406, "name": "vga_fb_close_active", "signature": "int vga_fb_close_active(void)"}, {"kind": "function", "line": 2427, "name": "vga_fb_move_terminal", "signature": "void vga_fb_move_terminal(int dx, int dy)"}, {"doc": "--- Tiling window operations (Alt = WM modifier) ---- Snap places the window in a screen half or quadrant and sizes it to that region; resize grows/shrinks the persisted size. Both exit fullscreen and * preserve the new size across redraws.", "kind": "function", "line": 2466, "name": "term_max_cols", "signature": "static int term_max_cols(void)"}, {"kind": "function", "line": 2470, "name": "term_max_rows", "signature": "static int term_max_rows(void)"}, {"kind": "function", "line": 2475, "name": "term_finish_layout", "signature": "static void term_finish_layout(void)"}, {"kind": "function", "line": 2481, "name": "vga_fb_snap_window", "signature": "void vga_fb_snap_window(int zone)"}, {"kind": "function", "line": 2509, "name": "vga_fb_resize", "signature": "void vga_fb_resize(int dcols, int drows)"}, {"doc": "int ncol = term_sz_cols + dcols; int nrow = term_sz_rows + drows; if (ncol < 1) ncol = 1; if (nrow < 1) nrow = 1; if (ncol > mc) ncol = mc; if (nrow > mr) nrow = mr; if (ncol == term_sz_cols && nrow == term_sz_rows && !term_fullscreen) return; term_fullscreen = 0; term_sz_cols = ncol; term_sz_rows = nrow; term_finish_layout(); } /** Docstring: Restore defaults on the focused window plus graphics offset.", "kind": "function", "line": 2529, "name": "vga_fb_reset_default", "signature": "void vga_fb_reset_default(void)"}, {"kind": "function", "line": 2572, "name": "wallpaper_ensure", "signature": "static void wallpaper_ensure(void)"}, {"kind": "function", "line": 2607, "name": "wallpaper_draw", "signature": "static void wallpaper_draw(void)"}, {"doc": "--- Desktop shortcut icons ---- Shortcuts are defined in etc/shortcuts on the ramdisk, one per line: name|icon_path|command Icons are 32x32 PNG files decoded at boot via stbi_load_file and mapped to the icon palette (VGA DAC indices 240-255). The cached palette-indexed * pixels are redrawn on every desktop paint; mouse clicks launch the command. static struct desktop_shortcut shortcuts[MAX_SHORTCUTS]; static int shortcut_count; static int shortcuts_loaded; /* Find a pipe-delimited field by index (0-based).", "kind": "function", "line": 2640, "name": "pipe_field", "signature": "static const char *pipe_field(const char *line, int idx, char *buf, int buflen)"}, {"doc": "Nearest entry in the 16-colour icon palette (squared RGB distance, * integer-only: at most 3*255*255 per entry, far from overflow).", "kind": "function", "line": 2658, "name": "icon_nearest", "signature": "static int icon_nearest(int r, int g, int b)"}, {"doc": "for (i = 0; i < ICON_PAL_SIZE; i++) { int dr = r - icon_pal[i][0]; int dg = g - icon_pal[i][1]; int db = b - icon_pal[i][2]; int d = dr * dr + dg * dg + db * db; if (d < best_d) { best_d = d; best = i; } } return best; } /* Embedded fallback when the shortcut's PNG is missing or undecodable.", "kind": "function", "line": 2674, "name": "icon_embedded", "signature": "static const uint8_t *icon_embedded(const char *name)"}, {"doc": "Decode a shortcut's PNG to raw 32x32 RGBA pixels. Returns a heap buffer that lives until reboot, or 0 on any failure (missing file, undecodable image, exhausted heap); the caller then uses icon_embedded. Keeping the PNG's own colors (instead of mapping to the 16-entry icon palette) is what makes icons distinguishable on a true-color desktop; the 8-bit mode * quantizes back through icon_nearest at draw time.", "kind": "function", "line": 2694, "name": "icon_decode", "signature": "static const uint8_t *icon_decode(const char *path)"}, {"doc": "Expand an embedded index icon (desktop_icons.h, transparent 0) to RGBA through the icon palette, so fallback art follows the same draw path as * decoded PNGs. Returns a heap buffer or 0 when exhausted.", "kind": "function", "line": 2728, "name": "icon_embedded_rgba", "signature": "static const uint8_t *icon_embedded_rgba(const uint8_t *idx)"}, {"doc": "Width of the longest shortcut label in pixels (cached after load). Labels are centred under their icon and a dock column must be wide enough for one, * or neighbouring labels overlap. static int dock_cell_w; /* Width (px) one label occupies (FONT_W per character).", "kind": "function", "line": 2756, "name": "dock_label_px", "signature": "static int dock_label_px(const struct desktop_shortcut *sc)"}, {"doc": "Dock layout: one centred row just above the taskbar. Every shortcut owns a column `dock_cell_w` wide (enough for its label), the icon is centred in the column and the label centred beneath it, so long names never collide with a neighbour. Recomputed on every draw/hit-test from fb_width/fb_height so a * resolution change never leaves stale coordinates behind.", "kind": "function", "line": 2765, "name": "shortcuts_layout", "signature": "static void shortcuts_layout(void)"}, {"doc": "dock_h = ICON_H + DOCK_LABEL_GAP + ICON_LABEL_H + 2 * DOCK_PAD_Y; x0 = (fb_width - dock_w) / 2; if (x0 < 0) x0 = 0; y0 = fb_height - TASKBAR_H - DOCK_GAP - dock_h; if (y0 < 0) y0 = 0; cell_left = x0 + DOCK_PAD_X; for (i = 0; i < shortcut_count; i++) { shortcuts[i].x = cell_left + (dock_cell_w - ICON_W) / 2; shortcuts[i].y = y0 + DOCK_PAD_Y; cell_left += dock_cell_w; } } /* Left edge of shortcut i's column (used to centre its label under the icon).", "kind": "function", "line": 2783, "name": "shortcut_cell_left", "signature": "static int shortcut_cell_left(int i)"}, {"kind": "function", "line": 2790, "name": "desktop_shortcuts_load", "signature": "void desktop_shortcuts_load(void)"}, {"kind": "function", "line": 2843, "name": "desktop_shortcuts_draw", "signature": "void desktop_shortcuts_draw(void)"}, {"doc": "Icon for the taskbar running-app button. First the running program via its launch command (config-driven, covers apps that never set a window title); then the window title against the shortcut name as fallback (case-insensitive, \"*\" suffix ignored). Text-only button when nothing matches. Load is idempotent, so a click before the first desktop paint * still resolves.", "kind": "function", "line": 2903, "name": "gfx_task_icon", "signature": "static const uint8_t *gfx_task_icon(void)"}, {"kind": "function", "line": 2924, "name": "desktop_shortcuts_hit_test", "signature": "const char *desktop_shortcuts_hit_test(int mx, int my)"}, {"doc": "const char *desktop_shortcuts_hit_test(int mx, int my) { shortcuts_layout(); for (int i = 0; i < shortcut_count; i++) { struct desktop_shortcut *sc = &shortcuts[i]; int cl = shortcut_cell_left(i); if (mx >= cl && mx < cl + dock_cell_w && my >= sc->y && my < sc->y + ICON_H + ICON_LABEL_H) { return sc->cmd; } } return 0; } /** Docstring: Focus the topmost window at point, paint order.", "kind": "function", "line": 2938, "name": "mouse_focus_topmost", "signature": "static int mouse_focus_topmost(int mx, int my)"}, {"doc": "if (!twins[f].present) continue; if (tw_hit(f, mx, my)) { if (f == wm_focus) return 0; before = wm_focus; tw_select(f); vga_fb_draw_desktop(); wm_emit_focus_moved(before, WM_FOCUS_SRC_POINTER); return 1; } } return 0; } /** Docstring: Scroll the focused terminal from a wheel sample.", "kind": "function", "line": 2964, "name": "mouse_apply_wheel", "signature": "static void mouse_apply_wheel(int wheel, int step)"}, {"doc": "Docstring: Title-bar drag of the graphics window. Redraws on every offset change and once more on release, so the persistent layer moves * with the pointer and no duplicated copy survives the drop.", "kind": "function", "line": 2985, "name": "mouse_drag_gfx", "signature": "static void mouse_drag_gfx(const wm_geom_config_t *gcfg, int mx, int my)"}, {"doc": "Docstring: Title-bar drag of the focused terminal window. The motion path already repaints per step; the release edge repaints once more so * the final coordinates settle with no duplicated copy left behind.", "kind": "function", "line": 3024, "name": "mouse_drag_term", "signature": "static void mouse_drag_term(const wm_geom_config_t *gcfg, int win_w, int mx, int my, int gfx_cursor)"}, {"doc": "wm_grab_cx = (mx - term_px_x) / FONT_W; } } else { wm_dragging = 0; } if (wm_dragging) { vga_fb_drag_terminal(mx, my, wm_grab_cx); if (!gfx_cursor) cursor_invalidate(); } else if (was) { vga_fb_draw_desktop(); } } /** Docstring: Scrollbar drag of the focused terminal window.", "kind": "function", "line": 3047, "name": "mouse_scrollbar", "signature": "static void mouse_scrollbar(const wm_geom_config_t *gcfg, int mx, int my)"}, {"doc": "total = total_rows(); visible = term_rows; if (total <= visible || sh <= 0) return; max_off = total - visible; new_off = ((sy + sh - my) * max_off) / sh; if (new_off < 0) new_off = 0; if (new_off > max_off) new_off = max_off; disp_off = new_off; term_render(); if (cursor_over(term_px_x, term_content_y(), term_px_w, term_px_h)) cursor_invalidate(); } /** Docstring: Per-tick mouse dispatch over unified geometry and events.", "kind": "function", "line": 3070, "name": "vga_fb_mouse_tick", "signature": "void vga_fb_mouse_tick(void)"}, {"kind": "function", "line": 3155, "name": "vga_fb_mouse_init", "signature": "void vga_fb_mouse_init(void)"}, {"kind": "function", "line": 3174, "name": "vga_fb_init", "signature": "void vga_fb_init(void)"}, {"kind": "function", "line": 822, "name": "app", "signature": "* a gfx child spawned from another gfx app (file -> vedit) keeps the * terminal focused, so its keys and wheel keep landing on the shell * while the app looks hung. The enable arm mirrors the focus-gf"}, {"kind": "function", "line": 1889, "name": "title", "signature": "* 8px row plus its title (bright when focused). The hint line * starts after it instead of underneath. */ const uint8_t *ipx = gfx_task_icon();"}, {"kind": "function", "line": 2898, "name": "command", "signature": "* its launch command (config-driven, covers apps that never set a window * title);"}, {"kind": "function", "line": 3081, "name": "path", "signature": "* present path (blit_gfx_buf) is the sole cursor painter. The tick * used to share the sprite state with it and raced every present * (~60fps vs 25Hz): stale restores painted trails and flicker, worst"}, {"kind": "macro", "line": 280, "name": "GFX_KEEP_W", "signature": "#define GFX_KEEP_W"}, {"kind": "macro", "line": 281, "name": "GFX_KEEP_H", "signature": "#define GFX_KEEP_H"}, {"kind": "macro", "line": 352, "name": "GFX_PROG_LEN", "signature": "#define GFX_PROG_LEN"}, {"kind": "macro", "line": 579, "name": "WIN_DEF_COLS", "signature": "#define WIN_DEF_COLS"}, {"kind": "macro", "line": 580, "name": "WIN_DEF_ROWS", "signature": "#define WIN_DEF_ROWS"}, {"kind": "macro", "line": 581, "name": "WIN_DEF_X", "signature": "#define WIN_DEF_X"}, {"kind": "macro", "line": 582, "name": "WIN_DEF_Y", "signature": "#define WIN_DEF_Y"}, {"kind": "macro", "line": 610, "name": "WM_MAX_TERMS", "signature": "#define WM_MAX_TERMS"}, {"kind": "macro", "line": 611, "name": "WM_ELINE_SZ", "signature": "#define WM_ELINE_SZ"}, {"kind": "macro", "line": 1213, "name": "FB_OFFSET", "signature": "#define FB_OFFSET(x,y)"}, {"kind": "macro", "line": 1837, "name": "TB_GFX_TITLE_MAX", "signature": "#define TB_GFX_TITLE_MAX"}]}, {"doc": "kernel.c -- Mediator: boot orchestration and the syscall trampoline.", "id": "kernel.c", "kind": "module", "label": "kernel.c", "language": "c", "sha256": "75d6647dcaf5fc8b", "symbol_count": 20, "symbols": [{"kind": "function", "line": 108, "name": "syscall_init", "signature": "void syscall_init(void)"}, {"kind": "function", "line": 398, "name": "bootlog_mark", "signature": "void bootlog_mark(const char *name)"}, {"kind": "function", "line": 405, "name": "bootlog_report", "signature": "void bootlog_report(void)"}, {"kind": "function", "line": 413, "name": "__attribute__", "signature": "__attribute__((section(\".init.text\")))\nvoid kmain(void)"}, {"kind": "function", "line": 95, "name": "table", "signature": "* Symbol table (for resolving program references) * ================================================================ */ #define KSYM_MAX 256 /* ---- SYSCALL/SYSRET setup ------------------------------"}, {"kind": "function", "line": 121, "name": "ksyscall", "signature": "extern long ksyscall(long n, long a1, long a2, long a3, long a4, long a5, long a6);"}, {"kind": "function", "line": 158, "name": "sysretq", "signature": "* trapped from the user window returns with sysretq (ring 3);"}, {"kind": "function", "line": 167, "name": "kstack", "signature": "* kstack (0 on the BSP, 1 on APs): harmless while a single process * runs, fatal as soon as two threads syscall concurrently. */ _Static_assert(__builtin_offsetof(cpu_t, cur_pid) == 12, \"cpu cur_pid o"}, {"kind": "function", "line": 391, "name": "ms", "signature": "* 0 ms (TSC ticks since power-on divided down, still monotonic);"}, {"kind": "function", "line": 427, "name": "EM", "signature": "* CR0: clear EM (bit 2), set MP (bit 1);"}, {"kind": "function", "line": 468, "name": "size", "signature": "* image size (see kernel.ld);"}, {"kind": "variable", "line": 106, "name": "syscall_kstack", "signature": "extern unsigned long syscall_kstack;"}, {"kind": "variable", "line": 385, "name": "ramdisk_start", "signature": "extern char ramdisk_start[];"}, {"kind": "variable", "line": 386, "name": "ramdisk_end", "signature": "extern char ramdisk_end[];"}, {"kind": "macro", "line": 56, "name": "USER_WIN_LO", "signature": "#define USER_WIN_LO"}, {"kind": "macro", "line": 57, "name": "USER_WIN_HI", "signature": "#define USER_WIN_HI"}, {"kind": "macro", "line": 58, "name": "STR_", "signature": "#define STR_(x)"}, {"kind": "macro", "line": 59, "name": "STR", "signature": "#define STR(x)"}, {"kind": "macro", "line": 98, "name": "KSYM_MAX", "signature": "#define KSYM_MAX"}, {"kind": "macro", "line": 394, "name": "BOOTLOG_MAX", "signature": "#define BOOTLOG_MAX"}]}, {"id": "mcp/__init__.py", "kind": "module", "label": "__init__.py", "language": "py", "sha256": "9a62779e844a15fa", "symbol_count": 0, "symbols": []}, {"doc": "Debug driver: boot MiniOS through the MCP bridge and run freedom.", "id": "mcp/mcp_dbg_driver.py", "kind": "module", "label": "mcp_dbg_driver.py", "language": "py", "sha256": "50f5d40b852d858c", "symbol_count": 6, "symbols": [{"kind": "class", "line": 15, "name": "Client", "signature": "class Client"}, {"kind": "method", "line": 64, "name": "main", "signature": "def main()"}, {"kind": "method", "line": 16, "name": "__init__", "signature": "def __init__(self)"}, {"kind": "method", "line": 28, "name": "request", "signature": "def request(self, method, params)"}, {"kind": "method", "line": 46, "name": "tool", "signature": "def tool(self, name, params)"}, {"kind": "method", "line": 54, "name": "close", "signature": "def close(self)"}]}, {"doc": "Dogfood: drive minios_mcp.py over stdio JSON-RPC and install the freedom addon from a git repo, then browse with the installed binary. Stdlib only. Usage: python3 mcp_dogfood.py ", "id": "mcp/mcp_dogfood.py", "kind": "module", "label": "mcp_dogfood.py", "language": "py", "sha256": "18ae93b1f55686be", "symbol_count": 6, "symbols": [{"kind": "class", "line": 19, "name": "Client", "signature": "class Client"}, {"kind": "method", "line": 78, "name": "main", "signature": "def main()"}, {"kind": "method", "line": 20, "name": "__init__", "signature": "def __init__(self, addons_dir)"}, {"kind": "method", "line": 40, "name": "request", "signature": "def request(self, method, params)"}, {"kind": "method", "line": 58, "name": "tool", "signature": "def tool(self, name, params)"}, {"kind": "method", "line": 68, "name": "close", "signature": "def close(self)"}]}, {"doc": "MiniOS addon marketplace (lazyaddons-style). Addons are YAML files that say where a program's source lives on GitHub and how it is built. Two flavors share one dialect: - kind `guest` (default): built *inside* the OS. This module parses that YAML with a strict stdlib-only subset parser (no PyYAML) and installs the addon into a running MiniOS session: clone the repo, upload each source through the editor in bounded chunks, reassemble with `cat`, build and verify inside the OS. - kind `host`: built on the host with the ordinary gcc toolchain and packed into the image by `make` (every sibling checkout and every vendored tree). `minios_install` refuses these with a diagnostic that names the make target instead of half-installing them. - kind `reference`: source-only reference checkouts (never vendored, never linked, never built). Same refusal as `host`. The host shell is never invoked; the only commands run are the addon's own build/verify lines, driven line by line through the MiniOS shell.", "id": "mcp/minios_addons.py", "kind": "module", "label": "minios_addons.py", "language": "py", "sha256": "c60012ba47fd2316", "symbol_count": 16, "symbols": [{"doc": "Expected marketplace failure, reported to the client as isError.", "kind": "class", "line": 56, "name": "AddonError", "signature": "class AddonError(Exception)"}, {"kind": "method", "line": 62, "name": "_clean", "signature": "def _clean(s)"}, {"kind": "method", "line": 66, "name": "_unquote", "signature": "def _unquote(v)"}, {"doc": "Parse the strict YAML subset. Returns the addon dict.\n\nGrammar: flat `key: value` lines; `install:` opens an indented block\nwith `repo_url:`, an optional `kind:` (`guest` default, `host`,\n`reference`), optional `dir_var:`/`ref:`/`artifact:` metadata, a\n`files:` list of `- src:`/`dst:` pairs, and `build:` / `host_build:` /\n`verify:` lists of `- ...` command lines (`verify` items may carry a\nnested `exit_code:`). Everything else is a parse error with its line\nnumber.", "kind": "method", "line": 73, "name": "parse_addon_yaml", "signature": "def parse_addon_yaml(text)"}, {"doc": "Check bounds and character sets. Raises AddonError.", "kind": "method", "line": 205, "name": "validate_addon", "signature": "def validate_addon(addon, source)"}, {"doc": "dst paths live on the ramdisk: relative, no '..', bounded charset.", "kind": "method", "line": 295, "name": "validate_addon_path", "signature": "def validate_addon_path(path)"}, {"doc": "Build/verify lines are single printable-ASCII shell commands.", "kind": "method", "line": 309, "name": "validate_shell_line", "signature": "def validate_shell_line(line)"}, {"doc": "Load every addon yaml; each entry is a dict or an error string.", "kind": "method", "line": 323, "name": "load_addons_dir", "signature": "def load_addons_dir(addons_dir)"}, {"doc": "Split a source into editor-sized chunks. Raises AddonError.", "kind": "method", "line": 347, "name": "split_for_editor", "signature": "def split_for_editor(text)"}, {"kind": "method", "line": 372, "name": "exit_code_of", "signature": "def exit_code_of(text)"}, {"doc": "Host-side record of installed addons (system temp dir).", "kind": "class", "line": 377, "name": "AddonState", "signature": "class AddonState"}, {"doc": "Install one validated addon into the booted MiniOS session.\n\nFailure at any step raises AddonError; upload parts are removed and\nnothing is recorded, so a half-installed package is never reported.", "kind": "method", "line": 401, "name": "install_addon", "signature": "def install_addon(session, addon, cfg)"}, {"kind": "method", "line": 85, "name": "fail", "signature": "def fail(lineno, why)"}, {"kind": "method", "line": 380, "name": "__init__", "signature": "def __init__(self, path)"}, {"kind": "method", "line": 383, "name": "load", "signature": "def load(self)"}, {"kind": "method", "line": 393, "name": "save", "signature": "def save(self, addons)"}]}, {"doc": "MiniOS MCP bridge. Exposes a running MiniOS instance as tools over the MCP stdio protocol. The server boots os.img in QEMU, owns a pty-backed serial console, and lets a client write, compile, link and run software inside the OS. Python 3 standard library only. One QEMU child per server, terminated on every exit path. The host shell is never invoked.", "id": "mcp/minios_mcp.py", "kind": "module", "label": "minios_mcp.py", "language": "py", "sha256": "d6aeb09687624924", "symbol_count": 50, "symbols": [{"doc": "Resolve the configuration: defaults overridden by the environment.", "kind": "function", "line": 68, "name": "env_config", "signature": "def env_config()"}, {"doc": "Clamp a requested wait to the bounded timeout range.", "kind": "function", "line": 86, "name": "clamp_timeout", "signature": "def clamp_timeout(ms)"}, {"doc": "Reject file names the ramdisk or the shell would mishandle.", "kind": "function", "line": 99, "name": "validate_path", "signature": "def validate_path(name)"}, {"doc": "Reject lines the kernel readline cannot carry (printable ASCII).", "kind": "function", "line": 115, "name": "validate_content", "signature": "def validate_content(text)"}, {"doc": "Expected tool failure, reported to the client as isError.", "kind": "class", "line": 128, "name": "ToolError", "signature": "class ToolError(Exception)"}, {"doc": "JSON-RPC level failure carrying a standard error code.", "kind": "class", "line": 134, "name": "RPCError", "signature": "class RPCError(Exception)"}, {"doc": "Bounded console log with absolute byte positions and waits.", "kind": "class", "line": 143, "name": "LogBuffer", "signature": "class LogBuffer"}, {"doc": "One QEMU child, one pty, one console log, one consume cursor.", "kind": "class", "line": 199, "name": "MiniOSSession", "signature": "class MiniOSSession"}, {"kind": "method", "line": 560, "name": "subprocess_launch", "signature": "def subprocess_launch(cfg, slave_fd)"}, {"doc": "JSON-RPC dispatch loop over stdio.", "kind": "class", "line": 711, "name": "MCPServer", "signature": "class MCPServer"}, {"kind": "method", "line": 868, "name": "main", "signature": "def main()"}, {"kind": "method", "line": 137, "name": "__init__", "signature": "def __init__(self, code, message)"}, {"kind": "method", "line": 146, "name": "__init__", "signature": "def __init__(self, cap)"}, {"kind": "method", "line": 152, "name": "append", "signature": "def append(self, data)"}, {"kind": "method", "line": 160, "name": "bytes_from", "signature": "def bytes_from(self, pos)"}, {"kind": "method", "line": 165, "name": "text_from", "signature": "def text_from(self, pos, end)"}, {"kind": "method", "line": 172, "name": "find", "signature": "def find(self, marker, start)"}, {"doc": "Block until marker appears at or after start; return position.", "kind": "method", "line": 176, "name": "wait_for", "signature": "def wait_for(self, marker, start, timeout_ms)"}, {"kind": "method", "line": 189, "name": "_find_locked", "signature": "def _find_locked(self, marker, start)"}, {"kind": "method", "line": 202, "name": "__init__", "signature": "def __init__(self, cfg)"}, {"kind": "method", "line": 213, "name": "booted", "signature": "def booted(self)"}, {"kind": "method", "line": 216, "name": "status", "signature": "def status(self)"}, {"kind": "method", "line": 225, "name": "_reap_stale", "signature": "def _reap_stale(self)"}, {"kind": "method", "line": 261, "name": "_drop_pidfile", "signature": "def _drop_pidfile(self)"}, {"kind": "method", "line": 267, "name": "boot", "signature": "def boot(self, timeout_ms)"}, {"kind": "method", "line": 302, "name": "_read_loop", "signature": "def _read_loop(self)"}, {"kind": "method", "line": 312, "name": "_close_pty", "signature": "def _close_pty(self)"}, {"kind": "method", "line": 322, "name": "_write_line", "signature": "def _write_line(self, line)"}, {"doc": "Editor content lines may be empty (blank lines in the file).", "kind": "method", "line": 331, "name": "_write_editor_line", "signature": "def _write_editor_line(self, line)"}, {"kind": "method", "line": 339, "name": "send", "signature": "def send(self, line, timeout_ms)"}, {"kind": "method", "line": 350, "name": "expect", "signature": "def expect(self, marker, timeout_ms)"}, {"kind": "method", "line": 364, "name": "snapshot", "signature": "def snapshot(self, max_bytes)"}, {"doc": "Run a generic scenario: send a list of shell commands, then assert\nthat each expected marker appears (and each refuted marker does not)\nin the output those commands produced. Returns a verdict plus the\ncaptured transcript. This is the reusable harness behind every in-OS\nfeature test, so a session never has to hand-roll a QEMU boot and\nmarker-assertion script.", "kind": "method", "line": 374, "name": "run_test", "signature": "def run_test(self, commands, expect, refute, timeout_ms)"}, {"kind": "method", "line": 430, "name": "cat", "signature": "def cat(self, path)"}, {"doc": "Run a MicroPython script (or `-c` code) inside MiniOS and return\nits output, including the `exit code: N` line. MicroPython now runs\nreliably thanks to the kernel fix that zeroes the initial registers\nat the ELF entry (rdx is rtld_fini for glibc's _start).", "kind": "method", "line": 436, "name": "run_python", "signature": "def run_python(self, script, args, timeout_ms)"}, {"doc": "Read a ramdisk file and return exactly its bytes.\n\nThe serial driver emits CRLF; the kernel cat appends one newline\nafter the content, so the body is extracted by stripping the echoed\ncommand line, the prompt and that single trailing newline.", "kind": "method", "line": 447, "name": "cat_body", "signature": "def cat_body(self, path, missing_ok)"}, {"kind": "method", "line": 473, "name": "_cleanup_parts", "signature": "def _cleanup_parts(self, parts)"}, {"kind": "method", "line": 480, "name": "write", "signature": "def write(self, path, content)"}, {"kind": "method", "line": 517, "name": "poweroff", "signature": "def poweroff(self, timeout_ms)"}, {"kind": "method", "line": 537, "name": "terminate", "signature": "def terminate(self)"}, {"kind": "method", "line": 556, "name": "close", "signature": "def close(self)"}, {"kind": "method", "line": 714, "name": "__init__", "signature": "def __init__(self, cfg)"}, {"kind": "method", "line": 718, "name": "run", "signature": "def run(self)"}, {"kind": "method", "line": 726, "name": "_handle", "signature": "def _handle(self, line)"}, {"kind": "method", "line": 752, "name": "_initialize", "signature": "def _initialize(self, params)"}, {"kind": "method", "line": 759, "name": "_call", "signature": "def _call(self, params)"}, {"kind": "method", "line": 776, "name": "_dispatch", "signature": "def _dispatch(self, name, args)"}, {"kind": "method", "line": 822, "name": "_addons_list", "signature": "def _addons_list(self)"}, {"kind": "method", "line": 843, "name": "_addon_install", "signature": "def _addon_install(self, args)"}, {"kind": "method", "line": 864, "name": "_reply", "signature": "def _reply(self, msg)"}]}, {"doc": "Mutation testing for the MiniOS MCP bridge. Every mutant is injected into a private copy of minios_mcp.py and run against the unit and BDD suite. A mutant that survives (suite fully green) exposes a test gap. Suites run in parallel (one worker per core, MUTATE_JOBS to override); each mutant gets its own pid file and addon state so the runs stay independent. Mutation format: \"name | sed -i expression | file\"", "id": "mcp/mutate_mcp.sh", "kind": "module", "label": "mutate_mcp.sh", "language": "sh", "sha256": "fff886f5090d023d", "symbol_count": 1, "symbols": [{"doc": "Each mutant runs the suite in its own directory with its own pid file and addon state, so the runs are independent and may execute in parallel. The worker writes the exit code; the loop below maps it onto the verdict.", "kind": "function", "line": 115, "name": "run_one"}]}, {"doc": "Unit and BDD suite for the MiniOS MCP bridge. Unit tests exercise protocol dispatch, input validation and buffer/cursor semantics without QEMU. BDD scenarios boot the real os.img and drive the edit/compile/link/run loop over JSON-RPC; they skip when QEMU or the image is absent. Environment overrides: MINIOS_MCP (server path), MINIOS_IMAGE, QEMU, MINIOS_SKIP_BDD=1 forces the QEMU scenarios to skip.", "id": "mcp/test_minios_mcp.py", "kind": "module", "label": "test_minios_mcp.py", "language": "py", "sha256": "c1ff2474b898f4c8", "symbol_count": 104, "symbols": [{"kind": "function", "line": 29, "name": "load_module", "signature": "def load_module()"}, {"kind": "function", "line": 52, "name": "have_qemu", "signature": "def have_qemu()"}, {"doc": "Child process running minios_mcp.py, driven over stdio JSON-RPC.", "kind": "class", "line": 58, "name": "MCPServer", "signature": "class MCPServer"}, {"kind": "class", "line": 141, "name": "TestProtocol", "signature": "class TestProtocol(TestCase)"}, {"kind": "class", "line": 205, "name": "TestValidation", "signature": "class TestValidation(TestCase)"}, {"kind": "class", "line": 254, "name": "TestLogBuffer", "signature": "class TestLogBuffer(TestCase)"}, {"doc": "Fail-fast for QEMU-backed classes: once a tool call has hit a\nconsole wait timeout the bridge is stuck (a mutated marker, a hung\nshell) and every remaining test would only burn its own timeout, so\nthey are skipped instead.", "kind": "class", "line": 286, "name": "_ConsoleBDDBase", "signature": "class _ConsoleBDDBase(TestCase)"}, {"kind": "class", "line": 322, "name": "TestMiniOSBDD", "signature": "class TestMiniOSBDD(_ConsoleBDDBase)"}, {"kind": "class", "line": 457, "name": "TestAddonYaml", "signature": "class TestAddonYaml(TestCase)"}, {"kind": "class", "line": 579, "name": "TestAddonHelpers", "signature": "class TestAddonHelpers(TestCase)"}, {"doc": "In-memory stand-in for the MiniOS session (no QEMU).", "kind": "class", "line": 619, "name": "FakeOS", "signature": "class FakeOS"}, {"kind": "class", "line": 685, "name": "TestAddonInstall", "signature": "class TestAddonInstall(TestCase)"}, {"doc": "Install a fixture addon from a local git repo into the real OS.", "kind": "class", "line": 820, "name": "TestAddonBDD", "signature": "class TestAddonBDD(_ConsoleBDDBase)"}, {"kind": "method", "line": 61, "name": "__init__", "signature": "def __init__(self, env_extra)"}, {"kind": "method", "line": 80, "name": "initialize", "signature": "def initialize(self)"}, {"kind": "method", "line": 84, "name": "request", "signature": "def request(self, method, params)"}, {"kind": "method", "line": 91, "name": "raw", "signature": "def raw(self, line)"}, {"kind": "method", "line": 96, "name": "_read_response", "signature": "def _read_response(self)"}, {"kind": "method", "line": 102, "name": "_roundtrip", "signature": "def _roundtrip(self, msg)"}, {"kind": "method", "line": 110, "name": "tool", "signature": "def tool(self, name, params)"}, {"kind": "method", "line": 120, "name": "close", "signature": "def close(self)"}, {"kind": "method", "line": 143, "name": "setUpClass", "signature": "def setUpClass(cls)"}, {"kind": "method", "line": 149, "name": "tearDownClass", "signature": "def tearDownClass(cls)"}, {"kind": "method", "line": 152, "name": "test_initialize", "signature": "def test_initialize(self)"}, {"kind": "method", "line": 158, "name": "test_tools_list", "signature": "def test_tools_list(self)"}, {"kind": "method", "line": 166, "name": "test_ping", "signature": "def test_ping(self)"}, {"kind": "method", "line": 170, "name": "test_unknown_method", "signature": "def test_unknown_method(self)"}, {"kind": "method", "line": 174, "name": "test_malformed_json", "signature": "def test_malformed_json(self)"}, {"kind": "method", "line": 178, "name": "test_unknown_tool", "signature": "def test_unknown_tool(self)"}, {"kind": "method", "line": 183, "name": "test_send_not_booted", "signature": "def test_send_not_booted(self)"}, {"kind": "method", "line": 189, "name": "test_send_empty_line_rejected", "signature": "def test_send_empty_line_rejected(self)"}, {"kind": "method", "line": 195, "name": "test_test_not_booted", "signature": "def test_test_not_booted(self)"}, {"kind": "method", "line": 207, "name": "setUpClass", "signature": "def setUpClass(cls)"}, {"kind": "method", "line": 212, "name": "test_path_accepts_plain_names", "signature": "def test_path_accepts_plain_names(self)"}, {"kind": "method", "line": 216, "name": "test_path_rejects_unsafe", "signature": "def test_path_rejects_unsafe(self)"}, {"kind": "method", "line": 220, "name": "test_path_rejects_long", "signature": "def test_path_rejects_long(self)"}, {"kind": "method", "line": 223, "name": "test_content_accepts_ascii", "signature": "def test_content_accepts_ascii(self)"}, {"kind": "method", "line": 226, "name": "test_content_rejects_non_printable", "signature": "def test_content_rejects_non_printable(self)"}, {"kind": "method", "line": 230, "name": "test_timeout_clamped", "signature": "def test_timeout_clamped(self)"}, {"kind": "method", "line": 234, "name": "test_write_rejects_line_too_long", "signature": "def test_write_rejects_line_too_long(self)"}, {"kind": "method", "line": 243, "name": "test_write_rejects_too_many_lines", "signature": "def test_write_rejects_too_many_lines(self)"}, {"kind": "method", "line": 256, "name": "setUpClass", "signature": "def setUpClass(cls)"}, {"kind": "method", "line": 261, "name": "test_bounds", "signature": "def test_bounds(self)"}, {"kind": "method", "line": 268, "name": "test_find_and_total", "signature": "def test_find_and_total(self)"}, {"kind": "method", "line": 275, "name": "test_cursor_prevents_stale_match", "signature": "def test_cursor_prevents_stale_match(self)"}, {"kind": "method", "line": 295, "name": "guard_server", "signature": "def guard_server(cls)"}, {"kind": "method", "line": 316, "name": "setUp", "signature": "def setUp(self)"}, {"kind": "method", "line": 324, "name": "setUpClass", "signature": "def setUpClass(cls)"}, {"kind": "method", "line": 331, "name": "tearDownClass", "signature": "def tearDownClass(cls)"}, {"kind": "method", "line": 335, "name": "test_t01_boot", "signature": "def test_t01_boot(self)"}, {"kind": "method", "line": 345, "name": "test_t02_expect", "signature": "def test_t02_expect(self)"}, {"kind": "method", "line": 352, "name": "test_t03_write_and_cat", "signature": "def test_t03_write_and_cat(self)"}, {"kind": "method", "line": 362, "name": "test_t04_toolchain_elf", "signature": "def test_t04_toolchain_elf(self)"}, {"kind": "method", "line": 373, "name": "test_t05_toolchain_cvm", "signature": "def test_t05_toolchain_cvm(self)"}, {"kind": "method", "line": 383, "name": "test_t06_selfhosted_compiler", "signature": "def test_t06_selfhosted_compiler(self)"}, {"kind": "method", "line": 389, "name": "test_t07_bin_command_path", "signature": "def test_t07_bin_command_path(self)"}, {"kind": "method", "line": 397, "name": "test_t08_python_script", "signature": "def test_t08_python_script(self)"}, {"kind": "method", "line": 404, "name": "test_t09_py_eval", "signature": "def test_t09_py_eval(self)"}, {"kind": "method", "line": 409, "name": "test_t10_minios_test", "signature": "def test_t10_minios_test(self)"}, {"kind": "method", "line": 430, "name": "test_t11_poweroff_and_reboot", "signature": "def test_t11_poweroff_and_reboot(self)"}, {"kind": "method", "line": 459, "name": "setUpClass", "signature": "def setUpClass(cls)"}, {"kind": "method", "line": 469, "name": "test_parse_valid", "signature": "def test_parse_valid(self)"}, {"kind": "method", "line": 479, "name": "test_validate_accepts_valid", "signature": "def test_validate_accepts_valid(self)"}, {"kind": "method", "line": 483, "name": "test_unknown_key_rejected", "signature": "def test_unknown_key_rejected(self)"}, {"kind": "method", "line": 487, "name": "test_bad_indent_rejected", "signature": "def test_bad_indent_rejected(self)"}, {"kind": "method", "line": 491, "name": "test_validate_rejects_bad_dst", "signature": "def test_validate_rejects_bad_dst(self)"}, {"kind": "method", "line": 496, "name": "test_validate_rejects_missing_name", "signature": "def test_validate_rejects_missing_name(self)"}, {"kind": "method", "line": 500, "name": "test_validate_rejects_long_build_line", "signature": "def test_validate_rejects_long_build_line(self)"}, {"kind": "method", "line": 508, "name": "test_validate_rejects_control_chars", "signature": "def test_validate_rejects_control_chars(self)"}, {"kind": "method", "line": 513, "name": "test_validate_rejects_empty_files", "signature": "def test_validate_rejects_empty_files(self)"}, {"kind": "method", "line": 518, "name": "test_host_kind_accepts_empty_files", "signature": "def test_host_kind_accepts_empty_files(self)"}, {"kind": "method", "line": 533, "name": "test_reference_kind_carries_nothing", "signature": "def test_reference_kind_carries_nothing(self)"}, {"kind": "method", "line": 541, "name": "test_bad_kind_rejected", "signature": "def test_bad_kind_rejected(self)"}, {"kind": "method", "line": 549, "name": "test_host_kind_requires_artifact", "signature": "def test_host_kind_requires_artifact(self)"}, {"kind": "method", "line": 563, "name": "test_install_refuses_host_before_touching_session", "signature": "def test_install_refuses_host_before_touching_session(self)"}, {"kind": "method", "line": 581, "name": "setUpClass", "signature": "def setUpClass(cls)"}, {"kind": "method", "line": 591, "name": "test_split_for_editor_chunks", "signature": "def test_split_for_editor_chunks(self)"}, {"kind": "method", "line": 598, "name": "test_split_rejects_long_line", "signature": "def test_split_rejects_long_line(self)"}, {"kind": "method", "line": 602, "name": "test_split_rejects_non_ascii", "signature": "def test_split_rejects_non_ascii(self)"}, {"kind": "method", "line": 606, "name": "test_exit_code_of", "signature": "def test_exit_code_of(self)"}, {"kind": "method", "line": 611, "name": "test_state_roundtrip", "signature": "def test_state_roundtrip(self)"}, {"kind": "method", "line": 622, "name": "__init__", "signature": "def __init__(self, exit_codes)"}, {"kind": "method", "line": 629, "name": "booted", "signature": "def booted(self)"}, {"kind": "method", "line": 632, "name": "boot", "signature": "def boot(self, timeout_ms)"}, {"kind": "method", "line": 636, "name": "write", "signature": "def write(self, path, content)"}, {"kind": "method", "line": 643, "name": "send", "signature": "def send(self, line, timeout_ms)"}, {"kind": "method", "line": 667, "name": "cat_body", "signature": "def cat_body(self, path, missing_ok)"}, {"kind": "class", "line": 674, "name": "_toolerror", "signature": "class _toolerror(Exception)"}, {"kind": "method", "line": 679, "name": "_cleanup_parts", "signature": "def _cleanup_parts(self, parts)"}, {"kind": "method", "line": 687, "name": "setUpClass", "signature": "def setUpClass(cls)"}, {"kind": "method", "line": 719, "name": "tearDownClass", "signature": "def tearDownClass(cls)"}, {"kind": "method", "line": 724, "name": "make_addon", "signature": "def make_addon(self)"}, {"kind": "method", "line": 746, "name": "test_install_success", "signature": "def test_install_success(self)"}, {"kind": "method", "line": 759, "name": "test_install_mismatch_aborts_and_cleans", "signature": "def test_install_mismatch_aborts_and_cleans(self)"}, {"kind": "method", "line": 773, "name": "test_install_multi_chunk_reassembly", "signature": "def test_install_multi_chunk_reassembly(self)"}, {"kind": "method", "line": 804, "name": "test_install_verify_failure_aborts", "signature": "def test_install_verify_failure_aborts(self)"}, {"kind": "method", "line": 811, "name": "test_install_build_failure_aborts", "signature": "def test_install_build_failure_aborts(self)"}, {"kind": "method", "line": 824, "name": "setUpClass", "signature": "def setUpClass(cls)"}, {"kind": "method", "line": 861, "name": "tearDownClass", "signature": "def tearDownClass(cls)"}, {"kind": "method", "line": 869, "name": "test_addons_list", "signature": "def test_addons_list(self)"}, {"kind": "method", "line": 875, "name": "test_install_fixture", "signature": "def test_install_fixture(self)"}, {"kind": "method", "line": 884, "name": "test_install_unknown_addon_fails", "signature": "def test_install_unknown_addon_fails(self)"}, {"kind": "method", "line": 298, "name": "guarded", "signature": "def guarded(name, params)"}, {"kind": "method", "line": 763, "name": "broken_cat", "signature": "def broken_cat(path, missing_ok)"}]}, {"doc": "MiniOS network stack: rtl8139 under QEMU slirp user networking.", "id": "net/net.c", "kind": "module", "label": "net.c", "language": "c", "sha256": "c2e35ab90c68cc3a", "symbol_count": 56, "symbols": [{"kind": "struct", "line": 69, "name": "net_arp_entry"}, {"kind": "struct", "line": 195, "name": "net_dns_state"}, {"kind": "struct", "line": 380, "name": "net_tcp_sock"}, {"kind": "function", "line": 31, "name": "net_put16", "signature": "static void net_put16(unsigned char *p, unsigned short v)"}, {"kind": "function", "line": 36, "name": "net_put32", "signature": "static void net_put32(unsigned char *p, unsigned int v)"}, {"kind": "function", "line": 43, "name": "net_get16", "signature": "static unsigned short net_get16(const unsigned char *p)"}, {"kind": "function", "line": 47, "name": "net_get32", "signature": "static unsigned int net_get32(const unsigned char *p)"}, {"kind": "function", "line": 52, "name": "net_checksum", "signature": "static unsigned short net_checksum(const void *data, unsigned len)"}, {"kind": "function", "line": 77, "name": "net_arp_store", "signature": "static void net_arp_store(const unsigned char *ip, const unsigned char *mac)"}, {"kind": "function", "line": 92, "name": "net_arp_lookup", "signature": "static int net_arp_lookup(const unsigned char *ip, unsigned char *mac_out)"}, {"kind": "function", "line": 103, "name": "net_arp_request", "signature": "static void net_arp_request(const unsigned char *ip)"}, {"doc": "kmemcpy(frame + 6, net_mac, NET_ETH_ALEN); net_put16(frame + 12, NET_ETHERTYPE_ARP); net_put16(frame + 14, 1); /* ethernet net_put16(frame + 16, 0x0800); /* IPv4 frame[18] = 6; frame[19] = 4; net_put16(frame + 20, NET_ARP_REQUEST); kmemcpy(frame + 22, net_mac, NET_ETH_ALEN); kmemcpy(frame + 28, net_our_ip, 4); kmemcpy(frame + 38, ip, 4); rtl_send(frame, 42); } /* Resolve an IP on the 10.0.2.0/24 link. Retries, bounded timeout.", "kind": "function", "line": 121, "name": "net_arp_resolve", "signature": "static int net_arp_resolve(const unsigned char *ip, unsigned char *mac_out)"}, {"doc": "================================================================ IPv4 / ICMP / UDP / DNS * ================================================================ static unsigned short net_ip_id; static unsigned short net_icmp_id = 0x4D49; static unsigned short net_udp_port = NET_EPHEMERAL_MIN; static unsigned int net_tx_bytes; static unsigned int net_rx_bytes; /* Send a frame on the link: dst IP decides the destination MAC.", "kind": "function", "line": 146, "name": "net_ip_send", "signature": "static int net_ip_send(const unsigned char *dip, unsigned char proto,\n cons..."}, {"kind": "function", "line": 182, "name": "net_udp_send", "signature": "static int net_udp_send(const unsigned char *dip, unsigned short sport,\n u..."}, {"doc": "net_put16(pkt + 6, 0); /* checksum optional for UDP kmemcpy(pkt + 8, data, len); return net_ip_send(dip, NET_PROTO_UDP, pkt, total); } struct net_dns_state { unsigned short id; unsigned char ip[4]; int done; }; static struct net_dns_state net_dns; /* Parse a DNS response for the first A record.", "kind": "function", "line": 204, "name": "net_dns_parse", "signature": "static void net_dns_parse(const unsigned char *data, unsigned len)"}, {"doc": "rtype = net_get16(data + pos); rdlen = net_get16(data + pos + 8); pos += 10; if (pos + rdlen > len) return; if (rtype == 1 && rdlen == 4) { kmemcpy(net_dns.ip, data + pos, 4); net_dns.done = 1; return; } pos += rdlen; } } /* Blocking A-record lookup against NET_DNS.", "kind": "function", "line": 242, "name": "net_dns_resolve", "signature": "static int net_dns_resolve(const char *host, unsigned char ip_out[4])"}, {"kind": "function", "line": 303, "name": "net_udp_send", "signature": "net_udp_send((const unsigned char[])"}, {"kind": "function", "line": 322, "name": "net_icmp_rx", "signature": "static void net_icmp_rx(const unsigned char *ip, unsigned len)"}, {"kind": "function", "line": 351, "name": "net_ping", "signature": "static int net_ping(const unsigned char ip[4])"}, {"kind": "function", "line": 403, "name": "net_sock_alloc", "signature": "static struct net_tcp_sock *net_sock_alloc(void)"}, {"kind": "function", "line": 416, "name": "net_sock_index", "signature": "static int net_sock_index(const struct net_tcp_sock *s)"}, {"doc": "return &net_sockets[i]; } } return 0; } static int net_sock_index(const struct net_tcp_sock *s) { int i; for (i = 0; i < NET_SOCKETS; i++) if (&net_sockets[i] == s) return i; return -1; } /* Compute the TCP checksum over a pseudo header + segment.", "kind": "function", "line": 424, "name": "net_tcp_checksum", "signature": "static unsigned short net_tcp_checksum(const unsigned char *src, const unsigned char *dst,\n ..."}, {"doc": "const unsigned char *seg, unsigned len) { unsigned char buf[NET_TX_MAX + 12]; unsigned total = 12 + len; kmemcpy(buf, src, 4); kmemcpy(buf + 4, dst, 4); buf[8] = 0; buf[9] = NET_PROTO_TCP; net_put16(buf + 10, (unsigned short)len); kmemcpy(buf + 12, seg, len); if (total & 1) buf[total++] = 0; return net_checksum(buf, total); } /* UDP checksum over pseudo header + datagram (may be 0 = not computed).", "kind": "function", "line": 440, "name": "net_udp_checksum_ok", "signature": "static int net_udp_checksum_ok(const unsigned char *src, const unsigned char *dst,\n ..."}, {"kind": "function", "line": 456, "name": "net_tcp_xmit", "signature": "static int net_tcp_xmit(struct net_tcp_sock *s, unsigned flags,\n const uns..."}, {"doc": "seg[21] = 0x04; /* len 4 net_put16(seg + 22, NET_TCP_MSS); } else { seg[12] = 0x50; } kmemcpy(seg + hlen, data, len); net_put16(seg + 16, net_tcp_checksum(net_our_ip, s->dip, s->sport, s->dport, seg, hlen + len)); if (!net_ip_send(s->dip, NET_PROTO_TCP, seg, hlen + len)) return 0; if (fresh && (flags & (0x02 | 0x08 | 0x01))) s->seq += len + ((flags & (0x02 | 0x01)) ? 1 : 0); return 1; } /* Process one received TCP segment.", "kind": "function", "line": 487, "name": "net_tcp_rx", "signature": "static void net_tcp_rx(const unsigned char *ip, unsigned len)"}, {"doc": "} if (flags & 0x10) { /* ACK: peer acks our data if (s->tx_pending && (int)(ack - (s->tx_seq + s->tx_len)) >= 0) { s->tx_pending = 0; } if (s->state == NET_TCP_FIN_SENT && (int)(ack - (s->seq)) >= 0) { s->state = NET_TCP_DEAD; } } } } /* Blocking connect of an allocated socket to an IPv4 address.", "kind": "function", "line": 573, "name": "net_tcp_connect_into", "signature": "static int net_tcp_connect_into(struct net_tcp_sock *s, const unsigned char ip[4],\n ..."}, {"doc": "unsigned long retry = net_time_ms() + NET_RETRY_MS; while (net_time_ms() < retry && s->state == NET_TCP_SYN_SENT) rtl_poll(); if (s->state == NET_TCP_SYN_SENT) net_tcp_xmit(s, 0x02, 0, 0, 0); } if (s->state != NET_TCP_ESTABLISHED) { s->in_use = 0; s->state = NET_TCP_CLOSED; return 0; } return 1; } /* Blocking send (stop-and-wait, one outstanding segment).", "kind": "function", "line": 600, "name": "net_tcp_send", "signature": "static int net_tcp_send(struct net_tcp_sock *s, const char *buf, int len)"}, {"doc": "net_time_ms() < deadline) { unsigned long retry = net_time_ms() + NET_RETRY_MS; while (net_time_ms() < retry && s->tx_pending) rtl_poll(); if (s->tx_pending) net_tcp_xmit(s, 0x18, s->tx_buf, chunk, 0); } if (s->tx_pending || s->state != NET_TCP_ESTABLISHED) return sent ? sent : -1; buf += chunk; len -= (int)chunk; sent += (int)chunk; } return sent; } /* Blocking receive; 0 = EOF (FIN).", "kind": "function", "line": 626, "name": "net_tcp_recv", "signature": "static int net_tcp_recv(struct net_tcp_sock *s, char *buf, int len)"}, {"kind": "function", "line": 664, "name": "net_tcp_close", "signature": "static void net_tcp_close(struct net_tcp_sock *s)"}, {"kind": "function", "line": 684, "name": "net_rx_handle_frame", "signature": "void net_rx_handle_frame(const unsigned char *frame, unsigned len)"}, {"kind": "function", "line": 742, "name": "net_open", "signature": "int net_open(void)"}, {"kind": "function", "line": 748, "name": "net_connect", "signature": "int net_connect(const char *host, unsigned short port)"}, {"kind": "function", "line": 757, "name": "net_send", "signature": "int net_send(int fd, const char *buf, int len)"}, {"kind": "function", "line": 762, "name": "net_recv", "signature": "int net_recv(int fd, char *buf, int len)"}, {"kind": "function", "line": 767, "name": "net_recv_timeout", "signature": "int net_recv_timeout(int fd, char *buf, int len, unsigned long timeout_ms)"}, {"kind": "function", "line": 772, "name": "net_close", "signature": "void net_close(int fd)"}, {"kind": "function", "line": 781, "name": "net_sys_socket", "signature": "long net_sys_socket(long a1, long a2, long a3)"}, {"kind": "function", "line": 790, "name": "net_sys_connect", "signature": "long net_sys_connect(long fd, long sockaddr, long addrlen)"}, {"kind": "function", "line": 803, "name": "net_sys_sendto", "signature": "long net_sys_sendto(long fd, long buf, long len, long flags, long to, long tolen)"}, {"kind": "function", "line": 813, "name": "net_sys_recvfrom", "signature": "long net_sys_recvfrom(long fd, long buf, long len, long flags, long from, long fromlen)"}, {"kind": "function", "line": 823, "name": "net_sys_shutdown", "signature": "long net_sys_shutdown(long fd, long how)"}, {"kind": "function", "line": 830, "name": "net_sys_close", "signature": "long net_sys_close(long fd)"}, {"kind": "function", "line": 837, "name": "net_sys_poll", "signature": "long net_sys_poll(long fds, long nfds, long timeout_ms)"}, {"doc": "MiniOS syscall 200: resolve a hostname, returned as a network-order * 32-bit address (like inet_addr), or -1 on failure.", "kind": "function", "line": 873, "name": "net_sys_dns", "signature": "long net_sys_dns(long host)"}, {"kind": "function", "line": 884, "name": "net_parse_ip", "signature": "static int net_parse_ip(const char *text, unsigned char ip[4])"}, {"kind": "function", "line": 909, "name": "net_cmd_status", "signature": "void net_cmd_status(void)"}, {"doc": "vga_puts(\"net: no rtl8139 found\\n\"); return; } rtl_counters(&tx_frames, &rx_frames); kprintf(\"rtl8139 iobase 0x%x\\n\", rtl_iobase()); kprintf(\"mac %02x:%02x:%02x:%02x:%02x:%02x\\n\", net_mac[0], net_mac[1], net_mac[2], net_mac[3], net_mac[4], net_mac[5]); kprintf(\"ip %u.%u.%u.%u/24\\n\", net_our_ip[0], net_our_ip[1], net_our_ip[2], net_our_ip[3]); vga_puts(\"gateway 10.0.2.2 dns 10.0.2.3\\n\"); kprintf(\"tx %u frames, %u bytes\\n\", tx_frames, net_tx_bytes); kprintf(\"rx %u frames, %u bytes, %u dropped\\n\", rx_frames, net_rx_bytes, net_rx_dropped); } /** Docstring: Copy the station MAC and IP out for status screens.", "kind": "function", "line": 926, "name": "net_get_addrs", "signature": "void net_get_addrs(unsigned char mac_out[NET_ETH_ALEN], unsigned char ip_out[4])"}, {"kind": "function", "line": 932, "name": "net_cmd_ping", "signature": "void net_cmd_ping(const char *ip_text)"}, {"kind": "function", "line": 943, "name": "net_cmd_dns", "signature": "void net_cmd_dns(const char *host)"}, {"kind": "function", "line": 956, "name": "net_register_symbols", "signature": "void net_register_symbols(void)"}, {"kind": "function", "line": 964, "name": "net_init", "signature": "void net_init(void)"}, {"kind": "macro", "line": 374, "name": "NET_TCP_CLOSED", "signature": "#define NET_TCP_CLOSED"}, {"kind": "macro", "line": 375, "name": "NET_TCP_SYN_SENT", "signature": "#define NET_TCP_SYN_SENT"}, {"kind": "macro", "line": 376, "name": "NET_TCP_ESTABLISHED", "signature": "#define NET_TCP_ESTABLISHED"}, {"kind": "macro", "line": 377, "name": "NET_TCP_FIN_SENT", "signature": "#define NET_TCP_FIN_SENT"}, {"kind": "macro", "line": 378, "name": "NET_TCP_DEAD", "signature": "#define NET_TCP_DEAD"}]}, {"id": "net/rtl8139.c", "kind": "module", "label": "rtl8139.c", "language": "c", "sha256": "2f777e50fdb00745", "symbol_count": 31, "symbols": [{"doc": "Byte/word port I/O comes from kernel.h (outb/inb/outw/inw, same asm). * Only the dword pair stays local: the shared header has no outl/inl.", "kind": "function", "line": 26, "name": "outl_port", "signature": "static void outl_port(unsigned short port, unsigned int val)"}, {"kind": "function", "line": 30, "name": "inl_port", "signature": "static unsigned int inl_port(unsigned short port)"}, {"kind": "function", "line": 36, "name": "rtl_reg8", "signature": "static unsigned char rtl_reg8(unsigned short off)"}, {"kind": "function", "line": 37, "name": "rtl_reg8_w", "signature": "static void rtl_reg8_w(unsigned short off, unsigned char v)"}, {"kind": "function", "line": 38, "name": "rtl_reg16", "signature": "static unsigned short rtl_reg16(unsigned short off)"}, {"kind": "function", "line": 39, "name": "rtl_reg16_w", "signature": "static void rtl_reg16_w(unsigned short off, unsigned short v)"}, {"kind": "function", "line": 40, "name": "rtl_reg32", "signature": "static unsigned int rtl_reg32(unsigned short off)"}, {"kind": "function", "line": 41, "name": "rtl_reg32_w", "signature": "static void rtl_reg32_w(unsigned short off, unsigned int v)"}, {"kind": "function", "line": 52, "name": "pci_read32", "signature": "static unsigned int pci_read32(unsigned bus, unsigned dev, unsigned func, unsigned reg)"}, {"kind": "function", "line": 57, "name": "pci_write32", "signature": "static void pci_write32(unsigned bus, unsigned dev, unsigned func, unsigned reg, unsigned int val)"}, {"kind": "function", "line": 62, "name": "rtl_find", "signature": "static unsigned short rtl_find(void)"}, {"kind": "function", "line": 84, "name": "rtl_rdtsc", "signature": "static unsigned long rtl_rdtsc(void)"}, {"kind": "function", "line": 90, "name": "net_time_init", "signature": "static void net_time_init(void)"}, {"kind": "function", "line": 104, "name": "net_time_ms", "signature": "unsigned long net_time_ms(void)"}, {"kind": "function", "line": 120, "name": "rtl_present", "signature": "int rtl_present(void)"}, {"kind": "function", "line": 124, "name": "rtl_reset", "signature": "static void rtl_reset(void)"}, {"kind": "function", "line": 133, "name": "rtl_init", "signature": "void rtl_init(void)"}, {"kind": "function", "line": 164, "name": "rtl_send", "signature": "int rtl_send(const unsigned char *frame, unsigned len)"}, {"kind": "function", "line": 192, "name": "rtl_get_mac", "signature": "void rtl_get_mac(unsigned char out[NET_ETH_ALEN])"}, {"kind": "function", "line": 197, "name": "rtl_iobase", "signature": "unsigned short rtl_iobase(void)"}, {"kind": "function", "line": 201, "name": "rtl_counters", "signature": "void rtl_counters(unsigned int *tx_frames, unsigned int *rx_frames)"}, {"doc": "Copy one received frame out of the ring into the scratch buffer, * wrapping at the ring end, then hand it to the protocol demux.", "kind": "function", "line": 208, "name": "rtl_rx_frame_wrapped", "signature": "static void rtl_rx_frame_wrapped(unsigned length)"}, {"kind": "function", "line": 219, "name": "rtl_poll", "signature": "void rtl_poll(void)"}, {"kind": "macro", "line": 43, "name": "RTL_REG_CR", "signature": "#define RTL_REG_CR"}, {"kind": "macro", "line": 44, "name": "RTL_REG_TSD0", "signature": "#define RTL_REG_TSD0"}, {"kind": "macro", "line": 45, "name": "RTL_REG_TSAD0", "signature": "#define RTL_REG_TSAD0"}, {"kind": "macro", "line": 46, "name": "RTL_REG_RBSTART", "signature": "#define RTL_REG_RBSTART"}, {"kind": "macro", "line": 47, "name": "RTL_REG_CAPR", "signature": "#define RTL_REG_CAPR"}, {"kind": "macro", "line": 48, "name": "RTL_REG_CBR", "signature": "#define RTL_REG_CBR"}, {"kind": "macro", "line": 49, "name": "RTL_REG_9346CR", "signature": "#define RTL_REG_9346CR"}, {"kind": "macro", "line": 50, "name": "RTL_REG_CONFIG1", "signature": "#define RTL_REG_CONFIG1"}]}, {"doc": "tls.c - TLS 1.2 client sessions for MiniOS.", "id": "net/tls.c", "kind": "module", "label": "tls.c", "language": "c", "sha256": "83cc284ef402cb42", "symbol_count": 27, "symbols": [{"kind": "function", "line": 25, "name": "tls_fail", "signature": "static void tls_fail(struct tls_session *s, const char *stage, const char *reason)"}, {"kind": "function", "line": 33, "name": "tls_fd_of", "signature": "static int tls_fd_of(const struct tls_session *s)"}, {"kind": "function", "line": 40, "name": "tls_free_fd", "signature": "void tls_free_fd(int fd)"}, {"doc": "Build the TLS 1.2 AEAD additional data: seq(8) || type || 0303 || * TLSCompressed.length (the plaintext length, RFC 5288 section 3).", "kind": "function", "line": 52, "name": "tls_aad", "signature": "static void tls_aad(unsigned char aad[13], int type, unsigned long long seq,\n ..."}, {"doc": "Send one record: header || nonce_explicit(8) || ciphertext || tag. The nonce_explicit is the sequence number (RFC 5288 allows it and * OpenSSL uses it); the nonce is salt || nonce_explicit.", "kind": "function", "line": 66, "name": "tls_send_record", "signature": "static int tls_send_record(struct tls_session *s, int type,\n const unsi..."}, {"doc": "for (i = 0; i < 8; i++) buf[5 + i] = (unsigned char)(s->cli_seq >> (56 - i * 8)); TLS_MEMCPY(nonce, s->cli_salt, 4); TLS_MEMCPY(nonce + 4, buf + 5, 8); if (aes128_gcm_seal_core(s->cli_key, nonce, aad, 13, payload, (unsigned)len, buf + 5 + 8, buf + 5 + 8 + len) != 0) return -1; s->cli_seq++; if (TLS_SEND(tls_fd_of(s), (const char *)buf, total) != total) return -1; return 0; } /* Send one plaintext record (ChangeCipherSpec is never encrypted).", "kind": "function", "line": 95, "name": "tls_send_raw_record", "signature": "static int tls_send_raw_record(struct tls_session *s, int type,\n co..."}, {"doc": "Read one record: header into s->rec_hdr, payload into s->rec. Returns: 1 = record ready, 0 = clean TCP EOF, -1 = torn record or bad header, -2 = timeout. A non-positive deadline blocks forever * (application-data reads behave like plain TCP).", "kind": "function", "line": 114, "name": "tls_read_record", "signature": "static int tls_read_record(struct tls_session *s, int fd, int deadline_ms)"}, {"kind": "function", "line": 173, "name": "exchange", "signature": "* key exchange (ClientHello, ClientKeyExchange) go out in plaintext\n * records, as TLS 1.2 requir..."}, {"doc": "const unsigned char *body, int len) { if (len < 0 || len > 1024) return -1; s->pt[0] = (unsigned char)type; s->pt[1] = (unsigned char)(len >> 16); s->pt[2] = (unsigned char)(len >> 8); s->pt[3] = (unsigned char)len; TLS_MEMCPY(s->pt + 4, body, (unsigned)len); sha256_update(&s->hs_hash, s->pt, (unsigned)(len + 4)); if (!s->keys_ready) return tls_send_raw_record(s, TLS_CT_HANDSHAKE, s->pt, len + 4); return tls_send_record(s, TLS_CT_HANDSHAKE, s->pt, len + 4); } /* ClientHello body (without the handshake header). Returns length.", "kind": "function", "line": 190, "name": "build_client_hello", "signature": "static int build_client_hello(struct tls_session *s, unsigned char *out)"}, {"doc": "out[pos++] = 0x00; out[pos++] = 0x06; out[pos++] = 0x04; out[pos++] = 0x01; /* rsa_pkcs1_sha256 out[pos++] = 0x04; out[pos++] = 0x03; /* ecdsa_p256_sha256 out[pos++] = 0x05; out[pos++] = 0x03; /* ecdsa_p384_sha384 { int extlen = pos - ext_start - 2; out[ext_start] = (unsigned char)(extlen >> 8); out[ext_start + 1] = (unsigned char)extlen; } } return pos; } /* Derive all keys and send ClientKeyExchange, CCS, Finished.", "kind": "function", "line": 244, "name": "client_finish_flight", "signature": "static int client_finish_flight(struct tls_session *s)"}, {"kind": "function", "line": 340, "name": "parse_server_hello", "signature": "static int parse_server_hello(struct tls_session *s,\n const unsigned..."}, {"kind": "function", "line": 370, "name": "parse_certificate", "signature": "static int parse_certificate(struct tls_session *s,\n const unsigned c..."}, {"kind": "function", "line": 401, "name": "parse_server_key_exchange", "signature": "static int parse_server_key_exchange(struct tls_session *s,\n ..."}, {"kind": "function", "line": 466, "name": "tls_handshake", "signature": "int tls_handshake(int fd, const char *host)"}, {"kind": "function", "line": 687, "name": "tls_send", "signature": "int tls_send(int fd, const char *buf, int len)"}, {"kind": "function", "line": 696, "name": "tls_recv", "signature": "int tls_recv(int fd, char *buf, int len)"}, {"doc": "if !defined(TLS_TEST) && !defined(TLS_RING3)", "kind": "function", "line": 772, "name": "tls_sys_handshake", "signature": "long tls_sys_handshake(long fd, long host)"}, {"kind": "function", "line": 777, "name": "tls_sys_send", "signature": "long tls_sys_send(long fd, long buf, long len)"}, {"kind": "function", "line": 782, "name": "tls_sys_recv", "signature": "long tls_sys_recv(long fd, long buf, long len)"}, {"kind": "function", "line": 789, "name": "tls_rdtsc", "signature": "static inline unsigned long long tls_rdtsc(void)"}, {"kind": "function", "line": 795, "name": "tls_random", "signature": "void tls_random(unsigned char *out, unsigned len)"}, {"doc": "unsigned long long seed = tls_rdtsc() ^ ((unsigned long long)net_time_ms() << 33); unsigned i; static unsigned long long counter = 0x6D696E69544C53ULL; counter ^= seed; for (i = 0; i < len; i++) { seed = seed * 6364136223846793005ULL + 1442695040888963407ULL; out[i] = (unsigned char)((seed >> 33) ^ (counter >> (i & 7) * 8)); counter = counter * 6364136223846793005ULL + 1; } } /* The port helpers in net.c are static; these live here for the RTC. ifndef PORT_IO_DEFINED define PORT_IO_DEFINED", "kind": "function", "line": 810, "name": "outb", "signature": "static inline void outb(unsigned short port, unsigned char v)"}, {"kind": "function", "line": 813, "name": "inb", "signature": "static inline unsigned char inb(unsigned short port)"}, {"doc": "/* The port helpers in net.c are static; these live here for the RTC. #ifndef PORT_IO_DEFINED #define PORT_IO_DEFINED static inline void outb(unsigned short port, unsigned char v) { __asm__ volatile(\"outb %0, %1\" : : \"a\"(v), \"Nd\"(port)); } static inline unsigned char inb(unsigned short port) { unsigned char v; __asm__ volatile(\"inb %1, %0\" : \"=a\"(v) : \"Nd\"(port)); return v; } #endif /* CMOS RTC -> days since epoch. Registers are BCD.", "kind": "function", "line": 821, "name": "cmos_read", "signature": "static inline unsigned char cmos_read(unsigned char reg)"}, {"kind": "function", "line": 826, "name": "tls_now_days", "signature": "long tls_now_days(void)"}, {"kind": "function", "line": 64, "name": "number", "signature": "* The nonce_explicit is the sequence number (RFC 5288 allows it and * OpenSSL uses it);"}, {"kind": "macro", "line": 809, "name": "PORT_IO_DEFINED", "signature": "#define PORT_IO_DEFINED"}]}, {"doc": "tls_crypto.c - the crypto behind the kernel TLS 1.2 client.", "id": "net/tls_crypto.c", "kind": "module", "label": "tls_crypto.c", "language": "c", "sha256": "24c29591939a35d0", "symbol_count": 78, "symbols": [{"kind": "struct", "line": 655, "name": "mont_ctx"}, {"kind": "struct", "line": 838, "name": "ec_curve"}, {"doc": "Jacobian point: three coordinates in Montgomery domain, nw words each. * The point at infinity has Z = 0.", "kind": "struct", "line": 859, "name": "jpt"}, {"kind": "struct", "line": 316, "name": "gf128"}, {"kind": "function", "line": 33, "name": "sha256_rotr", "signature": "static unsigned sha256_rotr(unsigned x, unsigned n)"}, {"kind": "function", "line": 37, "name": "sha256_init", "signature": "void sha256_init(struct sha256_ctx *c)"}, {"kind": "function", "line": 50, "name": "sha256_block", "signature": "static void sha256_block(struct sha256_ctx *c, const unsigned char *p)"}, {"kind": "function", "line": 80, "name": "sha256_update", "signature": "void sha256_update(struct sha256_ctx *c, const unsigned char *data, unsigned len)"}, {"kind": "function", "line": 105, "name": "sha256_final", "signature": "void sha256_final(struct sha256_ctx *c, unsigned char out[32])"}, {"kind": "function", "line": 126, "name": "sha256", "signature": "void sha256(const unsigned char *data, unsigned len, unsigned char out[32])"}, {"kind": "function", "line": 135, "name": "hmac_sha256", "signature": "void hmac_sha256(const unsigned char *key, unsigned klen,\n const unsigned char *d..."}, {"kind": "function", "line": 165, "name": "p_hash", "signature": "static void p_hash(const unsigned char *secret, unsigned secret_len,\n const uns..."}, {"kind": "function", "line": 188, "name": "tls_prf", "signature": "void tls_prf(const unsigned char *secret, unsigned secret_len,\n const char *label, co..."}, {"kind": "function", "line": 230, "name": "aes_xtime", "signature": "static unsigned aes_xtime(unsigned x)"}, {"kind": "function", "line": 235, "name": "aes_key_expand", "signature": "static void aes_key_expand(const unsigned char key[16], unsigned rk[44])"}, {"kind": "function", "line": 253, "name": "aes_mixcol", "signature": "static void aes_mixcol(unsigned a0, unsigned a1, unsigned a2, unsigned a3,\n ..."}, {"kind": "function", "line": 263, "name": "aes128_encrypt_block", "signature": "void aes128_encrypt_block(const unsigned char key[16],\n const unsigned c..."}, {"kind": "function", "line": 321, "name": "gf_shift_right", "signature": "static gf128 gf_shift_right(gf128 v)"}, {"doc": "z = z * h, in GF(2^128), MSB-first. Branches on z bits (public: * AAD/ciphertext), never on h bits (secret).", "kind": "function", "line": 334, "name": "gf_mul", "signature": "static gf128 gf_mul(gf128 z, gf128 h)"}, {"kind": "function", "line": 351, "name": "gf_put", "signature": "static gf128 gf_put(const unsigned char *p)"}, {"kind": "function", "line": 361, "name": "ghash_blocks", "signature": "static gf128 ghash_blocks(gf128 z, gf128 h, const unsigned char *data, unsigned len)"}, {"doc": "if (len > 0) { unsigned char pad[16]; gf128 b; TLS_MEMSET(pad, 0, 16); TLS_MEMCPY(pad, data, len); b = gf_put(pad); z.lo ^= b.lo; z.hi ^= b.hi; z = gf_mul(z, h); } return z; } /* Compute GCM tag for aad || ct (ct already ciphertext).", "kind": "function", "line": 384, "name": "gcm_tag_core", "signature": "static void gcm_tag_core(const unsigned char key[16],\n const unsigned cha..."}, {"kind": "function", "line": 427, "name": "gcm_ctr_core", "signature": "static void gcm_ctr_core(const unsigned char key[16],\n const unsigned cha..."}, {"doc": "TLS_MEMCPY(blk, nonce, 12); blk[12] = (unsigned char)(ctr >> 24); blk[13] = (unsigned char)(ctr >> 16); blk[14] = (unsigned char)(ctr >> 8); blk[15] = (unsigned char)(ctr); aes128_encrypt_block(key, blk, crypt); if (take > 16) take = 16; for (i = 0; i < (int)take; i++) out[off + i] = in[off + i] ^ crypt[i]; off += take; ctr++; } } /* TLS nonce: 4-byte implicit salt || 8-byte sequence number.", "kind": "function", "line": 450, "name": "tls_nonce", "signature": "static void tls_nonce(const unsigned char salt[4], unsigned long long seq,\n ..."}, {"kind": "function", "line": 457, "name": "gcm_tag", "signature": "static void gcm_tag(const unsigned char key[16], const unsigned char salt[4],\n ..."}, {"kind": "function", "line": 467, "name": "gcm_ctr", "signature": "static void gcm_ctr(const unsigned char key[16], const unsigned char salt[4],\n ..."}, {"kind": "function", "line": 475, "name": "aes128_gcm_seal", "signature": "int aes128_gcm_seal(const unsigned char key[16],\n const unsigned char salt[4],..."}, {"kind": "function", "line": 487, "name": "aes128_gcm_open", "signature": "int aes128_gcm_open(const unsigned char key[16],\n const unsigned char salt[4],..."}, {"kind": "function", "line": 505, "name": "aes128_gcm_seal_core", "signature": "int aes128_gcm_seal_core(const unsigned char key[16],\n const unsigned cha..."}, {"kind": "function", "line": 516, "name": "aes128_gcm_open_core", "signature": "int aes128_gcm_open_core(const unsigned char key[16],\n const unsigned cha..."}, {"kind": "function", "line": 537, "name": "bn_zero", "signature": "static void bn_zero(unsigned *a, int nw)"}, {"kind": "function", "line": 542, "name": "bn_is_zero", "signature": "static int bn_is_zero(const unsigned *a, int nw)"}, {"kind": "function", "line": 549, "name": "bn_cmp", "signature": "static int bn_cmp(const unsigned *a, const unsigned *b, int nw)"}, {"doc": "for (i = 0; i < nw; i++) v |= a[i]; return v == 0; } static int bn_cmp(const unsigned *a, const unsigned *b, int nw) { int i; for (i = nw - 1; i >= 0; i--) { if (a[i] < b[i]) return -1; if (a[i] > b[i]) return 1; } return 0; } /* r = a + b; returns carry out.", "kind": "function", "line": 559, "name": "bn_add", "signature": "static unsigned bn_add(const unsigned *a, const unsigned *b, unsigned *r, int nw)"}, {"doc": "/* r = a + b; returns carry out. static unsigned bn_add(const unsigned *a, const unsigned *b, unsigned *r, int nw) { unsigned long long carry = 0; int i; for (i = 0; i < nw; i++) { unsigned long long t = (unsigned long long)a[i] + b[i] + carry; r[i] = (unsigned)t; carry = t >> 32; } return (unsigned)carry; } /* r = a - b; a must be >= b; returns borrow (0 = fine).", "kind": "function", "line": 571, "name": "bn_sub", "signature": "static unsigned bn_sub(const unsigned *a, const unsigned *b, unsigned *r, int nw)"}, {"doc": "r = 2a mod n, for a < n. v = 2^(32nw) mod n = 2^(32nw) - n (the * Montgomery \"one\"): 2a + carry means 2a - 2^(32nw) + v = 2a - n < n.", "kind": "function", "line": 584, "name": "bn_dbl_mod", "signature": "static void bn_dbl_mod(const unsigned *a, const unsigned *n, const unsigned *v,\n ..."}, {"doc": "Montgomery multiplication. n is odd, n0inv = -n^(-1) mod 2^32. r = a*b*R^-1 mod n, R = 2^(32nw). * a, b < n.", "kind": "function", "line": 596, "name": "bn_mont_mul", "signature": "static void bn_mont_mul(const unsigned *a, const unsigned *b, const unsigned *n,\n ..."}, {"doc": "carry = v >> 32; } s = (unsigned long long)t[nw] + carry; t[nw - 1] = (unsigned)s; t[nw] = t[nw + 1] + (unsigned)(s >> 32); } if (t[nw] || bn_cmp(t, n, nw) >= 0) { bn_sub(t, n, r, nw); } else { for (i = 0; i < nw; i++) r[i] = t[i]; } } /* -n^(-1) mod 2^32 via Newton iteration (n0 must be odd).", "kind": "function", "line": 635, "name": "bn_mont_n0inv", "signature": "static unsigned bn_mont_n0inv(unsigned n0)"}, {"doc": "} else { for (i = 0; i < nw; i++) r[i] = t[i]; } } /* -n^(-1) mod 2^32 via Newton iteration (n0 must be odd). static unsigned bn_mont_n0inv(unsigned n0) { unsigned inv = 1; int i; for (i = 0; i < 5; i++) inv *= 2 - n0 * inv; return 0 - inv; } /* R^2 mod n, R = 2^(32nw): 64*nw doublings from 1.", "kind": "function", "line": 643, "name": "bn_mont_r2", "signature": "static void bn_mont_r2(const unsigned *n, const unsigned *v, int nw,\n unsig..."}, {"kind": "function", "line": 663, "name": "bn_from_be", "signature": "static void bn_from_be(const unsigned char *bytes, unsigned len,\n unsigned ..."}, {"kind": "function", "line": 671, "name": "bn_to_be", "signature": "static void bn_to_be(const unsigned *a, unsigned char *out, unsigned len)"}, {"kind": "function", "line": 677, "name": "mont_init", "signature": "static void mont_init(struct mont_ctx *m, const unsigned char *p_bytes,\n uns..."}, {"kind": "function", "line": 689, "name": "mont_to", "signature": "static void mont_to(struct mont_ctx *m, const unsigned *a, unsigned *r)"}, {"kind": "function", "line": 693, "name": "mont_from", "signature": "static void mont_from(struct mont_ctx *m, const unsigned *a, unsigned *r)"}, {"kind": "function", "line": 700, "name": "mont_mul", "signature": "static void mont_mul(struct mont_ctx *m, const unsigned *a, const unsigned *b,\n ..."}, {"kind": "function", "line": 705, "name": "mont_sqr", "signature": "static void mont_sqr(struct mont_ctx *m, const unsigned *a, unsigned *r)"}, {"doc": "Field add/sub over the mont modulus (in Montgomery domain). The carry of a+b is corrected with one = 2^(32nw) - n, and a - b < 0 is * p - (b - a); neither path can overflow one word.", "kind": "function", "line": 712, "name": "mont_add", "signature": "static void mont_add(struct mont_ctx *m, const unsigned *a, const unsigned *b,\n ..."}, {"kind": "function", "line": 721, "name": "mont_sub", "signature": "static void mont_sub(struct mont_ctx *m, const unsigned *a, const unsigned *b,\n ..."}, {"doc": "Field inverse via Fermat: a^(p-2) mod p (a in Montgomery domain; * the result stays in Montgomery domain).", "kind": "function", "line": 736, "name": "mont_inv", "signature": "static void mont_inv(struct mont_ctx *m, const unsigned *a, unsigned *r)"}, {"kind": "function", "line": 848, "name": "ec_init", "signature": "static void ec_init(struct ec_curve *c, const unsigned char *p,\n const unsigne..."}, {"kind": "function", "line": 865, "name": "jpt_is_inf", "signature": "static int jpt_is_inf(const struct jpt *p, int nw)"}, {"kind": "function", "line": 869, "name": "jpt_set_inf", "signature": "static void jpt_set_inf(struct jpt *p, int nw)"}, {"kind": "function", "line": 875, "name": "jpt_copy", "signature": "static void jpt_copy(struct jpt *d, const struct jpt *s, int nw)"}, {"doc": "bn_zero(p->y, nw); bn_zero(p->z, nw); } static void jpt_copy(struct jpt *d, const struct jpt *s, int nw) { int i; for (i = 0; i < nw; i++) { d->x[i] = s->x[i]; d->y[i] = s->y[i]; d->z[i] = s->z[i]; } } /* Constant-time swap of two points on a 0/~0 mask.", "kind": "function", "line": 885, "name": "jpt_cswap", "signature": "static void jpt_cswap(struct jpt *a, struct jpt *b, unsigned mask, int nw)"}, {"doc": "} /* Constant-time swap of two points on a 0/~0 mask. static void jpt_cswap(struct jpt *a, struct jpt *b, unsigned mask, int nw) { int i; for (i = 0; i < nw; i++) { unsigned t; t = (a->x[i] ^ b->x[i]) & mask; a->x[i] ^= t; b->x[i] ^= t; t = (a->y[i] ^ b->y[i]) & mask; a->y[i] ^= t; b->y[i] ^= t; t = (a->z[i] ^ b->z[i]) & mask; a->z[i] ^= t; b->z[i] ^= t; } } /* P3 = 2 * P1 (a = p - 3: E = 3(A - Z1^4)).", "kind": "function", "line": 896, "name": "jpt_dbl", "signature": "static void jpt_dbl(struct ec_curve *c, const struct jpt *p1, struct jpt *p3)"}, {"doc": "mont_sqr(m, E, F); mont_add(m, D, D, t); /* 2D mont_sub(m, F, t, p3->x); /* X3 = F - 2D mont_sub(m, D, p3->x, t); mont_mul(m, E, t, t2); mont_add(m, C, C, t); mont_add(m, t, t, t); mont_add(m, t, t, t); /* 8C mont_sub(m, t2, t, p3->y); /* Y3 = E(D-X3) - 8C mont_mul(m, p1->y, p1->z, YZ); mont_add(m, YZ, YZ, p3->z); /* Z3 = 2YZ } /* P3 = P1 + P2 (generic Jacobian add).", "kind": "function", "line": 936, "name": "jpt_add", "signature": "static void jpt_add(struct ec_curve *c, const struct jpt *p1, const struct jpt *p2,\n ..."}, {"doc": "Constant-iteration scalar multiplication: the classic ladder. * Fixed iteration count, no table lookups indexed by secret bits.", "kind": "function", "line": 980, "name": "jpt_scalar_mult", "signature": "static void jpt_scalar_mult(struct ec_curve *c, const struct jpt *base,\n ..."}, {"doc": "Affine from Jacobian: x = X/Z^2, y = Y/Z^3. Bytes out are big-endian. * y_out may be NULL when only the x coordinate is wanted.", "kind": "function", "line": 1007, "name": "jpt_to_affine", "signature": "static void jpt_to_affine(struct ec_curve *c, const struct jpt *p,\n unsi..."}, {"doc": "Affine from bytes with on-curve validation. Returns 0 when the point * is valid and not the point at infinity.", "kind": "function", "line": 1032, "name": "jpt_from_affine", "signature": "static int jpt_from_affine(struct ec_curve *c, const unsigned char *x_bytes,\n ..."}, {"kind": "function", "line": 1076, "name": "ec_curve_by_id", "signature": "static struct ec_curve *ec_curve_by_id(int curve)"}, {"kind": "function", "line": 1080, "name": "ec_boot", "signature": "static void ec_boot(void)"}, {"kind": "function", "line": 1088, "name": "p256_scalar_mult", "signature": "int p256_scalar_mult(const unsigned char scalar[32],\n const unsigned char qx[..."}, {"kind": "function", "line": 1101, "name": "p384_scalar_mult", "signature": "int p384_scalar_mult(const unsigned char scalar[48],\n const unsigned char qx[..."}, {"kind": "function", "line": 1114, "name": "p256_ecdh", "signature": "int p256_ecdh(const unsigned char priv[32],\n const unsigned char peer_x[32], const u..."}, {"kind": "function", "line": 1129, "name": "der_parse_sig", "signature": "static int der_parse_sig(const unsigned char *sig, unsigned sig_len,\n con..."}, {"kind": "function", "line": 1163, "name": "ecdsa_verify", "signature": "int ecdsa_verify(int curve, const unsigned char pub_x[], const unsigned char pub_y[],\n ..."}, {"doc": "EMSA-PKCS1-v1_5 DigestInfo check for an arbitrary hash: the encoding is 00 01 FF.. 00 . Constant-time: every byte of the * encoding contributes to the diff.", "kind": "function", "line": 1261, "name": "rsa_verify_digestinfo", "signature": "static int rsa_verify_digestinfo(const unsigned char *em, unsigned em_len,\n ..."}, {"doc": "diff |= em[i] ^ 0xff; } if (i >= em_len) return -1; /* no separator if (i < 10) return -1; /* padding too short (RFC 8017) i++; if (em_len - i != prefix_len + digest_len) return -1; for (i = 0; i < prefix_len; i++) diff |= em[em_len - prefix_len - digest_len + i] ^ prefix[i]; for (i = 0; i < digest_len; i++) diff |= em[em_len - digest_len + i] ^ digest[i]; return diff ? -1 : 0; } /* Shared RSA PKCS#1 v1.5 core: m^e mod n, EMSA-PKCS1-v1_5 in em.", "kind": "function", "line": 1285, "name": "rsa_pkcs1_verify_raw", "signature": "static int rsa_pkcs1_verify_raw(const unsigned char *n, unsigned n_len,\n ..."}, {"kind": "function", "line": 1326, "name": "rsa_pkcs1_verify_sha256", "signature": "int rsa_pkcs1_verify_sha256(const unsigned char *n, unsigned n_len,\n c..."}, {"kind": "function", "line": 1340, "name": "rsa_pkcs1_verify_sha384", "signature": "int rsa_pkcs1_verify_sha384(const unsigned char *n, unsigned n_len,\n c..."}, {"kind": "function", "line": 1386, "name": "sha384_rotr", "signature": "static unsigned long long sha384_rotr(unsigned long long x, unsigned n)"}, {"kind": "function", "line": 1390, "name": "sha384_raw", "signature": "static void sha384_raw(const unsigned char *data, unsigned len,\n unsigned c..."}, {"kind": "function", "line": 1506, "name": "sha384", "signature": "void sha384(const unsigned char *data, unsigned len, unsigned char out[48])"}, {"kind": "function", "line": 1512, "name": "p256_point_valid", "signature": "int p256_point_valid(const unsigned char x[32], const unsigned char y[32])"}, {"kind": "function", "line": 1520, "name": "p256_pub", "signature": "int p256_pub(const unsigned char priv[32],\n unsigned char x[32], unsigned char y[32])"}, {"kind": "function", "line": 1539, "name": "p256_scalar_valid", "signature": "int p256_scalar_valid(const unsigned char scalar[32])"}, {"kind": "function", "line": 326, "name": "word", "signature": "* of the low word (hi holds bits 64..127, lo bits 0..63). Masked in, * so the shift never branches on key bits. */ r.hi = (v.hi >> 1) ^ (0xE100000000000000ULL & mask);"}, {"kind": "macro", "line": 535, "name": "TLS_BN_WORDS", "signature": "#define TLS_BN_WORDS"}]}, {"doc": "tls_x509.c - minimal X.509 DER parsing and chain verification.", "id": "net/tls_x509.c", "kind": "module", "label": "tls_x509.c", "language": "c", "sha256": "4a5fd793c528ef14", "symbol_count": 23, "symbols": [{"kind": "struct", "line": 43, "name": "der_tlv"}, {"kind": "struct", "line": 129, "name": "x509_name"}, {"kind": "struct", "line": 172, "name": "x509_sans"}, {"kind": "struct", "line": 265, "name": "x509_cert"}, {"kind": "function", "line": 36, "name": "oid_eq", "signature": "static int oid_eq(const unsigned char *bytes, unsigned len,\n const unsigned char..."}, {"doc": "Parse the TLV at p[pos]; advances pos to the first byte after it. * Returns 0 on success, -1 on any bound violation.", "kind": "function", "line": 51, "name": "der_next", "signature": "static int der_next(const unsigned char *p, unsigned limit, unsigned *pos,\n st..."}, {"doc": "len = (len << 8) | p[(*pos)++]; } } else { len = p[(*pos)++]; } if (len > limit - *pos) return -1; out->val = p + *pos; out->len = len; out->tag = tag; pos += len; return 0; } /* A constructed SEQUENCE/SET whose content must parse as children.", "kind": "function", "line": 82, "name": "der_container", "signature": "static int der_container(const unsigned char *p, unsigned limit, unsigned *pos,\n ..."}, {"kind": "function", "line": 94, "name": "days_from_civil", "signature": "static long days_from_civil(int y, int m, int d)"}, {"doc": "/* ---- Time ---- static long days_from_civil(int y, int m, int d) { long era, doe, yoe; int doy; y -= m <= 2 ? 1 : 0; era = (y >= 0 ? y : y - 399) / 400; yoe = y - (int)era * 400; doy = (153 * (m + (m > 2 ? -3 : 9)) + 2) / 5 + d - 1; doe = (long)yoe * 365 + yoe / 4 - yoe / 100 + doy; return era * 146097 + doe - 719468; } /* UTCTime / GeneralizedTime \"....Z\" -> days since epoch, or -1.", "kind": "function", "line": 106, "name": "der_time_to_days", "signature": "static long der_time_to_days(const struct der_tlv *t)"}, {"doc": "} if (mon < 1 || mon > 12 || day < 1 || day > 31 || year < 1970 || year > 2100) return -1; return days_from_civil(year, mon, day); } /* ---- Name / extensions ---- struct x509_name { unsigned char cn[64]; unsigned cn_len; }; /* Find the first CN in an RDNSequence. Returns 0 when found.", "kind": "function", "line": 135, "name": "name_find_cn", "signature": "static int name_find_cn(const unsigned char *p, unsigned limit,\n struct x5..."}, {"kind": "function", "line": 178, "name": "san_add", "signature": "static void san_add(struct x509_sans *out, const unsigned char *v, unsigned len)"}, {"doc": "struct x509_sans { unsigned char dns[TLS_SAN_MAX][64]; unsigned len[TLS_SAN_MAX]; int count; }; static void san_add(struct x509_sans *out, const unsigned char *v, unsigned len) { if (out->count >= TLS_SAN_MAX || len >= 64) return; TLS_MEMCPY(out->dns[out->count], v, len); out->len[out->count] = len; out->count++; } /* Walk the SAN extension (2.5.29.17) OCTET STRING body.", "kind": "function", "line": 186, "name": "san_parse", "signature": "static void san_parse(const unsigned char *p, unsigned limit,\n struct x509_s..."}, {"doc": "unsigned seq_len, pos = 0; out->count = 0; if (der_container(p, limit, &pos, &seq, &seq_len) != 0) return; pos = 0; while (pos < seq_len) { struct der_tlv t; if (der_next(seq, seq_len, &pos, &t) != 0) return; if (t.tag == 0x82) san_add(out, t.val, t.len); /* dNSName } } /* ---- Public key ---- /* SPKI SEQUENCE content: { alg SEQUENCE { OID, params }, BIT STRING }.", "kind": "function", "line": 203, "name": "spki_parse", "signature": "static int spki_parse(const unsigned char *p, unsigned limit,\n struct tls_pu..."}, {"kind": "function", "line": 279, "name": "cert_parse", "signature": "static int cert_parse(const unsigned char *der, unsigned len,\n struct x509_c..."}, {"kind": "function", "line": 392, "name": "ascii_lower", "signature": "static int ascii_lower(int c)"}, {"doc": "} } } } return 0; } /* ---- Hostname matching ---- static int ascii_lower(int c) { return (c >= 'A' && c <= 'Z') ? c + ('a' - 'A') : c; } /* Exact match, ASCII case-insensitive.", "kind": "function", "line": 397, "name": "host_match_exact", "signature": "static int host_match_exact(const char *host, const unsigned char *name,\n ..."}, {"doc": "Wildcard: \"*.example.com\" matches exactly one label (\"a.example.com\", * never \"a.b.example.com\" nor \"example.com\").", "kind": "function", "line": 410, "name": "host_match_wildcard", "signature": "static int host_match_wildcard(const char *host, const unsigned char *name,\n ..."}, {"kind": "function", "line": 431, "name": "host_matches", "signature": "static int host_matches(const char *host, const struct x509_cert *leaf)"}, {"kind": "function", "line": 452, "name": "tls_x509_parse_pubkey", "signature": "int tls_x509_parse_pubkey(const unsigned char *der, unsigned len,\n struc..."}, {"doc": "Trust anchors are matched by public key, not by self-signature: a presented root is often a cross-signed copy (signed by a legacy root, e.g. the SSL.com 2022 roots are signed by Comodo AAA), so checking its signature against its own key would reject a perfectly valid anchor. Key equality is safe because every link above the top is still signature-verified: an attacker cannot present a top cert carrying an embedded root's public key unless the chain below it was signed with * that root's private key.", "kind": "function", "line": 468, "name": "pubkey_equal", "signature": "static int pubkey_equal(const struct tls_pubkey *a, const struct tls_pubkey *b)"}, {"doc": "signature-verified: an attacker cannot present a top cert carrying an embedded root's public key unless the chain below it was signed with * that root's private key. static int pubkey_equal(const struct tls_pubkey *a, const struct tls_pubkey *b) { if (a->kind != b->kind) return 0; if (a->kind == 0) return a->n_len == b->n_len && a->e_len == b->e_len && TLS_MEMCMP(a->n, b->n, a->n_len) == 0 && TLS_MEMCMP(a->e, b->e, a->e_len) == 0; return TLS_MEMCMP(a->qx, b->qx, 48) == 0 && TLS_MEMCMP(a->qy, b->qy, 48) == 0; } /* Verify one certificate's signature with an issuer public key.", "kind": "function", "line": 479, "name": "cert_verify_signature", "signature": "static int cert_verify_signature(const struct x509_cert *cert,\n c..."}, {"kind": "function", "line": 521, "name": "tls_x509_verify_chain", "signature": "int tls_x509_verify_chain(const unsigned char *chain, unsigned chain_len,\n ..."}, {"kind": "macro", "line": 170, "name": "TLS_SAN_MAX", "signature": "#define TLS_SAN_MAX"}]}, {"id": "progs/asm/aes.s", "kind": "module", "label": "aes.s", "language": "s", "sha256": "eae59188672f84c8", "symbol_count": 28, "symbols": [{"kind": "function", "line": 3, "name": "aes_rk"}, {"kind": "function", "line": 7, "name": "aes_sb"}, {"kind": "function", "line": 11, "name": "aes_rc"}, {"kind": "function", "line": 15, "name": "aes_st"}, {"kind": "function", "line": 19, "name": "aes_iv"}, {"kind": "function", "line": 23, "name": "aes_read_all"}, {"kind": "function", "line": 238, "name": "aes_write_all"}, {"kind": "function", "line": 345, "name": "aes_has"}, {"kind": "function", "line": 498, "name": "hex_val"}, {"kind": "function", "line": 620, "name": "aes_parse_hex"}, {"kind": "function", "line": 783, "name": "aes_gf_mul"}, {"kind": "function", "line": 884, "name": "aes_xtime"}, {"kind": "function", "line": 933, "name": "aes_rotl8"}, {"kind": "function", "line": 970, "name": "aes_init_tables"}, {"kind": "function", "line": 1197, "name": "aes_key_expand"}, {"kind": "function", "line": 1646, "name": "aes_add_round_key"}, {"kind": "function", "line": 1721, "name": "aes_sub_bytes"}, {"kind": "function", "line": 1774, "name": "aes_shift_rows"}, {"kind": "function", "line": 1993, "name": "aes_mix_columns"}, {"kind": "function", "line": 2466, "name": "aes_cipher"}, {"kind": "function", "line": 2565, "name": "aes_iv_increment"}, {"kind": "function", "line": 2648, "name": "aes_ctr_crypt"}, {"kind": "function", "line": 2791, "name": "aes_hdr_put"}, {"kind": "function", "line": 2906, "name": "aes_hdr_get"}, {"kind": "function", "line": 3059, "name": "aes_tool_name"}, {"kind": "function", "line": 3077, "name": "aes_run"}, {"kind": "function", "line": 3799, "name": "main"}, {"kind": "function", "line": 4105, "name": "_start"}]}, {"id": "progs/asm/cp.s", "kind": "module", "label": "cp.s", "language": "s", "sha256": "706a59cf1d9ea9f3", "symbol_count": 2, "symbols": [{"kind": "function", "line": 3, "name": "main"}, {"kind": "function", "line": 322, "name": "_start"}]}, {"id": "progs/asm/fib.s", "kind": "module", "label": "fib.s", "language": "s", "sha256": "e4cc2d98e3d0b67f", "symbol_count": 3, "symbols": [{"kind": "function", "line": 3, "name": "fib"}, {"kind": "function", "line": 61, "name": "main"}, {"kind": "function", "line": 82, "name": "_start"}]}, {"id": "progs/asm/freedom.s", "kind": "module", "label": "freedom.s", "language": "s", "sha256": "f3272f8af5aeb5fa", "symbol_count": 92, "symbols": [{"kind": "function", "line": 3, "name": "tls_close"}, {"kind": "function", "line": 24, "name": "f_host"}, {"kind": "function", "line": 28, "name": "f_path"}, {"kind": "function", "line": 32, "name": "f_port"}, {"kind": "function", "line": 36, "name": "f_secure"}, {"kind": "function", "line": 40, "name": "f_loc"}, {"kind": "function", "line": 44, "name": "f_redir"}, {"kind": "function", "line": 48, "name": "f_status"}, {"kind": "function", "line": 52, "name": "f_clen"}, {"kind": "function", "line": 56, "name": "f_has_clen"}, {"kind": "function", "line": 60, "name": "f_chunked"}, {"kind": "function", "line": 64, "name": "f_hdr"}, {"kind": "function", "line": 68, "name": "f_hlen"}, {"kind": "function", "line": 72, "name": "f_tag"}, {"kind": "function", "line": 76, "name": "f_suppress"}, {"kind": "function", "line": 80, "name": "f_comment"}, {"kind": "function", "line": 84, "name": "f_cmdash"}, {"kind": "function", "line": 88, "name": "f_tagn"}, {"kind": "function", "line": 92, "name": "f_tagnlen"}, {"kind": "function", "line": 96, "name": "f_ent"}, {"kind": "function", "line": 100, "name": "f_entlen"}, {"kind": "function", "line": 104, "name": "f_ws"}, {"kind": "function", "line": 108, "name": "f_utbuf"}, {"kind": "function", "line": 112, "name": "f_utlen"}, {"kind": "function", "line": 116, "name": "f_utrem"}, {"kind": "function", "line": 120, "name": "f_attr_on"}, {"kind": "function", "line": 124, "name": "f_waitq"}, {"kind": "function", "line": 128, "name": "f_inval"}, {"kind": "function", "line": 132, "name": "f_inval2"}, {"kind": "function", "line": 136, "name": "f_attr"}, {"kind": "function", "line": 140, "name": "f_attrlen"}, {"kind": "function", "line": 144, "name": "f_val"}, {"kind": "function", "line": 148, "name": "f_vallen"}, {"kind": "function", "line": 152, "name": "f_id"}, {"kind": "function", "line": 156, "name": "f_idlen"}, {"kind": "function", "line": 160, "name": "f_cls"}, {"kind": "function", "line": 164, "name": "f_clslen"}, {"kind": "function", "line": 168, "name": "f_href"}, {"kind": "function", "line": 172, "name": "f_hreflen"}, {"kind": "function", "line": 176, "name": "f_rel_ss"}, {"kind": "function", "line": 180, "name": "f_styleattr"}, {"kind": "function", "line": 184, "name": "f_stylelen"}, {"kind": "function", "line": 188, "name": "f_dump_css"}, {"kind": "function", "line": 192, "name": "f_dump_dom"}, {"kind": "function", "line": 196, "name": "f_mode"}, {"kind": "function", "line": 200, "name": "f_rawcap"}, {"kind": "function", "line": 204, "name": "f_depth"}, {"kind": "function", "line": 208, "name": "f_dom"}, {"kind": "function", "line": 212, "name": "f_domlen"}, {"kind": "function", "line": 216, "name": "f_css"}, {"kind": "function", "line": 220, "name": "f_csslen"}, {"kind": "function", "line": 224, "name": "f_linkhost"}, {"kind": "function", "line": 228, "name": "f_linkpath"}, {"kind": "function", "line": 232, "name": "f_linkn"}, {"kind": "function", "line": 236, "name": "f_cstage"}, {"kind": "function", "line": 240, "name": "f_csize"}, {"kind": "function", "line": 244, "name": "f_crem"}, {"kind": "function", "line": 248, "name": "f_bdone"}, {"kind": "function", "line": 252, "name": "atoi"}, {"kind": "function", "line": 338, "name": "append"}, {"kind": "function", "line": 437, "name": "ci_lower"}, {"kind": "function", "line": 486, "name": "ci_starts"}, {"kind": "function", "line": 559, "name": "ci_eq"}, {"kind": "function", "line": 656, "name": "ci_index"}, {"kind": "function", "line": 715, "name": "looks_like_url"}, {"kind": "function", "line": 789, "name": "has_scheme"}, {"kind": "function", "line": 1064, "name": "make_search"}, {"kind": "function", "line": 1295, "name": "split_url"}, {"kind": "function", "line": 1810, "name": "resolve_redirect"}, {"kind": "function", "line": 2333, "name": "put_ws"}, {"kind": "function", "line": 2379, "name": "put_utf"}, {"kind": "function", "line": 2915, "name": "put_text"}, {"kind": "function", "line": 3018, "name": "put_entity"}, {"kind": "function", "line": 3849, "name": "css_append"}, {"kind": "function", "line": 3920, "name": "css_line"}, {"kind": "function", "line": 3978, "name": "dom_append"}, {"kind": "function", "line": 4049, "name": "dom_space"}, {"kind": "function", "line": 4083, "name": "dom_nl"}, {"kind": "function", "line": 4117, "name": "record_attr"}, {"kind": "function", "line": 4449, "name": "is_void_tag"}, {"kind": "function", "line": 4757, "name": "classify_tag"}, {"kind": "function", "line": 5961, "name": "body_byte"}, {"kind": "function", "line": 7203, "name": "head_line"}, {"kind": "function", "line": 7460, "name": "parse_head"}, {"kind": "function", "line": 7676, "name": "recv_body"}, {"kind": "function", "line": 7736, "name": "send_all"}, {"kind": "function", "line": 7810, "name": "fetch"}, {"kind": "function", "line": 9293, "name": "fetch_css"}, {"kind": "function", "line": 10112, "name": "print_css_dump"}, {"kind": "function", "line": 10212, "name": "print_dom_dump"}, {"kind": "function", "line": 10291, "name": "main"}, {"kind": "function", "line": 11761, "name": "_start"}]}, {"id": "progs/asm/http.s", "kind": "module", "label": "http.s", "language": "s", "sha256": "e98adee542f76a0b", "symbol_count": 3, "symbols": [{"kind": "function", "line": 3, "name": "atoi"}, {"kind": "function", "line": 89, "name": "main"}, {"kind": "function", "line": 709, "name": "_start"}]}, {"id": "progs/asm/json.s", "kind": "module", "label": "json.s", "language": "s", "sha256": "4a66fc11784c36e4", "symbol_count": 32, "symbols": [{"kind": "function", "line": 3, "name": "js_key"}, {"kind": "function", "line": 7, "name": "js_str"}, {"kind": "function", "line": 11, "name": "js_type"}, {"kind": "function", "line": 15, "name": "js_num"}, {"kind": "function", "line": 19, "name": "js_first"}, {"kind": "function", "line": 23, "name": "js_count"}, {"kind": "function", "line": 27, "name": "js_next"}, {"kind": "function", "line": 31, "name": "js_n"}, {"kind": "function", "line": 35, "name": "js_pool"}, {"kind": "function", "line": 39, "name": "js_plen"}, {"kind": "function", "line": 43, "name": "js_src"}, {"kind": "function", "line": 47, "name": "js_pos"}, {"kind": "function", "line": 51, "name": "js_len"}, {"kind": "function", "line": 55, "name": "js_err"}, {"kind": "function", "line": 59, "name": "js_read_all"}, {"kind": "function", "line": 274, "name": "js_new"}, {"kind": "function", "line": 306, "name": "js_skip_ws"}, {"kind": "function", "line": 397, "name": "js_peek"}, {"kind": "function", "line": 437, "name": "js_parse_string"}, {"kind": "function", "line": 851, "name": "js_parse_number"}, {"kind": "function", "line": 947, "name": "js_key_match"}, {"kind": "function", "line": 983, "name": "js_parse_object"}, {"kind": "function", "line": 1335, "name": "js_parse_array"}, {"kind": "function", "line": 1594, "name": "js_parse_value"}, {"kind": "function", "line": 2481, "name": "js_indent"}, {"kind": "function", "line": 2524, "name": "js_print_str"}, {"kind": "function", "line": 2747, "name": "js_print_value"}, {"kind": "function", "line": 3313, "name": "js_find_member"}, {"kind": "function", "line": 3391, "name": "js_array_at"}, {"kind": "function", "line": 3460, "name": "js_query"}, {"kind": "function", "line": 3772, "name": "main"}, {"kind": "function", "line": 4169, "name": "_start"}]}, {"id": "progs/asm/ldhello.s", "kind": "module", "label": "ldhello.s", "language": "s", "sha256": "1eda6c9f40c5f161", "symbol_count": 2, "symbols": [{"kind": "function", "line": 3, "name": "main"}, {"kind": "function", "line": 14, "name": "_start"}]}, {"id": "progs/asm/lz4.s", "kind": "module", "label": "lz4.s", "language": "s", "sha256": "682988aa1ccbc218", "symbol_count": 7, "symbols": [{"kind": "function", "line": 3, "name": "lz4_has"}, {"kind": "function", "line": 156, "name": "lz4_read_all"}, {"kind": "function", "line": 371, "name": "lz4_write_all"}, {"kind": "function", "line": 478, "name": "lz4_compress_file"}, {"kind": "function", "line": 791, "name": "lz4_decompress_file"}, {"kind": "function", "line": 1228, "name": "main"}, {"kind": "function", "line": 1535, "name": "_start"}]}, {"id": "progs/asm/lzss.s", "kind": "module", "label": "lzss.s", "language": "s", "sha256": "3ae03d757d901a84", "symbol_count": 30, "symbols": [{"kind": "function", "line": 3, "name": "lz_win"}, {"kind": "function", "line": 7, "name": "lz_src"}, {"kind": "function", "line": 11, "name": "lz_srclen"}, {"kind": "function", "line": 15, "name": "lz_srcpos"}, {"kind": "function", "line": 19, "name": "lz_dst"}, {"kind": "function", "line": 23, "name": "lz_dstcap"}, {"kind": "function", "line": 27, "name": "lz_dstlen"}, {"kind": "function", "line": 31, "name": "lz_err"}, {"kind": "function", "line": 35, "name": "lz_buf"}, {"kind": "function", "line": 39, "name": "lz_mask"}, {"kind": "function", "line": 43, "name": "lz_in_getc"}, {"kind": "function", "line": 79, "name": "lz_out_put"}, {"kind": "function", "line": 116, "name": "lz_putbit1"}, {"kind": "function", "line": 174, "name": "lz_putbit0"}, {"kind": "function", "line": 223, "name": "lz_flush_bits"}, {"kind": "function", "line": 251, "name": "lz_out_literal"}, {"kind": "function", "line": 321, "name": "lz_out_pair"}, {"kind": "function", "line": 447, "name": "lz_next_mb"}, {"kind": "function", "line": 451, "name": "lz_encode"}, {"kind": "function", "line": 1051, "name": "lz_getbit"}, {"kind": "function", "line": 1171, "name": "lz_decode"}, {"kind": "function", "line": 1514, "name": "lz_hdr_put"}, {"kind": "function", "line": 1629, "name": "lz_hdr_get"}, {"kind": "function", "line": 1782, "name": "lz_has"}, {"kind": "function", "line": 1935, "name": "lz_read_all"}, {"kind": "function", "line": 2150, "name": "lz_write_all"}, {"kind": "function", "line": 2257, "name": "lz_compress"}, {"kind": "function", "line": 2628, "name": "lz_decompress"}, {"kind": "function", "line": 3178, "name": "main"}, {"kind": "function", "line": 3497, "name": "_start"}]}, {"id": "progs/asm/w1.s", "kind": "module", "label": "w1.s", "language": "s", "sha256": "cfd7d7a01734e3a0", "symbol_count": 2, "symbols": [{"kind": "function", "line": 3, "name": "main"}, {"kind": "function", "line": 37, "name": "_start"}]}, {"doc": "doomedit.c - tile map editor that builds playable Doom PWADs.", "id": "progs/doomedit/doomedit.c", "kind": "module", "label": "doomedit.c", "language": "c", "sha256": "ca4038900eb5f0ce", "symbol_count": 108, "symbols": [{"doc": "Thing type ids from the engine mobjinfo table, each with its sprite * verified present in the shareware IWAD.", "kind": "function", "line": 165, "name": "dmap_thing_type", "signature": "static int dmap_thing_type(int cell)"}, {"kind": "function", "line": 272, "name": "dmap_push_history", "signature": "static void dmap_push_history(void)"}, {"kind": "function", "line": 289, "name": "dmap_undo", "signature": "static int dmap_undo(void)"}, {"kind": "function", "line": 307, "name": "dmap_redo", "signature": "static int dmap_redo(void)"}, {"doc": "dmap_undo_h[dmap_undo_top] = dmap_h; memcpy(dmap_undo_g[dmap_undo_top], dmap_grid, sizeof(dmap_grid)); dmap_undo_top++; } dmap_redo_top--; dmap_w = dmap_redo_w[dmap_redo_top]; dmap_h = dmap_redo_h[dmap_redo_top]; memcpy(dmap_grid, dmap_redo_g[dmap_redo_top], sizeof(dmap_grid)); dmap_anchor_active = 0; dmap_recenter(); return 0; } /** Single-cell paint keeping the one-player / one-exit invariant.", "kind": "function", "line": 326, "name": "dmap_apply_cell", "signature": "static void dmap_apply_cell(int r, int c, int brush)"}, {"doc": "if (brush == DMAP_PLAYER || brush == DMAP_EXIT) { for (rr = 0; rr < dmap_h; rr++) for (cc = 0; cc < dmap_w; cc++) if (dmap_grid[rr][cc] == brush) dmap_grid[rr][cc] = DMAP_FLOOR; } dmap_grid[r][c] = (char)brush; if (brush == DMAP_PLAYER) { dmap_px = (float)c + 0.5f; dmap_py = (float)r + 0.5f; } } /** 4-way flood fill of the connected region holding old_cell.", "kind": "function", "line": 344, "name": "dmap_flood_fill", "signature": "static void dmap_flood_fill(int sr, int sc, int new_cell)"}, {"doc": "if (nr < 0 || nc < 0 || nr >= dmap_h || nc >= dmap_w) continue; if (dmap_grid[nr][nc] != old_cell) continue; dmap_grid[nr][nc] = (char)new_cell; stack_r[top] = nr; stack_c[top] = nc; top++; } } dmap_level_sel = 0; } /** Bresenham line of cells, clipped to the grid.", "kind": "function", "line": 383, "name": "dmap_draw_line", "signature": "static void dmap_draw_line(int r0, int c0, int r1, int c1, int cell)"}, {"doc": "e2 = err; if (e2 > -dr) { err -= dc; r0 += sr; } if (e2 < dc) { err += dr; c0 += sc; } } dmap_level_sel = 0; } /** Hollow rectangle border between two corners, clipped to the grid.", "kind": "function", "line": 411, "name": "dmap_draw_rect", "signature": "static void dmap_draw_rect(int r0, int c0, int r1, int c1, int cell)"}, {"doc": "for (r = rt; r <= rb; r++) { if (r >= 0 && r < dmap_h && cl >= 0 && cl < dmap_w) { if (dmap_grid[r][cl] != DMAP_PLAYER && dmap_grid[r][cl] != DMAP_EXIT) dmap_grid[r][cl] = (char)cell; } if (r >= 0 && r < dmap_h && cr >= 0 && cr < dmap_w) { if (dmap_grid[r][cr] != DMAP_PLAYER && dmap_grid[r][cr] != DMAP_EXIT) dmap_grid[r][cr] = (char)cell; } } dmap_level_sel = 0; } /** BFS reachability from the player start; seen[] is 1 for reachable.", "kind": "function", "line": 440, "name": "dmap_reach_map", "signature": "static void dmap_reach_map(int seen[DMAP_MAX_H][DMAP_MAX_W])"}, {"doc": "int nr = cr + dirs[k][0], nc = cc + dirs[k][1]; if (nr < 0 || nc < 0 || nr >= dmap_h || nc >= dmap_w) continue; if (seen[nr][nc] || !dmap_walkable(dmap_grid[nr][nc])) continue; seen[nr][nc] = 1; stack_r[top] = nr; stack_c[top] = nc; top++; } } } /** Shortest walkable distance player -> exit in tiles, -1 when broken.", "kind": "function", "line": 480, "name": "dmap_path_len", "signature": "static int dmap_path_len(void)"}, {"doc": "if (nr < 0 || nc < 0 || nr >= dmap_h || nc >= dmap_w) continue; if (dist[nr][nc] >= 0 || !dmap_walkable(dmap_grid[nr][nc])) continue; dist[nr][nc] = dist[cr][cc] + 1; qr[tail] = nr; qc[tail] = nc; tail++; } } return -1; } /** Headless stats line for the panel: size, sectors, path, monsters.", "kind": "function", "line": 522, "name": "dmap_stats", "signature": "static void dmap_stats(char *out, int max)"}, {"doc": "} path = dmap_path_len(); if (dmap_validate(msg, sizeof(msg)) == 0) snprintf(out, (size_t)max, \"%dx%d %d sect path %d mon %d things %d\", dmap_w, dmap_h, dmap_nsectors, path, monsters, things); else snprintf(out, (size_t)max, \"%dx%d floor %d path - mon %d: %s\", dmap_w, dmap_h, floors, monsters, msg); } /** Forward: the validator lives below the level tables. static int dmap_validate(char *msg, int max); /** Run a program through SYS_SPAWN, preserving the editor.", "kind": "function", "line": 550, "name": "dmap_spawn", "signature": "static long dmap_spawn(const char *path, int argc, const char **argv)"}, {"doc": "static int dmap_validate(char *msg, int max); /** Run a program through SYS_SPAWN, preserving the editor. static long dmap_spawn(const char *path, int argc, const char **argv) { long ret; register long r10 __asm__(\"r10\") = (long)argv; __asm__ volatile(\"syscall\" : \"=a\"(ret) : \"a\"(MINIOS_SYS_SPAWN), \"D\"(path), \"S\"((long)0), \"d\"((long)argc), \"r\"(r10) : \"rcx\", \"r11\", \"memory\"); return ret; } /** Release or reclaim the display around a spawned child.", "kind": "function", "line": 561, "name": "dmap_vga", "signature": "static long dmap_vga(int on)"}, {"doc": ": \"rcx\", \"r11\", \"memory\"); return ret; } /** Release or reclaim the display around a spawned child. static long dmap_vga(int on) { long ret; __asm__ volatile(\"syscall\" : \"=a\"(ret) : \"a\"(MINIOS_SYS_VGA_MODE), \"D\"((long)on) : \"rcx\", \"r11\", \"memory\"); return ret; } /** True for solid cells; out of bounds counts as wall to stay closed.", "kind": "function", "line": 570, "name": "dmap_is_wall", "signature": "static int dmap_is_wall(int row, int col)"}, {"doc": "__asm__ volatile(\"syscall\" : \"=a\"(ret) : \"a\"(MINIOS_SYS_VGA_MODE), \"D\"((long)on) : \"rcx\", \"r11\", \"memory\"); return ret; } /** True for solid cells; out of bounds counts as wall to stay closed. static int dmap_is_wall(int row, int col) { if (row < 0 || col < 0 || row >= dmap_h || col >= dmap_w) return 1; return dmap_grid[row][col] == DMAP_WALL; } /** True for cells the player can stand on: floor, markers and things.", "kind": "function", "line": 577, "name": "dmap_walkable", "signature": "static int dmap_walkable(int cell)"}, {"doc": "/** True for solid cells; out of bounds counts as wall to stay closed. static int dmap_is_wall(int row, int col) { if (row < 0 || col < 0 || row >= dmap_h || col >= dmap_w) return 1; return dmap_grid[row][col] == DMAP_WALL; } /** True for cells the player can stand on: floor, markers and things. static int dmap_walkable(int cell) { return cell == DMAP_FLOOR || cell == DMAP_EXIT || cell == DMAP_DOOR || cell == DMAP_DARK || cell == DMAP_NUKE || dmap_thing_type(cell) > 0; } /** Sector class of a walkable cell: doors stand alone, styles never merge.", "kind": "function", "line": 583, "name": "dmap_cell_class", "signature": "static int dmap_cell_class(int cell)"}, {"doc": "} /** Sector class of a walkable cell: doors stand alone, styles never merge. static int dmap_cell_class(int cell) { if (cell == DMAP_DOOR) return 1; if (cell == DMAP_DARK) return 2; if (cell == DMAP_NUKE) return 3; return 0; } /** Canvas ink per cell category, so the palette reads at a glance.", "kind": "function", "line": 594, "name": "dmap_cell_color", "signature": "static struct nk_color dmap_cell_color(int cell)"}, {"doc": "case DMAP_RSUIT: case DMAP_CMAP: case DMAP_LAMP: return nk_rgb(200, 90, 200); case DMAP_KEYB: case DMAP_KEYR: case DMAP_KEYY: return nk_rgb(240, 240, 240); case DMAP_DOOR: return nk_rgb(220, 140, 40); case DMAP_DARK: return nk_rgb(40, 40, 56); case DMAP_NUKE: return nk_rgb(60, 160, 60); default: return nk_rgb(64, 64, 64); } } /** Fill the grid with floor and a solid border.", "kind": "function", "line": 639, "name": "dmap_new", "signature": "static void dmap_new(void)"}, {"doc": "\"########################\", \"#P.....####............#\", \"#..i...+......,,,,,....#\", \"#......####...,,,,,...E#\", \"#..m...#~~~#..,,,,,....#\", \"#......#~~~+....a......#\", \"#..s...#~~~#..d........#\", \"#......#~~~#...........#\", \"########################\", 0 } }; /** Move the preview camera onto the player start tile.", "kind": "function", "line": 804, "name": "dmap_recenter", "signature": "static void dmap_recenter(void)"}, {"doc": "/** Move the preview camera onto the player start tile. static void dmap_recenter(void) { int r, c; for (r = 0; r < dmap_h; r++) for (c = 0; c < dmap_w; c++) if (dmap_grid[r][c] == DMAP_PLAYER) { dmap_px = (float)c + 0.5f; dmap_py = (float)r + 0.5f; } dmap_angle = 0.0f; } /** Load a bundled level into the grid, fail closed on a bad index.", "kind": "function", "line": 816, "name": "dmap_load_preset", "signature": "static int dmap_load_preset(int idx)"}, {"doc": "int ch = dmap_levels[idx][row][k]; if (!dmap_walkable(ch) && ch != DMAP_WALL) return -1; dmap_grid[row][k] = (char)ch; } } dmap_anchor_active = 0; dmap_recenter(); dmap_level_sel = idx + 1; snprintf(dmap_status, sizeof(dmap_status), \"level: %s\", dmap_level_names[idx]); return 0; } /** Xorshift32: the only RNG the editor needs, no libc state.", "kind": "function", "line": 849, "name": "dmap_rand", "signature": "static unsigned dmap_rand(void)"}, {"doc": "dmap_level_sel = idx + 1; snprintf(dmap_status, sizeof(dmap_status), \"level: %s\", dmap_level_names[idx]); return 0; } /** Xorshift32: the only RNG the editor needs, no libc state. static unsigned dmap_rand(void) { dmap_rng ^= dmap_rng << 13; dmap_rng ^= dmap_rng >> 17; dmap_rng ^= dmap_rng << 5; return dmap_rng; } /** One random interior floor cell, 0 when it is not floor.", "kind": "function", "line": 857, "name": "dmap_free_cell", "signature": "static int dmap_free_cell(int *r, int *c)"}, {"doc": "Procedural map of connected rooms: several non-overlapping rect rooms carved out of solid rock, joined in sequence by L corridors, the player starting in the first room and the exit marker in the last one, with the full thing palette scattered on floor cells. Keeps the first layout the validator accepts; the fallback is the plain room when no attempt passes. Each attempt then gains a wall divider pierced by working doors, dark patches and one nukage pool, * so random maps are multi-sector like the bundled ones.", "kind": "function", "line": 871, "name": "dmap_random_map", "signature": "static void dmap_random_map(unsigned seed)"}, {"doc": "} if (dmap_validate(msg, sizeof(msg)) == 0) { dmap_recenter(); snprintf(dmap_status, sizeof(dmap_status), \"random %dx%d %d rooms ok\", dmap_w, dmap_h, nrooms); return; } dmap_rng = dmap_rng * 1664525u + 1013904223u; } dmap_new(); snprintf(dmap_status, sizeof(dmap_status), \"random fell back to plain room\"); } /** Load a grid text file, refusing ragged or illegal content.", "kind": "function", "line": 1077, "name": "dmap_load", "signature": "static int dmap_load(const char *path)"}, {"doc": "if (row < 3 || w < 3 || w > DMAP_MAX_W) return -1; dmap_push_history(); dmap_anchor_active = 0; dmap_w = w; dmap_h = row; for (r = 0; r < dmap_h; r++) for (c = 0; c < dmap_w; c++) dmap_grid[r][c] = tmp[r][c]; dmap_recenter(); return 0; } /** Store the grid as text for later editing sessions.", "kind": "function", "line": 1129, "name": "dmap_save_txt", "signature": "static int dmap_save_txt(const char *path)"}, {"doc": "Sector table backing the multi-sector exporter. Regions are same-class floor areas (doors stand alone, dark and nukage never merge); every region becomes one sector, so light, heights and flats vary per room * while the BSP stays one trivial subsector. static int dmap_sect[DMAP_MAX_H][DMAP_MAX_W]; static int dmap_sec_floor[DMAP_MAX_SECTORS]; static int dmap_sec_ceil[DMAP_MAX_SECTORS]; static int dmap_sec_light[DMAP_MAX_SECTORS]; static int dmap_sec_special[DMAP_MAX_SECTORS]; static int dmap_sec_tag[DMAP_MAX_SECTORS]; static const char *dmap_sec_flat[DMAP_MAX_SECTORS]; static const char *dmap_sec_skin[DMAP_MAX_SECTORS]; /** Flood same-class walkable cells into sector ids; walls stay -1.", "kind": "function", "line": 1163, "name": "dmap_label_regions", "signature": "static int dmap_label_regions(void)"}, {"doc": "dmap_sec_floor[nsec] = DMAP_FLOOR_H; dmap_sec_ceil[nsec] = DMAP_CEIL_H; dmap_sec_flat[nsec] = DMAP_FLOOR_FLAT; dmap_sec_light[nsec] = DMAP_LIGHT; dmap_sec_special[nsec] = 0; dmap_sec_skin[nsec] = DMAP_WALL_MID; } nsec++; } dmap_nsectors = nsec; return 0; } /** Validate the map, reporting the first problem for the status line.", "kind": "function", "line": 1244, "name": "dmap_validate", "signature": "static int dmap_validate(char *msg, int max)"}, {"kind": "function", "line": 1317, "name": "dmap_w8", "signature": "static void dmap_w8(unsigned v)"}, {"kind": "function", "line": 1318, "name": "dmap_w16", "signature": "static void dmap_w16(int v)"}, {"kind": "function", "line": 1322, "name": "dmap_w32", "signature": "static void dmap_w32(int v)"}, {"kind": "function", "line": 1326, "name": "dmap_wtex", "signature": "static void dmap_wtex(const char *name)"}, {"doc": "dmap_wp++ = (unsigned char)(v & 0xFF); dmap_wp++ = (unsigned char)((v >> 8) & 0xFF); } static void dmap_w32(int v) { dmap_w16(v & 0xFFFF); dmap_w16((v >> 16) & 0xFFFF); } static void dmap_wtex(const char *name) { int k; for (k = 0; k < 8; k++) dmap_w8(name[k] ? (unsigned)name[k] : 0u); } /** Stored short angle for a seg direction, matching the engine loader.", "kind": "function", "line": 1333, "name": "dmap_seg_angle", "signature": "static int dmap_seg_angle(int dx, int dy)"}, {"doc": "Compile the grid into a vanilla multi-sector E1M1 PWAD image. Every region and door block is its own sector; all segs share one subsector * under a trivial root node, which needs no ordering.", "kind": "function", "line": 1343, "name": "dmap_build_wad", "signature": "static int dmap_build_wad(int *size_out)"}, {"doc": "dmap_wp = dmap_wad; dmap_w8('P'); dmap_w8('W'); dmap_w8('A'); dmap_w8('D'); dmap_w32(11); dmap_w32(table_off); size_out = total; } } return 0; } /** Write the compiled level to a snapshot path in /saves.", "kind": "function", "line": 1660, "name": "dmap_export_wad", "signature": "static int dmap_export_wad(const char *path)"}, {"doc": "int size = 0; FILE *fp; size_t wrote; if (dmap_build_wad(&size) != 0) return -1; fp = fopen(path, \"wb\"); if (!fp) return -1; wrote = fwrite(dmap_wad, 1, (size_t)size, fp); fclose(fp); return wrote == (size_t)size ? 0 : -1; } /** Validate a PWAD file header and lump census, headless.", "kind": "function", "line": 1675, "name": "dmap_check_wad", "signature": "static int dmap_check_wad(const char *path)"}, {"doc": "if (!fp) return -1; if (fread(head, 1, 12, fp) != 12) { fclose(fp); return -1; } fclose(fp); magic_ok = head[0] == 'P' && head[1] == 'W' && head[2] == 'A' && head[3] == 'D'; if (!magic_ok) return -1; return 0; } /** DDA raycaster preview in the raycastlib grid style, integer math free.", "kind": "function", "line": 1693, "name": "dmap_preview", "signature": "static void dmap_preview(struct nk_command_buffer *canvas, struct nk_rect area)"}, {"doc": "dist = 0.05f; line_h = (int)(area.h / dist); if (line_h > (int)area.h) line_h = (int)area.h; y0 = (int)(area.y + (area.h - (float)line_h) / 2.0f); if (side == 0) shade = nk_rgb(176, 150, 120); else shade = nk_rgb(128, 106, 84); nk_fill_rect(canvas, nk_rect(area.x + (float)col * cell, (float)y0, cell + 1.0f, (float)line_h), 0.0f, shade); } } /** Brush combobox above the canvas: one row for the whole palette.", "kind": "function", "line": 1760, "name": "dmap_brush_combo", "signature": "static void dmap_brush_combo(struct nk_context *ctx)"}, {"doc": "Paintable tile canvas with per-category colors. The caller owns the layout row and column: this only claims the widget, draws and paints. Tools: paint one cell, fill the connected region, or two clicks for a * line / rectangle border. Single edits stay single-undo gestures.", "kind": "function", "line": 1773, "name": "dmap_canvas", "signature": "static void dmap_canvas(struct nk_context *ctx)"}, {"doc": "dmap_draw_rect(dmap_anchor_r, dmap_anchor_c, r, c, dmap_brush); dmap_anchor_active = 0; dmap_level_sel = 0; } } else { dmap_push_history(); dmap_apply_cell(r, c, dmap_brush); dmap_level_sel = 0; } } } } /** Preview strip with turn and step controls bound to the player.", "kind": "function", "line": 1863, "name": "dmap_preview_row", "signature": "static void dmap_preview_row(struct nk_context *ctx)"}, {"doc": "} if (nk_button_label(ctx, \"Reset\")) { int r, c; for (r = 0; r < dmap_h; r++) for (c = 0; c < dmap_w; c++) if (dmap_grid[r][c] == DMAP_PLAYER) { dmap_px = (float)c + 0.5f; dmap_py = (float)r + 0.5f; } dmap_angle = 0.0f; } } /** Export the snapshot pair and boot Doom on the fresh PWAD.", "kind": "function", "line": 1898, "name": "dmap_run_map", "signature": "static void dmap_run_map(void)"}, {"kind": "function", "line": 2037, "name": "dmap_scancode", "signature": "static void dmap_scancode(int code, int make, int e0, void *ud)"}, {"doc": "dmap_ctrl_held = make; return; } if (!make || !dmap_ctrl_held) return; if (code == 0x13) dmap_run_requested = 1; else if (code == 0x2C) dmap_undo_requested = 1; else if (code == 0x15) dmap_redo_requested = 1; } /** Frame loop owning the display exactly like the sibling editors.", "kind": "function", "line": 2056, "name": "dmap_gui_run", "signature": "static void dmap_gui_run(void)"}, {"doc": "nk_set_window_origin(origin[0], origin[1]); nk_clear(&ctx); { unsigned t0 = (unsigned)nk_sys_time_ms(); while ((unsigned)nk_sys_time_ms() - t0 < DMAP_FRAME_MS) __asm__ volatile(\"pause\"); } } nk_free(&ctx); nk_sys_kbd_raw(0); nk_sys_vga_mode(0); } /** Headless demo room shared by --demo and the selftest build check.", "kind": "function", "line": 2110, "name": "dmap_demo_room", "signature": "static void dmap_demo_room(void)"}, {"doc": "/** Headless demo room shared by --demo and the selftest build check. static void dmap_demo_room(void) { dmap_w = 9; dmap_h = 7; dmap_new(); dmap_grid[1][2] = DMAP_FLOOR; dmap_grid[2][7] = DMAP_EXIT; dmap_grid[3][5] = DMAP_IMP; dmap_grid[4][3] = DMAP_MEDI; dmap_grid[2][6] = DMAP_SHELLS; } /** Render one UI frame and prove the composite plus the PWAD builder.", "kind": "function", "line": 2122, "name": "dmap_selftest", "signature": "static int dmap_selftest(void)"}, {"kind": "function", "line": 2238, "name": "main", "signature": "int main(int argc, char **argv)"}, {"kind": "function", "line": 1150, "name": "areas", "signature": "* floor areas (doors stand alone, dark and nukage never merge);"}, {"kind": "macro", "line": 55, "name": "DMAP_MAX_W", "signature": "#define DMAP_MAX_W"}, {"kind": "macro", "line": 56, "name": "DMAP_MAX_H", "signature": "#define DMAP_MAX_H"}, {"kind": "macro", "line": 57, "name": "DMAP_DEF_W", "signature": "#define DMAP_DEF_W"}, {"kind": "macro", "line": 58, "name": "DMAP_DEF_H", "signature": "#define DMAP_DEF_H"}, {"kind": "macro", "line": 59, "name": "DMAP_TILE", "signature": "#define DMAP_TILE"}, {"kind": "macro", "line": 60, "name": "DMAP_CELL_PX", "signature": "#define DMAP_CELL_PX"}, {"kind": "macro", "line": 61, "name": "DMAP_CANVAS_W", "signature": "#define DMAP_CANVAS_W"}, {"kind": "macro", "line": 62, "name": "DMAP_PANEL_MIN_H", "signature": "#define DMAP_PANEL_MIN_H"}, {"kind": "macro", "line": 63, "name": "DMAP_PREV_W", "signature": "#define DMAP_PREV_W"}, {"kind": "macro", "line": 64, "name": "DMAP_PREV_H", "signature": "#define DMAP_PREV_H"}, {"kind": "macro", "line": 65, "name": "DMAP_UI_MEMORY", "signature": "#define DMAP_UI_MEMORY"}, {"kind": "macro", "line": 66, "name": "DMAP_WAD_MAX", "signature": "#define DMAP_WAD_MAX"}, {"kind": "macro", "line": 67, "name": "DMAP_FNAME_MAX", "signature": "#define DMAP_FNAME_MAX"}, {"kind": "macro", "line": 68, "name": "DMAP_STATUS_MAX", "signature": "#define DMAP_STATUS_MAX"}, {"kind": "macro", "line": 69, "name": "DMAP_SLOTS", "signature": "#define DMAP_SLOTS"}, {"kind": "macro", "line": 70, "name": "DMAP_LEVEL_COUNT", "signature": "#define DMAP_LEVEL_COUNT"}, {"kind": "macro", "line": 71, "name": "DMAP_RANDOM_ATTEMPTS", "signature": "#define DMAP_RANDOM_ATTEMPTS"}, {"kind": "macro", "line": 72, "name": "DMAP_MAX_SECTORS", "signature": "#define DMAP_MAX_SECTORS"}, {"kind": "macro", "line": 73, "name": "DMAP_ROOM_MAX", "signature": "#define DMAP_ROOM_MAX"}, {"kind": "macro", "line": 74, "name": "DMAP_ROOM_TRIES", "signature": "#define DMAP_ROOM_TRIES"}, {"kind": "macro", "line": 75, "name": "DMAP_FRAME_MS", "signature": "#define DMAP_FRAME_MS"}, {"kind": "macro", "line": 76, "name": "DMAP_TURN_STEP", "signature": "#define DMAP_TURN_STEP"}, {"kind": "macro", "line": 77, "name": "DMAP_MOVE_STEP", "signature": "#define DMAP_MOVE_STEP"}, {"kind": "macro", "line": 78, "name": "DMAP_FOV_PLANE", "signature": "#define DMAP_FOV_PLANE"}, {"kind": "macro", "line": 79, "name": "DMAP_MAX_LINES", "signature": "#define DMAP_MAX_LINES"}, {"kind": "macro", "line": 80, "name": "DMAP_MAX_VERTS", "signature": "#define DMAP_MAX_VERTS"}, {"kind": "macro", "line": 81, "name": "DMAP_MAX_THINGS", "signature": "#define DMAP_MAX_THINGS"}, {"kind": "macro", "line": 82, "name": "DMAP_PLAYER_TYPE", "signature": "#define DMAP_PLAYER_TYPE"}, {"kind": "macro", "line": 83, "name": "DMAP_THING_OPT", "signature": "#define DMAP_THING_OPT"}, {"kind": "macro", "line": 84, "name": "DMAP_EXIT_SPECIAL", "signature": "#define DMAP_EXIT_SPECIAL"}, {"kind": "macro", "line": 85, "name": "DMAP_DOOR_SPECIAL", "signature": "#define DMAP_DOOR_SPECIAL"}, {"kind": "macro", "line": 86, "name": "DMAP_FLAG_BLOCKING", "signature": "#define DMAP_FLAG_BLOCKING"}, {"kind": "macro", "line": 87, "name": "DMAP_FLAG_TWOSIDED", "signature": "#define DMAP_FLAG_TWOSIDED"}, {"kind": "macro", "line": 88, "name": "DMAP_NO_SIDE", "signature": "#define DMAP_NO_SIDE"}, {"kind": "macro", "line": 89, "name": "DMAP_WALL_MID", "signature": "#define DMAP_WALL_MID"}, {"kind": "macro", "line": 90, "name": "DMAP_EXIT_MID", "signature": "#define DMAP_EXIT_MID"}, {"kind": "macro", "line": 91, "name": "DMAP_DOOR_UPPER", "signature": "#define DMAP_DOOR_UPPER"}, {"kind": "macro", "line": 92, "name": "DMAP_DARK_MID", "signature": "#define DMAP_DARK_MID"}, {"kind": "macro", "line": 93, "name": "DMAP_NUKE_MID", "signature": "#define DMAP_NUKE_MID"}, {"kind": "macro", "line": 94, "name": "DMAP_UNUSED_TEX", "signature": "#define DMAP_UNUSED_TEX"}, {"kind": "macro", "line": 95, "name": "DMAP_FLOOR_FLAT", "signature": "#define DMAP_FLOOR_FLAT"}, {"kind": "macro", "line": 96, "name": "DMAP_NUKE_FLAT", "signature": "#define DMAP_NUKE_FLAT"}, {"kind": "macro", "line": 97, "name": "DMAP_CEIL_FLAT", "signature": "#define DMAP_CEIL_FLAT"}, {"kind": "macro", "line": 98, "name": "DMAP_FLOOR_H", "signature": "#define DMAP_FLOOR_H"}, {"kind": "macro", "line": 99, "name": "DMAP_NUKE_FLOOR", "signature": "#define DMAP_NUKE_FLOOR"}, {"kind": "macro", "line": 100, "name": "DMAP_CEIL_H", "signature": "#define DMAP_CEIL_H"}, {"kind": "macro", "line": 101, "name": "DMAP_DOOR_CEIL", "signature": "#define DMAP_DOOR_CEIL"}, {"kind": "macro", "line": 102, "name": "DMAP_LIGHT", "signature": "#define DMAP_LIGHT"}, {"kind": "macro", "line": 103, "name": "DMAP_DARK_LIGHT", "signature": "#define DMAP_DARK_LIGHT"}, {"kind": "macro", "line": 104, "name": "DMAP_DOOR_LIGHT", "signature": "#define DMAP_DOOR_LIGHT"}, {"kind": "macro", "line": 105, "name": "DMAP_NUKE_SPECIAL", "signature": "#define DMAP_NUKE_SPECIAL"}, {"kind": "macro", "line": 106, "name": "DMAP_NODE_LEAF", "signature": "#define DMAP_NODE_LEAF"}, {"kind": "macro", "line": 107, "name": "DMAP_TOOL_DOOM", "signature": "#define DMAP_TOOL_DOOM"}, {"kind": "macro", "line": 108, "name": "DMAP_SAVE_TXT", "signature": "#define DMAP_SAVE_TXT"}, {"kind": "macro", "line": 109, "name": "DMAP_SAVE_WAD", "signature": "#define DMAP_SAVE_WAD"}, {"kind": "macro", "line": 110, "name": "DMAP_TITLE", "signature": "#define DMAP_TITLE"}, {"kind": "macro", "line": 111, "name": "DMAP_HISTORY", "signature": "#define DMAP_HISTORY"}, {"kind": "macro", "line": 112, "name": "DMAP_TOOL_PAINT", "signature": "#define DMAP_TOOL_PAINT"}, {"kind": "macro", "line": 113, "name": "DMAP_TOOL_LINE", "signature": "#define DMAP_TOOL_LINE"}, {"kind": "macro", "line": 114, "name": "DMAP_TOOL_RECT", "signature": "#define DMAP_TOOL_RECT"}, {"kind": "macro", "line": 115, "name": "DMAP_TOOL_FILL", "signature": "#define DMAP_TOOL_FILL"}, {"kind": "macro", "line": 230, "name": "DMAP_BRUSH_COUNT", "signature": "#define DMAP_BRUSH_COUNT"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: the automap code", "id": "progs/doomgeneric/am_map.c", "kind": "module", "label": "am_map.c", "language": "c", "sha256": "c647931febd6dd62", "symbol_count": 87, "symbols": [{"kind": "struct", "line": 111, "name": "fpoint_t"}, {"kind": "struct", "line": 116, "name": "fline_t"}, {"kind": "struct", "line": 121, "name": "mpoint_t"}, {"kind": "struct", "line": 126, "name": "mline_t"}, {"kind": "struct", "line": 131, "name": "islope_t"}, {"kind": "function", "line": 275, "name": "AM_getIslope", "signature": "void\nAM_getIslope\n( mline_t*\tml,\n islope_t*\tis )"}, {"kind": "function", "line": 293, "name": "AM_activateNewScale", "signature": "void AM_activateNewScale(void)"}, {"kind": "function", "line": 308, "name": "AM_saveScaleAndLoc", "signature": "void AM_saveScaleAndLoc(void)"}, {"kind": "function", "line": 319, "name": "AM_restoreScaleAndLoc", "signature": "void AM_restoreScaleAndLoc(void)"}, {"doc": "adds a marker at the current location", "kind": "function", "line": 343, "name": "AM_addMark", "signature": "void AM_addMark(void)"}, {"doc": "Determines bounding box of all vertices, sets global variables controlling zoom range.", "kind": "function", "line": 355, "name": "AM_findMinMaxBoundaries", "signature": "void AM_findMinMaxBoundaries(void)"}, {"kind": "function", "line": 395, "name": "AM_changeWindowLoc", "signature": "void AM_changeWindowLoc(void)"}, {"kind": "function", "line": 424, "name": "AM_initVariables", "signature": "void AM_initVariables(void)"}, {"kind": "function", "line": 480, "name": "AM_loadPics", "signature": "void AM_loadPics(void)"}, {"kind": "function", "line": 493, "name": "AM_unloadPics", "signature": "void AM_unloadPics(void)"}, {"kind": "function", "line": 505, "name": "AM_clearMarks", "signature": "void AM_clearMarks(void)"}, {"doc": "should be called at the start of every level right now, i figure it out myself", "kind": "function", "line": 518, "name": "AM_LevelInit", "signature": "void AM_LevelInit(void)"}, {"kind": "function", "line": 541, "name": "AM_Stop", "signature": "void AM_Stop (void)"}, {"kind": "function", "line": 554, "name": "AM_Start", "signature": "void AM_Start (void)"}, {"doc": "set the window scale to the maximum size", "kind": "function", "line": 573, "name": "AM_minOutWindowScale", "signature": "void AM_minOutWindowScale(void)"}, {"doc": "set the window scale to the minimum size", "kind": "function", "line": 583, "name": "AM_maxOutWindowScale", "signature": "void AM_maxOutWindowScale(void)"}, {"kind": "function", "line": 595, "name": "AM_Responder", "signature": "boolean\nAM_Responder\n( event_t*\tev )"}, {"doc": "Zooming", "kind": "function", "line": 742, "name": "AM_changeWindowScale", "signature": "void AM_changeWindowScale(void)"}, {"kind": "function", "line": 761, "name": "AM_doFollowPlayer", "signature": "void AM_doFollowPlayer(void)"}, {"kind": "function", "line": 785, "name": "AM_updateLightLev", "signature": "void AM_updateLightLev(void)"}, {"doc": "Updates on Game Tick", "kind": "function", "line": 806, "name": "AM_Ticker", "signature": "void AM_Ticker (void)"}, {"doc": "Clear automap frame buffer.", "kind": "function", "line": 834, "name": "AM_clearFB", "signature": "void AM_clearFB(int color)"}, {"kind": "function", "line": 848, "name": "AM_clipMline", "signature": "boolean\nAM_clipMline\n( mline_t*\tml,\n fline_t*\tfl )"}, {"kind": "function", "line": 984, "name": "AM_drawFline", "signature": "void\nAM_drawFline\n( fline_t*\tfl,\n int\t\tcolor )"}, {"kind": "function", "line": 1062, "name": "AM_drawMline", "signature": "void\nAM_drawMline\n( mline_t*\tml,\n int\t\tcolor )"}, {"doc": "Draws flat (floor/ceiling tile) aligned grid lines.", "kind": "function", "line": 1077, "name": "AM_drawGrid", "signature": "void AM_drawGrid(int color)"}, {"doc": "Determines visible lines, draws them. This is LineDef based, not LineSeg based.", "kind": "function", "line": 1123, "name": "AM_drawWalls", "signature": "void AM_drawWalls(void)"}, {"kind": "function", "line": 1179, "name": "AM_rotate", "signature": "void\nAM_rotate\n( fixed_t*\tx,\n fixed_t*\ty,\n angle_t\ta )"}, {"kind": "function", "line": 1198, "name": "AM_drawLineCharacter", "signature": "void\nAM_drawLineCharacter\n( mline_t*\tlineguy,\n int\t\tlineguylines,\n fixed_t\tscale,\n angle_t\tang..."}, {"kind": "function", "line": 1246, "name": "AM_drawPlayers", "signature": "void AM_drawPlayers(void)"}, {"kind": "function", "line": 1291, "name": "AM_drawThings", "signature": "void\nAM_drawThings\n( int\tcolors,\n int \tcolorrange)"}, {"kind": "function", "line": 1311, "name": "AM_drawMarks", "signature": "void AM_drawMarks(void)"}, {"kind": "function", "line": 1332, "name": "AM_drawCrosshair", "signature": "void AM_drawCrosshair(int color)"}, {"kind": "function", "line": 1338, "name": "AM_Drawer", "signature": "void AM_Drawer (void)"}, {"kind": "macro", "line": 50, "name": "REDS", "signature": "#define REDS"}, {"kind": "macro", "line": 51, "name": "REDRANGE", "signature": "#define REDRANGE"}, {"kind": "macro", "line": 52, "name": "BLUES", "signature": "#define BLUES"}, {"kind": "macro", "line": 53, "name": "BLUERANGE", "signature": "#define BLUERANGE"}, {"kind": "macro", "line": 54, "name": "GREENS", "signature": "#define GREENS"}, {"kind": "macro", "line": 55, "name": "GREENRANGE", "signature": "#define GREENRANGE"}, {"kind": "macro", "line": 56, "name": "GRAYS", "signature": "#define GRAYS"}, {"kind": "macro", "line": 57, "name": "GRAYSRANGE", "signature": "#define GRAYSRANGE"}, {"kind": "macro", "line": 58, "name": "BROWNS", "signature": "#define BROWNS"}, {"kind": "macro", "line": 59, "name": "BROWNRANGE", "signature": "#define BROWNRANGE"}, {"kind": "macro", "line": 60, "name": "YELLOWS", "signature": "#define YELLOWS"}, {"kind": "macro", "line": 61, "name": "YELLOWRANGE", "signature": "#define YELLOWRANGE"}, {"kind": "macro", "line": 62, "name": "BLACK", "signature": "#define BLACK"}, {"kind": "macro", "line": 63, "name": "WHITE", "signature": "#define WHITE"}, {"kind": "macro", "line": 66, "name": "BACKGROUND", "signature": "#define BACKGROUND"}, {"kind": "macro", "line": 67, "name": "YOURCOLORS", "signature": "#define YOURCOLORS"}, {"kind": "macro", "line": 68, "name": "YOURRANGE", "signature": "#define YOURRANGE"}, {"kind": "macro", "line": 69, "name": "WALLCOLORS", "signature": "#define WALLCOLORS"}, {"kind": "macro", "line": 70, "name": "WALLRANGE", "signature": "#define WALLRANGE"}, {"kind": "macro", "line": 71, "name": "TSWALLCOLORS", "signature": "#define TSWALLCOLORS"}, {"kind": "macro", "line": 72, "name": "TSWALLRANGE", "signature": "#define TSWALLRANGE"}, {"kind": "macro", "line": 73, "name": "FDWALLCOLORS", "signature": "#define FDWALLCOLORS"}, {"kind": "macro", "line": 74, "name": "FDWALLRANGE", "signature": "#define FDWALLRANGE"}, {"kind": "macro", "line": 75, "name": "CDWALLCOLORS", "signature": "#define CDWALLCOLORS"}, {"kind": "macro", "line": 76, "name": "CDWALLRANGE", "signature": "#define CDWALLRANGE"}, {"kind": "macro", "line": 77, "name": "THINGCOLORS", "signature": "#define THINGCOLORS"}, {"kind": "macro", "line": 78, "name": "THINGRANGE", "signature": "#define THINGRANGE"}, {"kind": "macro", "line": 79, "name": "SECRETWALLCOLORS", "signature": "#define SECRETWALLCOLORS"}, {"kind": "macro", "line": 80, "name": "SECRETWALLRANGE", "signature": "#define SECRETWALLRANGE"}, {"kind": "macro", "line": 81, "name": "GRIDCOLORS", "signature": "#define GRIDCOLORS"}, {"kind": "macro", "line": 82, "name": "GRIDRANGE", "signature": "#define GRIDRANGE"}, {"kind": "macro", "line": 83, "name": "XHAIRCOLORS", "signature": "#define XHAIRCOLORS"}, {"kind": "macro", "line": 87, "name": "AM_NUMMARKPOINTS", "signature": "#define AM_NUMMARKPOINTS"}, {"kind": "macro", "line": 90, "name": "INITSCALEMTOF", "signature": "#define INITSCALEMTOF"}, {"kind": "macro", "line": 93, "name": "F_PANINC", "signature": "#define F_PANINC"}, {"kind": "macro", "line": 96, "name": "M_ZOOMIN", "signature": "#define M_ZOOMIN"}, {"kind": "macro", "line": 99, "name": "M_ZOOMOUT", "signature": "#define M_ZOOMOUT"}, {"kind": "macro", "line": 102, "name": "FTOM", "signature": "#define FTOM(x)"}, {"kind": "macro", "line": 103, "name": "MTOF", "signature": "#define MTOF(x)"}, {"kind": "macro", "line": 105, "name": "CXMTOF", "signature": "#define CXMTOF(x)"}, {"kind": "macro", "line": 106, "name": "CYMTOF", "signature": "#define CYMTOF(y)"}, {"kind": "macro", "line": 109, "name": "LINE_NEVERSEE", "signature": "#define LINE_NEVERSEE"}, {"kind": "macro", "line": 143, "name": "R", "signature": "#define R"}, {"kind": "macro", "line": 155, "name": "R", "signature": "#define R"}, {"kind": "macro", "line": 176, "name": "R", "signature": "#define R"}, {"kind": "macro", "line": 184, "name": "R", "signature": "#define R"}, {"kind": "macro", "line": 869, "name": "DOOUTCODE", "signature": "#define DOOUTCODE(oc, mx, my)"}, {"kind": "macro", "line": 1010, "name": "PUTDOT", "signature": "#define PUTDOT(xx,yy,cc)"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: AutoMap module. Used by ST StatusBar stuff.", "id": "progs/doomgeneric/am_map.h", "kind": "module", "label": "am_map.h", "language": "h", "sha256": "f67d32a2b1bd5ca5", "symbol_count": 8, "symbols": [{"doc": "Called by main loop.", "kind": "function", "line": 35, "name": "AM_Ticker", "signature": "void AM_Ticker (void);"}, {"doc": "Called by main loop, called instead of view drawer if automap active.", "kind": "function", "line": 39, "name": "AM_Drawer", "signature": "void AM_Drawer (void);"}, {"doc": "Called to force the automap to quit if the level is completed while it is up.", "kind": "function", "line": 43, "name": "AM_Stop", "signature": "void AM_Stop (void);"}, {"kind": "variable", "line": 46, "name": "cheat_amap", "signature": "extern cheatseq_t cheat_amap;"}, {"kind": "macro", "line": 20, "name": "__AMMAP_H__", "signature": "#define __AMMAP_H__"}, {"kind": "macro", "line": 26, "name": "AM_MSGHEADER", "signature": "#define AM_MSGHEADER"}, {"kind": "macro", "line": 27, "name": "AM_MSGENTERED", "signature": "#define AM_MSGENTERED"}, {"kind": "macro", "line": 28, "name": "AM_MSGEXITED", "signature": "#define AM_MSGEXITED"}]}, {"doc": "config.hin. Generated from configure.ac by autoheader.", "id": "progs/doomgeneric/config.h", "kind": "module", "label": "config.h", "language": "h", "sha256": "07384b139305b90c", "symbol_count": 16, "symbols": [{"kind": "macro", "line": 10, "name": "HAVE_INTTYPES_H", "signature": "#define HAVE_INTTYPES_H"}, {"kind": "macro", "line": 46, "name": "HAVE_STDINT_H", "signature": "#define HAVE_STDINT_H"}, {"kind": "macro", "line": 49, "name": "HAVE_STDLIB_H", "signature": "#define HAVE_STDLIB_H"}, {"kind": "macro", "line": 52, "name": "HAVE_STRINGS_H", "signature": "#define HAVE_STRINGS_H"}, {"kind": "macro", "line": 55, "name": "HAVE_STRING_H", "signature": "#define HAVE_STRING_H"}, {"kind": "macro", "line": 61, "name": "HAVE_SYS_TYPES_H", "signature": "#define HAVE_SYS_TYPES_H"}, {"kind": "macro", "line": 67, "name": "PACKAGE", "signature": "#define PACKAGE"}, {"kind": "macro", "line": 73, "name": "PACKAGE_NAME", "signature": "#define PACKAGE_NAME"}, {"kind": "macro", "line": 76, "name": "PACKAGE_STRING", "signature": "#define PACKAGE_STRING"}, {"kind": "macro", "line": 79, "name": "PACKAGE_TARNAME", "signature": "#define PACKAGE_TARNAME"}, {"kind": "macro", "line": 82, "name": "PACKAGE_URL", "signature": "#define PACKAGE_URL"}, {"kind": "macro", "line": 85, "name": "PACKAGE_VERSION", "signature": "#define PACKAGE_VERSION"}, {"kind": "macro", "line": 88, "name": "PROGRAM_PREFIX", "signature": "#define PROGRAM_PREFIX"}, {"kind": "macro", "line": 91, "name": "STDC_HEADERS", "signature": "#define STDC_HEADERS"}, {"kind": "macro", "line": 94, "name": "VERSION", "signature": "#define VERSION"}, {"kind": "macro", "line": 100, "name": "FILES_DIR", "signature": "#define FILES_DIR"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Printed strings for translation. English language support (default). Printed strings for translation D_Main.C", "id": "progs/doomgeneric/d_englsh.h", "kind": "module", "label": "d_englsh.h", "language": "h", "sha256": "14f84bbe6070a8bf", "symbol_count": 286, "symbols": [{"kind": "macro", "line": 21, "name": "__D_ENGLSH__", "signature": "#define __D_ENGLSH__"}, {"kind": "macro", "line": 30, "name": "D_DEVSTR", "signature": "#define D_DEVSTR"}, {"kind": "macro", "line": 31, "name": "D_CDROM", "signature": "#define D_CDROM"}, {"kind": "macro", "line": 36, "name": "PRESSKEY", "signature": "#define PRESSKEY"}, {"kind": "macro", "line": 37, "name": "PRESSYN", "signature": "#define PRESSYN"}, {"kind": "macro", "line": 38, "name": "QUITMSG", "signature": "#define QUITMSG"}, {"kind": "macro", "line": 39, "name": "LOADNET", "signature": "#define LOADNET"}, {"kind": "macro", "line": 40, "name": "QLOADNET", "signature": "#define QLOADNET"}, {"kind": "macro", "line": 41, "name": "QSAVESPOT", "signature": "#define QSAVESPOT"}, {"kind": "macro", "line": 42, "name": "SAVEDEAD", "signature": "#define SAVEDEAD"}, {"kind": "macro", "line": 43, "name": "QSPROMPT", "signature": "#define QSPROMPT"}, {"kind": "macro", "line": 44, "name": "QLPROMPT", "signature": "#define QLPROMPT"}, {"kind": "macro", "line": 46, "name": "NEWGAME", "signature": "#define NEWGAME"}, {"kind": "macro", "line": 50, "name": "NIGHTMARE", "signature": "#define NIGHTMARE"}, {"kind": "macro", "line": 54, "name": "SWSTRING", "signature": "#define SWSTRING"}, {"kind": "macro", "line": 58, "name": "MSGOFF", "signature": "#define MSGOFF"}, {"kind": "macro", "line": 59, "name": "MSGON", "signature": "#define MSGON"}, {"kind": "macro", "line": 60, "name": "NETEND", "signature": "#define NETEND"}, {"kind": "macro", "line": 61, "name": "ENDGAME", "signature": "#define ENDGAME"}, {"kind": "macro", "line": 63, "name": "DOSY", "signature": "#define DOSY"}, {"kind": "macro", "line": 65, "name": "DETAILHI", "signature": "#define DETAILHI"}, {"kind": "macro", "line": 66, "name": "DETAILLO", "signature": "#define DETAILLO"}, {"kind": "macro", "line": 67, "name": "GAMMALVL0", "signature": "#define GAMMALVL0"}, {"kind": "macro", "line": 68, "name": "GAMMALVL1", "signature": "#define GAMMALVL1"}, {"kind": "macro", "line": 69, "name": "GAMMALVL2", "signature": "#define GAMMALVL2"}, {"kind": "macro", "line": 70, "name": "GAMMALVL3", "signature": "#define GAMMALVL3"}, {"kind": "macro", "line": 71, "name": "GAMMALVL4", "signature": "#define GAMMALVL4"}, {"kind": "macro", "line": 72, "name": "EMPTYSTRING", "signature": "#define EMPTYSTRING"}, {"kind": "macro", "line": 77, "name": "GOTARMOR", "signature": "#define GOTARMOR"}, {"kind": "macro", "line": 78, "name": "GOTMEGA", "signature": "#define GOTMEGA"}, {"kind": "macro", "line": 79, "name": "GOTHTHBONUS", "signature": "#define GOTHTHBONUS"}, {"kind": "macro", "line": 80, "name": "GOTARMBONUS", "signature": "#define GOTARMBONUS"}, {"kind": "macro", "line": 81, "name": "GOTSTIM", "signature": "#define GOTSTIM"}, {"kind": "macro", "line": 82, "name": "GOTMEDINEED", "signature": "#define GOTMEDINEED"}, {"kind": "macro", "line": 83, "name": "GOTMEDIKIT", "signature": "#define GOTMEDIKIT"}, {"kind": "macro", "line": 84, "name": "GOTSUPER", "signature": "#define GOTSUPER"}, {"kind": "macro", "line": 86, "name": "GOTBLUECARD", "signature": "#define GOTBLUECARD"}, {"kind": "macro", "line": 87, "name": "GOTYELWCARD", "signature": "#define GOTYELWCARD"}, {"kind": "macro", "line": 88, "name": "GOTREDCARD", "signature": "#define GOTREDCARD"}, {"kind": "macro", "line": 89, "name": "GOTBLUESKUL", "signature": "#define GOTBLUESKUL"}, {"kind": "macro", "line": 90, "name": "GOTYELWSKUL", "signature": "#define GOTYELWSKUL"}, {"kind": "macro", "line": 91, "name": "GOTREDSKULL", "signature": "#define GOTREDSKULL"}, {"kind": "macro", "line": 93, "name": "GOTINVUL", "signature": "#define GOTINVUL"}, {"kind": "macro", "line": 94, "name": "GOTBERSERK", "signature": "#define GOTBERSERK"}, {"kind": "macro", "line": 95, "name": "GOTINVIS", "signature": "#define GOTINVIS"}, {"kind": "macro", "line": 96, "name": "GOTSUIT", "signature": "#define GOTSUIT"}, {"kind": "macro", "line": 97, "name": "GOTMAP", "signature": "#define GOTMAP"}, {"kind": "macro", "line": 98, "name": "GOTVISOR", "signature": "#define GOTVISOR"}, {"kind": "macro", "line": 99, "name": "GOTMSPHERE", "signature": "#define GOTMSPHERE"}, {"kind": "macro", "line": 101, "name": "GOTCLIP", "signature": "#define GOTCLIP"}, {"kind": "macro", "line": 102, "name": "GOTCLIPBOX", "signature": "#define GOTCLIPBOX"}, {"kind": "macro", "line": 103, "name": "GOTROCKET", "signature": "#define GOTROCKET"}, {"kind": "macro", "line": 104, "name": "GOTROCKBOX", "signature": "#define GOTROCKBOX"}, {"kind": "macro", "line": 105, "name": "GOTCELL", "signature": "#define GOTCELL"}, {"kind": "macro", "line": 106, "name": "GOTCELLBOX", "signature": "#define GOTCELLBOX"}, {"kind": "macro", "line": 107, "name": "GOTSHELLS", "signature": "#define GOTSHELLS"}, {"kind": "macro", "line": 108, "name": "GOTSHELLBOX", "signature": "#define GOTSHELLBOX"}, {"kind": "macro", "line": 109, "name": "GOTBACKPACK", "signature": "#define GOTBACKPACK"}, {"kind": "macro", "line": 111, "name": "GOTBFG9000", "signature": "#define GOTBFG9000"}, {"kind": "macro", "line": 112, "name": "GOTCHAINGUN", "signature": "#define GOTCHAINGUN"}, {"kind": "macro", "line": 113, "name": "GOTCHAINSAW", "signature": "#define GOTCHAINSAW"}, {"kind": "macro", "line": 114, "name": "GOTLAUNCHER", "signature": "#define GOTLAUNCHER"}, {"kind": "macro", "line": 115, "name": "GOTPLASMA", "signature": "#define GOTPLASMA"}, {"kind": "macro", "line": 116, "name": "GOTSHOTGUN", "signature": "#define GOTSHOTGUN"}, {"kind": "macro", "line": 117, "name": "GOTSHOTGUN2", "signature": "#define GOTSHOTGUN2"}, {"kind": "macro", "line": 122, "name": "PD_BLUEO", "signature": "#define PD_BLUEO"}, {"kind": "macro", "line": 123, "name": "PD_REDO", "signature": "#define PD_REDO"}, {"kind": "macro", "line": 124, "name": "PD_YELLOWO", "signature": "#define PD_YELLOWO"}, {"kind": "macro", "line": 125, "name": "PD_BLUEK", "signature": "#define PD_BLUEK"}, {"kind": "macro", "line": 126, "name": "PD_REDK", "signature": "#define PD_REDK"}, {"kind": "macro", "line": 127, "name": "PD_YELLOWK", "signature": "#define PD_YELLOWK"}, {"kind": "macro", "line": 132, "name": "GGSAVED", "signature": "#define GGSAVED"}, {"kind": "macro", "line": 137, "name": "HUSTR_MSGU", "signature": "#define HUSTR_MSGU"}, {"kind": "macro", "line": 139, "name": "HUSTR_E1M1", "signature": "#define HUSTR_E1M1"}, {"kind": "macro", "line": 140, "name": "HUSTR_E1M2", "signature": "#define HUSTR_E1M2"}, {"kind": "macro", "line": 141, "name": "HUSTR_E1M3", "signature": "#define HUSTR_E1M3"}, {"kind": "macro", "line": 142, "name": "HUSTR_E1M4", "signature": "#define HUSTR_E1M4"}, {"kind": "macro", "line": 143, "name": "HUSTR_E1M5", "signature": "#define HUSTR_E1M5"}, {"kind": "macro", "line": 144, "name": "HUSTR_E1M6", "signature": "#define HUSTR_E1M6"}, {"kind": "macro", "line": 145, "name": "HUSTR_E1M7", "signature": "#define HUSTR_E1M7"}, {"kind": "macro", "line": 146, "name": "HUSTR_E1M8", "signature": "#define HUSTR_E1M8"}, {"kind": "macro", "line": 147, "name": "HUSTR_E1M9", "signature": "#define HUSTR_E1M9"}, {"kind": "macro", "line": 149, "name": "HUSTR_E2M1", "signature": "#define HUSTR_E2M1"}, {"kind": "macro", "line": 150, "name": "HUSTR_E2M2", "signature": "#define HUSTR_E2M2"}, {"kind": "macro", "line": 151, "name": "HUSTR_E2M3", "signature": "#define HUSTR_E2M3"}, {"kind": "macro", "line": 152, "name": "HUSTR_E2M4", "signature": "#define HUSTR_E2M4"}, {"kind": "macro", "line": 153, "name": "HUSTR_E2M5", "signature": "#define HUSTR_E2M5"}, {"kind": "macro", "line": 154, "name": "HUSTR_E2M6", "signature": "#define HUSTR_E2M6"}, {"kind": "macro", "line": 155, "name": "HUSTR_E2M7", "signature": "#define HUSTR_E2M7"}, {"kind": "macro", "line": 156, "name": "HUSTR_E2M8", "signature": "#define HUSTR_E2M8"}, {"kind": "macro", "line": 157, "name": "HUSTR_E2M9", "signature": "#define HUSTR_E2M9"}, {"kind": "macro", "line": 159, "name": "HUSTR_E3M1", "signature": "#define HUSTR_E3M1"}, {"kind": "macro", "line": 160, "name": "HUSTR_E3M2", "signature": "#define HUSTR_E3M2"}, {"kind": "macro", "line": 161, "name": "HUSTR_E3M3", "signature": "#define HUSTR_E3M3"}, {"kind": "macro", "line": 162, "name": "HUSTR_E3M4", "signature": "#define HUSTR_E3M4"}, {"kind": "macro", "line": 163, "name": "HUSTR_E3M5", "signature": "#define HUSTR_E3M5"}, {"kind": "macro", "line": 164, "name": "HUSTR_E3M6", "signature": "#define HUSTR_E3M6"}, {"kind": "macro", "line": 165, "name": "HUSTR_E3M7", "signature": "#define HUSTR_E3M7"}, {"kind": "macro", "line": 166, "name": "HUSTR_E3M8", "signature": "#define HUSTR_E3M8"}, {"kind": "macro", "line": 167, "name": "HUSTR_E3M9", "signature": "#define HUSTR_E3M9"}, {"kind": "macro", "line": 169, "name": "HUSTR_E4M1", "signature": "#define HUSTR_E4M1"}, {"kind": "macro", "line": 170, "name": "HUSTR_E4M2", "signature": "#define HUSTR_E4M2"}, {"kind": "macro", "line": 171, "name": "HUSTR_E4M3", "signature": "#define HUSTR_E4M3"}, {"kind": "macro", "line": 172, "name": "HUSTR_E4M4", "signature": "#define HUSTR_E4M4"}, {"kind": "macro", "line": 173, "name": "HUSTR_E4M5", "signature": "#define HUSTR_E4M5"}, {"kind": "macro", "line": 174, "name": "HUSTR_E4M6", "signature": "#define HUSTR_E4M6"}, {"kind": "macro", "line": 175, "name": "HUSTR_E4M7", "signature": "#define HUSTR_E4M7"}, {"kind": "macro", "line": 176, "name": "HUSTR_E4M8", "signature": "#define HUSTR_E4M8"}, {"kind": "macro", "line": 177, "name": "HUSTR_E4M9", "signature": "#define HUSTR_E4M9"}, {"kind": "macro", "line": 179, "name": "HUSTR_1", "signature": "#define HUSTR_1"}, {"kind": "macro", "line": 180, "name": "HUSTR_2", "signature": "#define HUSTR_2"}, {"kind": "macro", "line": 181, "name": "HUSTR_3", "signature": "#define HUSTR_3"}, {"kind": "macro", "line": 182, "name": "HUSTR_4", "signature": "#define HUSTR_4"}, {"kind": "macro", "line": 183, "name": "HUSTR_5", "signature": "#define HUSTR_5"}, {"kind": "macro", "line": 184, "name": "HUSTR_6", "signature": "#define HUSTR_6"}, {"kind": "macro", "line": 185, "name": "HUSTR_7", "signature": "#define HUSTR_7"}, {"kind": "macro", "line": 186, "name": "HUSTR_8", "signature": "#define HUSTR_8"}, {"kind": "macro", "line": 187, "name": "HUSTR_9", "signature": "#define HUSTR_9"}, {"kind": "macro", "line": 188, "name": "HUSTR_10", "signature": "#define HUSTR_10"}, {"kind": "macro", "line": 189, "name": "HUSTR_11", "signature": "#define HUSTR_11"}, {"kind": "macro", "line": 191, "name": "HUSTR_12", "signature": "#define HUSTR_12"}, {"kind": "macro", "line": 192, "name": "HUSTR_13", "signature": "#define HUSTR_13"}, {"kind": "macro", "line": 193, "name": "HUSTR_14", "signature": "#define HUSTR_14"}, {"kind": "macro", "line": 194, "name": "HUSTR_15", "signature": "#define HUSTR_15"}, {"kind": "macro", "line": 195, "name": "HUSTR_16", "signature": "#define HUSTR_16"}, {"kind": "macro", "line": 196, "name": "HUSTR_17", "signature": "#define HUSTR_17"}, {"kind": "macro", "line": 197, "name": "HUSTR_18", "signature": "#define HUSTR_18"}, {"kind": "macro", "line": 198, "name": "HUSTR_19", "signature": "#define HUSTR_19"}, {"kind": "macro", "line": 199, "name": "HUSTR_20", "signature": "#define HUSTR_20"}, {"kind": "macro", "line": 201, "name": "HUSTR_21", "signature": "#define HUSTR_21"}, {"kind": "macro", "line": 202, "name": "HUSTR_22", "signature": "#define HUSTR_22"}, {"kind": "macro", "line": 203, "name": "HUSTR_23", "signature": "#define HUSTR_23"}, {"kind": "macro", "line": 204, "name": "HUSTR_24", "signature": "#define HUSTR_24"}, {"kind": "macro", "line": 205, "name": "HUSTR_25", "signature": "#define HUSTR_25"}, {"kind": "macro", "line": 206, "name": "HUSTR_26", "signature": "#define HUSTR_26"}, {"kind": "macro", "line": 207, "name": "HUSTR_27", "signature": "#define HUSTR_27"}, {"kind": "macro", "line": 208, "name": "HUSTR_28", "signature": "#define HUSTR_28"}, {"kind": "macro", "line": 209, "name": "HUSTR_29", "signature": "#define HUSTR_29"}, {"kind": "macro", "line": 210, "name": "HUSTR_30", "signature": "#define HUSTR_30"}, {"kind": "macro", "line": 212, "name": "HUSTR_31", "signature": "#define HUSTR_31"}, {"kind": "macro", "line": 213, "name": "HUSTR_32", "signature": "#define HUSTR_32"}, {"kind": "macro", "line": 215, "name": "PHUSTR_1", "signature": "#define PHUSTR_1"}, {"kind": "macro", "line": 216, "name": "PHUSTR_2", "signature": "#define PHUSTR_2"}, {"kind": "macro", "line": 217, "name": "PHUSTR_3", "signature": "#define PHUSTR_3"}, {"kind": "macro", "line": 218, "name": "PHUSTR_4", "signature": "#define PHUSTR_4"}, {"kind": "macro", "line": 219, "name": "PHUSTR_5", "signature": "#define PHUSTR_5"}, {"kind": "macro", "line": 220, "name": "PHUSTR_6", "signature": "#define PHUSTR_6"}, {"kind": "macro", "line": 221, "name": "PHUSTR_7", "signature": "#define PHUSTR_7"}, {"kind": "macro", "line": 222, "name": "PHUSTR_8", "signature": "#define PHUSTR_8"}, {"kind": "macro", "line": 223, "name": "PHUSTR_9", "signature": "#define PHUSTR_9"}, {"kind": "macro", "line": 224, "name": "PHUSTR_10", "signature": "#define PHUSTR_10"}, {"kind": "macro", "line": 225, "name": "PHUSTR_11", "signature": "#define PHUSTR_11"}, {"kind": "macro", "line": 227, "name": "PHUSTR_12", "signature": "#define PHUSTR_12"}, {"kind": "macro", "line": 228, "name": "PHUSTR_13", "signature": "#define PHUSTR_13"}, {"kind": "macro", "line": 229, "name": "PHUSTR_14", "signature": "#define PHUSTR_14"}, {"kind": "macro", "line": 230, "name": "PHUSTR_15", "signature": "#define PHUSTR_15"}, {"kind": "macro", "line": 231, "name": "PHUSTR_16", "signature": "#define PHUSTR_16"}, {"kind": "macro", "line": 232, "name": "PHUSTR_17", "signature": "#define PHUSTR_17"}, {"kind": "macro", "line": 233, "name": "PHUSTR_18", "signature": "#define PHUSTR_18"}, {"kind": "macro", "line": 234, "name": "PHUSTR_19", "signature": "#define PHUSTR_19"}, {"kind": "macro", "line": 235, "name": "PHUSTR_20", "signature": "#define PHUSTR_20"}, {"kind": "macro", "line": 237, "name": "PHUSTR_21", "signature": "#define PHUSTR_21"}, {"kind": "macro", "line": 238, "name": "PHUSTR_22", "signature": "#define PHUSTR_22"}, {"kind": "macro", "line": 239, "name": "PHUSTR_23", "signature": "#define PHUSTR_23"}, {"kind": "macro", "line": 240, "name": "PHUSTR_24", "signature": "#define PHUSTR_24"}, {"kind": "macro", "line": 241, "name": "PHUSTR_25", "signature": "#define PHUSTR_25"}, {"kind": "macro", "line": 242, "name": "PHUSTR_26", "signature": "#define PHUSTR_26"}, {"kind": "macro", "line": 243, "name": "PHUSTR_27", "signature": "#define PHUSTR_27"}, {"kind": "macro", "line": 244, "name": "PHUSTR_28", "signature": "#define PHUSTR_28"}, {"kind": "macro", "line": 245, "name": "PHUSTR_29", "signature": "#define PHUSTR_29"}, {"kind": "macro", "line": 246, "name": "PHUSTR_30", "signature": "#define PHUSTR_30"}, {"kind": "macro", "line": 248, "name": "PHUSTR_31", "signature": "#define PHUSTR_31"}, {"kind": "macro", "line": 249, "name": "PHUSTR_32", "signature": "#define PHUSTR_32"}, {"kind": "macro", "line": 251, "name": "THUSTR_1", "signature": "#define THUSTR_1"}, {"kind": "macro", "line": 252, "name": "THUSTR_2", "signature": "#define THUSTR_2"}, {"kind": "macro", "line": 253, "name": "THUSTR_3", "signature": "#define THUSTR_3"}, {"kind": "macro", "line": 254, "name": "THUSTR_4", "signature": "#define THUSTR_4"}, {"kind": "macro", "line": 255, "name": "THUSTR_5", "signature": "#define THUSTR_5"}, {"kind": "macro", "line": 256, "name": "THUSTR_6", "signature": "#define THUSTR_6"}, {"kind": "macro", "line": 257, "name": "THUSTR_7", "signature": "#define THUSTR_7"}, {"kind": "macro", "line": 258, "name": "THUSTR_8", "signature": "#define THUSTR_8"}, {"kind": "macro", "line": 259, "name": "THUSTR_9", "signature": "#define THUSTR_9"}, {"kind": "macro", "line": 260, "name": "THUSTR_10", "signature": "#define THUSTR_10"}, {"kind": "macro", "line": 261, "name": "THUSTR_11", "signature": "#define THUSTR_11"}, {"kind": "macro", "line": 263, "name": "THUSTR_12", "signature": "#define THUSTR_12"}, {"kind": "macro", "line": 264, "name": "THUSTR_13", "signature": "#define THUSTR_13"}, {"kind": "macro", "line": 265, "name": "THUSTR_14", "signature": "#define THUSTR_14"}, {"kind": "macro", "line": 266, "name": "THUSTR_15", "signature": "#define THUSTR_15"}, {"kind": "macro", "line": 267, "name": "THUSTR_16", "signature": "#define THUSTR_16"}, {"kind": "macro", "line": 268, "name": "THUSTR_17", "signature": "#define THUSTR_17"}, {"kind": "macro", "line": 269, "name": "THUSTR_18", "signature": "#define THUSTR_18"}, {"kind": "macro", "line": 270, "name": "THUSTR_19", "signature": "#define THUSTR_19"}, {"kind": "macro", "line": 271, "name": "THUSTR_20", "signature": "#define THUSTR_20"}, {"kind": "macro", "line": 273, "name": "THUSTR_21", "signature": "#define THUSTR_21"}, {"kind": "macro", "line": 274, "name": "THUSTR_22", "signature": "#define THUSTR_22"}, {"kind": "macro", "line": 275, "name": "THUSTR_23", "signature": "#define THUSTR_23"}, {"kind": "macro", "line": 276, "name": "THUSTR_24", "signature": "#define THUSTR_24"}, {"kind": "macro", "line": 277, "name": "THUSTR_25", "signature": "#define THUSTR_25"}, {"kind": "macro", "line": 278, "name": "THUSTR_26", "signature": "#define THUSTR_26"}, {"kind": "macro", "line": 279, "name": "THUSTR_27", "signature": "#define THUSTR_27"}, {"kind": "macro", "line": 280, "name": "THUSTR_28", "signature": "#define THUSTR_28"}, {"kind": "macro", "line": 281, "name": "THUSTR_29", "signature": "#define THUSTR_29"}, {"kind": "macro", "line": 282, "name": "THUSTR_30", "signature": "#define THUSTR_30"}, {"kind": "macro", "line": 284, "name": "THUSTR_31", "signature": "#define THUSTR_31"}, {"kind": "macro", "line": 285, "name": "THUSTR_32", "signature": "#define THUSTR_32"}, {"kind": "macro", "line": 287, "name": "HUSTR_CHATMACRO1", "signature": "#define HUSTR_CHATMACRO1"}, {"kind": "macro", "line": 288, "name": "HUSTR_CHATMACRO2", "signature": "#define HUSTR_CHATMACRO2"}, {"kind": "macro", "line": 289, "name": "HUSTR_CHATMACRO3", "signature": "#define HUSTR_CHATMACRO3"}, {"kind": "macro", "line": 290, "name": "HUSTR_CHATMACRO4", "signature": "#define HUSTR_CHATMACRO4"}, {"kind": "macro", "line": 291, "name": "HUSTR_CHATMACRO5", "signature": "#define HUSTR_CHATMACRO5"}, {"kind": "macro", "line": 292, "name": "HUSTR_CHATMACRO6", "signature": "#define HUSTR_CHATMACRO6"}, {"kind": "macro", "line": 293, "name": "HUSTR_CHATMACRO7", "signature": "#define HUSTR_CHATMACRO7"}, {"kind": "macro", "line": 294, "name": "HUSTR_CHATMACRO8", "signature": "#define HUSTR_CHATMACRO8"}, {"kind": "macro", "line": 295, "name": "HUSTR_CHATMACRO9", "signature": "#define HUSTR_CHATMACRO9"}, {"kind": "macro", "line": 296, "name": "HUSTR_CHATMACRO0", "signature": "#define HUSTR_CHATMACRO0"}, {"kind": "macro", "line": 298, "name": "HUSTR_TALKTOSELF1", "signature": "#define HUSTR_TALKTOSELF1"}, {"kind": "macro", "line": 299, "name": "HUSTR_TALKTOSELF2", "signature": "#define HUSTR_TALKTOSELF2"}, {"kind": "macro", "line": 300, "name": "HUSTR_TALKTOSELF3", "signature": "#define HUSTR_TALKTOSELF3"}, {"kind": "macro", "line": 301, "name": "HUSTR_TALKTOSELF4", "signature": "#define HUSTR_TALKTOSELF4"}, {"kind": "macro", "line": 302, "name": "HUSTR_TALKTOSELF5", "signature": "#define HUSTR_TALKTOSELF5"}, {"kind": "macro", "line": 304, "name": "HUSTR_MESSAGESENT", "signature": "#define HUSTR_MESSAGESENT"}, {"kind": "macro", "line": 309, "name": "HUSTR_PLRGREEN", "signature": "#define HUSTR_PLRGREEN"}, {"kind": "macro", "line": 310, "name": "HUSTR_PLRINDIGO", "signature": "#define HUSTR_PLRINDIGO"}, {"kind": "macro", "line": 311, "name": "HUSTR_PLRBROWN", "signature": "#define HUSTR_PLRBROWN"}, {"kind": "macro", "line": 312, "name": "HUSTR_PLRRED", "signature": "#define HUSTR_PLRRED"}, {"kind": "macro", "line": 314, "name": "HUSTR_KEYGREEN", "signature": "#define HUSTR_KEYGREEN"}, {"kind": "macro", "line": 315, "name": "HUSTR_KEYINDIGO", "signature": "#define HUSTR_KEYINDIGO"}, {"kind": "macro", "line": 316, "name": "HUSTR_KEYBROWN", "signature": "#define HUSTR_KEYBROWN"}, {"kind": "macro", "line": 317, "name": "HUSTR_KEYRED", "signature": "#define HUSTR_KEYRED"}, {"kind": "macro", "line": 323, "name": "AMSTR_FOLLOWON", "signature": "#define AMSTR_FOLLOWON"}, {"kind": "macro", "line": 324, "name": "AMSTR_FOLLOWOFF", "signature": "#define AMSTR_FOLLOWOFF"}, {"kind": "macro", "line": 326, "name": "AMSTR_GRIDON", "signature": "#define AMSTR_GRIDON"}, {"kind": "macro", "line": 327, "name": "AMSTR_GRIDOFF", "signature": "#define AMSTR_GRIDOFF"}, {"kind": "macro", "line": 329, "name": "AMSTR_MARKEDSPOT", "signature": "#define AMSTR_MARKEDSPOT"}, {"kind": "macro", "line": 330, "name": "AMSTR_MARKSCLEARED", "signature": "#define AMSTR_MARKSCLEARED"}, {"kind": "macro", "line": 336, "name": "STSTR_MUS", "signature": "#define STSTR_MUS"}, {"kind": "macro", "line": 337, "name": "STSTR_NOMUS", "signature": "#define STSTR_NOMUS"}, {"kind": "macro", "line": 338, "name": "STSTR_DQDON", "signature": "#define STSTR_DQDON"}, {"kind": "macro", "line": 339, "name": "STSTR_DQDOFF", "signature": "#define STSTR_DQDOFF"}, {"kind": "macro", "line": 341, "name": "STSTR_KFAADDED", "signature": "#define STSTR_KFAADDED"}, {"kind": "macro", "line": 342, "name": "STSTR_FAADDED", "signature": "#define STSTR_FAADDED"}, {"kind": "macro", "line": 344, "name": "STSTR_NCON", "signature": "#define STSTR_NCON"}, {"kind": "macro", "line": 345, "name": "STSTR_NCOFF", "signature": "#define STSTR_NCOFF"}, {"kind": "macro", "line": 347, "name": "STSTR_BEHOLD", "signature": "#define STSTR_BEHOLD"}, {"kind": "macro", "line": 348, "name": "STSTR_BEHOLDX", "signature": "#define STSTR_BEHOLDX"}, {"kind": "macro", "line": 350, "name": "STSTR_CHOPPERS", "signature": "#define STSTR_CHOPPERS"}, {"kind": "macro", "line": 351, "name": "STSTR_CLEV", "signature": "#define STSTR_CLEV"}, {"kind": "macro", "line": 356, "name": "E1TEXT", "signature": "#define E1TEXT"}, {"kind": "macro", "line": 374, "name": "E2TEXT", "signature": "#define E2TEXT"}, {"kind": "macro", "line": 394, "name": "E3TEXT", "signature": "#define E3TEXT"}, {"kind": "macro", "line": 414, "name": "E4TEXT", "signature": "#define E4TEXT"}, {"kind": "macro", "line": 435, "name": "C1TEXT", "signature": "#define C1TEXT"}, {"kind": "macro", "line": 451, "name": "C2TEXT", "signature": "#define C2TEXT"}, {"kind": "macro", "line": 473, "name": "C3TEXT", "signature": "#define C3TEXT"}, {"kind": "macro", "line": 487, "name": "C4TEXT", "signature": "#define C4TEXT"}, {"kind": "macro", "line": 508, "name": "C5TEXT", "signature": "#define C5TEXT"}, {"kind": "macro", "line": 518, "name": "C6TEXT", "signature": "#define C6TEXT"}, {"kind": "macro", "line": 526, "name": "P1TEXT", "signature": "#define P1TEXT"}, {"kind": "macro", "line": 543, "name": "P2TEXT", "signature": "#define P2TEXT"}, {"kind": "macro", "line": 554, "name": "P3TEXT", "signature": "#define P3TEXT"}, {"kind": "macro", "line": 568, "name": "P4TEXT", "signature": "#define P4TEXT"}, {"kind": "macro", "line": 584, "name": "P5TEXT", "signature": "#define P5TEXT"}, {"kind": "macro", "line": 592, "name": "P6TEXT", "signature": "#define P6TEXT"}, {"kind": "macro", "line": 598, "name": "T1TEXT", "signature": "#define T1TEXT"}, {"kind": "macro", "line": 613, "name": "T2TEXT", "signature": "#define T2TEXT"}, {"kind": "macro", "line": 625, "name": "T3TEXT", "signature": "#define T3TEXT"}, {"kind": "macro", "line": 635, "name": "T4TEXT", "signature": "#define T4TEXT"}, {"kind": "macro", "line": 649, "name": "T5TEXT", "signature": "#define T5TEXT"}, {"kind": "macro", "line": 657, "name": "T6TEXT", "signature": "#define T6TEXT"}, {"kind": "macro", "line": 674, "name": "CC_ZOMBIE", "signature": "#define CC_ZOMBIE"}, {"kind": "macro", "line": 675, "name": "CC_SHOTGUN", "signature": "#define CC_SHOTGUN"}, {"kind": "macro", "line": 676, "name": "CC_HEAVY", "signature": "#define CC_HEAVY"}, {"kind": "macro", "line": 677, "name": "CC_IMP", "signature": "#define CC_IMP"}, {"kind": "macro", "line": 678, "name": "CC_DEMON", "signature": "#define CC_DEMON"}, {"kind": "macro", "line": 679, "name": "CC_LOST", "signature": "#define CC_LOST"}, {"kind": "macro", "line": 680, "name": "CC_CACO", "signature": "#define CC_CACO"}, {"kind": "macro", "line": 681, "name": "CC_HELL", "signature": "#define CC_HELL"}, {"kind": "macro", "line": 682, "name": "CC_BARON", "signature": "#define CC_BARON"}, {"kind": "macro", "line": 683, "name": "CC_ARACH", "signature": "#define CC_ARACH"}, {"kind": "macro", "line": 684, "name": "CC_PAIN", "signature": "#define CC_PAIN"}, {"kind": "macro", "line": 685, "name": "CC_REVEN", "signature": "#define CC_REVEN"}, {"kind": "macro", "line": 686, "name": "CC_MANCU", "signature": "#define CC_MANCU"}, {"kind": "macro", "line": 687, "name": "CC_ARCH", "signature": "#define CC_ARCH"}, {"kind": "macro", "line": 688, "name": "CC_SPIDER", "signature": "#define CC_SPIDER"}, {"kind": "macro", "line": 689, "name": "CC_CYBER", "signature": "#define CC_CYBER"}, {"kind": "macro", "line": 690, "name": "CC_HERO", "signature": "#define CC_HERO"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Event handling. Events are asynchronous inputs generally generated by the game user. Events can be discarded if no responder claims them", "id": "progs/doomgeneric/d_event.c", "kind": "module", "label": "d_event.c", "language": "c", "sha256": "186f09b978c0df63", "symbol_count": 3, "symbols": [{"doc": "D_PostEvent Called by the I/O functions when input is detected", "kind": "function", "line": 35, "name": "D_PostEvent", "signature": "void D_PostEvent (event_t* ev)"}, {"kind": "function", "line": 43, "name": "D_PopEvent", "signature": "event_t *D_PopEvent(void)"}, {"kind": "macro", "line": 25, "name": "MAXEVENTS", "signature": "#define MAXEVENTS"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Event handling.", "id": "progs/doomgeneric/d_event.h", "kind": "module", "label": "d_event.h", "language": "h", "sha256": "7a66fd6f755a8a8b", "symbol_count": 4, "symbols": [{"doc": "Event structure.", "kind": "struct", "line": 42, "name": "event_t"}, {"doc": "Called by IO functions when input is detected.", "kind": "function", "line": 129, "name": "D_PostEvent", "signature": "void D_PostEvent (event_t *ev);"}, {"kind": "function", "line": 133, "name": "D_PopEvent", "signature": "event_t *D_PopEvent(void);"}, {"kind": "macro", "line": 21, "name": "__D_EVENT__", "signature": "#define __D_EVENT__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: We are referring to sprite numbers. PSPRITE ACTIONS for waepons. This struct controls the weapon animations. Each entry is: ammo/amunition type", "id": "progs/doomgeneric/d_items.c", "kind": "module", "label": "d_items.c", "language": "c", "sha256": "71175f526df33793", "symbol_count": 0, "symbols": []}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Items: key cards, artifacts, weapon, ammunition. Weapon info: sprite frames, ammunition use.", "id": "progs/doomgeneric/d_items.h", "kind": "module", "label": "d_items.h", "language": "h", "sha256": "0e7825744fa2ddc7", "symbol_count": 3, "symbols": [{"doc": "Weapon info: sprite frames, ammunition use.", "kind": "struct", "line": 28, "name": "weaponinfo_t"}, {"kind": "variable", "line": 39, "name": "weaponinfo", "signature": "extern weaponinfo_t weaponinfo[NUMWEAPONS];"}, {"kind": "macro", "line": 21, "name": "__D_ITEMS__", "signature": "#define __D_ITEMS__"}]}, {"doc": "Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Search for and locate an IWAD file, and initialize according to the IWAD type.", "id": "progs/doomgeneric/d_iwad.c", "kind": "module", "label": "d_iwad.c", "language": "c", "sha256": "cd3a015b801a0dc0", "symbol_count": 27, "symbols": [{"kind": "struct", "line": 83, "name": "registry_value_t"}, {"kind": "function", "line": 64, "name": "AddIWADDir", "signature": "static void AddIWADDir(char *dir)"}, {"kind": "function", "line": 192, "name": "GetRegistryString", "signature": "static char *GetRegistryString(registry_value_t *reg_val)"}, {"kind": "function", "line": 236, "name": "CheckUninstallStrings", "signature": "static void CheckUninstallStrings(void)"}, {"kind": "function", "line": 270, "name": "CheckCollectorsEdition", "signature": "static void CheckCollectorsEdition(void)"}, {"kind": "function", "line": 297, "name": "CheckSteamEdition", "signature": "static void CheckSteamEdition(void)"}, {"kind": "function", "line": 324, "name": "CheckSteamGUSPatches", "signature": "static void CheckSteamGUSPatches(void)"}, {"kind": "function", "line": 364, "name": "CheckDOSDefaults", "signature": "static void CheckDOSDefaults(void)"}, {"kind": "function", "line": 391, "name": "DirIsFile", "signature": "static boolean DirIsFile(char *path, char *filename)"}, {"kind": "function", "line": 408, "name": "CheckDirectoryHasIWAD", "signature": "static char *CheckDirectoryHasIWAD(char *dir, char *iwadname)"}, {"kind": "function", "line": 449, "name": "SearchDirectoryForIWAD", "signature": "static char *SearchDirectoryForIWAD(char *dir, int mask, GameMission_t *mission)"}, {"kind": "function", "line": 477, "name": "IdentifyIWADByName", "signature": "static GameMission_t IdentifyIWADByName(char *name, int mask)"}, {"kind": "function", "line": 518, "name": "AddDoomWadPath", "signature": "static void AddDoomWadPath(void)"}, {"kind": "function", "line": 569, "name": "BuildIWADDirList", "signature": "static void BuildIWADDirList(void)"}, {"kind": "function", "line": 630, "name": "D_FindWADByName", "signature": "char *D_FindWADByName(char *name)"}, {"kind": "function", "line": 681, "name": "D_TryFindWADByName", "signature": "char *D_TryFindWADByName(char *filename)"}, {"kind": "function", "line": 704, "name": "D_FindIWAD", "signature": "char *D_FindIWAD(int mask, GameMission_t *mission)"}, {"kind": "function", "line": 757, "name": "D_FindAllIWADs", "signature": "const iwad_t **D_FindAllIWADs(int mask)"}, {"kind": "function", "line": 796, "name": "D_SaveGameIWADName", "signature": "char *D_SaveGameIWADName(GameMission_t gamemission)"}, {"kind": "function", "line": 820, "name": "D_SuggestIWADName", "signature": "char *D_SuggestIWADName(GameMission_t mission, GameMode_t mode)"}, {"kind": "function", "line": 835, "name": "D_SuggestGameName", "signature": "char *D_SuggestGameName(GameMission_t mission, GameMode_t mode)"}, {"kind": "macro", "line": 58, "name": "MAX_IWAD_DIRS", "signature": "#define MAX_IWAD_DIRS"}, {"kind": "macro", "line": 80, "name": "WIN32_LEAN_AND_MEAN", "signature": "#define WIN32_LEAN_AND_MEAN"}, {"kind": "macro", "line": 90, "name": "UNINSTALLER_STRING", "signature": "#define UNINSTALLER_STRING"}, {"kind": "macro", "line": 102, "name": "SOFTWARE_KEY", "signature": "#define SOFTWARE_KEY"}, {"kind": "macro", "line": 104, "name": "SOFTWARE_KEY", "signature": "#define SOFTWARE_KEY"}, {"kind": "macro", "line": 189, "name": "STEAM_BFG_GUS_PATCHES", "signature": "#define STEAM_BFG_GUS_PATCHES"}]}, {"doc": "Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Find IWAD and initialize according to IWAD type.", "id": "progs/doomgeneric/d_iwad.h", "kind": "module", "label": "d_iwad.h", "language": "h", "sha256": "305c2082b4a16e9f", "symbol_count": 14, "symbols": [{"kind": "struct", "line": 34, "name": "iwad_t"}, {"kind": "function", "line": 42, "name": "D_FindWADByName", "signature": "char *D_FindWADByName(char *filename);"}, {"kind": "function", "line": 43, "name": "D_TryFindWADByName", "signature": "char *D_TryFindWADByName(char *filename);"}, {"kind": "function", "line": 44, "name": "D_FindIWAD", "signature": "char *D_FindIWAD(int mask, GameMission_t *mission);"}, {"kind": "function", "line": 45, "name": "D_FindAllIWADs", "signature": "const iwad_t **D_FindAllIWADs(int mask);"}, {"kind": "function", "line": 46, "name": "D_SaveGameIWADName", "signature": "char *D_SaveGameIWADName(GameMission_t gamemission);"}, {"kind": "function", "line": 47, "name": "D_SuggestIWADName", "signature": "char *D_SuggestIWADName(GameMission_t mission, GameMode_t mode);"}, {"kind": "function", "line": 48, "name": "D_SuggestGameName", "signature": "char *D_SuggestGameName(GameMission_t mission, GameMode_t mode);"}, {"kind": "function", "line": 49, "name": "D_CheckCorrectIWAD", "signature": "void D_CheckCorrectIWAD(GameMission_t mission);"}, {"kind": "macro", "line": 20, "name": "__D_IWAD__", "signature": "#define __D_IWAD__"}, {"kind": "macro", "line": 24, "name": "IWAD_MASK_DOOM", "signature": "#define IWAD_MASK_DOOM"}, {"kind": "macro", "line": 30, "name": "IWAD_MASK_HERETIC", "signature": "#define IWAD_MASK_HERETIC"}, {"kind": "macro", "line": 31, "name": "IWAD_MASK_HEXEN", "signature": "#define IWAD_MASK_HEXEN"}, {"kind": "macro", "line": 32, "name": "IWAD_MASK_STRIFE", "signature": "#define IWAD_MASK_STRIFE"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Main loop code.", "id": "progs/doomgeneric/d_loop.c", "kind": "module", "label": "d_loop.c", "language": "c", "sha256": "11a723932a75b67f", "symbol_count": 18, "symbols": [{"kind": "struct", "line": 45, "name": "ticcmd_set_t"}, {"kind": "function", "line": 119, "name": "GetAdjustedTime", "signature": "static int GetAdjustedTime(void)"}, {"kind": "function", "line": 136, "name": "BuildNewTic", "signature": "static boolean BuildNewTic(void)"}, {"kind": "function", "line": 203, "name": "NetUpdate", "signature": "void NetUpdate (void)"}, {"kind": "function", "line": 252, "name": "D_Disconnected", "signature": "static void D_Disconnected(void)"}, {"kind": "function", "line": 271, "name": "D_ReceiveTic", "signature": "void D_ReceiveTic(ticcmd_t *ticcmds, boolean *players_mask)"}, {"kind": "function", "line": 305, "name": "D_StartGameLoop", "signature": "void D_StartGameLoop(void)"}, {"kind": "function", "line": 315, "name": "BlockUntilStart", "signature": "static void BlockUntilStart(net_gamesettings_t *settings,\n netgame_sta..."}, {"kind": "function", "line": 340, "name": "D_StartNetGame", "signature": "void D_StartNetGame(net_gamesettings_t *settings,\n netgame_startup_callback_t ..."}, {"kind": "function", "line": 452, "name": "D_InitNetGame", "signature": "boolean D_InitNetGame(net_connect_data_t *connect_data)"}, {"doc": "D_QuitNetGame Called before quitting to leave a net game without hanging the other players", "kind": "function", "line": 560, "name": "D_QuitNetGame", "signature": "void D_QuitNetGame (void)"}, {"kind": "function", "line": 568, "name": "GetLowTic", "signature": "static int GetLowTic(void)"}, {"kind": "function", "line": 591, "name": "OldNetSync", "signature": "static void OldNetSync(void)"}, {"kind": "function", "line": 642, "name": "PlayersInGame", "signature": "static boolean PlayersInGame(void)"}, {"kind": "function", "line": 672, "name": "TicdupSquash", "signature": "static void TicdupSquash(ticcmd_set_t *set)"}, {"kind": "function", "line": 689, "name": "SinglePlayerClear", "signature": "static void SinglePlayerClear(ticcmd_set_t *set)"}, {"kind": "function", "line": 706, "name": "TryRunTics", "signature": "void TryRunTics (void)"}, {"kind": "function", "line": 822, "name": "D_RegisterLoopCallbacks", "signature": "void D_RegisterLoopCallbacks(loop_interface_t *i)"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Main loop stuff. Callback function invoked while waiting for the netgame to start. The callback is invoked when new players are ready. The callback should return true, or return false to abort startup.", "id": "progs/doomgeneric/d_loop.h", "kind": "module", "label": "d_loop.h", "language": "h", "sha256": "18d628f6b0812944", "symbol_count": 10, "symbols": [{"kind": "struct", "line": 31, "name": "loop_interface_t"}, {"doc": "Register callback functions for the main loop code to use.", "kind": "function", "line": 52, "name": "D_RegisterLoopCallbacks", "signature": "void D_RegisterLoopCallbacks(loop_interface_t *i);"}, {"doc": "Create any new ticcmds and broadcast to other players.", "kind": "function", "line": 55, "name": "NetUpdate", "signature": "void NetUpdate (void);"}, {"doc": "Broadcasts special packets to other players to notify of game exit", "kind": "function", "line": 59, "name": "D_QuitNetGame", "signature": "void D_QuitNetGame (void);"}, {"doc": "? how many ticks to run?", "kind": "function", "line": 62, "name": "TryRunTics", "signature": "void TryRunTics (void);"}, {"doc": "Called at start of game loop to initialize timers", "kind": "function", "line": 65, "name": "D_StartGameLoop", "signature": "void D_StartGameLoop(void);"}, {"kind": "function", "line": 74, "name": "D_StartNetGame", "signature": "void D_StartNetGame(net_gamesettings_t *settings, netgame_startup_callback_t callback);"}, {"kind": "variable", "line": 77, "name": "singletics", "signature": "extern boolean singletics;"}, {"kind": "variable", "line": 78, "name": "ticdup", "signature": "extern int gametic, ticdup;"}, {"kind": "macro", "line": 20, "name": "__D_LOOP__", "signature": "#define __D_LOOP__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: DOOM main program (D_DoomMain) and game loop (D_DoomLoop), plus functions to determine game mode (shareware, registered), parse command line parameters, configure game parameters (turbo), and call the startup functions.", "id": "progs/doomgeneric/d_main.c", "kind": "module", "label": "d_main.c", "language": "c", "sha256": "c41019af767838cf", "symbol_count": 29, "symbols": [{"doc": "D_ProcessEvents Send all the events of the given timestamp down the responder chain", "kind": "function", "line": 139, "name": "D_ProcessEvents", "signature": "void D_ProcessEvents (void)"}, {"kind": "function", "line": 169, "name": "D_Display", "signature": "void D_Display (void)"}, {"kind": "function", "line": 335, "name": "D_BindVariables", "signature": "void D_BindVariables(void)"}, {"kind": "function", "line": 388, "name": "D_GrabMouseCallback", "signature": "boolean D_GrabMouseCallback(void)"}, {"doc": "D_DoomLoop", "kind": "function", "line": 408, "name": "D_DoomLoop", "signature": "void D_DoomLoop (void)"}, {"doc": "D_PageTicker Handles timing for warped projection", "kind": "function", "line": 490, "name": "D_PageTicker", "signature": "void D_PageTicker (void)"}, {"doc": "D_PageDrawer", "kind": "function", "line": 501, "name": "D_PageDrawer", "signature": "void D_PageDrawer (void)"}, {"doc": "D_AdvanceDemo Called after each demo or intro demosequence finishes", "kind": "function", "line": 511, "name": "D_AdvanceDemo", "signature": "void D_AdvanceDemo (void)"}, {"doc": "This cycles through the demo sequences. FIXME - version dependend demo numbers?", "kind": "function", "line": 521, "name": "D_DoAdvanceDemo", "signature": "void D_DoAdvanceDemo (void)"}, {"doc": "D_StartTitle", "kind": "function", "line": 609, "name": "D_StartTitle", "signature": "void D_StartTitle (void)"}, {"kind": "function", "line": 658, "name": "GetGameName", "signature": "static char *GetGameName(char *gamename)"}, {"kind": "function", "line": 701, "name": "SetMissionForPackName", "signature": "static void SetMissionForPackName(char *pack_name)"}, {"kind": "function", "line": 737, "name": "D_IdentifyVersion", "signature": "void D_IdentifyVersion(void)"}, {"kind": "function", "line": 820, "name": "D_SetGameDescription", "signature": "void D_SetGameDescription(void)"}, {"kind": "function", "line": 883, "name": "D_AddFile", "signature": "static boolean D_AddFile(char *filename)"}, {"kind": "function", "line": 918, "name": "PrintDehackedBanners", "signature": "void PrintDehackedBanners(void)"}, {"kind": "function", "line": 963, "name": "InitGameVersion", "signature": "static void InitGameVersion(void)"}, {"kind": "function", "line": 1065, "name": "PrintGameVersion", "signature": "void PrintGameVersion(void)"}, {"kind": "function", "line": 1082, "name": "D_Endoom", "signature": "static void D_Endoom(void)"}, {"doc": "if ORIGCODE Load dehacked patches needed for certain IWADs.", "kind": "function", "line": 1105, "name": "LoadIwadDeh", "signature": "static void LoadIwadDeh(void)"}, {"doc": "D_DoomMain", "kind": "function", "line": 1178, "name": "D_DoomMain", "signature": "void D_DoomMain (void)"}, {"kind": "function", "line": 131, "name": "D_ConnectNetGame", "signature": "void D_ConnectNetGame(void);"}, {"kind": "function", "line": 132, "name": "D_CheckNetGame", "signature": "void D_CheckNetGame(void);"}, {"kind": "function", "line": 167, "name": "R_ExecuteSetViewSize", "signature": "void R_ExecuteSetViewSize (void);"}, {"kind": "variable", "line": 106, "name": "inhelpscreens", "signature": "extern boolean inhelpscreens;"}, {"kind": "variable", "line": 165, "name": "setsizeneeded", "signature": "extern boolean setsizeneeded;"}, {"kind": "variable", "line": 166, "name": "showMessages", "signature": "extern int showMessages;"}, {"kind": "variable", "line": 1351, "name": "forwardmove", "signature": "extern int forwardmove[2];"}, {"kind": "variable", "line": 1352, "name": "sidemove", "signature": "extern int sidemove[2];"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: System specific interface stuff. Read events from all input devices", "id": "progs/doomgeneric/d_main.h", "kind": "module", "label": "d_main.h", "language": "h", "sha256": "02429610ad886820", "symbol_count": 8, "symbols": [{"kind": "function", "line": 30, "name": "D_ProcessEvents", "signature": "void D_ProcessEvents (void);"}, {"doc": "BASE LEVEL", "kind": "function", "line": 36, "name": "D_PageTicker", "signature": "void D_PageTicker (void);"}, {"kind": "function", "line": 37, "name": "D_PageDrawer", "signature": "void D_PageDrawer (void);"}, {"kind": "function", "line": 38, "name": "D_AdvanceDemo", "signature": "void D_AdvanceDemo (void);"}, {"kind": "function", "line": 39, "name": "D_DoAdvanceDemo", "signature": "void D_DoAdvanceDemo (void);"}, {"kind": "function", "line": 40, "name": "D_StartTitle", "signature": "void D_StartTitle (void);"}, {"kind": "variable", "line": 46, "name": "gameaction", "signature": "extern gameaction_t gameaction;"}, {"kind": "macro", "line": 21, "name": "__D_MAIN__", "signature": "#define __D_MAIN__"}]}, {"doc": "Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Functions and definitions relating to the game type and operational mode. Valid game mode/mission combinations, with the number of episodes/maps for each.", "id": "progs/doomgeneric/d_mode.c", "kind": "module", "label": "d_mode.c", "language": "c", "sha256": "acc50e09f501b237", "symbol_count": 6, "symbols": [{"kind": "function", "line": 50, "name": "D_ValidGameMode", "signature": "boolean D_ValidGameMode(GameMission_t mission, GameMode_t mode)"}, {"kind": "function", "line": 65, "name": "D_ValidEpisodeMap", "signature": "boolean D_ValidEpisodeMap(GameMission_t mission, GameMode_t mode,\n int e..."}, {"kind": "function", "line": 103, "name": "D_GetNumEpisodes", "signature": "int D_GetNumEpisodes(GameMission_t mission, GameMode_t mode)"}, {"kind": "function", "line": 135, "name": "D_ValidGameVersion", "signature": "boolean D_ValidGameVersion(GameMission_t mission, GameVersion_t version)"}, {"kind": "function", "line": 161, "name": "D_IsEpisodeMap", "signature": "boolean D_IsEpisodeMap(GameMission_t mission)"}, {"kind": "function", "line": 182, "name": "D_GameMissionString", "signature": "char *D_GameMissionString(GameMission_t mission)"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Functions and definitions relating to the game type and operational mode. The \"mission\" controls what game we are playing.", "id": "progs/doomgeneric/d_mode.h", "kind": "module", "label": "d_mode.h", "language": "h", "sha256": "7886464002079f67", "symbol_count": 3, "symbols": [{"kind": "function", "line": 93, "name": "D_GetNumEpisodes", "signature": "int D_GetNumEpisodes(GameMission_t mission, GameMode_t mode);"}, {"kind": "function", "line": 95, "name": "D_GameMissionString", "signature": "char *D_GameMissionString(GameMission_t mission);"}, {"kind": "macro", "line": 21, "name": "__D_MODE__", "signature": "#define __D_MODE__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: DOOM Network game communication and protocol, all OS independend parts.", "id": "progs/doomgeneric/d_net.c", "kind": "module", "label": "d_net.c", "language": "c", "sha256": "99d0758de7f7576e", "symbol_count": 8, "symbols": [{"kind": "function", "line": 45, "name": "PlayerQuitGame", "signature": "static void PlayerQuitGame(player_t *player)"}, {"kind": "function", "line": 71, "name": "RunTic", "signature": "static void RunTic(ticcmd_t *cmds, boolean *ingame)"}, {"kind": "function", "line": 108, "name": "LoadGameSettings", "signature": "static void LoadGameSettings(net_gamesettings_t *settings)"}, {"kind": "function", "line": 139, "name": "SaveGameSettings", "signature": "static void SaveGameSettings(net_gamesettings_t *settings)"}, {"kind": "function", "line": 159, "name": "InitConnectData", "signature": "static void InitConnectData(net_connect_data_t *connect_data)"}, {"kind": "function", "line": 215, "name": "D_ConnectNetGame", "signature": "void D_ConnectNetGame(void)"}, {"doc": "D_CheckNetGame Works out player numbers among the net participants", "kind": "function", "line": 240, "name": "D_CheckNetGame", "signature": "void D_CheckNetGame (void)"}, {"kind": "variable", "line": 73, "name": "advancedemo", "signature": "extern boolean advancedemo;"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: The player data structure depends on a number of other structs: items (internal inventory), animation states (closely tied to the sprites used to represent them, unfortunately).", "id": "progs/doomgeneric/d_player.h", "kind": "module", "label": "d_player.h", "language": "h", "sha256": "e303bd61546f7adc", "symbol_count": 5, "symbols": [{"doc": "Extended player object info: player_t", "kind": "struct", "line": 78, "name": "player_s"}, {"doc": "INTERMISSION Structure passed e.g. to WI_Start(wb)", "kind": "struct", "line": 168, "name": "wbplayerstruct_t"}, {"kind": "struct", "line": 182, "name": "wbstartstruct_t"}, {"doc": "Extended player object info: player_t", "kind": "type_alias", "line": 78, "name": "mo", "signature": "typedef struct player_s { mobj_t* mo;"}, {"kind": "macro", "line": 21, "name": "__D_PLAYER__", "signature": "#define __D_PLAYER__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Typedefs related to to textures etc., isolated here to make it easier separating modules. Flats?", "id": "progs/doomgeneric/d_textur.h", "kind": "module", "label": "d_textur.h", "language": "h", "sha256": "5e1f2976cf039acd", "symbol_count": 2, "symbols": [{"doc": "Flats? a pic is an unmasked block of pixels", "kind": "struct", "line": 33, "name": "pic_t"}, {"kind": "macro", "line": 22, "name": "__D_TEXTUR__", "signature": "#define __D_TEXTUR__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: MapObj data. Map Objects or mobjs are actors, entities, thinker, take-your-pick... anything that moves, acts, or suffers state changes of more or less violent nature. Experimental stuff.", "id": "progs/doomgeneric/d_think.h", "kind": "module", "label": "d_think.h", "language": "h", "sha256": "6a7d65328ffb0d27", "symbol_count": 4, "symbols": [{"doc": "Doubly linked list of actors.", "kind": "struct", "line": 58, "name": "thinker_s"}, {"doc": "Historically, \"think_t\" is yet another function pointer to a routine to handle an actor.", "kind": "type_alias", "line": 54, "name": "think_t", "signature": "typedef actionf_t think_t;"}, {"doc": "Doubly linked list of actors.", "kind": "type_alias", "line": 58, "name": "prev", "signature": "typedef struct thinker_s { struct thinker_s* prev;"}, {"kind": "macro", "line": 23, "name": "__D_THINK__", "signature": "#define __D_THINK__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 1993-2008 Raven Software Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: System specific interface stuff. The data sampled per tick (single player) and transmitted to other peers (multiplayer). Mainly movements/button commands per game tick, plus a checksum for internal state consistency.", "id": "progs/doomgeneric/d_ticcmd.h", "kind": "module", "label": "d_ticcmd.h", "language": "h", "sha256": "d20e810a1975ad79", "symbol_count": 2, "symbols": [{"kind": "struct", "line": 32, "name": "ticcmd_t"}, {"kind": "macro", "line": 22, "name": "__D_TICCMD__", "signature": "#define __D_TICCMD__"}]}, {"doc": "Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. Dehacked entrypoint and common code These are the limits that dehacked uses (from dheinit.h in the dehacked source). If these limits are exceeded, it does not generate an error, but a warning is displayed.", "id": "progs/doomgeneric/deh_main.h", "kind": "module", "label": "deh_main.h", "language": "h", "sha256": "7092372dc27ffb99", "symbol_count": 12, "symbols": [{"kind": "function", "line": 33, "name": "DEH_ParseCommandLine", "signature": "void DEH_ParseCommandLine(void);"}, {"kind": "function", "line": 34, "name": "DEH_LoadFile", "signature": "int DEH_LoadFile(char *filename);"}, {"kind": "function", "line": 35, "name": "DEH_LoadLump", "signature": "int DEH_LoadLump(int lumpnum, boolean allow_long, boolean allow_error);"}, {"kind": "function", "line": 36, "name": "DEH_LoadLumpByName", "signature": "int DEH_LoadLumpByName(char *name, boolean allow_long, boolean allow_error);"}, {"kind": "function", "line": 40, "name": "DEH_Checksum", "signature": "void DEH_Checksum(sha1_digest_t digest);"}, {"kind": "variable", "line": 42, "name": "deh_allow_extended_strings", "signature": "extern boolean deh_allow_extended_strings;"}, {"kind": "variable", "line": 43, "name": "deh_allow_long_strings", "signature": "extern boolean deh_allow_long_strings;"}, {"kind": "variable", "line": 44, "name": "deh_allow_long_cheats", "signature": "extern boolean deh_allow_long_cheats;"}, {"kind": "variable", "line": 45, "name": "deh_apply_cheats", "signature": "extern boolean deh_apply_cheats;"}, {"kind": "macro", "line": 19, "name": "DEH_MAIN_H", "signature": "#define DEH_MAIN_H"}, {"kind": "macro", "line": 30, "name": "DEH_VANILLA_NUMSTATES", "signature": "#define DEH_VANILLA_NUMSTATES"}, {"kind": "macro", "line": 31, "name": "DEH_VANILLA_NUMSFX", "signature": "#define DEH_VANILLA_NUMSFX"}]}, {"doc": "Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. Parses \"Misc\" sections in dehacked files", "id": "progs/doomgeneric/deh_misc.h", "kind": "module", "label": "deh_misc.h", "language": "h", "sha256": "bcba0a699917ccaa", "symbol_count": 49, "symbols": [{"kind": "variable", "line": 42, "name": "deh_initial_health", "signature": "extern int deh_initial_health;"}, {"kind": "variable", "line": 43, "name": "deh_initial_bullets", "signature": "extern int deh_initial_bullets;"}, {"kind": "variable", "line": 44, "name": "deh_max_health", "signature": "extern int deh_max_health;"}, {"kind": "variable", "line": 45, "name": "deh_max_armor", "signature": "extern int deh_max_armor;"}, {"kind": "variable", "line": 46, "name": "deh_green_armor_class", "signature": "extern int deh_green_armor_class;"}, {"kind": "variable", "line": 47, "name": "deh_blue_armor_class", "signature": "extern int deh_blue_armor_class;"}, {"kind": "variable", "line": 48, "name": "deh_max_soulsphere", "signature": "extern int deh_max_soulsphere;"}, {"kind": "variable", "line": 49, "name": "deh_soulsphere_health", "signature": "extern int deh_soulsphere_health;"}, {"kind": "variable", "line": 50, "name": "deh_megasphere_health", "signature": "extern int deh_megasphere_health;"}, {"kind": "variable", "line": 51, "name": "deh_god_mode_health", "signature": "extern int deh_god_mode_health;"}, {"kind": "variable", "line": 52, "name": "deh_idfa_armor", "signature": "extern int deh_idfa_armor;"}, {"kind": "variable", "line": 53, "name": "deh_idfa_armor_class", "signature": "extern int deh_idfa_armor_class;"}, {"kind": "variable", "line": 54, "name": "deh_idkfa_armor", "signature": "extern int deh_idkfa_armor;"}, {"kind": "variable", "line": 55, "name": "deh_idkfa_armor_class", "signature": "extern int deh_idkfa_armor_class;"}, {"kind": "variable", "line": 56, "name": "deh_bfg_cells_per_shot", "signature": "extern int deh_bfg_cells_per_shot;"}, {"kind": "variable", "line": 57, "name": "deh_species_infighting", "signature": "extern int deh_species_infighting;"}, {"kind": "macro", "line": 19, "name": "DEH_MISC_H", "signature": "#define DEH_MISC_H"}, {"kind": "macro", "line": 23, "name": "DEH_DEFAULT_INITIAL_HEALTH", "signature": "#define DEH_DEFAULT_INITIAL_HEALTH"}, {"kind": "macro", "line": 24, "name": "DEH_DEFAULT_INITIAL_BULLETS", "signature": "#define DEH_DEFAULT_INITIAL_BULLETS"}, {"kind": "macro", "line": 25, "name": "DEH_DEFAULT_MAX_HEALTH", "signature": "#define DEH_DEFAULT_MAX_HEALTH"}, {"kind": "macro", "line": 26, "name": "DEH_DEFAULT_MAX_ARMOR", "signature": "#define DEH_DEFAULT_MAX_ARMOR"}, {"kind": "macro", "line": 27, "name": "DEH_DEFAULT_GREEN_ARMOR_CLASS", "signature": "#define DEH_DEFAULT_GREEN_ARMOR_CLASS"}, {"kind": "macro", "line": 28, "name": "DEH_DEFAULT_BLUE_ARMOR_CLASS", "signature": "#define DEH_DEFAULT_BLUE_ARMOR_CLASS"}, {"kind": "macro", "line": 29, "name": "DEH_DEFAULT_MAX_SOULSPHERE", "signature": "#define DEH_DEFAULT_MAX_SOULSPHERE"}, {"kind": "macro", "line": 30, "name": "DEH_DEFAULT_SOULSPHERE_HEALTH", "signature": "#define DEH_DEFAULT_SOULSPHERE_HEALTH"}, {"kind": "macro", "line": 31, "name": "DEH_DEFAULT_MEGASPHERE_HEALTH", "signature": "#define DEH_DEFAULT_MEGASPHERE_HEALTH"}, {"kind": "macro", "line": 32, "name": "DEH_DEFAULT_GOD_MODE_HEALTH", "signature": "#define DEH_DEFAULT_GOD_MODE_HEALTH"}, {"kind": "macro", "line": 33, "name": "DEH_DEFAULT_IDFA_ARMOR", "signature": "#define DEH_DEFAULT_IDFA_ARMOR"}, {"kind": "macro", "line": 34, "name": "DEH_DEFAULT_IDFA_ARMOR_CLASS", "signature": "#define DEH_DEFAULT_IDFA_ARMOR_CLASS"}, {"kind": "macro", "line": 35, "name": "DEH_DEFAULT_IDKFA_ARMOR", "signature": "#define DEH_DEFAULT_IDKFA_ARMOR"}, {"kind": "macro", "line": 36, "name": "DEH_DEFAULT_IDKFA_ARMOR_CLASS", "signature": "#define DEH_DEFAULT_IDKFA_ARMOR_CLASS"}, {"kind": "macro", "line": 37, "name": "DEH_DEFAULT_BFG_CELLS_PER_SHOT", "signature": "#define DEH_DEFAULT_BFG_CELLS_PER_SHOT"}, {"kind": "macro", "line": 38, "name": "DEH_DEFAULT_SPECIES_INFIGHTING", "signature": "#define DEH_DEFAULT_SPECIES_INFIGHTING"}, {"kind": "macro", "line": 63, "name": "deh_initial_health", "signature": "#define deh_initial_health"}, {"kind": "macro", "line": 64, "name": "deh_initial_bullets", "signature": "#define deh_initial_bullets"}, {"kind": "macro", "line": 65, "name": "deh_max_health", "signature": "#define deh_max_health"}, {"kind": "macro", "line": 66, "name": "deh_max_armor", "signature": "#define deh_max_armor"}, {"kind": "macro", "line": 67, "name": "deh_green_armor_class", "signature": "#define deh_green_armor_class"}, {"kind": "macro", "line": 68, "name": "deh_blue_armor_class", "signature": "#define deh_blue_armor_class"}, {"kind": "macro", "line": 69, "name": "deh_max_soulsphere", "signature": "#define deh_max_soulsphere"}, {"kind": "macro", "line": 70, "name": "deh_soulsphere_health", "signature": "#define deh_soulsphere_health"}, {"kind": "macro", "line": 71, "name": "deh_megasphere_health", "signature": "#define deh_megasphere_health"}, {"kind": "macro", "line": 72, "name": "deh_god_mode_health", "signature": "#define deh_god_mode_health"}, {"kind": "macro", "line": 73, "name": "deh_idfa_armor", "signature": "#define deh_idfa_armor"}, {"kind": "macro", "line": 74, "name": "deh_idfa_armor_class", "signature": "#define deh_idfa_armor_class"}, {"kind": "macro", "line": 75, "name": "deh_idkfa_armor", "signature": "#define deh_idkfa_armor"}, {"kind": "macro", "line": 76, "name": "deh_idkfa_armor_class", "signature": "#define deh_idkfa_armor_class"}, {"kind": "macro", "line": 77, "name": "deh_bfg_cells_per_shot", "signature": "#define deh_bfg_cells_per_shot"}, {"kind": "macro", "line": 78, "name": "deh_species_infighting", "signature": "#define deh_species_infighting"}]}, {"doc": "Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. Dehacked string replacements Used to do dehacked text substitutions throughout the program", "id": "progs/doomgeneric/deh_str.h", "kind": "module", "label": "deh_str.h", "language": "h", "sha256": "0bffd7c3f246b050", "symbol_count": 11, "symbols": [{"kind": "function", "line": 29, "name": "DEH_String", "signature": "char *DEH_String(char *s);"}, {"kind": "function", "line": 30, "name": "DEH_printf", "signature": "void DEH_printf(char *fmt, ...);"}, {"kind": "function", "line": 31, "name": "DEH_fprintf", "signature": "void DEH_fprintf(FILE *fstream, char *fmt, ...);"}, {"kind": "function", "line": 32, "name": "DEH_snprintf", "signature": "void DEH_snprintf(char *buffer, size_t len, char *fmt, ...);"}, {"kind": "function", "line": 33, "name": "DEH_AddStringReplacement", "signature": "void DEH_AddStringReplacement(char *from_text, char *to_text);"}, {"kind": "macro", "line": 19, "name": "DEH_STR_H", "signature": "#define DEH_STR_H"}, {"kind": "macro", "line": 38, "name": "DEH_String", "signature": "#define DEH_String(x)"}, {"kind": "macro", "line": 39, "name": "DEH_printf", "signature": "#define DEH_printf"}, {"kind": "macro", "line": 40, "name": "DEH_fprintf", "signature": "#define DEH_fprintf"}, {"kind": "macro", "line": 41, "name": "DEH_snprintf", "signature": "#define DEH_snprintf"}, {"kind": "macro", "line": 42, "name": "DEH_AddStringReplacement", "signature": "#define DEH_AddStringReplacement(x, y)"}]}, {"id": "progs/doomgeneric/doom.h", "kind": "module", "label": "doom.h", "language": "h", "sha256": "d9feb3771dca311e", "symbol_count": 2, "symbols": [{"kind": "function", "line": 28, "name": "D_DoomMain", "signature": "void D_DoomMain (void);"}, {"kind": "macro", "line": 10, "name": "SRC_CHOCDOOM_DOOM_H_", "signature": "#define SRC_CHOCDOOM_DOOM_H_"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: all external data is defined here most of the data is loaded into different structures at run time some internal structures shared by many modules are here The most basic types we use, portability. Some global defines, that configure the game.", "id": "progs/doomgeneric/doomdata.h", "kind": "module", "label": "doomdata.h", "language": "h", "sha256": "c296f3cbd788e87c", "symbol_count": 11, "symbols": [{"kind": "macro", "line": 22, "name": "__DOOMDATA__", "signature": "#define __DOOMDATA__"}, {"kind": "macro", "line": 98, "name": "ML_BLOCKING", "signature": "#define ML_BLOCKING"}, {"kind": "macro", "line": 101, "name": "ML_BLOCKMONSTERS", "signature": "#define ML_BLOCKMONSTERS"}, {"kind": "macro", "line": 105, "name": "ML_TWOSIDED", "signature": "#define ML_TWOSIDED"}, {"kind": "macro", "line": 117, "name": "ML_DONTPEGTOP", "signature": "#define ML_DONTPEGTOP"}, {"kind": "macro", "line": 120, "name": "ML_DONTPEGBOTTOM", "signature": "#define ML_DONTPEGBOTTOM"}, {"kind": "macro", "line": 123, "name": "ML_SECRET", "signature": "#define ML_SECRET"}, {"kind": "macro", "line": 126, "name": "ML_SOUNDBLOCK", "signature": "#define ML_SOUNDBLOCK"}, {"kind": "macro", "line": 129, "name": "ML_DONTDRAW", "signature": "#define ML_DONTDRAW"}, {"kind": "macro", "line": 132, "name": "ML_MAPPED", "signature": "#define ML_MAPPED"}, {"kind": "macro", "line": 175, "name": "NF_SUBSECTOR", "signature": "#define\tNF_SUBSECTOR"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: DoomDef - basic defines for DOOM, e.g. Version, game mode and skill level, and display parameters. Location for any defines turned variables. None.", "id": "progs/doomgeneric/doomdef.c", "kind": "module", "label": "doomdef.c", "language": "c", "sha256": "2aebd7ef7ea9fa2d", "symbol_count": 0, "symbols": []}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Internally used data structures for virtually everything, lots of other stuff.", "id": "progs/doomgeneric/doomdef.h", "kind": "module", "label": "doomdef.h", "language": "h", "sha256": "bffb986830bcf569", "symbol_count": 9, "symbols": [{"kind": "macro", "line": 21, "name": "__DOOMDEF__", "signature": "#define __DOOMDEF__"}, {"kind": "macro", "line": 34, "name": "DOOM_VERSION", "signature": "#define DOOM_VERSION"}, {"kind": "macro", "line": 37, "name": "DOOM_191_VERSION", "signature": "#define DOOM_191_VERSION"}, {"kind": "macro", "line": 42, "name": "RANGECHECK", "signature": "#define RANGECHECK"}, {"kind": "macro", "line": 45, "name": "MAXPLAYERS", "signature": "#define MAXPLAYERS"}, {"kind": "macro", "line": 77, "name": "MTF_EASY", "signature": "#define\tMTF_EASY"}, {"kind": "macro", "line": 78, "name": "MTF_NORMAL", "signature": "#define\tMTF_NORMAL"}, {"kind": "macro", "line": 79, "name": "MTF_HARD", "signature": "#define\tMTF_HARD"}, {"kind": "macro", "line": 82, "name": "MTF_AMBUSH", "signature": "#define\tMTF_AMBUSH"}]}, {"doc": "Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: List of features which can be enabled/disabled to slim down the program. Enables wad merging (the '-merge' command line parameter) Enables dehacked support ('-deh') Enables multiplayer support (network games)", "id": "progs/doomgeneric/doomfeatures.h", "kind": "module", "label": "doomfeatures.h", "language": "h", "sha256": "1e2d7f3177e35973", "symbol_count": 2, "symbols": [{"kind": "macro", "line": 20, "name": "DOOM_FEATURES_H", "signature": "#define DOOM_FEATURES_H"}, {"kind": "macro", "line": 36, "name": "FEATURE_SOUND", "signature": "#define FEATURE_SOUND"}]}, {"id": "progs/doomgeneric/doomgeneric.c", "kind": "module", "label": "doomgeneric.c", "language": "c", "sha256": "5b90a36c3e234895", "symbol_count": 1, "symbols": [{"kind": "function", "line": 6, "name": "dg_Create", "signature": "void dg_Create()"}]}, {"id": "progs/doomgeneric/doomgeneric.h", "kind": "module", "label": "doomgeneric.h", "language": "h", "sha256": "2ca79d74a6a1ec4a", "symbol_count": 10, "symbols": [{"kind": "function", "line": 14, "name": "DG_Init", "signature": "void DG_Init();"}, {"kind": "function", "line": 15, "name": "DG_DrawFrame", "signature": "void DG_DrawFrame();"}, {"kind": "function", "line": 16, "name": "DG_SleepMs", "signature": "void DG_SleepMs(uint32_t ms);"}, {"kind": "function", "line": 17, "name": "DG_GetTicksMs", "signature": "uint32_t DG_GetTicksMs();"}, {"kind": "function", "line": 18, "name": "DG_GetKey", "signature": "int DG_GetKey(int* pressed, unsigned char* key);"}, {"kind": "function", "line": 19, "name": "DG_SetWindowTitle", "signature": "void DG_SetWindowTitle(const char * title);"}, {"kind": "variable", "line": 11, "name": "DG_ScreenBuffer", "signature": "extern uint32_t* DG_ScreenBuffer;"}, {"kind": "macro", "line": 2, "name": "DOOM_GENERIC", "signature": "#define DOOM_GENERIC"}, {"kind": "macro", "line": 7, "name": "DOOMGENERIC_RESX", "signature": "#define DOOMGENERIC_RESX"}, {"kind": "macro", "line": 8, "name": "DOOMGENERIC_RESY", "signature": "#define DOOMGENERIC_RESY"}]}, {"doc": "doomgeneric_minios.c - MiniOS platform layer for doomgeneric.", "id": "progs/doomgeneric/doomgeneric_minios.c", "kind": "module", "label": "doomgeneric_minios.c", "language": "c", "sha256": "1b64ab2c906db9eb", "symbol_count": 27, "symbols": [{"doc": "DOOM renders into a kernel-backed back-buffer in the user window; the * kernel composites it onto the desktop as a window on GFX_PRESENT/BUF_GAME. #define FB_ADDR ((volatile uint8_t *)MINIOS_DOOM_BACKBUF_ADDR) #define FB_WIDTH 320 #define FB_HEIGHT 200 /* ---------- Palette management ---------- /* Extern from i_video.c - the gamma-corrected palette colors", "kind": "struct", "line": 79, "name": "color"}, {"kind": "function", "line": 23, "name": "mini_parse_autoframes", "signature": "static void mini_parse_autoframes(int argc, char **argv)"}, {"kind": "function", "line": 37, "name": "sys_time_ms", "signature": "static long sys_time_ms(void)"}, {"kind": "function", "line": 42, "name": "sys_kbd", "signature": "static long sys_kbd(void)"}, {"kind": "function", "line": 47, "name": "sys_palette", "signature": "static long sys_palette(const unsigned char *pal)"}, {"kind": "function", "line": 52, "name": "sys_kbd_raw", "signature": "static long sys_kbd_raw(int on)"}, {"kind": "function", "line": 57, "name": "sys_vga_mode", "signature": "static long sys_vga_mode(int on)"}, {"kind": "function", "line": 62, "name": "sys_doom_frame", "signature": "static long sys_doom_frame(void)"}, {"kind": "function", "line": 86, "name": "load_vga_palette", "signature": "static void load_vga_palette(void)"}, {"kind": "function", "line": 99, "name": "scancode_to_doom", "signature": "static unsigned char scancode_to_doom(unsigned char raw)"}, {"kind": "function", "line": 158, "name": "kbd_enqueue", "signature": "static void kbd_enqueue(unsigned char doom_key, int pressed)"}, {"kind": "function", "line": 165, "name": "kbd_poll", "signature": "static void kbd_poll(void)"}, {"kind": "function", "line": 208, "name": "DG_Init", "signature": "void DG_Init(void)"}, {"kind": "function", "line": 216, "name": "DG_DrawFrame", "signature": "void DG_DrawFrame(void)"}, {"kind": "function", "line": 246, "name": "DG_SleepMs", "signature": "void DG_SleepMs(uint32_t ms)"}, {"kind": "function", "line": 252, "name": "DG_GetTicksMs", "signature": "uint32_t DG_GetTicksMs(void)"}, {"kind": "function", "line": 256, "name": "DG_GetKey", "signature": "int DG_GetKey(int *pressed, unsigned char *key)"}, {"kind": "function", "line": 267, "name": "DG_SetWindowTitle", "signature": "void DG_SetWindowTitle(const char *title)"}, {"kind": "function", "line": 4, "name": "MINIOS_DOOM_BACKBUF_ADDR", "signature": "* MINIOS_DOOM_BACKBUF_ADDR (minios_abi.h);"}, {"kind": "variable", "line": 80, "name": "colors", "signature": "extern struct color colors[256];"}, {"kind": "variable", "line": 206, "name": "I_VideoBuffer", "signature": "extern unsigned char *I_VideoBuffer;"}, {"kind": "variable", "line": 209, "name": "myargc", "signature": "extern int myargc;"}, {"kind": "variable", "line": 210, "name": "myargv", "signature": "extern char **myargv;"}, {"kind": "macro", "line": 72, "name": "FB_ADDR", "signature": "#define FB_ADDR"}, {"kind": "macro", "line": 73, "name": "FB_WIDTH", "signature": "#define FB_WIDTH"}, {"kind": "macro", "line": 74, "name": "FB_HEIGHT", "signature": "#define FB_HEIGHT"}, {"kind": "macro", "line": 154, "name": "KBD_QUEUE_SIZE", "signature": "#define KBD_QUEUE_SIZE"}]}, {"doc": "doomgeneric for soso os", "id": "progs/doomgeneric/doomgeneric_sdl.c", "kind": "module", "label": "doomgeneric_sdl.c", "language": "c", "sha256": "f63fc355e3a0d77f", "symbol_count": 10, "symbols": [{"kind": "function", "line": 23, "name": "convertToDoomKey", "signature": "static unsigned char convertToDoomKey(unsigned int key)"}, {"kind": "function", "line": 63, "name": "addKeyToQueue", "signature": "static void addKeyToQueue(int pressed, unsigned int keyCode)"}, {"kind": "function", "line": 72, "name": "handleKeyInput", "signature": "static void handleKeyInput()"}, {"kind": "function", "line": 93, "name": "DG_Init", "signature": "void DG_Init()"}, {"kind": "function", "line": 112, "name": "DG_DrawFrame", "signature": "void DG_DrawFrame()"}, {"kind": "function", "line": 123, "name": "DG_SleepMs", "signature": "void DG_SleepMs(uint32_t ms)"}, {"kind": "function", "line": 128, "name": "DG_GetTicksMs", "signature": "uint32_t DG_GetTicksMs()"}, {"kind": "function", "line": 133, "name": "DG_GetKey", "signature": "int DG_GetKey(int* pressed, unsigned char* doomKey)"}, {"kind": "function", "line": 152, "name": "DG_SetWindowTitle", "signature": "void DG_SetWindowTitle(const char * title)"}, {"kind": "macro", "line": 17, "name": "KEYQUEUE_SIZE", "signature": "#define KEYQUEUE_SIZE"}]}, {"doc": "doomgeneric for soso os", "id": "progs/doomgeneric/doomgeneric_soso.c", "kind": "module", "label": "doomgeneric_soso.c", "language": "c", "sha256": "4cde5c1a1dc46622", "symbol_count": 13, "symbols": [{"kind": "enum", "line": 36, "name": "EnFrameBuferIoctl"}, {"kind": "function", "line": 43, "name": "convertToDoomKey", "signature": "static unsigned char convertToDoomKey(unsigned char scancode)"}, {"kind": "function", "line": 92, "name": "addKeyToQueue", "signature": "static void addKeyToQueue(int pressed, unsigned char keyCode)"}, {"kind": "function", "line": 108, "name": "disableRawMode", "signature": "void disableRawMode()"}, {"kind": "function", "line": 114, "name": "enableRawMode", "signature": "void enableRawMode()"}, {"kind": "function", "line": 124, "name": "DG_Init", "signature": "void DG_Init()"}, {"kind": "function", "line": 186, "name": "handleKeyInput", "signature": "static void handleKeyInput()"}, {"kind": "function", "line": 214, "name": "DG_DrawFrame", "signature": "void DG_DrawFrame()"}, {"kind": "function", "line": 227, "name": "DG_SleepMs", "signature": "void DG_SleepMs(uint32_t ms)"}, {"kind": "function", "line": 232, "name": "DG_GetTicksMs", "signature": "uint32_t DG_GetTicksMs()"}, {"kind": "function", "line": 237, "name": "DG_GetKey", "signature": "int DG_GetKey(int* pressed, unsigned char* doomKey)"}, {"kind": "function", "line": 258, "name": "DG_SetWindowTitle", "signature": "void DG_SetWindowTitle(const char * title)"}, {"kind": "macro", "line": 24, "name": "KEYQUEUE_SIZE", "signature": "#define KEYQUEUE_SIZE"}]}, {"doc": "doomgeneric for soso os (nano-x version) TODO: get keys from X, not using direct keyboard access!", "id": "progs/doomgeneric/doomgeneric_sosox.c", "kind": "module", "label": "doomgeneric_sosox.c", "language": "c", "sha256": "30a8663404308c57", "symbol_count": 12, "symbols": [{"kind": "function", "line": 39, "name": "convert_to_doom_key", "signature": "static unsigned char convert_to_doom_key(unsigned char scancode)"}, {"kind": "function", "line": 88, "name": "add_key_to_queue", "signature": "static void add_key_to_queue(int pressed, unsigned char key_code)"}, {"kind": "function", "line": 102, "name": "disable_raw_mode", "signature": "void disable_raw_mode()"}, {"kind": "function", "line": 107, "name": "enable_raw_mode", "signature": "void enable_raw_mode()"}, {"kind": "function", "line": 117, "name": "DG_Init", "signature": "void DG_Init()"}, {"kind": "function", "line": 159, "name": "handle_key_input", "signature": "static void handle_key_input()"}, {"kind": "function", "line": 187, "name": "DG_DrawFrame", "signature": "void DG_DrawFrame()"}, {"kind": "function", "line": 225, "name": "DG_SleepMs", "signature": "void DG_SleepMs(uint32_t ms)"}, {"kind": "function", "line": 230, "name": "DG_GetTicksMs", "signature": "uint32_t DG_GetTicksMs()"}, {"kind": "function", "line": 235, "name": "DG_GetKey", "signature": "int DG_GetKey(int* pressed, unsigned char* doomKey)"}, {"kind": "function", "line": 256, "name": "DG_SetWindowTitle", "signature": "void DG_SetWindowTitle(const char * title)"}, {"kind": "macro", "line": 24, "name": "KEYQUEUE_SIZE", "signature": "#define KEYQUEUE_SIZE"}]}, {"id": "progs/doomgeneric/doomgeneric_win.c", "kind": "module", "label": "doomgeneric_win.c", "language": "c", "sha256": "6b6a020925757343", "symbol_count": 10, "symbols": [{"kind": "function", "line": 20, "name": "convertToDoomKey", "signature": "static unsigned char convertToDoomKey(unsigned char key)"}, {"kind": "function", "line": 59, "name": "addKeyToQueue", "signature": "static void addKeyToQueue(int pressed, unsigned char keyCode)"}, {"kind": "function", "line": 70, "name": "wndProc", "signature": "static LRESULT CALLBACK wndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)"}, {"kind": "function", "line": 95, "name": "DG_Init", "signature": "void DG_Init()"}, {"kind": "function", "line": 146, "name": "DG_DrawFrame", "signature": "void DG_DrawFrame()"}, {"kind": "function", "line": 162, "name": "DG_SleepMs", "signature": "void DG_SleepMs(uint32_t ms)"}, {"kind": "function", "line": 167, "name": "DG_GetTicksMs", "signature": "uint32_t DG_GetTicksMs()"}, {"kind": "function", "line": 172, "name": "DG_GetKey", "signature": "int DG_GetKey(int* pressed, unsigned char* doomKey)"}, {"kind": "function", "line": 193, "name": "DG_SetWindowTitle", "signature": "void DG_SetWindowTitle(const char * title)"}, {"kind": "macro", "line": 14, "name": "KEYQUEUE_SIZE", "signature": "#define KEYQUEUE_SIZE"}]}, {"id": "progs/doomgeneric/doomgeneric_xlib.c", "kind": "module", "label": "doomgeneric_xlib.c", "language": "c", "sha256": "5cf98e74d33b6ff6", "symbol_count": 9, "symbols": [{"kind": "function", "line": 27, "name": "convertToDoomKey", "signature": "static unsigned char convertToDoomKey(unsigned int key)"}, {"kind": "function", "line": 68, "name": "addKeyToQueue", "signature": "static void addKeyToQueue(int pressed, unsigned int keyCode)"}, {"kind": "function", "line": 79, "name": "DG_Init", "signature": "void DG_Init()"}, {"kind": "function", "line": 127, "name": "DG_DrawFrame", "signature": "void DG_DrawFrame()"}, {"kind": "function", "line": 172, "name": "DG_SleepMs", "signature": "void DG_SleepMs(uint32_t ms)"}, {"kind": "function", "line": 177, "name": "DG_GetTicksMs", "signature": "uint32_t DG_GetTicksMs()"}, {"kind": "function", "line": 187, "name": "DG_GetKey", "signature": "int DG_GetKey(int* pressed, unsigned char* doomKey)"}, {"kind": "function", "line": 208, "name": "DG_SetWindowTitle", "signature": "void DG_SetWindowTitle(const char * title)"}, {"kind": "macro", "line": 21, "name": "KEYQUEUE_SIZE", "signature": "#define KEYQUEUE_SIZE"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Key definitions DOOM keyboard definition. This is the stuff configured by Setup.Exe. Most key data are simple ascii (uppercased).", "id": "progs/doomgeneric/doomkeys.h", "kind": "module", "label": "doomkeys.h", "language": "h", "sha256": "7f68152bbce2d79b", "symbol_count": 59, "symbols": [{"kind": "macro", "line": 20, "name": "__DOOMKEYS__", "signature": "#define __DOOMKEYS__"}, {"kind": "macro", "line": 27, "name": "KEY_RIGHTARROW", "signature": "#define KEY_RIGHTARROW"}, {"kind": "macro", "line": 28, "name": "KEY_LEFTARROW", "signature": "#define KEY_LEFTARROW"}, {"kind": "macro", "line": 29, "name": "KEY_UPARROW", "signature": "#define KEY_UPARROW"}, {"kind": "macro", "line": 30, "name": "KEY_DOWNARROW", "signature": "#define KEY_DOWNARROW"}, {"kind": "macro", "line": 31, "name": "KEY_STRAFE_L", "signature": "#define KEY_STRAFE_L"}, {"kind": "macro", "line": 32, "name": "KEY_STRAFE_R", "signature": "#define KEY_STRAFE_R"}, {"kind": "macro", "line": 33, "name": "KEY_USE", "signature": "#define KEY_USE"}, {"kind": "macro", "line": 34, "name": "KEY_FIRE", "signature": "#define KEY_FIRE"}, {"kind": "macro", "line": 35, "name": "KEY_ESCAPE", "signature": "#define KEY_ESCAPE"}, {"kind": "macro", "line": 36, "name": "KEY_ENTER", "signature": "#define KEY_ENTER"}, {"kind": "macro", "line": 37, "name": "KEY_TAB", "signature": "#define KEY_TAB"}, {"kind": "macro", "line": 38, "name": "KEY_F1", "signature": "#define KEY_F1"}, {"kind": "macro", "line": 39, "name": "KEY_F2", "signature": "#define KEY_F2"}, {"kind": "macro", "line": 40, "name": "KEY_F3", "signature": "#define KEY_F3"}, {"kind": "macro", "line": 41, "name": "KEY_F4", "signature": "#define KEY_F4"}, {"kind": "macro", "line": 42, "name": "KEY_F5", "signature": "#define KEY_F5"}, {"kind": "macro", "line": 43, "name": "KEY_F6", "signature": "#define KEY_F6"}, {"kind": "macro", "line": 44, "name": "KEY_F7", "signature": "#define KEY_F7"}, {"kind": "macro", "line": 45, "name": "KEY_F8", "signature": "#define KEY_F8"}, {"kind": "macro", "line": 46, "name": "KEY_F9", "signature": "#define KEY_F9"}, {"kind": "macro", "line": 47, "name": "KEY_F10", "signature": "#define KEY_F10"}, {"kind": "macro", "line": 48, "name": "KEY_F11", "signature": "#define KEY_F11"}, {"kind": "macro", "line": 49, "name": "KEY_F12", "signature": "#define KEY_F12"}, {"kind": "macro", "line": 51, "name": "KEY_BACKSPACE", "signature": "#define KEY_BACKSPACE"}, {"kind": "macro", "line": 52, "name": "KEY_PAUSE", "signature": "#define KEY_PAUSE"}, {"kind": "macro", "line": 54, "name": "KEY_EQUALS", "signature": "#define KEY_EQUALS"}, {"kind": "macro", "line": 55, "name": "KEY_MINUS", "signature": "#define KEY_MINUS"}, {"kind": "macro", "line": 57, "name": "KEY_RSHIFT", "signature": "#define KEY_RSHIFT"}, {"kind": "macro", "line": 58, "name": "KEY_RCTRL", "signature": "#define KEY_RCTRL"}, {"kind": "macro", "line": 59, "name": "KEY_RALT", "signature": "#define KEY_RALT"}, {"kind": "macro", "line": 61, "name": "KEY_LALT", "signature": "#define KEY_LALT"}, {"kind": "macro", "line": 65, "name": "KEY_CAPSLOCK", "signature": "#define KEY_CAPSLOCK"}, {"kind": "macro", "line": 66, "name": "KEY_NUMLOCK", "signature": "#define KEY_NUMLOCK"}, {"kind": "macro", "line": 67, "name": "KEY_SCRLCK", "signature": "#define KEY_SCRLCK"}, {"kind": "macro", "line": 68, "name": "KEY_PRTSCR", "signature": "#define KEY_PRTSCR"}, {"kind": "macro", "line": 70, "name": "KEY_HOME", "signature": "#define KEY_HOME"}, {"kind": "macro", "line": 71, "name": "KEY_END", "signature": "#define KEY_END"}, {"kind": "macro", "line": 72, "name": "KEY_PGUP", "signature": "#define KEY_PGUP"}, {"kind": "macro", "line": 73, "name": "KEY_PGDN", "signature": "#define KEY_PGDN"}, {"kind": "macro", "line": 74, "name": "KEY_INS", "signature": "#define KEY_INS"}, {"kind": "macro", "line": 75, "name": "KEY_DEL", "signature": "#define KEY_DEL"}, {"kind": "macro", "line": 77, "name": "KEYP_0", "signature": "#define KEYP_0"}, {"kind": "macro", "line": 78, "name": "KEYP_1", "signature": "#define KEYP_1"}, {"kind": "macro", "line": 79, "name": "KEYP_2", "signature": "#define KEYP_2"}, {"kind": "macro", "line": 80, "name": "KEYP_3", "signature": "#define KEYP_3"}, {"kind": "macro", "line": 81, "name": "KEYP_4", "signature": "#define KEYP_4"}, {"kind": "macro", "line": 82, "name": "KEYP_5", "signature": "#define KEYP_5"}, {"kind": "macro", "line": 83, "name": "KEYP_6", "signature": "#define KEYP_6"}, {"kind": "macro", "line": 84, "name": "KEYP_7", "signature": "#define KEYP_7"}, {"kind": "macro", "line": 85, "name": "KEYP_8", "signature": "#define KEYP_8"}, {"kind": "macro", "line": 86, "name": "KEYP_9", "signature": "#define KEYP_9"}, {"kind": "macro", "line": 88, "name": "KEYP_DIVIDE", "signature": "#define KEYP_DIVIDE"}, {"kind": "macro", "line": 89, "name": "KEYP_PLUS", "signature": "#define KEYP_PLUS"}, {"kind": "macro", "line": 90, "name": "KEYP_MINUS", "signature": "#define KEYP_MINUS"}, {"kind": "macro", "line": 91, "name": "KEYP_MULTIPLY", "signature": "#define KEYP_MULTIPLY"}, {"kind": "macro", "line": 92, "name": "KEYP_PERIOD", "signature": "#define KEYP_PERIOD"}, {"kind": "macro", "line": 93, "name": "KEYP_EQUALS", "signature": "#define KEYP_EQUALS"}, {"kind": "macro", "line": 94, "name": "KEYP_ENTER", "signature": "#define KEYP_ENTER"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Put all global tate variables here. Game Mode - identify IWAD as shareware, retail etc.", "id": "progs/doomgeneric/doomstat.c", "kind": "module", "label": "doomstat.c", "language": "c", "sha256": "6c26994f9ece76c1", "symbol_count": 0, "symbols": []}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: All the global variables that store the internal state. Theoretically speaking, the internal state of the engine should be found by looking at the variables collected here, and every relevant module will have to include this header file. In practice, things are a bit messy. We need globally shared data structures, for defining the global state variables.", "id": "progs/doomgeneric/doomstat.h", "kind": "module", "label": "doomstat.h", "language": "h", "sha256": "92354d62cf4265e7", "symbol_count": 68, "symbols": [{"doc": "----------------------- Command line parameters.", "kind": "variable", "line": 46, "name": "nomonsters", "signature": "extern boolean nomonsters;"}, {"kind": "variable", "line": 47, "name": "respawnparm", "signature": "extern boolean respawnparm;"}, {"kind": "variable", "line": 48, "name": "fastparm", "signature": "extern boolean fastparm;"}, {"kind": "variable", "line": 50, "name": "devparm", "signature": "extern boolean devparm;"}, {"doc": "---------------------------------------------------- Game Mode - identify IWAD as shareware, retail etc.", "kind": "variable", "line": 56, "name": "gamemode", "signature": "extern GameMode_t gamemode;"}, {"kind": "variable", "line": 57, "name": "gamemission", "signature": "extern GameMission_t gamemission;"}, {"kind": "variable", "line": 58, "name": "gameversion", "signature": "extern GameVersion_t gameversion;"}, {"kind": "variable", "line": 59, "name": "gamedescription", "signature": "extern char *gamedescription;"}, {"doc": "If true, we're using one of the mangled BFG edition IWADs.", "kind": "variable", "line": 62, "name": "bfgedition", "signature": "extern boolean bfgedition;"}, {"doc": "Set if homebrew PWAD stuff has been added.", "kind": "variable", "line": 74, "name": "modifiedgame", "signature": "extern boolean modifiedgame;"}, {"doc": "Defaults for menu, methinks.", "kind": "variable", "line": 82, "name": "startskill", "signature": "extern skill_t startskill;"}, {"kind": "variable", "line": 83, "name": "startepisode", "signature": "extern int startepisode;"}, {"kind": "variable", "line": 84, "name": "startmap", "signature": "extern int startmap;"}, {"kind": "variable", "line": 89, "name": "startloadgame", "signature": "extern int startloadgame;"}, {"kind": "variable", "line": 91, "name": "autostart", "signature": "extern boolean autostart;"}, {"doc": "Selected by user.", "kind": "variable", "line": 94, "name": "gameskill", "signature": "extern skill_t gameskill;"}, {"kind": "variable", "line": 95, "name": "gameepisode", "signature": "extern int gameepisode;"}, {"kind": "variable", "line": 96, "name": "gamemap", "signature": "extern int gamemap;"}, {"doc": "If non-zero, exit the level after this number of minutes", "kind": "variable", "line": 99, "name": "timelimit", "signature": "extern int timelimit;"}, {"doc": "Nightmare mode flag, single player.", "kind": "variable", "line": 102, "name": "respawnmonsters", "signature": "extern boolean respawnmonsters;"}, {"doc": "Netgame? Only true if >1 player.", "kind": "variable", "line": 105, "name": "netgame", "signature": "extern boolean netgame;"}, {"doc": "0=Cooperative; 1=Deathmatch; 2=Altdeath", "kind": "variable", "line": 108, "name": "deathmatch", "signature": "extern int deathmatch;"}, {"doc": "From m_menu.c: Sound FX volume has default, 0 - 15 Music volume has default, 0 - 15 These are multiplied by 8.", "kind": "variable", "line": 120, "name": "sfxVolume", "signature": "extern int sfxVolume;"}, {"kind": "variable", "line": 121, "name": "musicVolume", "signature": "extern int musicVolume;"}, {"doc": "Current music/sfx card - index useless w/o a reference LUT in a sound module. Ideally, this would use indices found in: /usr/include/linux/soundcard.h", "kind": "variable", "line": 127, "name": "snd_MusicDevice", "signature": "extern int snd_MusicDevice;"}, {"kind": "variable", "line": 128, "name": "snd_SfxDevice", "signature": "extern int snd_SfxDevice;"}, {"doc": "Config file? Same disclaimer as above.", "kind": "variable", "line": 130, "name": "snd_DesiredMusicDevice", "signature": "extern int snd_DesiredMusicDevice;"}, {"kind": "variable", "line": 131, "name": "snd_DesiredSfxDevice", "signature": "extern int snd_DesiredSfxDevice;"}, {"doc": "Depending on view size - no status bar? Note that there is no way to disable the status bar explicitely.", "kind": "variable", "line": 141, "name": "statusbaractive", "signature": "extern boolean statusbaractive;"}, {"kind": "variable", "line": 143, "name": "automapactive", "signature": "extern boolean automapactive;"}, {"kind": "variable", "line": 144, "name": "menuactive", "signature": "extern boolean menuactive;"}, {"kind": "variable", "line": 145, "name": "paused", "signature": "extern boolean paused;"}, {"kind": "variable", "line": 148, "name": "viewactive", "signature": "extern boolean viewactive;"}, {"kind": "variable", "line": 150, "name": "nodrawers", "signature": "extern boolean nodrawers;"}, {"kind": "variable", "line": 153, "name": "testcontrols", "signature": "extern boolean testcontrols;"}, {"kind": "variable", "line": 154, "name": "testcontrols_mousespeed", "signature": "extern int testcontrols_mousespeed;"}, {"doc": "This one is related to the 3-screen display mode. ANG90 = left side, ANG270 = right", "kind": "variable", "line": 161, "name": "viewangleoffset", "signature": "extern int viewangleoffset;"}, {"doc": "Player taking events, and displaying.", "kind": "variable", "line": 164, "name": "consoleplayer", "signature": "extern int consoleplayer;"}, {"kind": "variable", "line": 165, "name": "displayplayer", "signature": "extern int displayplayer;"}, {"doc": "------------------------------------ Scores, rating. Statistics on a given map, for intermission.", "kind": "variable", "line": 172, "name": "totalkills", "signature": "extern int totalkills;"}, {"kind": "variable", "line": 173, "name": "totalitems", "signature": "extern int totalitems;"}, {"kind": "variable", "line": 174, "name": "totalsecret", "signature": "extern int totalsecret;"}, {"doc": "Timer, for scores.", "kind": "variable", "line": 177, "name": "levelstarttic", "signature": "extern int levelstarttic;"}, {"kind": "variable", "line": 178, "name": "leveltime", "signature": "extern int leveltime;"}, {"doc": "------------------------------------- DEMO playback/recording related stuff. No demo, there is a human player in charge? Disable save/end game?", "kind": "variable", "line": 186, "name": "usergame", "signature": "extern boolean usergame;"}, {"doc": "?", "kind": "variable", "line": 189, "name": "demoplayback", "signature": "extern boolean demoplayback;"}, {"kind": "variable", "line": 190, "name": "demorecording", "signature": "extern boolean demorecording;"}, {"kind": "variable", "line": 195, "name": "lowres_turn", "signature": "extern boolean lowres_turn;"}, {"doc": "Quit after playing a demo from cmdline.", "kind": "variable", "line": 198, "name": "singledemo", "signature": "extern boolean singledemo;"}, {"doc": "?", "kind": "variable", "line": 204, "name": "gamestate", "signature": "extern gamestate_t gamestate;"}, {"doc": "Bookkeeping on players - state.", "kind": "variable", "line": 220, "name": "players", "signature": "extern player_t players[MAXPLAYERS];"}, {"doc": "Alive? Disconnected?", "kind": "variable", "line": 223, "name": "playeringame", "signature": "extern boolean playeringame[MAXPLAYERS];"}, {"doc": "Player spawn spots for deathmatch. define MAX_DM_STARTS 10", "kind": "variable", "line": 228, "name": "deathmatchstarts", "signature": "extern mapthing_t deathmatchstarts[MAX_DM_STARTS];"}, {"kind": "variable", "line": 229, "name": "deathmatch_p", "signature": "extern mapthing_t* deathmatch_p;"}, {"doc": "Player spawn spots.", "kind": "variable", "line": 232, "name": "playerstarts", "signature": "extern mapthing_t playerstarts[MAXPLAYERS];"}, {"doc": "Intermission stats. Parameters for world map / intermission.", "kind": "variable", "line": 236, "name": "wminfo", "signature": "extern wbstartstruct_t wminfo;"}, {"doc": "File handling stuff.", "kind": "variable", "line": 249, "name": "savegamedir", "signature": "extern char * savegamedir;"}, {"kind": "variable", "line": 250, "name": "basedefault", "signature": "extern char basedefault[1024];"}, {"doc": "if true, load all graphics at level load", "kind": "variable", "line": 253, "name": "precache", "signature": "extern boolean precache;"}, {"doc": "wipegamestate can be set to -1 to force a wipe on the next draw", "kind": "variable", "line": 258, "name": "wipegamestate", "signature": "extern gamestate_t wipegamestate;"}, {"kind": "variable", "line": 260, "name": "mouseSensitivity", "signature": "extern int mouseSensitivity;"}, {"kind": "variable", "line": 262, "name": "bodyqueslot", "signature": "extern int bodyqueslot;"}, {"doc": "Needed to store the number of the dummy sky flat. Used for rendering, as well as tracking projectiles etc.", "kind": "variable", "line": 269, "name": "skyflatnum", "signature": "extern int skyflatnum;"}, {"kind": "variable", "line": 276, "name": "rndindex", "signature": "extern int rndindex;"}, {"kind": "variable", "line": 278, "name": "netcmds", "signature": "extern ticcmd_t *netcmds;"}, {"kind": "macro", "line": 26, "name": "__D_STATE__", "signature": "#define __D_STATE__"}, {"kind": "macro", "line": 69, "name": "logical_gamemission", "signature": "#define logical_gamemission"}, {"kind": "macro", "line": 227, "name": "MAX_DM_STARTS", "signature": "#define MAX_DM_STARTS"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Simple basic typedefs, isolated here to make it easier separating modules. #define macros to provide functions missing in Windows. Outside Windows, we use strings.h for str[n]casecmp.", "id": "progs/doomgeneric/doomtype.h", "kind": "module", "label": "doomtype.h", "language": "h", "sha256": "25470092d28f0e62", "symbol_count": 14, "symbols": [{"doc": "Use builtin bool type with C++.", "kind": "type_alias", "line": 68, "name": "boolean", "signature": "typedef bool boolean;"}, {"doc": "endif", "kind": "type_alias", "line": 81, "name": "byte", "signature": "typedef uint8_t byte;"}, {"kind": "macro", "line": 22, "name": "__DOOMTYPE__", "signature": "#define __DOOMTYPE__"}, {"kind": "macro", "line": 30, "name": "strcasecmp", "signature": "#define strcasecmp"}, {"kind": "macro", "line": 31, "name": "strncasecmp", "signature": "#define strncasecmp"}, {"kind": "macro", "line": 50, "name": "PACKEDATTR", "signature": "#define PACKEDATTR"}, {"kind": "macro", "line": 52, "name": "PACKEDATTR", "signature": "#define PACKEDATTR"}, {"kind": "macro", "line": 88, "name": "DIR_SEPARATOR", "signature": "#define DIR_SEPARATOR"}, {"kind": "macro", "line": 89, "name": "DIR_SEPARATOR_S", "signature": "#define DIR_SEPARATOR_S"}, {"kind": "macro", "line": 90, "name": "PATH_SEPARATOR", "signature": "#define PATH_SEPARATOR"}, {"kind": "macro", "line": 94, "name": "DIR_SEPARATOR", "signature": "#define DIR_SEPARATOR"}, {"kind": "macro", "line": 95, "name": "DIR_SEPARATOR_S", "signature": "#define DIR_SEPARATOR_S"}, {"kind": "macro", "line": 96, "name": "PATH_SEPARATOR", "signature": "#define PATH_SEPARATOR"}, {"kind": "macro", "line": 100, "name": "arrlen", "signature": "#define arrlen(array)"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Globally defined strings.", "id": "progs/doomgeneric/dstrings.c", "kind": "module", "label": "dstrings.c", "language": "c", "sha256": "ca23811dfb9766f3", "symbol_count": 0, "symbols": []}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: DOOM strings, by language. All important printed strings. Misc. other strings.", "id": "progs/doomgeneric/dstrings.h", "kind": "module", "label": "dstrings.h", "language": "h", "sha256": "f279c950ed4bd857", "symbol_count": 5, "symbols": [{"kind": "variable", "line": 37, "name": "doom1_endmsg", "signature": "extern char *doom1_endmsg[];"}, {"kind": "variable", "line": 38, "name": "doom2_endmsg", "signature": "extern char *doom2_endmsg[];"}, {"kind": "macro", "line": 22, "name": "__DSTRINGS__", "signature": "#define __DSTRINGS__"}, {"kind": "macro", "line": 30, "name": "SAVEGAMENAME", "signature": "#define SAVEGAMENAME"}, {"kind": "macro", "line": 35, "name": "NUM_QUITMESSAGES", "signature": "#define NUM_QUITMESSAGES"}]}, {"id": "progs/doomgeneric/dummy.c", "kind": "module", "label": "dummy.c", "language": "c", "sha256": "ffc79e57c8205c85", "symbol_count": 1, "symbols": [{"kind": "function", "line": 43, "name": "I_InitTimidityConfig", "signature": "void I_InitTimidityConfig(void)"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Game completion, final screen animation. Functions.", "id": "progs/doomgeneric/f_finale.c", "kind": "module", "label": "f_finale.c", "language": "c", "sha256": "76caab0d090e7ca2", "symbol_count": 18, "symbols": [{"kind": "struct", "line": 60, "name": "textscreen_t"}, {"doc": "Final DOOM 2 animation Casting by id Software. in order of appearance", "kind": "struct", "line": 300, "name": "castinfo_t"}, {"doc": "F_StartFinale", "kind": "function", "line": 108, "name": "F_StartFinale", "signature": "void F_StartFinale (void)"}, {"kind": "function", "line": 160, "name": "F_Responder", "signature": "boolean F_Responder (event_t *event)"}, {"doc": "F_Ticker", "kind": "function", "line": 172, "name": "F_Ticker", "signature": "void F_Ticker (void)"}, {"kind": "function", "line": 227, "name": "F_TextWrite", "signature": "void F_TextWrite (void)"}, {"doc": "F_StartCast", "kind": "function", "line": 340, "name": "F_StartCast", "signature": "void F_StartCast (void)"}, {"doc": "F_CastTicker", "kind": "function", "line": 358, "name": "F_CastTicker", "signature": "void F_CastTicker (void)"}, {"kind": "function", "line": 465, "name": "F_CastResponder", "signature": "boolean F_CastResponder (event_t* ev)"}, {"kind": "function", "line": 486, "name": "F_CastPrint", "signature": "void F_CastPrint (char* text)"}, {"kind": "function", "line": 541, "name": "F_CastDrawer", "signature": "void F_CastDrawer (void)"}, {"kind": "function", "line": 572, "name": "F_DrawPatchCol", "signature": "void\nF_DrawPatchCol\n( int\t\tx,\n patch_t*\tpatch,\n int\t\tcol )"}, {"doc": "F_BunnyScroll", "kind": "function", "line": 606, "name": "F_BunnyScroll", "signature": "void F_BunnyScroll (void)"}, {"kind": "function", "line": 661, "name": "F_ArtScreenDrawer", "signature": "static void F_ArtScreenDrawer(void)"}, {"doc": "F_Drawer", "kind": "function", "line": 702, "name": "F_Drawer", "signature": "void F_Drawer (void)"}, {"doc": "include \"hu_stuff.h\"", "kind": "variable", "line": 224, "name": "hu_font", "signature": "extern patch_t *hu_font[HU_FONTSIZE];"}, {"kind": "macro", "line": 57, "name": "TEXTSPEED", "signature": "#define\tTEXTSPEED"}, {"kind": "macro", "line": 58, "name": "TEXTWAIT", "signature": "#define\tTEXTWAIT"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: FINALE Called by main loop.", "id": "progs/doomgeneric/f_finale.h", "kind": "module", "label": "f_finale.h", "language": "h", "sha256": "16a88fd7987fc1ee", "symbol_count": 4, "symbols": [{"doc": "Called by main loop.", "kind": "function", "line": 34, "name": "F_Ticker", "signature": "void F_Ticker (void);"}, {"doc": "Called by main loop.", "kind": "function", "line": 37, "name": "F_Drawer", "signature": "void F_Drawer (void);"}, {"kind": "function", "line": 40, "name": "F_StartFinale", "signature": "void F_StartFinale (void);"}, {"kind": "macro", "line": 21, "name": "__F_FINALE__", "signature": "#define __F_FINALE__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Mission begin melt/wipe screen special effect.", "id": "progs/doomgeneric/f_wipe.c", "kind": "module", "label": "f_wipe.c", "language": "c", "sha256": "4558dfd253adc165", "symbol_count": 10, "symbols": [{"kind": "function", "line": 43, "name": "wipe_shittyColMajorXform", "signature": "void\nwipe_shittyColMajorXform\n( short*\tarray,\n int\t\twidth,\n int\t\theight )"}, {"kind": "function", "line": 65, "name": "wipe_initColorXForm", "signature": "int\nwipe_initColorXForm\n( int\twidth,\n int\theight,\n int\tticks )"}, {"kind": "function", "line": 75, "name": "wipe_doColorXForm", "signature": "int\nwipe_doColorXForm\n( int\twidth,\n int\theight,\n int\tticks )"}, {"kind": "function", "line": 121, "name": "wipe_exitColorXForm", "signature": "int\nwipe_exitColorXForm\n( int\twidth,\n int\theight,\n int\tticks )"}, {"kind": "function", "line": 133, "name": "wipe_initMelt", "signature": "int\nwipe_initMelt\n( int\twidth,\n int\theight,\n int\tticks )"}, {"kind": "function", "line": 164, "name": "wipe_doMelt", "signature": "int\nwipe_doMelt\n( int\twidth,\n int\theight,\n int\tticks )"}, {"kind": "function", "line": 219, "name": "wipe_exitMelt", "signature": "int\nwipe_exitMelt\n( int\twidth,\n int\theight,\n int\tticks )"}, {"kind": "function", "line": 231, "name": "wipe_StartScreen", "signature": "int\nwipe_StartScreen\n( int\tx,\n int\ty,\n int\twidth,\n int\theight )"}, {"kind": "function", "line": 243, "name": "wipe_EndScreen", "signature": "int\nwipe_EndScreen\n( int\tx,\n int\ty,\n int\twidth,\n int\theight )"}, {"kind": "function", "line": 256, "name": "wipe_ScreenWipe", "signature": "int\nwipe_ScreenWipe\n( int\twipeno,\n int\tx,\n int\ty,\n int\twidth,\n int\theight,\n int\tticks )"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Mission start screen wipe/melt, special effects. SCREEN WIPE PACKAGE", "id": "progs/doomgeneric/f_wipe.h", "kind": "module", "label": "f_wipe.h", "language": "h", "sha256": "b309beae57704854", "symbol_count": 4, "symbols": [{"kind": "function", "line": 39, "name": "wipe_StartScreen", "signature": "int wipe_StartScreen ( int x, int y, int width, int height );"}, {"kind": "function", "line": 47, "name": "wipe_EndScreen", "signature": "int wipe_EndScreen ( int x, int y, int width, int height );"}, {"kind": "function", "line": 55, "name": "wipe_ScreenWipe", "signature": "int wipe_ScreenWipe ( int wipeno, int x, int y, int width, int height, int ticks );"}, {"kind": "macro", "line": 21, "name": "__F_WIPE_H__", "signature": "#define __F_WIPE_H__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: none", "id": "progs/doomgeneric/g_game.c", "kind": "module", "label": "g_game.c", "language": "c", "sha256": "cbb72e172a7fcc96", "symbol_count": 54, "symbols": [{"kind": "function", "line": 233, "name": "G_CmdChecksum", "signature": "int G_CmdChecksum (ticcmd_t* cmd)"}, {"kind": "function", "line": 244, "name": "WeaponSelectable", "signature": "static boolean WeaponSelectable(weapontype_t weapon)"}, {"kind": "function", "line": 281, "name": "G_NextWeapon", "signature": "static int G_NextWeapon(int direction)"}, {"doc": "G_BuildTiccmd Builds a ticcmd from all of the available inputs or reads it from the demo buffer. If recording a demo, write it out", "kind": "function", "line": 322, "name": "G_BuildTiccmd", "signature": "void G_BuildTiccmd (ticcmd_t* cmd, int maketic)"}, {"doc": "G_DoLoadLevel", "kind": "function", "line": 603, "name": "G_DoLoadLevel", "signature": "void G_DoLoadLevel (void)"}, {"kind": "function", "line": 675, "name": "SetJoyButtons", "signature": "static void SetJoyButtons(unsigned int buttons_mask)"}, {"kind": "function", "line": 703, "name": "SetMouseButtons", "signature": "static void SetMouseButtons(unsigned int buttons_mask)"}, {"doc": "G_Responder Get info needed to make ticcmd_ts for the players.", "kind": "function", "line": 733, "name": "G_Responder", "signature": "boolean G_Responder (event_t* ev)"}, {"doc": "G_Ticker Make ticcmd_ts for the players.", "kind": "function", "line": 854, "name": "G_Ticker", "signature": "void G_Ticker (void)"}, {"doc": "G_InitPlayer Called at the start. Called by the game initialization functions.", "kind": "function", "line": 1039, "name": "G_InitPlayer", "signature": "void G_InitPlayer (int player)"}, {"doc": "G_PlayerFinishLevel Can when a player completes a level.", "kind": "function", "line": 1051, "name": "G_PlayerFinishLevel", "signature": "void G_PlayerFinishLevel (int player)"}, {"doc": "G_PlayerReborn Called after a player dies almost everything is cleared and initialized", "kind": "function", "line": 1072, "name": "G_PlayerReborn", "signature": "void G_PlayerReborn (int player)"}, {"kind": "function", "line": 1116, "name": "G_CheckSpot", "signature": "boolean\nG_CheckSpot\n( int\t\tplayernum,\n mapthing_t*\tmthing )"}, {"doc": "G_DeathMatchSpawnPlayer Spawns a player at one of the random death match spots called at level load and each death", "kind": "function", "line": 1223, "name": "G_DeathMatchSpawnPlayer", "signature": "void G_DeathMatchSpawnPlayer (int playernum)"}, {"doc": "G_DoReborn", "kind": "function", "line": 1250, "name": "G_DoReborn", "signature": "void G_DoReborn (int playernum)"}, {"kind": "function", "line": 1296, "name": "G_ScreenShot", "signature": "void G_ScreenShot (void)"}, {"kind": "function", "line": 1328, "name": "G_ExitLevel", "signature": "void G_ExitLevel (void)"}, {"doc": "Here's for the german edition.", "kind": "function", "line": 1335, "name": "G_SecretExitLevel", "signature": "void G_SecretExitLevel (void)"}, {"kind": "function", "line": 1346, "name": "G_DoCompleted", "signature": "void G_DoCompleted (void)"}, {"doc": "G_WorldDone", "kind": "function", "line": 1494, "name": "G_WorldDone", "signature": "void G_WorldDone (void)"}, {"kind": "function", "line": 1519, "name": "G_DoWorldDone", "signature": "void G_DoWorldDone (void)"}, {"kind": "function", "line": 1539, "name": "G_LoadGame", "signature": "void G_LoadGame (char* name)"}, {"kind": "function", "line": 1548, "name": "G_DoLoadGame", "signature": "void G_DoLoadGame (void)"}, {"kind": "function", "line": 1601, "name": "G_SaveGame", "signature": "void\nG_SaveGame\n( int\tslot,\n char*\tdescription )"}, {"kind": "function", "line": 1610, "name": "G_DoSaveGame", "signature": "void G_DoSaveGame (void)"}, {"kind": "function", "line": 1698, "name": "G_DeferedInitNew", "signature": "void\nG_DeferedInitNew\n( skill_t\tskill,\n int\t\tepisode,\n int\t\tmap)"}, {"kind": "function", "line": 1710, "name": "G_DoNewGame", "signature": "void G_DoNewGame (void)"}, {"kind": "function", "line": 1727, "name": "G_InitNew", "signature": "void\nG_InitNew\n( skill_t\tskill,\n int\t\tepisode,\n int\t\tmap )"}, {"kind": "function", "line": 1898, "name": "G_ReadDemoTiccmd", "signature": "void G_ReadDemoTiccmd (ticcmd_t* cmd)"}, {"kind": "function", "line": 1926, "name": "IncreaseDemoBuffer", "signature": "static void IncreaseDemoBuffer(void)"}, {"kind": "function", "line": 1956, "name": "G_WriteDemoTiccmd", "signature": "void G_WriteDemoTiccmd (ticcmd_t* cmd)"}, {"doc": "G_RecordDemo", "kind": "function", "line": 2010, "name": "G_RecordDemo", "signature": "void G_RecordDemo (char *name)"}, {"doc": "Get the demo version code appropriate for the version set in gameversion.", "kind": "function", "line": 2040, "name": "G_VanillaVersionCode", "signature": "int G_VanillaVersionCode(void)"}, {"kind": "function", "line": 2058, "name": "G_BeginRecording", "signature": "void G_BeginRecording (void)"}, {"kind": "function", "line": 2107, "name": "G_DeferedPlayDemo", "signature": "void G_DeferedPlayDemo (char* name)"}, {"kind": "function", "line": 2115, "name": "DemoVersionDescription", "signature": "static char *DemoVersionDescription(int version)"}, {"kind": "function", "line": 2152, "name": "G_DoPlayDemo", "signature": "void G_DoPlayDemo (void)"}, {"doc": "G_TimeDemo", "kind": "function", "line": 2215, "name": "G_TimeDemo", "signature": "void G_TimeDemo (char* name)"}, {"kind": "function", "line": 2243, "name": "G_CheckDemoStatus", "signature": "boolean G_CheckDemoStatus (void)"}, {"kind": "function", "line": 88, "name": "G_DoVictory", "signature": "void G_DoVictory (void);"}, {"doc": "G_CheckSpot Returns false if the player cannot be respawned at the given mapthing_t spot because something is occupying it", "kind": "function", "line": 1113, "name": "P_SpawnPlayer", "signature": "void P_SpawnPlayer (mapthing_t* mthing);"}, {"kind": "function", "line": 1535, "name": "R_ExecuteSetViewSize", "signature": "void R_ExecuteSetViewSize (void);"}, {"kind": "variable", "line": 939, "name": "player_names", "signature": "extern char *player_names[4];"}, {"kind": "variable", "line": 1326, "name": "pagename", "signature": "extern char* pagename;"}, {"doc": "G_InitFromSavegame Can be called by the startup code or the menu task.", "kind": "variable", "line": 1534, "name": "setsizeneeded", "signature": "extern boolean setsizeneeded;"}, {"kind": "macro", "line": 76, "name": "SAVEGAMESIZE", "signature": "#define SAVEGAMESIZE"}, {"kind": "macro", "line": 152, "name": "MAXPLMOVE", "signature": "#define MAXPLMOVE"}, {"kind": "macro", "line": 154, "name": "TURBOTHRESHOLD", "signature": "#define TURBOTHRESHOLD"}, {"kind": "macro", "line": 193, "name": "SLOWTURNTICS", "signature": "#define SLOWTURNTICS"}, {"kind": "macro", "line": 195, "name": "NUMKEYS", "signature": "#define NUMKEYS"}, {"kind": "macro", "line": 196, "name": "MAX_JOY_BUTTONS", "signature": "#define MAX_JOY_BUTTONS"}, {"kind": "macro", "line": 225, "name": "BODYQUESIZE", "signature": "#define\tBODYQUESIZE"}, {"kind": "macro", "line": 1545, "name": "VERSIONSIZE", "signature": "#define VERSIONSIZE"}, {"kind": "macro", "line": 1895, "name": "DEMOMARKER", "signature": "#define DEMOMARKER"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Duh. GAME", "id": "progs/doomgeneric/g_game.h", "kind": "module", "label": "g_game.h", "language": "h", "sha256": "4412fda515867c37", "symbol_count": 22, "symbols": [{"doc": "GAME", "kind": "function", "line": 31, "name": "G_DeathMatchSpawnPlayer", "signature": "void G_DeathMatchSpawnPlayer (int playernum);"}, {"kind": "function", "line": 33, "name": "G_InitNew", "signature": "void G_InitNew (skill_t skill, int episode, int map);"}, {"doc": "Can be called by the startup code or M_Responder. A normal game starts at map 1, but a warp test can start elsewhere", "kind": "function", "line": 38, "name": "G_DeferedInitNew", "signature": "void G_DeferedInitNew (skill_t skill, int episode, int map);"}, {"kind": "function", "line": 40, "name": "G_DeferedPlayDemo", "signature": "void G_DeferedPlayDemo (char* demo);"}, {"doc": "Can be called by the startup code or M_Responder, calls P_SetupLevel or W_EnterWorld.", "kind": "function", "line": 44, "name": "G_LoadGame", "signature": "void G_LoadGame (char* name);"}, {"kind": "function", "line": 46, "name": "G_DoLoadGame", "signature": "void G_DoLoadGame (void);"}, {"doc": "Called by M_Responder.", "kind": "function", "line": 49, "name": "G_SaveGame", "signature": "void G_SaveGame (int slot, char* description);"}, {"doc": "Only called by startup code.", "kind": "function", "line": 52, "name": "G_RecordDemo", "signature": "void G_RecordDemo (char* name);"}, {"kind": "function", "line": 54, "name": "G_BeginRecording", "signature": "void G_BeginRecording (void);"}, {"kind": "function", "line": 56, "name": "G_PlayDemo", "signature": "void G_PlayDemo (char* name);"}, {"kind": "function", "line": 57, "name": "G_TimeDemo", "signature": "void G_TimeDemo (char* name);"}, {"kind": "function", "line": 60, "name": "G_ExitLevel", "signature": "void G_ExitLevel (void);"}, {"kind": "function", "line": 61, "name": "G_SecretExitLevel", "signature": "void G_SecretExitLevel (void);"}, {"kind": "function", "line": 63, "name": "G_WorldDone", "signature": "void G_WorldDone (void);"}, {"kind": "function", "line": 67, "name": "G_BuildTiccmd", "signature": "void G_BuildTiccmd (ticcmd_t *cmd, int maketic);"}, {"kind": "function", "line": 69, "name": "G_Ticker", "signature": "void G_Ticker (void);"}, {"kind": "function", "line": 72, "name": "G_ScreenShot", "signature": "void G_ScreenShot (void);"}, {"kind": "function", "line": 74, "name": "G_DrawMouseSpeedBox", "signature": "void G_DrawMouseSpeedBox(void);"}, {"kind": "function", "line": 75, "name": "G_VanillaVersionCode", "signature": "int G_VanillaVersionCode(void);"}, {"kind": "variable", "line": 77, "name": "vanilla_savegame_limit", "signature": "extern int vanilla_savegame_limit;"}, {"kind": "variable", "line": 78, "name": "vanilla_demo_limit", "signature": "extern int vanilla_demo_limit;"}, {"kind": "macro", "line": 21, "name": "__G_GAME__", "signature": "#define __G_GAME__"}]}, {"doc": "Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: GUS emulation code. Actually emulating a GUS is far too much work; fortunately GUS \"emulation\" already exists in the form of Timidity, which supports GUS patch files. This code therefore converts Doom's DMXGUS lump into an equivalent Timidity configuration file.", "id": "progs/doomgeneric/gusconf.c", "kind": "module", "label": "gusconf.c", "language": "c", "sha256": "9dace5db8bac7734", "symbol_count": 10, "symbols": [{"kind": "struct", "line": 34, "name": "gus_config_t"}, {"kind": "function", "line": 43, "name": "MappingIndex", "signature": "static unsigned int MappingIndex(void)"}, {"kind": "function", "line": 61, "name": "SplitLine", "signature": "static int SplitLine(char *line, char **fields, unsigned int max_fields)"}, {"kind": "function", "line": 108, "name": "ParseLine", "signature": "static void ParseLine(gus_config_t *config, char *line)"}, {"kind": "function", "line": 129, "name": "ParseDMXConfig", "signature": "static void ParseDMXConfig(char *dmxconf, gus_config_t *config)"}, {"kind": "function", "line": 165, "name": "FreeDMXConfig", "signature": "static void FreeDMXConfig(gus_config_t *config)"}, {"kind": "function", "line": 175, "name": "ReadDMXConfig", "signature": "static char *ReadDMXConfig(void)"}, {"kind": "function", "line": 197, "name": "WriteTimidityConfig", "signature": "static boolean WriteTimidityConfig(char *path, gus_config_t *config)"}, {"kind": "function", "line": 244, "name": "GUS_WriteConfig", "signature": "boolean GUS_WriteConfig(char *path)"}, {"kind": "macro", "line": 32, "name": "MAX_INSTRUMENTS", "signature": "#define MAX_INSTRUMENTS"}]}, {"doc": "Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: GUS emulation code.", "id": "progs/doomgeneric/gusconf.h", "kind": "module", "label": "gusconf.h", "language": "h", "sha256": "8b3f7b0cbbcfb4d2", "symbol_count": 3, "symbols": [{"kind": "variable", "line": 23, "name": "gus_patch_path", "signature": "extern char *gus_patch_path;"}, {"kind": "variable", "line": 24, "name": "gus_ram_kb", "signature": "extern unsigned int gus_ram_kb;"}, {"kind": "macro", "line": 19, "name": "__GUSCONF_H__", "signature": "#define __GUSCONF_H__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: heads-up text and input code", "id": "progs/doomgeneric/hu_lib.c", "kind": "module", "label": "hu_lib.c", "language": "c", "sha256": "3d73ecabcf682e83", "symbol_count": 22, "symbols": [{"kind": "function", "line": 36, "name": "HUlib_init", "signature": "void HUlib_init(void)"}, {"kind": "function", "line": 40, "name": "HUlib_clearTextLine", "signature": "void HUlib_clearTextLine(hu_textline_t* t)"}, {"kind": "function", "line": 48, "name": "HUlib_initTextLine", "signature": "void\nHUlib_initTextLine\n( hu_textline_t*\tt,\n int\t\t\tx,\n int\t\t\ty,\n patch_t**\t\tf,\n int\t\t\tsc )"}, {"kind": "function", "line": 63, "name": "HUlib_addCharToTextLine", "signature": "boolean\nHUlib_addCharToTextLine\n( hu_textline_t*\tt,\n char\t\t\tch )"}, {"kind": "function", "line": 80, "name": "HUlib_delCharFromTextLine", "signature": "boolean HUlib_delCharFromTextLine(hu_textline_t* t)"}, {"kind": "function", "line": 94, "name": "HUlib_drawTextLine", "signature": "void\nHUlib_drawTextLine\n( hu_textline_t*\tl,\n boolean\t\tdrawcursor )"}, {"doc": "sorta called by HU_Erase and just better darn get things straight", "kind": "function", "line": 137, "name": "HUlib_eraseTextLine", "signature": "void HUlib_eraseTextLine(hu_textline_t* l)"}, {"kind": "function", "line": 169, "name": "HUlib_initSText", "signature": "void\nHUlib_initSText\n( hu_stext_t*\ts,\n int\t\tx,\n int\t\ty,\n int\t\th,\n patch_t**\tfont,\n int\t\tstar..."}, {"kind": "function", "line": 192, "name": "HUlib_addLineToSText", "signature": "void HUlib_addLineToSText(hu_stext_t* s)"}, {"kind": "function", "line": 209, "name": "HUlib_addMessageToSText", "signature": "void\nHUlib_addMessageToSText\n( hu_stext_t*\ts,\n char*\t\tprefix,\n char*\t\tmsg )"}, {"kind": "function", "line": 223, "name": "HUlib_drawSText", "signature": "void HUlib_drawSText(hu_stext_t* s)"}, {"kind": "function", "line": 246, "name": "HUlib_eraseSText", "signature": "void HUlib_eraseSText(hu_stext_t* s)"}, {"kind": "function", "line": 262, "name": "HUlib_initIText", "signature": "void\nHUlib_initIText\n( hu_itext_t*\tit,\n int\t\tx,\n int\t\ty,\n patch_t**\tfont,\n int\t\tstartchar,\n ..."}, {"doc": "The following deletion routines adhere to the left margin restriction", "kind": "function", "line": 278, "name": "HUlib_delCharFromIText", "signature": "void HUlib_delCharFromIText(hu_itext_t* it)"}, {"kind": "function", "line": 284, "name": "HUlib_eraseLineFromIText", "signature": "void HUlib_eraseLineFromIText(hu_itext_t* it)"}, {"doc": "Resets left margin as well", "kind": "function", "line": 291, "name": "HUlib_resetIText", "signature": "void HUlib_resetIText(hu_itext_t* it)"}, {"kind": "function", "line": 298, "name": "HUlib_addPrefixToIText", "signature": "void\nHUlib_addPrefixToIText\n( hu_itext_t*\tit,\n char*\t\tstr )"}, {"kind": "function", "line": 310, "name": "HUlib_keyInIText", "signature": "boolean\nHUlib_keyInIText\n( hu_itext_t*\tit,\n unsigned char ch )"}, {"kind": "function", "line": 329, "name": "HUlib_drawIText", "signature": "void HUlib_drawIText(hu_itext_t* it)"}, {"kind": "function", "line": 340, "name": "HUlib_eraseIText", "signature": "void HUlib_eraseIText(hu_itext_t* it)"}, {"kind": "variable", "line": 34, "name": "automapactive", "signature": "extern boolean automapactive;"}, {"kind": "macro", "line": 32, "name": "noterased", "signature": "#define noterased"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: none We are referring to patches. font stuff", "id": "progs/doomgeneric/hu_lib.h", "kind": "module", "label": "hu_lib.h", "language": "h", "sha256": "2765473b6de24ab7", "symbol_count": 24, "symbols": [{"doc": "Text Line widget (parent of Scrolling Text and Input Text widgets)", "kind": "struct", "line": 36, "name": "hu_textline_t"}, {"doc": "Scrolling Text window widget (child of Text Line widget)", "kind": "struct", "line": 56, "name": "hu_stext_t"}, {"doc": "Input Text Line widget (child of Text Line widget)", "kind": "struct", "line": 72, "name": "hu_itext_t"}, {"doc": "initializes heads-up widget library", "kind": "function", "line": 91, "name": "HUlib_init", "signature": "void HUlib_init(void);"}, {"doc": "clear a line of text", "kind": "function", "line": 98, "name": "HUlib_clearTextLine", "signature": "void HUlib_clearTextLine(hu_textline_t *t);"}, {"kind": "function", "line": 100, "name": "HUlib_initTextLine", "signature": "void HUlib_initTextLine(hu_textline_t *t, int x, int y, patch_t **f, int sc);"}, {"doc": "draws tline", "kind": "function", "line": 109, "name": "HUlib_drawTextLine", "signature": "void HUlib_drawTextLine(hu_textline_t *l, boolean drawcursor);"}, {"doc": "erases text line", "kind": "function", "line": 112, "name": "HUlib_eraseTextLine", "signature": "void HUlib_eraseTextLine(hu_textline_t *l);"}, {"kind": "function", "line": 121, "name": "HUlib_initSText", "signature": "void HUlib_initSText ( hu_stext_t* s, int x, int y, int h, patch_t** font, int startchar, boolean* on );"}, {"doc": "add a new line", "kind": "function", "line": 131, "name": "HUlib_addLineToSText", "signature": "void HUlib_addLineToSText(hu_stext_t* s);"}, {"kind": "function", "line": 135, "name": "HUlib_addMessageToSText", "signature": "void HUlib_addMessageToSText ( hu_stext_t* s, char* prefix, char* msg );"}, {"doc": "draws stext", "kind": "function", "line": 141, "name": "HUlib_drawSText", "signature": "void HUlib_drawSText(hu_stext_t* s);"}, {"doc": "erases all stext lines", "kind": "function", "line": 144, "name": "HUlib_eraseSText", "signature": "void HUlib_eraseSText(hu_stext_t* s);"}, {"kind": "function", "line": 148, "name": "HUlib_initIText", "signature": "void HUlib_initIText ( hu_itext_t* it, int x, int y, patch_t** font, int startchar, boolean* on );"}, {"doc": "enforces left margin", "kind": "function", "line": 157, "name": "HUlib_delCharFromIText", "signature": "void HUlib_delCharFromIText(hu_itext_t* it);"}, {"doc": "enforces left margin", "kind": "function", "line": 160, "name": "HUlib_eraseLineFromIText", "signature": "void HUlib_eraseLineFromIText(hu_itext_t* it);"}, {"doc": "resets line and left margin", "kind": "function", "line": 163, "name": "HUlib_resetIText", "signature": "void HUlib_resetIText(hu_itext_t* it);"}, {"kind": "function", "line": 167, "name": "HUlib_addPrefixToIText", "signature": "void HUlib_addPrefixToIText ( hu_itext_t* it, char* str );"}, {"kind": "function", "line": 177, "name": "HUlib_drawIText", "signature": "void HUlib_drawIText(hu_itext_t* it);"}, {"doc": "erases all itext lines", "kind": "function", "line": 180, "name": "HUlib_eraseIText", "signature": "void HUlib_eraseIText(hu_itext_t* it);"}, {"kind": "macro", "line": 19, "name": "__HULIB__", "signature": "#define __HULIB__"}, {"kind": "macro", "line": 25, "name": "HU_CHARERASE", "signature": "#define HU_CHARERASE"}, {"kind": "macro", "line": 27, "name": "HU_MAXLINES", "signature": "#define HU_MAXLINES"}, {"kind": "macro", "line": 28, "name": "HU_MAXLINELENGTH", "signature": "#define HU_MAXLINELENGTH"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Heads-up displays", "id": "progs/doomgeneric/hu_stuff.c", "kind": "module", "label": "hu_stuff.c", "language": "c", "sha256": "b021af7067afb5a9", "symbol_count": 24, "symbols": [{"kind": "function", "line": 286, "name": "HU_Init", "signature": "void HU_Init(void)"}, {"kind": "function", "line": 303, "name": "HU_Stop", "signature": "void HU_Stop(void)"}, {"kind": "function", "line": 308, "name": "HU_Start", "signature": "void HU_Start(void)"}, {"kind": "function", "line": 383, "name": "HU_Drawer", "signature": "void HU_Drawer(void)"}, {"kind": "function", "line": 393, "name": "HU_Erase", "signature": "void HU_Erase(void)"}, {"kind": "function", "line": 402, "name": "HU_Ticker", "signature": "void HU_Ticker(void)"}, {"kind": "function", "line": 482, "name": "HU_queueChatChar", "signature": "void HU_queueChatChar(char c)"}, {"kind": "function", "line": 495, "name": "HU_dequeueChatChar", "signature": "char HU_dequeueChatChar(void)"}, {"kind": "function", "line": 512, "name": "HU_Responder", "signature": "boolean HU_Responder(event_t *ev)"}, {"kind": "variable", "line": 103, "name": "showMessages", "signature": "extern int showMessages;"}, {"kind": "macro", "line": 47, "name": "HU_TITLE", "signature": "#define HU_TITLE"}, {"kind": "macro", "line": 48, "name": "HU_TITLE2", "signature": "#define HU_TITLE2"}, {"kind": "macro", "line": 49, "name": "HU_TITLEP", "signature": "#define HU_TITLEP"}, {"kind": "macro", "line": 50, "name": "HU_TITLET", "signature": "#define HU_TITLET"}, {"kind": "macro", "line": 51, "name": "HU_TITLE_CHEX", "signature": "#define HU_TITLE_CHEX"}, {"kind": "macro", "line": 52, "name": "HU_TITLEHEIGHT", "signature": "#define HU_TITLEHEIGHT"}, {"kind": "macro", "line": 53, "name": "HU_TITLEX", "signature": "#define HU_TITLEX"}, {"kind": "macro", "line": 54, "name": "HU_TITLEY", "signature": "#define HU_TITLEY"}, {"kind": "macro", "line": 56, "name": "HU_INPUTTOGGLE", "signature": "#define HU_INPUTTOGGLE"}, {"kind": "macro", "line": 57, "name": "HU_INPUTX", "signature": "#define HU_INPUTX"}, {"kind": "macro", "line": 58, "name": "HU_INPUTY", "signature": "#define HU_INPUTY"}, {"kind": "macro", "line": 59, "name": "HU_INPUTWIDTH", "signature": "#define HU_INPUTWIDTH"}, {"kind": "macro", "line": 60, "name": "HU_INPUTHEIGHT", "signature": "#define HU_INPUTHEIGHT"}, {"kind": "macro", "line": 475, "name": "QUEUESIZE", "signature": "#define QUEUESIZE"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Head up display Globally visible constants. Calculate # of glyphs in font.", "id": "progs/doomgeneric/hu_stuff.h", "kind": "module", "label": "hu_stuff.h", "language": "h", "sha256": "a840574fc8b9b6a7", "symbol_count": 17, "symbols": [{"kind": "function", "line": 46, "name": "HU_Init", "signature": "void HU_Init(void);"}, {"kind": "function", "line": 47, "name": "HU_Start", "signature": "void HU_Start(void);"}, {"kind": "function", "line": 51, "name": "HU_Ticker", "signature": "void HU_Ticker(void);"}, {"kind": "function", "line": 52, "name": "HU_Drawer", "signature": "void HU_Drawer(void);"}, {"kind": "function", "line": 53, "name": "HU_dequeueChatChar", "signature": "char HU_dequeueChatChar(void);"}, {"kind": "function", "line": 54, "name": "HU_Erase", "signature": "void HU_Erase(void);"}, {"kind": "variable", "line": 56, "name": "chat_macros", "signature": "extern char *chat_macros[10];"}, {"kind": "macro", "line": 19, "name": "__HU_STUFF_H__", "signature": "#define __HU_STUFF_H__"}, {"kind": "macro", "line": 27, "name": "HU_FONTSTART", "signature": "#define HU_FONTSTART"}, {"kind": "macro", "line": 28, "name": "HU_FONTEND", "signature": "#define HU_FONTEND"}, {"kind": "macro", "line": 31, "name": "HU_FONTSIZE", "signature": "#define HU_FONTSIZE"}, {"kind": "macro", "line": 33, "name": "HU_BROADCAST", "signature": "#define HU_BROADCAST"}, {"kind": "macro", "line": 35, "name": "HU_MSGX", "signature": "#define HU_MSGX"}, {"kind": "macro", "line": 36, "name": "HU_MSGY", "signature": "#define HU_MSGY"}, {"kind": "macro", "line": 37, "name": "HU_MSGWIDTH", "signature": "#define HU_MSGWIDTH"}, {"kind": "macro", "line": 38, "name": "HU_MSGHEIGHT", "signature": "#define HU_MSGHEIGHT"}, {"kind": "macro", "line": 40, "name": "HU_MSGTIMEOUT", "signature": "#define HU_MSGTIMEOUT"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 1993-2008 Raven Software This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. SDL implementation of the Hexen CD interface.", "id": "progs/doomgeneric/i_cdmus.c", "kind": "module", "label": "i_cdmus.c", "language": "c", "sha256": "dcc690bb873b1c9b", "symbol_count": 9, "symbols": [{"kind": "function", "line": 38, "name": "I_CDMusInit", "signature": "int I_CDMusInit(void)"}, {"kind": "function", "line": 92, "name": "I_CDMusPrintStartup", "signature": "void I_CDMusPrintStartup(void)"}, {"kind": "function", "line": 107, "name": "I_CDMusPlay", "signature": "int I_CDMusPlay(int track)"}, {"kind": "function", "line": 130, "name": "I_CDMusStop", "signature": "int I_CDMusStop(void)"}, {"kind": "function", "line": 145, "name": "I_CDMusResume", "signature": "int I_CDMusResume(void)"}, {"kind": "function", "line": 160, "name": "I_CDMusSetVolume", "signature": "int I_CDMusSetVolume(int volume)"}, {"kind": "function", "line": 169, "name": "I_CDMusFirstTrack", "signature": "int I_CDMusFirstTrack(void)"}, {"kind": "function", "line": 202, "name": "I_CDMusLastTrack", "signature": "int I_CDMusLastTrack(void)"}, {"kind": "function", "line": 219, "name": "I_CDMusTrackLength", "signature": "int I_CDMusTrackLength(int track_num)"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 1993-2008 Raven Software This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. i_cdmus.h", "id": "progs/doomgeneric/i_cdmus.h", "kind": "module", "label": "i_cdmus.h", "language": "h", "sha256": "0980dbab8712debe", "symbol_count": 18, "symbols": [{"kind": "function", "line": 31, "name": "I_CDMusInit", "signature": "int I_CDMusInit(void);"}, {"kind": "function", "line": 32, "name": "I_CDMusPrintStartup", "signature": "void I_CDMusPrintStartup(void);"}, {"kind": "function", "line": 33, "name": "I_CDMusPlay", "signature": "int I_CDMusPlay(int track);"}, {"kind": "function", "line": 34, "name": "I_CDMusStop", "signature": "int I_CDMusStop(void);"}, {"kind": "function", "line": 35, "name": "I_CDMusResume", "signature": "int I_CDMusResume(void);"}, {"kind": "function", "line": 36, "name": "I_CDMusSetVolume", "signature": "int I_CDMusSetVolume(int volume);"}, {"kind": "function", "line": 37, "name": "I_CDMusFirstTrack", "signature": "int I_CDMusFirstTrack(void);"}, {"kind": "function", "line": 38, "name": "I_CDMusLastTrack", "signature": "int I_CDMusLastTrack(void);"}, {"kind": "function", "line": 39, "name": "I_CDMusTrackLength", "signature": "int I_CDMusTrackLength(int track);"}, {"kind": "variable", "line": 29, "name": "cd_Error", "signature": "extern int cd_Error;"}, {"kind": "macro", "line": 19, "name": "__ICDMUS__", "signature": "#define __ICDMUS__"}, {"kind": "macro", "line": 21, "name": "CDERR_NOTINSTALLED", "signature": "#define CDERR_NOTINSTALLED"}, {"kind": "macro", "line": 22, "name": "CDERR_NOAUDIOSUPPORT", "signature": "#define CDERR_NOAUDIOSUPPORT"}, {"kind": "macro", "line": 23, "name": "CDERR_NOAUDIOTRACKS", "signature": "#define CDERR_NOAUDIOTRACKS"}, {"kind": "macro", "line": 24, "name": "CDERR_BADDRIVE", "signature": "#define CDERR_BADDRIVE"}, {"kind": "macro", "line": 25, "name": "CDERR_BADTRACK", "signature": "#define CDERR_BADTRACK"}, {"kind": "macro", "line": 26, "name": "CDERR_IOCTLBUFFMEM", "signature": "#define CDERR_IOCTLBUFFMEM"}, {"kind": "macro", "line": 27, "name": "CDERR_DEVREQBASE", "signature": "#define CDERR_DEVREQBASE"}]}, {"doc": "Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Exit text-mode ENDOOM screen.", "id": "progs/doomgeneric/i_endoom.c", "kind": "module", "label": "i_endoom.c", "language": "c", "sha256": "c72ffc4cf7ac291b", "symbol_count": 3, "symbols": [{"kind": "function", "line": 36, "name": "I_Endoom", "signature": "void I_Endoom(byte *endoom_data)"}, {"kind": "macro", "line": 29, "name": "ENDOOM_W", "signature": "#define ENDOOM_W"}, {"kind": "macro", "line": 30, "name": "ENDOOM_H", "signature": "#define ENDOOM_H"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Exit text-mode ENDOOM screen. Display the Endoom screen on shutdown. Pass a pointer to the ENDOOM lump.", "id": "progs/doomgeneric/i_endoom.h", "kind": "module", "label": "i_endoom.h", "language": "h", "sha256": "f023295280d38c82", "symbol_count": 2, "symbols": [{"kind": "function", "line": 26, "name": "I_Endoom", "signature": "void I_Endoom(byte *data);"}, {"kind": "macro", "line": 21, "name": "__I_ENDOOM__", "signature": "#define __I_ENDOOM__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.", "id": "progs/doomgeneric/i_input.c", "kind": "module", "label": "i_input.c", "language": "c", "sha256": "3a409b2be2d66f34", "symbol_count": 5, "symbols": [{"kind": "function", "line": 225, "name": "TranslateKey", "signature": "static unsigned char TranslateKey(unsigned char key)"}, {"kind": "function", "line": 242, "name": "GetTypedChar", "signature": "static unsigned char GetTypedChar(unsigned char key)"}, {"kind": "function", "line": 263, "name": "UpdateShiftStatus", "signature": "static void UpdateShiftStatus(int pressed, unsigned char key)"}, {"kind": "function", "line": 279, "name": "I_GetEvent", "signature": "void I_GetEvent(void)"}, {"kind": "function", "line": 338, "name": "I_InitInput", "signature": "void I_InitInput(void)"}]}, {"doc": "Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: SDL Joystick code.", "id": "progs/doomgeneric/i_joystick.c", "kind": "module", "label": "i_joystick.c", "language": "c", "sha256": "2f627ff37bc146ef", "symbol_count": 10, "symbols": [{"kind": "function", "line": 77, "name": "I_ShutdownJoystick", "signature": "void I_ShutdownJoystick(void)"}, {"doc": "ifdef ORIGCODE", "kind": "function", "line": 90, "name": "IsValidAxis", "signature": "static boolean IsValidAxis(int axis)"}, {"kind": "function", "line": 115, "name": "I_InitJoystick", "signature": "void I_InitJoystick(void)"}, {"doc": "ifdef ORIGCODE", "kind": "function", "line": 171, "name": "IsAxisButton", "signature": "static boolean IsAxisButton(int physbutton)"}, {"kind": "function", "line": 203, "name": "ReadButtonState", "signature": "static int ReadButtonState(int vbutton)"}, {"kind": "function", "line": 228, "name": "GetButtonsState", "signature": "static int GetButtonsState(void)"}, {"kind": "function", "line": 248, "name": "GetAxisState", "signature": "static int GetAxisState(int axis, int invert)"}, {"doc": "endif", "kind": "function", "line": 321, "name": "I_UpdateJoystick", "signature": "void I_UpdateJoystick(void)"}, {"kind": "function", "line": 339, "name": "I_BindJoystickVariables", "signature": "void I_BindJoystickVariables(void)"}, {"kind": "macro", "line": 38, "name": "DEAD_ZONE", "signature": "#define DEAD_ZONE"}]}, {"doc": "Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: System-specific joystick interface. Number of \"virtual\" joystick buttons defined in configuration files. This needs to be at least as large as the number of different key bindings supported by the higher-level game code (joyb* variables). If this bit is set in a configuration file axis value, the axis is not actually a joystick axis, but instead is a \"button axis\". This means that instead of reading an SDL joystick axis, we read the state of two buttons to get the axis value. This is needed for eg.", "id": "progs/doomgeneric/i_joystick.h", "kind": "module", "label": "i_joystick.h", "language": "h", "sha256": "fd2d0f867599c41a", "symbol_count": 18, "symbols": [{"kind": "function", "line": 63, "name": "I_InitJoystick", "signature": "void I_InitJoystick(void);"}, {"kind": "function", "line": 64, "name": "I_ShutdownJoystick", "signature": "void I_ShutdownJoystick(void);"}, {"kind": "function", "line": 65, "name": "I_UpdateJoystick", "signature": "void I_UpdateJoystick(void);"}, {"kind": "function", "line": 67, "name": "I_BindJoystickVariables", "signature": "void I_BindJoystickVariables(void);"}, {"kind": "macro", "line": 20, "name": "__I_JOYSTICK__", "signature": "#define __I_JOYSTICK__"}, {"kind": "macro", "line": 25, "name": "NUM_VIRTUAL_BUTTONS", "signature": "#define NUM_VIRTUAL_BUTTONS"}, {"kind": "macro", "line": 33, "name": "BUTTON_AXIS", "signature": "#define BUTTON_AXIS"}, {"kind": "macro", "line": 36, "name": "IS_BUTTON_AXIS", "signature": "#define IS_BUTTON_AXIS(axis)"}, {"kind": "macro", "line": 39, "name": "BUTTON_AXIS_NEG", "signature": "#define BUTTON_AXIS_NEG(axis)"}, {"kind": "macro", "line": 40, "name": "BUTTON_AXIS_POS", "signature": "#define BUTTON_AXIS_POS(axis)"}, {"kind": "macro", "line": 43, "name": "CREATE_BUTTON_AXIS", "signature": "#define CREATE_BUTTON_AXIS(neg, pos)"}, {"kind": "macro", "line": 48, "name": "HAT_AXIS", "signature": "#define HAT_AXIS"}, {"kind": "macro", "line": 50, "name": "IS_HAT_AXIS", "signature": "#define IS_HAT_AXIS(axis)"}, {"kind": "macro", "line": 53, "name": "HAT_AXIS_HAT", "signature": "#define HAT_AXIS_HAT(axis)"}, {"kind": "macro", "line": 55, "name": "HAT_AXIS_DIRECTION", "signature": "#define HAT_AXIS_DIRECTION(axis)"}, {"kind": "macro", "line": 57, "name": "CREATE_HAT_AXIS", "signature": "#define CREATE_HAT_AXIS(hat, direction)"}, {"kind": "macro", "line": 60, "name": "HAT_AXIS_HORIZONTAL", "signature": "#define HAT_AXIS_HORIZONTAL"}, {"kind": "macro", "line": 61, "name": "HAT_AXIS_VERTICAL", "signature": "#define HAT_AXIS_VERTICAL"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Main program, simply calls D_DoomMain high level loop. #include \"config.h\" #include \"doomtype.h\" #include \"i_system.h\" D_DoomMain() Not a globally visible function, just included for source reference, calls all startup code, parses command line options.", "id": "progs/doomgeneric/i_main.c", "kind": "module", "label": "i_main.c", "language": "c", "sha256": "25ce2b763f83017e", "symbol_count": 4, "symbols": [{"kind": "function", "line": 40, "name": "main", "signature": "int main(int argc, char **argv)"}, {"kind": "function", "line": 33, "name": "D_DoomMain", "signature": "void D_DoomMain (void);"}, {"kind": "function", "line": 35, "name": "M_FindResponseFile", "signature": "void M_FindResponseFile(void);"}, {"kind": "function", "line": 37, "name": "dg_Create", "signature": "void dg_Create();"}]}, {"id": "progs/doomgeneric/i_minios_sound.c", "kind": "module", "label": "i_minios_sound.c", "language": "c", "sha256": "bba6678e34e2d301", "symbol_count": 40, "symbols": [{"kind": "struct", "line": 17, "name": "pcspk_channel_t"}, {"kind": "struct", "line": 84, "name": "mus_player_t"}, {"kind": "function", "line": 32, "name": "sys_tone", "signature": "static long sys_tone(unsigned f)"}, {"kind": "function", "line": 35, "name": "sys_time", "signature": "static long sys_time(void)"}, {"kind": "function", "line": 101, "name": "mus_read_varlen", "signature": "static int mus_read_varlen(mus_player_t *m, unsigned long *out)"}, {"doc": "Process one full block of events at the current tick and advance pos past * its delta. Returns the delta in *out. Returns 0 at end of score.", "kind": "function", "line": 115, "name": "mus_next_block", "signature": "static int mus_next_block(mus_player_t *m, unsigned long *out)"}, {"kind": "function", "line": 154, "name": "mus_note_cmp", "signature": "static int mus_note_cmp(const void *a, const void *b)"}, {"doc": "Split the sounding notes into a bass pedal (the lowest note below the bass line) and the melody arpeggio (the highest MUS_ARP_MAX melody * notes). Percussion never enters active[], so it is skipped here too.", "kind": "function", "line": 162, "name": "mus_build_chord", "signature": "static void mus_build_chord(mus_player_t *m)"}, {"doc": "} else { if (n < 16) all[n++] = (unsigned short)note; } } m->bass = bass; m->mel_len = 0; if (n > 1) qsort(all, n, sizeof(all[0]), mus_note_cmp); int start = n > MUS_ARP_MAX ? n - MUS_ARP_MAX : 0; for (i = start; i < n; i++) m->mel[m->mel_len++] = all[i]; m->arp_index = 0; } /* Hold a tone for the given number of milliseconds.", "kind": "function", "line": 185, "name": "mus_hold_tone", "signature": "static void mus_hold_tone(unsigned freq, unsigned long ms)"}, {"doc": "Play one full cycle of the pseudo-polyphony: the bass pedal first, held long like the NES triangle voice, then the melody notes arpeggiated rapidly. The repeated cycle at this cadence is what the ear integrates * into a chord instead of one voice.", "kind": "function", "line": 196, "name": "mus_play_chord", "signature": "static void mus_play_chord(mus_player_t *m)"}, {"kind": "function", "line": 210, "name": "mus_advance", "signature": "static void mus_advance(mus_player_t *m, unsigned long ms)"}, {"kind": "function", "line": 231, "name": "MUS_Init", "signature": "static boolean MUS_Init(void)"}, {"kind": "function", "line": 236, "name": "MUS_Shutdown", "signature": "static void MUS_Shutdown(void)"}, {"kind": "function", "line": 241, "name": "MUS_SetMusicVolume", "signature": "static void MUS_SetMusicVolume(int volume)"}, {"kind": "function", "line": 243, "name": "MUS_Pause", "signature": "static void MUS_Pause(void)"}, {"kind": "function", "line": 244, "name": "MUS_Resume", "signature": "static void MUS_Resume(void)"}, {"kind": "function", "line": 246, "name": "MUS_RegisterSong", "signature": "static void *MUS_RegisterSong(void *data, int len)"}, {"kind": "function", "line": 261, "name": "MUS_UnRegisterSong", "signature": "static void MUS_UnRegisterSong(void *handle)"}, {"kind": "function", "line": 267, "name": "MUS_PlaySong", "signature": "static void MUS_PlaySong(void *handle, boolean looping)"}, {"kind": "function", "line": 280, "name": "MUS_StopSong", "signature": "static void MUS_StopSong(void)"}, {"kind": "function", "line": 285, "name": "MUS_MusicIsPlaying", "signature": "static boolean MUS_MusicIsPlaying(void)"}, {"kind": "function", "line": 289, "name": "MUS_Poll", "signature": "static void MUS_Poll(void)"}, {"kind": "function", "line": 318, "name": "PCSPK_Init", "signature": "static boolean PCSPK_Init(boolean use_sfx_prefix)"}, {"kind": "function", "line": 325, "name": "PCSPK_Shutdown", "signature": "static void PCSPK_Shutdown(void)"}, {"kind": "function", "line": 330, "name": "PCSPK_GetSfxLumpNum", "signature": "static int PCSPK_GetSfxLumpNum(sfxinfo_t *sfx)"}, {"kind": "function", "line": 341, "name": "free_channel", "signature": "static void free_channel(int i)"}, {"kind": "function", "line": 350, "name": "PCSPK_Update", "signature": "static void PCSPK_Update(void)"}, {"kind": "function", "line": 382, "name": "PCSPK_UpdateSoundParams", "signature": "static void PCSPK_UpdateSoundParams(int ch, int v, int s)"}, {"kind": "function", "line": 386, "name": "PCSPK_StartSound", "signature": "static int PCSPK_StartSound(sfxinfo_t *sfx, int channel, int vol, int sep)"}, {"kind": "function", "line": 436, "name": "PCSPK_StopSound", "signature": "static void PCSPK_StopSound(int channel)"}, {"kind": "function", "line": 442, "name": "PCSPK_SoundIsPlaying", "signature": "static boolean PCSPK_SoundIsPlaying(int channel)"}, {"kind": "function", "line": 448, "name": "PCSPK_CacheSounds", "signature": "static void PCSPK_CacheSounds(sfxinfo_t *s, int n)"}, {"kind": "macro", "line": 12, "name": "PCSPK_CHANNELS", "signature": "#define PCSPK_CHANNELS"}, {"kind": "macro", "line": 13, "name": "PCSPK_TICK_MS", "signature": "#define PCSPK_TICK_MS"}, {"kind": "macro", "line": 58, "name": "MUS_TICKS_PER_SEC", "signature": "#define MUS_TICKS_PER_SEC"}, {"kind": "macro", "line": 59, "name": "MUS_PERCUSSION_CHAN", "signature": "#define MUS_PERCUSSION_CHAN"}, {"kind": "macro", "line": 60, "name": "MUS_ARP_SLOT_MS", "signature": "#define MUS_ARP_SLOT_MS"}, {"kind": "macro", "line": 61, "name": "MUS_BASS_HOLD_MS", "signature": "#define MUS_BASS_HOLD_MS"}, {"kind": "macro", "line": 62, "name": "MUS_BASS_LINE_MIDI", "signature": "#define MUS_BASS_LINE_MIDI"}, {"kind": "macro", "line": 63, "name": "MUS_ARP_MAX", "signature": "#define MUS_ARP_MAX"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Screen scale-up code: 1x,2x,3x,4x pixel doubling Aspect ratio-correcting stretch functions", "id": "progs/doomgeneric/i_scale.c", "kind": "module", "label": "i_scale.c", "language": "c", "sha256": "1ab70df7b89e6f39", "symbol_count": 39, "symbols": [{"kind": "function", "line": 61, "name": "I_InitScale", "signature": "void I_InitScale(byte *_src_buffer, byte *_dest_buffer, int _dest_pitch)"}, {"kind": "function", "line": 75, "name": "I_Scale1x", "signature": "static boolean I_Scale1x(int x1, int y1, int x2, int y2)"}, {"kind": "function", "line": 105, "name": "I_Scale2x", "signature": "static boolean I_Scale2x(int x1, int y1, int x2, int y2)"}, {"kind": "function", "line": 146, "name": "I_Scale3x", "signature": "static boolean I_Scale3x(int x1, int y1, int x2, int y2)"}, {"kind": "function", "line": 191, "name": "I_Scale4x", "signature": "static boolean I_Scale4x(int x1, int y1, int x2, int y2)"}, {"kind": "function", "line": 240, "name": "I_Scale5x", "signature": "static boolean I_Scale5x(int x1, int y1, int x2, int y2)"}, {"kind": "function", "line": 295, "name": "FindNearestColor", "signature": "static int FindNearestColor(byte *palette, int r, int g, int b)"}, {"kind": "function", "line": 332, "name": "GenerateStretchTable", "signature": "static byte *GenerateStretchTable(byte *palette, int pct)"}, {"kind": "function", "line": 361, "name": "I_InitStretchTables", "signature": "static void I_InitStretchTables(byte *palette)"}, {"kind": "function", "line": 387, "name": "I_InitSquashTable", "signature": "static void I_InitSquashTable(byte *palette)"}, {"kind": "function", "line": 404, "name": "I_ResetScaleTables", "signature": "void I_ResetScaleTables(byte *palette)"}, {"kind": "function", "line": 434, "name": "WriteBlendedLine1x", "signature": "static inline void WriteBlendedLine1x(byte *dest, byte *src1, byte *src2, \n ..."}, {"kind": "function", "line": 450, "name": "I_Stretch1x", "signature": "static boolean I_Stretch1x(int x1, int y1, int x2, int y2)"}, {"kind": "function", "line": 507, "name": "WriteLine2x", "signature": "static inline void WriteLine2x(byte *dest, byte *src)"}, {"kind": "function", "line": 520, "name": "WriteBlendedLine2x", "signature": "static inline void WriteBlendedLine2x(byte *dest, byte *src1, byte *src2, \n ..."}, {"kind": "function", "line": 539, "name": "I_Stretch2x", "signature": "static boolean I_Stretch2x(int x1, int y1, int x2, int y2)"}, {"kind": "function", "line": 620, "name": "WriteLine3x", "signature": "static inline void WriteLine3x(byte *dest, byte *src)"}, {"kind": "function", "line": 634, "name": "WriteBlendedLine3x", "signature": "static inline void WriteBlendedLine3x(byte *dest, byte *src1, byte *src2, \n ..."}, {"kind": "function", "line": 654, "name": "I_Stretch3x", "signature": "static boolean I_Stretch3x(int x1, int y1, int x2, int y2)"}, {"kind": "function", "line": 759, "name": "WriteLine4x", "signature": "static inline void WriteLine4x(byte *dest, byte *src)"}, {"kind": "function", "line": 774, "name": "WriteBlendedLine4x", "signature": "static inline void WriteBlendedLine4x(byte *dest, byte *src1, byte *src2, \n ..."}, {"kind": "function", "line": 795, "name": "I_Stretch4x", "signature": "static boolean I_Stretch4x(int x1, int y1, int x2, int y2)"}, {"kind": "function", "line": 924, "name": "WriteLine5x", "signature": "static inline void WriteLine5x(byte *dest, byte *src)"}, {"kind": "function", "line": 942, "name": "I_Stretch5x", "signature": "static boolean I_Stretch5x(int x1, int y1, int x2, int y2)"}, {"kind": "function", "line": 1030, "name": "WriteSquashedLine1x", "signature": "static inline void WriteSquashedLine1x(byte *dest, byte *src)"}, {"kind": "function", "line": 1061, "name": "I_Squash1x", "signature": "static boolean I_Squash1x(int x1, int y1, int x2, int y2)"}, {"kind": "function", "line": 1102, "name": "WriteSquashedLine2x", "signature": "static inline void WriteSquashedLine2x(byte *dest, byte *src)"}, {"kind": "function", "line": 1160, "name": "I_Squash2x", "signature": "static boolean I_Squash2x(int x1, int y1, int x2, int y2)"}, {"kind": "function", "line": 1197, "name": "WriteSquashedLine3x", "signature": "static inline void WriteSquashedLine3x(byte *dest, byte *src)"}, {"kind": "function", "line": 1243, "name": "I_Squash3x", "signature": "static boolean I_Squash3x(int x1, int y1, int x2, int y2)"}, {"kind": "function", "line": 1279, "name": "WriteSquashedLine4x", "signature": "static inline void WriteSquashedLine4x(byte *dest, byte *src)"}, {"kind": "function", "line": 1354, "name": "I_Squash4x", "signature": "static boolean I_Squash4x(int x1, int y1, int x2, int y2)"}, {"kind": "function", "line": 1390, "name": "WriteSquashedLine5x", "signature": "static inline void WriteSquashedLine5x(byte *dest, byte *src)"}, {"kind": "function", "line": 1419, "name": "I_Squash5x", "signature": "static boolean I_Squash5x(int x1, int y1, int x2, int y2)"}, {"kind": "macro", "line": 32, "name": "inline", "signature": "#define inline"}, {"kind": "macro", "line": 1099, "name": "DRAW_PIXEL2", "signature": "#define DRAW_PIXEL2"}, {"kind": "macro", "line": 1194, "name": "DRAW_PIXEL3", "signature": "#define DRAW_PIXEL3"}, {"kind": "macro", "line": 1276, "name": "DRAW_PIXEL4", "signature": "#define DRAW_PIXEL4"}, {"kind": "macro", "line": 1387, "name": "DRAW_PIXEL5", "signature": "#define DRAW_PIXEL5"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Pixel-doubling scale up functions.", "id": "progs/doomgeneric/i_scale.h", "kind": "module", "label": "i_scale.h", "language": "h", "sha256": "b1673d13fb6e007e", "symbol_count": 18, "symbols": [{"kind": "function", "line": 25, "name": "I_InitScale", "signature": "void I_InitScale(byte *_src_buffer, byte *_dest_buffer, int _dest_pitch);"}, {"kind": "function", "line": 26, "name": "I_ResetScaleTables", "signature": "void I_ResetScaleTables(byte *palette);"}, {"kind": "variable", "line": 30, "name": "mode_scale_1x", "signature": "extern screen_mode_t mode_scale_1x;"}, {"kind": "variable", "line": 31, "name": "mode_scale_2x", "signature": "extern screen_mode_t mode_scale_2x;"}, {"kind": "variable", "line": 32, "name": "mode_scale_3x", "signature": "extern screen_mode_t mode_scale_3x;"}, {"kind": "variable", "line": 33, "name": "mode_scale_4x", "signature": "extern screen_mode_t mode_scale_4x;"}, {"kind": "variable", "line": 34, "name": "mode_scale_5x", "signature": "extern screen_mode_t mode_scale_5x;"}, {"kind": "variable", "line": 38, "name": "mode_stretch_1x", "signature": "extern screen_mode_t mode_stretch_1x;"}, {"kind": "variable", "line": 39, "name": "mode_stretch_2x", "signature": "extern screen_mode_t mode_stretch_2x;"}, {"kind": "variable", "line": 40, "name": "mode_stretch_3x", "signature": "extern screen_mode_t mode_stretch_3x;"}, {"kind": "variable", "line": 41, "name": "mode_stretch_4x", "signature": "extern screen_mode_t mode_stretch_4x;"}, {"kind": "variable", "line": 42, "name": "mode_stretch_5x", "signature": "extern screen_mode_t mode_stretch_5x;"}, {"kind": "variable", "line": 46, "name": "mode_squash_1x", "signature": "extern screen_mode_t mode_squash_1x;"}, {"kind": "variable", "line": 47, "name": "mode_squash_2x", "signature": "extern screen_mode_t mode_squash_2x;"}, {"kind": "variable", "line": 48, "name": "mode_squash_3x", "signature": "extern screen_mode_t mode_squash_3x;"}, {"kind": "variable", "line": 49, "name": "mode_squash_4x", "signature": "extern screen_mode_t mode_squash_4x;"}, {"kind": "variable", "line": 50, "name": "mode_squash_5x", "signature": "extern screen_mode_t mode_squash_5x;"}, {"kind": "macro", "line": 21, "name": "__I_SCALE__", "signature": "#define __I_SCALE__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: none", "id": "progs/doomgeneric/i_sound.c", "kind": "module", "label": "i_sound.c", "language": "c", "sha256": "c37a497637fc32a9", "symbol_count": 34, "symbols": [{"kind": "function", "line": 116, "name": "SndDeviceInList", "signature": "static boolean SndDeviceInList(snddevice_t device, snddevice_t *list,\n ..."}, {"kind": "function", "line": 135, "name": "InitSfxModule", "signature": "static void InitSfxModule(boolean use_sfx_prefix)"}, {"kind": "function", "line": 163, "name": "InitMusicModule", "signature": "static void InitMusicModule(void)"}, {"kind": "function", "line": 195, "name": "I_InitSound", "signature": "void I_InitSound(boolean use_sfx_prefix)"}, {"kind": "function", "line": 250, "name": "I_ShutdownSound", "signature": "void I_ShutdownSound(void)"}, {"kind": "function", "line": 263, "name": "I_GetSfxLumpNum", "signature": "int I_GetSfxLumpNum(sfxinfo_t *sfxinfo)"}, {"kind": "function", "line": 275, "name": "I_UpdateSound", "signature": "void I_UpdateSound(void)"}, {"kind": "function", "line": 288, "name": "CheckVolumeSeparation", "signature": "static void CheckVolumeSeparation(int *vol, int *sep)"}, {"kind": "function", "line": 309, "name": "I_UpdateSoundParams", "signature": "void I_UpdateSoundParams(int channel, int vol, int sep)"}, {"kind": "function", "line": 318, "name": "I_StartSound", "signature": "int I_StartSound(sfxinfo_t *sfxinfo, int channel, int vol, int sep)"}, {"kind": "function", "line": 331, "name": "I_StopSound", "signature": "void I_StopSound(int channel)"}, {"kind": "function", "line": 339, "name": "I_SoundIsPlaying", "signature": "boolean I_SoundIsPlaying(int channel)"}, {"kind": "function", "line": 351, "name": "I_PrecacheSounds", "signature": "void I_PrecacheSounds(sfxinfo_t *sounds, int num_sounds)"}, {"kind": "function", "line": 359, "name": "I_InitMusic", "signature": "void I_InitMusic(void)"}, {"kind": "function", "line": 363, "name": "I_ShutdownMusic", "signature": "void I_ShutdownMusic(void)"}, {"kind": "function", "line": 368, "name": "I_SetMusicVolume", "signature": "void I_SetMusicVolume(int volume)"}, {"kind": "function", "line": 376, "name": "I_PauseSong", "signature": "void I_PauseSong(void)"}, {"kind": "function", "line": 384, "name": "I_ResumeSong", "signature": "void I_ResumeSong(void)"}, {"kind": "function", "line": 392, "name": "I_RegisterSong", "signature": "void *I_RegisterSong(void *data, int len)"}, {"kind": "function", "line": 404, "name": "I_UnRegisterSong", "signature": "void I_UnRegisterSong(void *handle)"}, {"kind": "function", "line": 412, "name": "I_PlaySong", "signature": "void I_PlaySong(void *handle, boolean looping)"}, {"kind": "function", "line": 420, "name": "I_StopSong", "signature": "void I_StopSong(void)"}, {"kind": "function", "line": 428, "name": "I_MusicIsPlaying", "signature": "boolean I_MusicIsPlaying(void)"}, {"kind": "function", "line": 440, "name": "I_BindSoundVariables", "signature": "void I_BindSoundVariables(void)"}, {"kind": "function", "line": 65, "name": "I_InitTimidityConfig", "signature": "extern void I_InitTimidityConfig(void);"}, {"kind": "variable", "line": 66, "name": "sound_sdl_module", "signature": "extern sound_module_t sound_sdl_module;"}, {"kind": "variable", "line": 67, "name": "sound_pcsound_module", "signature": "extern sound_module_t sound_pcsound_module;"}, {"kind": "variable", "line": 68, "name": "music_sdl_module", "signature": "extern music_module_t music_sdl_module;"}, {"kind": "variable", "line": 69, "name": "music_opl_module", "signature": "extern music_module_t music_opl_module;"}, {"kind": "variable", "line": 70, "name": "music_pcspeaker_module", "signature": "extern music_module_t music_pcspeaker_module;"}, {"kind": "variable", "line": 74, "name": "opl_io_port", "signature": "extern int opl_io_port;"}, {"kind": "variable", "line": 78, "name": "timidity_cfg_path", "signature": "extern char *timidity_cfg_path;"}, {"doc": "ifdef ORIGCODE", "kind": "variable", "line": 443, "name": "use_libsamplerate", "signature": "extern int use_libsamplerate;"}, {"kind": "variable", "line": 444, "name": "libsamplerate_scale", "signature": "extern float libsamplerate_scale;"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: The not so system specific sound interface. SoundFX struct.", "id": "progs/doomgeneric/i_sound.h", "kind": "module", "label": "i_sound.h", "language": "h", "sha256": "a56ad3b85d82a20e", "symbol_count": 30, "symbols": [{"kind": "struct", "line": 31, "name": "sfxinfo_struct"}, {"doc": "MusicInfo struct.", "kind": "struct", "line": 72, "name": "musicinfo_t"}, {"kind": "struct", "line": 105, "name": "sound_module_t"}, {"kind": "struct", "line": 164, "name": "music_module_t"}, {"doc": "SoundFX struct.", "kind": "type_alias", "line": 29, "name": "sfxinfo_t", "signature": "typedef struct sfxinfo_struct sfxinfo_t;"}, {"kind": "function", "line": 152, "name": "I_InitSound", "signature": "void I_InitSound(boolean use_sfx_prefix);"}, {"kind": "function", "line": 153, "name": "I_ShutdownSound", "signature": "void I_ShutdownSound(void);"}, {"kind": "function", "line": 154, "name": "I_GetSfxLumpNum", "signature": "int I_GetSfxLumpNum(sfxinfo_t *sfxinfo);"}, {"kind": "function", "line": 155, "name": "I_UpdateSound", "signature": "void I_UpdateSound(void);"}, {"kind": "function", "line": 156, "name": "I_UpdateSoundParams", "signature": "void I_UpdateSoundParams(int channel, int vol, int sep);"}, {"kind": "function", "line": 157, "name": "I_StartSound", "signature": "int I_StartSound(sfxinfo_t *sfxinfo, int channel, int vol, int sep);"}, {"kind": "function", "line": 158, "name": "I_StopSound", "signature": "void I_StopSound(int channel);"}, {"kind": "function", "line": 160, "name": "I_PrecacheSounds", "signature": "void I_PrecacheSounds(sfxinfo_t *sounds, int num_sounds);"}, {"kind": "function", "line": 217, "name": "I_InitMusic", "signature": "void I_InitMusic(void);"}, {"kind": "function", "line": 218, "name": "I_ShutdownMusic", "signature": "void I_ShutdownMusic(void);"}, {"kind": "function", "line": 219, "name": "I_SetMusicVolume", "signature": "void I_SetMusicVolume(int volume);"}, {"kind": "function", "line": 220, "name": "I_PauseSong", "signature": "void I_PauseSong(void);"}, {"kind": "function", "line": 221, "name": "I_ResumeSong", "signature": "void I_ResumeSong(void);"}, {"kind": "function", "line": 222, "name": "I_RegisterSong", "signature": "void *I_RegisterSong(void *data, int len);"}, {"kind": "function", "line": 223, "name": "I_UnRegisterSong", "signature": "void I_UnRegisterSong(void *handle);"}, {"kind": "function", "line": 224, "name": "I_PlaySong", "signature": "void I_PlaySong(void *handle, boolean looping);"}, {"kind": "function", "line": 225, "name": "I_StopSong", "signature": "void I_StopSong(void);"}, {"kind": "function", "line": 235, "name": "I_BindSoundVariables", "signature": "void I_BindSoundVariables(void);"}, {"kind": "variable", "line": 228, "name": "snd_sfxdevice", "signature": "extern int snd_sfxdevice;"}, {"kind": "variable", "line": 229, "name": "snd_musicdevice", "signature": "extern int snd_musicdevice;"}, {"kind": "variable", "line": 230, "name": "snd_samplerate", "signature": "extern int snd_samplerate;"}, {"kind": "variable", "line": 231, "name": "snd_cachesize", "signature": "extern int snd_cachesize;"}, {"kind": "variable", "line": 232, "name": "snd_maxslicetime_ms", "signature": "extern int snd_maxslicetime_ms;"}, {"kind": "variable", "line": 233, "name": "snd_musiccmd", "signature": "extern char *snd_musiccmd;"}, {"kind": "macro", "line": 21, "name": "__I_SOUND__", "signature": "#define __I_SOUND__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Endianess handling, swapping 16bit and 32bit. Endianess handling. WAD files are stored little endian. Just use SDL's endianness swapping functions.", "id": "progs/doomgeneric/i_swap.h", "kind": "module", "label": "i_swap.h", "language": "h", "sha256": "90f7aa38f27883b7", "symbol_count": 8, "symbols": [{"kind": "macro", "line": 21, "name": "__I_SWAP__", "signature": "#define __I_SWAP__"}, {"kind": "macro", "line": 34, "name": "SHORT", "signature": "#define SHORT(x)"}, {"kind": "macro", "line": 35, "name": "LONG", "signature": "#define LONG(x)"}, {"kind": "macro", "line": 40, "name": "SYS_LITTLE_ENDIAN", "signature": "#define SYS_LITTLE_ENDIAN"}, {"kind": "macro", "line": 42, "name": "SYS_BIG_ENDIAN", "signature": "#define SYS_BIG_ENDIAN"}, {"kind": "macro", "line": 47, "name": "SHORT", "signature": "#define SHORT(x)"}, {"kind": "macro", "line": 48, "name": "LONG", "signature": "#define LONG(x)"}, {"kind": "macro", "line": 50, "name": "SYS_LITTLE_ENDIAN", "signature": "#define SYS_LITTLE_ENDIAN"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION:", "id": "progs/doomgeneric/i_system.c", "kind": "module", "label": "i_system.c", "language": "c", "sha256": "603164de28852d40", "symbol_count": 21, "symbols": [{"kind": "struct", "line": 64, "name": "atexit_listentry_s"}, {"doc": "#include \"i_timer.h\" #include \"i_video.h\" #include \"i_system.h\" #include \"w_wad.h\" #include \"z_zone.h\" #ifdef __MACOSX__ #include #endif #define DEFAULT_RAM 6 /* MiB #define MIN_RAM 6 /* MiB", "kind": "type_alias", "line": 60, "name": "atexit_listentry_t", "signature": "typedef struct atexit_listentry_s atexit_listentry_t;"}, {"kind": "function", "line": 73, "name": "I_AtExit", "signature": "void I_AtExit(atexit_func_t func, boolean run_on_error)"}, {"kind": "function", "line": 87, "name": "I_Tactile", "signature": "void I_Tactile(int on, int off, int total)"}, {"kind": "function", "line": 95, "name": "AutoAllocMemory", "signature": "static byte *AutoAllocMemory(int *size, int default_ram, int min_ram)"}, {"kind": "function", "line": 133, "name": "I_ZoneBase", "signature": "byte *I_ZoneBase (int *size)"}, {"kind": "function", "line": 166, "name": "I_PrintBanner", "signature": "void I_PrintBanner(char *msg)"}, {"kind": "function", "line": 177, "name": "I_PrintDivider", "signature": "void I_PrintDivider(void)"}, {"kind": "function", "line": 189, "name": "I_PrintStartupBanner", "signature": "void I_PrintStartupBanner(char *gamedescription)"}, {"kind": "function", "line": 210, "name": "I_ConsoleStdout", "signature": "boolean I_ConsoleStdout(void)"}, {"kind": "function", "line": 246, "name": "I_Quit", "signature": "void I_Quit (void)"}, {"kind": "function", "line": 272, "name": "ZenityAvailable", "signature": "static int ZenityAvailable(void)"}, {"kind": "function", "line": 280, "name": "EscapeShellString", "signature": "static char *EscapeShellString(char *string)"}, {"kind": "function", "line": 323, "name": "ZenityErrorBox", "signature": "static int ZenityErrorBox(char *message)"}, {"kind": "function", "line": 359, "name": "I_Error", "signature": "void I_Error (char *error, ...)"}, {"kind": "function", "line": 502, "name": "I_GetMemoryValue", "signature": "boolean I_GetMemoryValue(unsigned int offset, void *value, int size)"}, {"kind": "macro", "line": 27, "name": "WIN32_LEAN_AND_MEAN", "signature": "#define WIN32_LEAN_AND_MEAN"}, {"kind": "macro", "line": 58, "name": "DEFAULT_RAM", "signature": "#define DEFAULT_RAM"}, {"kind": "macro", "line": 59, "name": "MIN_RAM", "signature": "#define MIN_RAM"}, {"kind": "macro", "line": 268, "name": "ZENITY_BINARY", "signature": "#define ZENITY_BINARY"}, {"kind": "macro", "line": 490, "name": "DOS_MEM_DUMP_SIZE", "signature": "#define DOS_MEM_DUMP_SIZE"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: System specific interface stuff.", "id": "progs/doomgeneric/i_system.h", "kind": "module", "label": "i_system.h", "language": "h", "sha256": "effdb086bbbc94c6", "symbol_count": 12, "symbols": [{"doc": "Called by DoomMain.", "kind": "function", "line": 30, "name": "I_Init", "signature": "void I_Init (void);"}, {"doc": "Called by startup code to get the ammount of memory to malloc for the zone management.", "kind": "function", "line": 35, "name": "I_ZoneBase", "signature": "byte* I_ZoneBase (int *size);"}, {"doc": "Either returns a null ticcmd, or calls a loadable driver to build it. This ticcmd will then be modified by the gameloop for normal input.", "kind": "function", "line": 48, "name": "I_BaseTiccmd", "signature": "ticcmd_t* I_BaseTiccmd (void);"}, {"doc": "Called by M_Responder when quit is selected. Clean exit, displays sell blurb.", "kind": "function", "line": 53, "name": "I_Quit", "signature": "void I_Quit (void);"}, {"kind": "function", "line": 55, "name": "I_Error", "signature": "void I_Error (char *error, ...);"}, {"kind": "function", "line": 57, "name": "I_Tactile", "signature": "void I_Tactile (int on, int off, int total);"}, {"kind": "function", "line": 65, "name": "I_AtExit", "signature": "void I_AtExit(atexit_func_t func, boolean run_if_error);"}, {"kind": "function", "line": 69, "name": "I_BindVariables", "signature": "void I_BindVariables(void);"}, {"kind": "function", "line": 73, "name": "I_PrintStartupBanner", "signature": "void I_PrintStartupBanner(char *gamedescription);"}, {"kind": "function", "line": 77, "name": "I_PrintBanner", "signature": "void I_PrintBanner(char *text);"}, {"kind": "function", "line": 81, "name": "I_PrintDivider", "signature": "void I_PrintDivider(void);"}, {"kind": "macro", "line": 21, "name": "__I_SYSTEM__", "signature": "#define __I_SYSTEM__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Timer functions. #include #include I_GetTime", "id": "progs/doomgeneric/i_timer.c", "kind": "module", "label": "i_timer.c", "language": "c", "sha256": "286f4fa16c021b73", "symbol_count": 6, "symbols": [{"kind": "function", "line": 37, "name": "I_GetTicks", "signature": "int I_GetTicks(void)"}, {"kind": "function", "line": 42, "name": "I_GetTime", "signature": "int I_GetTime (void)"}, {"kind": "function", "line": 61, "name": "I_GetTimeMS", "signature": "int I_GetTimeMS(void)"}, {"kind": "function", "line": 75, "name": "I_Sleep", "signature": "void I_Sleep(int ms)"}, {"kind": "function", "line": 83, "name": "I_WaitVBL", "signature": "void I_WaitVBL(int count)"}, {"kind": "function", "line": 89, "name": "I_InitTimer", "signature": "void I_InitTimer(void)"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: System-specific timer interface Called by D_DoomLoop, returns current time in tics.", "id": "progs/doomgeneric/i_timer.h", "kind": "module", "label": "i_timer.h", "language": "h", "sha256": "14fa89a9a6efb01d", "symbol_count": 7, "symbols": [{"doc": "Called by D_DoomLoop, returns current time in tics.", "kind": "function", "line": 27, "name": "I_GetTime", "signature": "int I_GetTime (void);"}, {"doc": "returns current time in ms", "kind": "function", "line": 30, "name": "I_GetTimeMS", "signature": "int I_GetTimeMS (void);"}, {"doc": "Pause for a specified number of ms", "kind": "function", "line": 33, "name": "I_Sleep", "signature": "void I_Sleep(int ms);"}, {"doc": "Initialize timer", "kind": "function", "line": 36, "name": "I_InitTimer", "signature": "void I_InitTimer(void);"}, {"doc": "Wait for vertical retrace or pause a bit.", "kind": "function", "line": 39, "name": "I_WaitVBL", "signature": "void I_WaitVBL(int count);"}, {"kind": "macro", "line": 21, "name": "__I_TIMER__", "signature": "#define __I_TIMER__"}, {"kind": "macro", "line": 23, "name": "TICRATE", "signature": "#define TICRATE"}]}, {"doc": "Emacs style mode select -*- C++ -*- ----------------------------------------------------------------------------- $Id:$ Copyright (C) 1993-1996 by id Software, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. $Log:$ DESCRIPTION: DOOM graphics stuff for X11, UNIX. -----------------------------------------------------------------------------", "id": "progs/doomgeneric/i_video.c", "kind": "module", "label": "i_video.c", "language": "c", "sha256": "0c270a1047f10553", "symbol_count": 31, "symbols": [{"kind": "struct", "line": 54, "name": "FB_BitField"}, {"kind": "struct", "line": 60, "name": "FB_ScreenInfo"}, {"kind": "struct", "line": 80, "name": "color"}, {"kind": "struct", "line": 120, "name": "col_t"}, {"kind": "function", "line": 131, "name": "cmap_to_rgb565", "signature": "void cmap_to_rgb565(uint16_t * out, uint8_t * in, int in_pixels)"}, {"kind": "function", "line": 152, "name": "cmap_to_fb", "signature": "void cmap_to_fb(uint8_t * out, uint8_t * in, int in_pixels)"}, {"kind": "function", "line": 179, "name": "I_InitGraphics", "signature": "void I_InitGraphics (void)"}, {"kind": "function", "line": 232, "name": "I_ShutdownGraphics", "signature": "void I_ShutdownGraphics (void)"}, {"kind": "function", "line": 237, "name": "I_StartFrame", "signature": "void I_StartFrame (void)"}, {"kind": "function", "line": 242, "name": "I_StartTic", "signature": "void I_StartTic (void)"}, {"kind": "function", "line": 247, "name": "I_UpdateNoBlit", "signature": "void I_UpdateNoBlit (void)"}, {"kind": "function", "line": 255, "name": "I_FinishUpdate", "signature": "void I_FinishUpdate (void)"}, {"doc": "I_ReadScreen", "kind": "function", "line": 302, "name": "I_ReadScreen", "signature": "void I_ReadScreen (byte* scr)"}, {"kind": "function", "line": 315, "name": "I_SetPalette", "signature": "void I_SetPalette (byte* palette)"}, {"kind": "function", "line": 333, "name": "I_GetPaletteIndex", "signature": "int I_GetPaletteIndex (int r, int g, int b)"}, {"kind": "function", "line": 369, "name": "I_BeginRead", "signature": "void I_BeginRead (void)"}, {"kind": "function", "line": 373, "name": "I_EndRead", "signature": "void I_EndRead (void)"}, {"kind": "function", "line": 377, "name": "I_SetWindowTitle", "signature": "void I_SetWindowTitle (char *title)"}, {"kind": "function", "line": 382, "name": "I_GraphicsCheckCommandLine", "signature": "void I_GraphicsCheckCommandLine (void)"}, {"kind": "function", "line": 386, "name": "I_SetGrabMouseCallback", "signature": "void I_SetGrabMouseCallback (grabmouse_callback_t func)"}, {"kind": "function", "line": 390, "name": "I_EnableLoadingDisk", "signature": "void I_EnableLoadingDisk(void)"}, {"kind": "function", "line": 394, "name": "I_BindVideoVariables", "signature": "void I_BindVideoVariables (void)"}, {"kind": "function", "line": 398, "name": "I_DisplayFPSDots", "signature": "void I_DisplayFPSDots (boolean dots_on)"}, {"kind": "function", "line": 402, "name": "I_CheckIsScreensaver", "signature": "void I_CheckIsScreensaver (void)"}, {"kind": "function", "line": 89, "name": "I_GetEvent", "signature": "void I_GetEvent(void);"}, {"kind": "function", "line": 228, "name": "I_InitInput", "signature": "extern int I_InitInput(void);"}, {"kind": "variable", "line": 52, "name": "minios_palette_dirty", "signature": "extern volatile int minios_palette_dirty;"}, {"kind": "macro", "line": 310, "name": "GFX_RGB565", "signature": "#define GFX_RGB565(r, g, b)"}, {"kind": "macro", "line": 311, "name": "GFX_RGB565_R", "signature": "#define GFX_RGB565_R(color)"}, {"kind": "macro", "line": 312, "name": "GFX_RGB565_G", "signature": "#define GFX_RGB565_G(color)"}, {"kind": "macro", "line": 313, "name": "GFX_RGB565_B", "signature": "#define GFX_RGB565_B(color)"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: System specific interface stuff. Screen width and height. Screen width used for \"squash\" scale functions", "id": "progs/doomgeneric/i_video.h", "kind": "module", "label": "i_video.h", "language": "h", "sha256": "16a40a69912d36aa", "symbol_count": 41, "symbols": [{"kind": "struct", "line": 40, "name": "screen_mode_t"}, {"doc": "Called by D_DoomMain, determines the hardware configuration and sets up the video mode", "kind": "function", "line": 97, "name": "I_InitGraphics", "signature": "void I_InitGraphics (void);"}, {"kind": "function", "line": 99, "name": "I_GraphicsCheckCommandLine", "signature": "void I_GraphicsCheckCommandLine(void);"}, {"kind": "function", "line": 101, "name": "I_ShutdownGraphics", "signature": "void I_ShutdownGraphics(void);"}, {"doc": "Takes full 8 bit values.", "kind": "function", "line": 104, "name": "I_SetPalette", "signature": "void I_SetPalette (byte* palette);"}, {"kind": "function", "line": 105, "name": "I_GetPaletteIndex", "signature": "int I_GetPaletteIndex(int r, int g, int b);"}, {"kind": "function", "line": 107, "name": "I_UpdateNoBlit", "signature": "void I_UpdateNoBlit (void);"}, {"kind": "function", "line": 108, "name": "I_FinishUpdate", "signature": "void I_FinishUpdate (void);"}, {"kind": "function", "line": 110, "name": "I_ReadScreen", "signature": "void I_ReadScreen (byte* scr);"}, {"kind": "function", "line": 112, "name": "I_BeginRead", "signature": "void I_BeginRead (void);"}, {"kind": "function", "line": 114, "name": "I_SetWindowTitle", "signature": "void I_SetWindowTitle(char *title);"}, {"kind": "function", "line": 116, "name": "I_CheckIsScreensaver", "signature": "void I_CheckIsScreensaver(void);"}, {"kind": "function", "line": 117, "name": "I_SetGrabMouseCallback", "signature": "void I_SetGrabMouseCallback(grabmouse_callback_t func);"}, {"kind": "function", "line": 119, "name": "I_DisplayFPSDots", "signature": "void I_DisplayFPSDots(boolean dots_on);"}, {"kind": "function", "line": 120, "name": "I_BindVideoVariables", "signature": "void I_BindVideoVariables(void);"}, {"kind": "function", "line": 122, "name": "I_InitWindowTitle", "signature": "void I_InitWindowTitle(void);"}, {"kind": "function", "line": 123, "name": "I_InitWindowIcon", "signature": "void I_InitWindowIcon(void);"}, {"kind": "function", "line": 128, "name": "I_StartFrame", "signature": "void I_StartFrame (void);"}, {"kind": "function", "line": 133, "name": "I_StartTic", "signature": "void I_StartTic (void);"}, {"kind": "function", "line": 137, "name": "I_EnableLoadingDisk", "signature": "void I_EnableLoadingDisk(void);"}, {"kind": "variable", "line": 139, "name": "video_driver", "signature": "extern char *video_driver;"}, {"kind": "variable", "line": 140, "name": "screenvisible", "signature": "extern boolean screenvisible;"}, {"kind": "variable", "line": 142, "name": "mouse_acceleration", "signature": "extern float mouse_acceleration;"}, {"kind": "variable", "line": 143, "name": "mouse_threshold", "signature": "extern int mouse_threshold;"}, {"kind": "variable", "line": 144, "name": "vanilla_keyboard_mapping", "signature": "extern int vanilla_keyboard_mapping;"}, {"kind": "variable", "line": 145, "name": "screensaver_mode", "signature": "extern boolean screensaver_mode;"}, {"kind": "variable", "line": 146, "name": "usegamma", "signature": "extern int usegamma;"}, {"kind": "variable", "line": 147, "name": "I_VideoBuffer", "signature": "extern byte *I_VideoBuffer;"}, {"kind": "variable", "line": 149, "name": "screen_width", "signature": "extern int screen_width;"}, {"kind": "variable", "line": 150, "name": "screen_height", "signature": "extern int screen_height;"}, {"kind": "variable", "line": 151, "name": "screen_bpp", "signature": "extern int screen_bpp;"}, {"kind": "variable", "line": 152, "name": "fullscreen", "signature": "extern int fullscreen;"}, {"kind": "variable", "line": 153, "name": "aspect_ratio_correct", "signature": "extern int aspect_ratio_correct;"}, {"kind": "variable", "line": 155, "name": "show_diskicon", "signature": "extern int show_diskicon;"}, {"kind": "variable", "line": 156, "name": "diskicon_readbytes", "signature": "extern int diskicon_readbytes;"}, {"kind": "macro", "line": 21, "name": "__I_VIDEO__", "signature": "#define __I_VIDEO__"}, {"kind": "macro", "line": 27, "name": "SCREENWIDTH", "signature": "#define SCREENWIDTH"}, {"kind": "macro", "line": 28, "name": "SCREENHEIGHT", "signature": "#define SCREENHEIGHT"}, {"kind": "macro", "line": 32, "name": "SCREENWIDTH_4_3", "signature": "#define SCREENWIDTH_4_3"}, {"kind": "macro", "line": 36, "name": "SCREENHEIGHT_4_3", "signature": "#define SCREENHEIGHT_4_3"}, {"kind": "macro", "line": 38, "name": "MAX_MOUSE_BUTTONS", "signature": "#define MAX_MOUSE_BUTTONS"}]}, {"id": "progs/doomgeneric/icon.c", "kind": "module", "label": "icon.c", "language": "c", "sha256": "a2aacb813259f73d", "symbol_count": 0, "symbols": []}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Thing frame/state LUT, generated by multigen utilitiy. This one is the original DOOM version, preserved. Data.", "id": "progs/doomgeneric/info.c", "kind": "module", "label": "info.c", "language": "c", "sha256": "7bbbbd9504cb1aeb", "symbol_count": 74, "symbols": [{"doc": "Doesn't work with g++, needs actionf_p1", "kind": "function", "line": 51, "name": "A_Light0", "signature": "void A_Light0();"}, {"kind": "function", "line": 52, "name": "A_WeaponReady", "signature": "void A_WeaponReady();"}, {"kind": "function", "line": 53, "name": "A_Lower", "signature": "void A_Lower();"}, {"kind": "function", "line": 54, "name": "A_Raise", "signature": "void A_Raise();"}, {"kind": "function", "line": 55, "name": "A_Punch", "signature": "void A_Punch();"}, {"kind": "function", "line": 56, "name": "A_ReFire", "signature": "void A_ReFire();"}, {"kind": "function", "line": 57, "name": "A_FirePistol", "signature": "void A_FirePistol();"}, {"kind": "function", "line": 58, "name": "A_Light1", "signature": "void A_Light1();"}, {"kind": "function", "line": 59, "name": "A_FireShotgun", "signature": "void A_FireShotgun();"}, {"kind": "function", "line": 60, "name": "A_Light2", "signature": "void A_Light2();"}, {"kind": "function", "line": 61, "name": "A_FireShotgun2", "signature": "void A_FireShotgun2();"}, {"kind": "function", "line": 62, "name": "A_CheckReload", "signature": "void A_CheckReload();"}, {"kind": "function", "line": 63, "name": "A_OpenShotgun2", "signature": "void A_OpenShotgun2();"}, {"kind": "function", "line": 64, "name": "A_LoadShotgun2", "signature": "void A_LoadShotgun2();"}, {"kind": "function", "line": 65, "name": "A_CloseShotgun2", "signature": "void A_CloseShotgun2();"}, {"kind": "function", "line": 66, "name": "A_FireCGun", "signature": "void A_FireCGun();"}, {"kind": "function", "line": 67, "name": "A_GunFlash", "signature": "void A_GunFlash();"}, {"kind": "function", "line": 68, "name": "A_FireMissile", "signature": "void A_FireMissile();"}, {"kind": "function", "line": 69, "name": "A_Saw", "signature": "void A_Saw();"}, {"kind": "function", "line": 70, "name": "A_FirePlasma", "signature": "void A_FirePlasma();"}, {"kind": "function", "line": 71, "name": "A_BFGsound", "signature": "void A_BFGsound();"}, {"kind": "function", "line": 72, "name": "A_FireBFG", "signature": "void A_FireBFG();"}, {"kind": "function", "line": 73, "name": "A_BFGSpray", "signature": "void A_BFGSpray();"}, {"kind": "function", "line": 74, "name": "A_Explode", "signature": "void A_Explode();"}, {"kind": "function", "line": 75, "name": "A_Pain", "signature": "void A_Pain();"}, {"kind": "function", "line": 76, "name": "A_PlayerScream", "signature": "void A_PlayerScream();"}, {"kind": "function", "line": 77, "name": "A_Fall", "signature": "void A_Fall();"}, {"kind": "function", "line": 78, "name": "A_XScream", "signature": "void A_XScream();"}, {"kind": "function", "line": 79, "name": "A_Look", "signature": "void A_Look();"}, {"kind": "function", "line": 80, "name": "A_Chase", "signature": "void A_Chase();"}, {"kind": "function", "line": 81, "name": "A_FaceTarget", "signature": "void A_FaceTarget();"}, {"kind": "function", "line": 82, "name": "A_PosAttack", "signature": "void A_PosAttack();"}, {"kind": "function", "line": 83, "name": "A_Scream", "signature": "void A_Scream();"}, {"kind": "function", "line": 84, "name": "A_SPosAttack", "signature": "void A_SPosAttack();"}, {"kind": "function", "line": 85, "name": "A_VileChase", "signature": "void A_VileChase();"}, {"kind": "function", "line": 86, "name": "A_VileStart", "signature": "void A_VileStart();"}, {"kind": "function", "line": 87, "name": "A_VileTarget", "signature": "void A_VileTarget();"}, {"kind": "function", "line": 88, "name": "A_VileAttack", "signature": "void A_VileAttack();"}, {"kind": "function", "line": 89, "name": "A_StartFire", "signature": "void A_StartFire();"}, {"kind": "function", "line": 90, "name": "A_Fire", "signature": "void A_Fire();"}, {"kind": "function", "line": 91, "name": "A_FireCrackle", "signature": "void A_FireCrackle();"}, {"kind": "function", "line": 92, "name": "A_Tracer", "signature": "void A_Tracer();"}, {"kind": "function", "line": 93, "name": "A_SkelWhoosh", "signature": "void A_SkelWhoosh();"}, {"kind": "function", "line": 94, "name": "A_SkelFist", "signature": "void A_SkelFist();"}, {"kind": "function", "line": 95, "name": "A_SkelMissile", "signature": "void A_SkelMissile();"}, {"kind": "function", "line": 96, "name": "A_FatRaise", "signature": "void A_FatRaise();"}, {"kind": "function", "line": 97, "name": "A_FatAttack1", "signature": "void A_FatAttack1();"}, {"kind": "function", "line": 98, "name": "A_FatAttack2", "signature": "void A_FatAttack2();"}, {"kind": "function", "line": 99, "name": "A_FatAttack3", "signature": "void A_FatAttack3();"}, {"kind": "function", "line": 100, "name": "A_BossDeath", "signature": "void A_BossDeath();"}, {"kind": "function", "line": 101, "name": "A_CPosAttack", "signature": "void A_CPosAttack();"}, {"kind": "function", "line": 102, "name": "A_CPosRefire", "signature": "void A_CPosRefire();"}, {"kind": "function", "line": 103, "name": "A_TroopAttack", "signature": "void A_TroopAttack();"}, {"kind": "function", "line": 104, "name": "A_SargAttack", "signature": "void A_SargAttack();"}, {"kind": "function", "line": 105, "name": "A_HeadAttack", "signature": "void A_HeadAttack();"}, {"kind": "function", "line": 106, "name": "A_BruisAttack", "signature": "void A_BruisAttack();"}, {"kind": "function", "line": 107, "name": "A_SkullAttack", "signature": "void A_SkullAttack();"}, {"kind": "function", "line": 108, "name": "A_Metal", "signature": "void A_Metal();"}, {"kind": "function", "line": 109, "name": "A_SpidRefire", "signature": "void A_SpidRefire();"}, {"kind": "function", "line": 110, "name": "A_BabyMetal", "signature": "void A_BabyMetal();"}, {"kind": "function", "line": 111, "name": "A_BspiAttack", "signature": "void A_BspiAttack();"}, {"kind": "function", "line": 112, "name": "A_Hoof", "signature": "void A_Hoof();"}, {"kind": "function", "line": 113, "name": "A_CyberAttack", "signature": "void A_CyberAttack();"}, {"kind": "function", "line": 114, "name": "A_PainAttack", "signature": "void A_PainAttack();"}, {"kind": "function", "line": 115, "name": "A_PainDie", "signature": "void A_PainDie();"}, {"kind": "function", "line": 116, "name": "A_KeenDie", "signature": "void A_KeenDie();"}, {"kind": "function", "line": 117, "name": "A_BrainPain", "signature": "void A_BrainPain();"}, {"kind": "function", "line": 118, "name": "A_BrainScream", "signature": "void A_BrainScream();"}, {"kind": "function", "line": 119, "name": "A_BrainDie", "signature": "void A_BrainDie();"}, {"kind": "function", "line": 120, "name": "A_BrainAwake", "signature": "void A_BrainAwake();"}, {"kind": "function", "line": 121, "name": "A_BrainSpit", "signature": "void A_BrainSpit();"}, {"kind": "function", "line": 122, "name": "A_SpawnSound", "signature": "void A_SpawnSound();"}, {"kind": "function", "line": 123, "name": "A_SpawnFly", "signature": "void A_SpawnFly();"}, {"kind": "function", "line": 124, "name": "A_BrainExplode", "signature": "void A_BrainExplode();"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Thing frame/state LUT, generated by multigen utilitiy. This one is the original DOOM version, preserved. Needed for action function pointer handling.", "id": "progs/doomgeneric/info.h", "kind": "module", "label": "info.h", "language": "h", "sha256": "813d1593887fc211", "symbol_count": 6, "symbols": [{"kind": "struct", "line": 1144, "name": "state_t"}, {"kind": "struct", "line": 1301, "name": "mobjinfo_t"}, {"kind": "variable", "line": 1156, "name": "states", "signature": "extern state_t states[NUMSTATES];"}, {"kind": "variable", "line": 1157, "name": "sprnames", "signature": "extern char *sprnames[];"}, {"kind": "variable", "line": 1329, "name": "mobjinfo", "signature": "extern mobjinfo_t mobjinfo[NUMMOBJTYPES];"}, {"kind": "macro", "line": 22, "name": "__INFO__", "signature": "#define __INFO__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION:", "id": "progs/doomgeneric/m_argv.c", "kind": "module", "label": "m_argv.c", "language": "c", "sha256": "2bf495aba6f0b30c", "symbol_count": 7, "symbols": [{"kind": "function", "line": 43, "name": "M_CheckParmWithArgs", "signature": "int M_CheckParmWithArgs(char *check, int num_args)"}, {"kind": "function", "line": 63, "name": "M_ParmExists", "signature": "boolean M_ParmExists(char *check)"}, {"kind": "function", "line": 68, "name": "M_CheckParm", "signature": "int M_CheckParm(char *check)"}, {"kind": "function", "line": 75, "name": "LoadResponseFile", "signature": "static void LoadResponseFile(int argv_index)"}, {"kind": "function", "line": 235, "name": "M_FindResponseFile", "signature": "void M_FindResponseFile(void)"}, {"kind": "function", "line": 250, "name": "M_GetExecutableName", "signature": "char *M_GetExecutableName(void)"}, {"kind": "macro", "line": 73, "name": "MAXARGVS", "signature": "#define MAXARGVS"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Nil. MISC", "id": "progs/doomgeneric/m_argv.h", "kind": "module", "label": "m_argv.h", "language": "h", "sha256": "12930c006a152746", "symbol_count": 7, "symbols": [{"doc": "Returns the position of the given parameter in the arg list (0 if not found).", "kind": "function", "line": 33, "name": "M_CheckParm", "signature": "int M_CheckParm (char* check);"}, {"doc": "Same as M_CheckParm, but checks that num_args arguments are available following the specified argument.", "kind": "function", "line": 37, "name": "M_CheckParmWithArgs", "signature": "int M_CheckParmWithArgs(char *check, int num_args);"}, {"kind": "function", "line": 39, "name": "M_FindResponseFile", "signature": "void M_FindResponseFile(void);"}, {"kind": "function", "line": 47, "name": "M_GetExecutableName", "signature": "char *M_GetExecutableName(void);"}, {"doc": "MISC", "kind": "variable", "line": 28, "name": "myargc", "signature": "extern int myargc;"}, {"kind": "variable", "line": 29, "name": "myargv", "signature": "extern char** myargv;"}, {"kind": "macro", "line": 21, "name": "__M_ARGV__", "signature": "#define __M_ARGV__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Main loop menu stuff. Random number LUT. Default Config File. PCX Screenshots.", "id": "progs/doomgeneric/m_bbox.c", "kind": "module", "label": "m_bbox.c", "language": "c", "sha256": "cb84e03a87829b4a", "symbol_count": 2, "symbols": [{"kind": "function", "line": 29, "name": "M_ClearBox", "signature": "void M_ClearBox (fixed_t *box)"}, {"kind": "function", "line": 36, "name": "M_AddToBox", "signature": "void\nM_AddToBox\n( fixed_t*\tbox,\n fixed_t\tx,\n fixed_t\ty )"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Nil. Bounding box coordinate storage.", "id": "progs/doomgeneric/m_bbox.h", "kind": "module", "label": "m_bbox.h", "language": "h", "sha256": "97e1ac1b972706fc", "symbol_count": 3, "symbols": [{"doc": "Bounding box functions.", "kind": "function", "line": 38, "name": "M_ClearBox", "signature": "void M_ClearBox (fixed_t* box);"}, {"kind": "function", "line": 41, "name": "M_AddToBox", "signature": "void M_AddToBox ( fixed_t* box, fixed_t x, fixed_t y );"}, {"kind": "macro", "line": 21, "name": "__M_BBOX__", "signature": "#define __M_BBOX__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Cheat sequence checking. CHEAT SEQUENCE PACKAGE", "id": "progs/doomgeneric/m_cheat.c", "kind": "module", "label": "m_cheat.c", "language": "c", "sha256": "5727f2818809fb24", "symbol_count": 2, "symbols": [{"kind": "function", "line": 35, "name": "cht_CheckCheat", "signature": "int\ncht_CheckCheat\n( cheatseq_t*\tcht,\n char\t\tkey )"}, {"kind": "function", "line": 82, "name": "cht_GetParam", "signature": "void\ncht_GetParam\n( cheatseq_t*\tcht,\n char*\t\tbuffer )"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Cheat code checking. CHEAT SEQUENCE PACKAGE declaring a cheat", "id": "progs/doomgeneric/m_cheat.h", "kind": "module", "label": "m_cheat.h", "language": "h", "sha256": "58dc50fcb769fe12", "symbol_count": 7, "symbols": [{"kind": "struct", "line": 35, "name": "cheatseq_t"}, {"kind": "function", "line": 51, "name": "cht_CheckCheat", "signature": "int cht_CheckCheat ( cheatseq_t* cht, char key );"}, {"kind": "function", "line": 57, "name": "cht_GetParam", "signature": "void cht_GetParam ( cheatseq_t* cht, char* buffer );"}, {"kind": "macro", "line": 21, "name": "__M_CHEAT__", "signature": "#define __M_CHEAT__"}, {"kind": "macro", "line": 29, "name": "CHEAT", "signature": "#define CHEAT(value, parameters)"}, {"kind": "macro", "line": 32, "name": "MAX_CHEAT_LEN", "signature": "#define MAX_CHEAT_LEN"}, {"kind": "macro", "line": 33, "name": "MAX_CHEAT_PARAMS", "signature": "#define MAX_CHEAT_PARAMS"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 1993-2008 Raven Software Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Configuration file interface.", "id": "progs/doomgeneric/m_config.c", "kind": "module", "label": "m_config.c", "language": "c", "sha256": "f4492f51cbef2071", "symbol_count": 26, "symbols": [{"kind": "struct", "line": 61, "name": "default_t"}, {"kind": "struct", "line": 88, "name": "default_collection_t"}, {"kind": "function", "line": 1563, "name": "SearchCollection", "signature": "static default_t *SearchCollection(default_collection_t *collection, char *name)"}, {"kind": "function", "line": 1609, "name": "SaveDefaultCollection", "signature": "static void SaveDefaultCollection(default_collection_t *collection)"}, {"kind": "function", "line": 1716, "name": "ParseIntParameter", "signature": "static int ParseIntParameter(char *strparm)"}, {"kind": "function", "line": 1728, "name": "SetVariable", "signature": "static void SetVariable(default_t *def, char *value)"}, {"kind": "function", "line": 1771, "name": "LoadDefaultCollection", "signature": "static void LoadDefaultCollection(default_collection_t *collection)"}, {"kind": "function", "line": 1836, "name": "M_SetConfigFilenames", "signature": "void M_SetConfigFilenames(char *main_config, char *extra_config)"}, {"kind": "function", "line": 1846, "name": "M_SaveDefaults", "signature": "void M_SaveDefaults (void)"}, {"kind": "function", "line": 1856, "name": "M_SaveDefaultsAlternate", "signature": "void M_SaveDefaultsAlternate(char *main, char *extra)"}, {"kind": "function", "line": 1881, "name": "M_LoadDefaults", "signature": "void M_LoadDefaults (void)"}, {"kind": "function", "line": 1937, "name": "GetDefaultForName", "signature": "static default_t *GetDefaultForName(char *name)"}, {"kind": "function", "line": 1964, "name": "M_BindVariable", "signature": "void M_BindVariable(char *name, void *location)"}, {"kind": "function", "line": 1977, "name": "M_SetVariable", "signature": "boolean M_SetVariable(char *name, char *value)"}, {"kind": "function", "line": 1995, "name": "M_GetIntVariable", "signature": "int M_GetIntVariable(char *name)"}, {"kind": "function", "line": 2010, "name": "M_GetStrVariable", "signature": "const char *M_GetStrVariable(char *name)"}, {"kind": "function", "line": 2025, "name": "M_GetFloatVariable", "signature": "float M_GetFloatVariable(char *name)"}, {"kind": "function", "line": 2043, "name": "GetDefaultConfigDir", "signature": "static char *GetDefaultConfigDir(void)"}, {"kind": "function", "line": 2059, "name": "M_SetConfigDir", "signature": "void M_SetConfigDir(char *dir)"}, {"kind": "function", "line": 2087, "name": "M_GetSaveGameDir", "signature": "char *M_GetSaveGameDir(char *iwadname)"}, {"kind": "macro", "line": 95, "name": "CONFIG_VARIABLE_GENERIC", "signature": "#define CONFIG_VARIABLE_GENERIC(name, type)"}, {"kind": "macro", "line": 98, "name": "CONFIG_VARIABLE_KEY", "signature": "#define CONFIG_VARIABLE_KEY(name)"}, {"kind": "macro", "line": 100, "name": "CONFIG_VARIABLE_INT", "signature": "#define CONFIG_VARIABLE_INT(name)"}, {"kind": "macro", "line": 102, "name": "CONFIG_VARIABLE_INT_HEX", "signature": "#define CONFIG_VARIABLE_INT_HEX(name)"}, {"kind": "macro", "line": 104, "name": "CONFIG_VARIABLE_FLOAT", "signature": "#define CONFIG_VARIABLE_FLOAT(name)"}, {"kind": "macro", "line": 106, "name": "CONFIG_VARIABLE_STRING", "signature": "#define CONFIG_VARIABLE_STRING(name)"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Configuration file interface.", "id": "progs/doomgeneric/m_config.h", "kind": "module", "label": "m_config.h", "language": "h", "sha256": "0f1b3653e0a9f144", "symbol_count": 12, "symbols": [{"kind": "function", "line": 25, "name": "M_LoadDefaults", "signature": "void M_LoadDefaults(void);"}, {"kind": "function", "line": 26, "name": "M_SaveDefaults", "signature": "void M_SaveDefaults(void);"}, {"kind": "function", "line": 27, "name": "M_SaveDefaultsAlternate", "signature": "void M_SaveDefaultsAlternate(char *main, char *extra);"}, {"kind": "function", "line": 28, "name": "M_SetConfigDir", "signature": "void M_SetConfigDir(char *dir);"}, {"kind": "function", "line": 29, "name": "M_BindVariable", "signature": "void M_BindVariable(char *name, void *variable);"}, {"kind": "function", "line": 31, "name": "M_GetIntVariable", "signature": "int M_GetIntVariable(char *name);"}, {"kind": "function", "line": 32, "name": "M_GetStrVariable", "signature": "const char *M_GetStrVariable(char *name);"}, {"kind": "function", "line": 33, "name": "M_GetFloatVariable", "signature": "float M_GetFloatVariable(char *name);"}, {"kind": "function", "line": 34, "name": "M_SetConfigFilenames", "signature": "void M_SetConfigFilenames(char *main_config, char *extra_config);"}, {"kind": "function", "line": 35, "name": "M_GetSaveGameDir", "signature": "char *M_GetSaveGameDir(char *iwadname);"}, {"kind": "variable", "line": 37, "name": "configdir", "signature": "extern char *configdir;"}, {"kind": "macro", "line": 21, "name": "__M_CONFIG__", "signature": "#define __M_CONFIG__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 1993-2008 Raven Software Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. Keyboard controls", "id": "progs/doomgeneric/m_controls.c", "kind": "module", "label": "m_controls.c", "language": "c", "sha256": "35c1a6272c80265f", "symbol_count": 9, "symbols": [{"kind": "function", "line": 204, "name": "M_BindBaseControls", "signature": "void M_BindBaseControls(void)"}, {"kind": "function", "line": 241, "name": "M_BindHereticControls", "signature": "void M_BindHereticControls(void)"}, {"kind": "function", "line": 256, "name": "M_BindHexenControls", "signature": "void M_BindHexenControls(void)"}, {"kind": "function", "line": 272, "name": "M_BindStrifeControls", "signature": "void M_BindStrifeControls(void)"}, {"kind": "function", "line": 307, "name": "M_BindWeaponControls", "signature": "void M_BindWeaponControls(void)"}, {"kind": "function", "line": 328, "name": "M_BindMapControls", "signature": "void M_BindMapControls(void)"}, {"kind": "function", "line": 344, "name": "M_BindMenuControls", "signature": "void M_BindMenuControls(void)"}, {"kind": "function", "line": 375, "name": "M_BindChatControls", "signature": "void M_BindChatControls(unsigned int num_players)"}, {"kind": "function", "line": 394, "name": "M_ApplyPlatformDefaults", "signature": "void M_ApplyPlatformDefaults(void)"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 1993-2008 Raven Software Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.", "id": "progs/doomgeneric/m_controls.h", "kind": "module", "label": "m_controls.h", "language": "h", "sha256": "87c02efaf02ffbc6", "symbol_count": 119, "symbols": [{"kind": "function", "line": 156, "name": "M_BindBaseControls", "signature": "void M_BindBaseControls(void);"}, {"kind": "function", "line": 157, "name": "M_BindHereticControls", "signature": "void M_BindHereticControls(void);"}, {"kind": "function", "line": 158, "name": "M_BindHexenControls", "signature": "void M_BindHexenControls(void);"}, {"kind": "function", "line": 159, "name": "M_BindStrifeControls", "signature": "void M_BindStrifeControls(void);"}, {"kind": "function", "line": 160, "name": "M_BindWeaponControls", "signature": "void M_BindWeaponControls(void);"}, {"kind": "function", "line": 161, "name": "M_BindMapControls", "signature": "void M_BindMapControls(void);"}, {"kind": "function", "line": 162, "name": "M_BindMenuControls", "signature": "void M_BindMenuControls(void);"}, {"kind": "function", "line": 163, "name": "M_BindChatControls", "signature": "void M_BindChatControls(unsigned int num_players);"}, {"kind": "function", "line": 165, "name": "M_ApplyPlatformDefaults", "signature": "void M_ApplyPlatformDefaults(void);"}, {"kind": "variable", "line": 20, "name": "key_right", "signature": "extern int key_right;"}, {"kind": "variable", "line": 21, "name": "key_left", "signature": "extern int key_left;"}, {"kind": "variable", "line": 23, "name": "key_up", "signature": "extern int key_up;"}, {"kind": "variable", "line": 24, "name": "key_down", "signature": "extern int key_down;"}, {"kind": "variable", "line": 25, "name": "key_strafeleft", "signature": "extern int key_strafeleft;"}, {"kind": "variable", "line": 26, "name": "key_straferight", "signature": "extern int key_straferight;"}, {"kind": "variable", "line": 27, "name": "key_fire", "signature": "extern int key_fire;"}, {"kind": "variable", "line": 28, "name": "key_use", "signature": "extern int key_use;"}, {"kind": "variable", "line": 29, "name": "key_strafe", "signature": "extern int key_strafe;"}, {"kind": "variable", "line": 30, "name": "key_speed", "signature": "extern int key_speed;"}, {"kind": "variable", "line": 32, "name": "key_jump", "signature": "extern int key_jump;"}, {"kind": "variable", "line": 34, "name": "key_flyup", "signature": "extern int key_flyup;"}, {"kind": "variable", "line": 35, "name": "key_flydown", "signature": "extern int key_flydown;"}, {"kind": "variable", "line": 36, "name": "key_flycenter", "signature": "extern int key_flycenter;"}, {"kind": "variable", "line": 37, "name": "key_lookup", "signature": "extern int key_lookup;"}, {"kind": "variable", "line": 38, "name": "key_lookdown", "signature": "extern int key_lookdown;"}, {"kind": "variable", "line": 39, "name": "key_lookcenter", "signature": "extern int key_lookcenter;"}, {"kind": "variable", "line": 40, "name": "key_invleft", "signature": "extern int key_invleft;"}, {"kind": "variable", "line": 41, "name": "key_invright", "signature": "extern int key_invright;"}, {"kind": "variable", "line": 42, "name": "key_useartifact", "signature": "extern int key_useartifact;"}, {"doc": "villsa [STRIFE] strife keys", "kind": "variable", "line": 45, "name": "key_usehealth", "signature": "extern int key_usehealth;"}, {"kind": "variable", "line": 46, "name": "key_invquery", "signature": "extern int key_invquery;"}, {"kind": "variable", "line": 47, "name": "key_mission", "signature": "extern int key_mission;"}, {"kind": "variable", "line": 48, "name": "key_invpop", "signature": "extern int key_invpop;"}, {"kind": "variable", "line": 49, "name": "key_invkey", "signature": "extern int key_invkey;"}, {"kind": "variable", "line": 50, "name": "key_invhome", "signature": "extern int key_invhome;"}, {"kind": "variable", "line": 51, "name": "key_invend", "signature": "extern int key_invend;"}, {"kind": "variable", "line": 52, "name": "key_invuse", "signature": "extern int key_invuse;"}, {"kind": "variable", "line": 53, "name": "key_invdrop", "signature": "extern int key_invdrop;"}, {"kind": "variable", "line": 55, "name": "key_message_refresh", "signature": "extern int key_message_refresh;"}, {"kind": "variable", "line": 56, "name": "key_pause", "signature": "extern int key_pause;"}, {"kind": "variable", "line": 58, "name": "key_multi_msg", "signature": "extern int key_multi_msg;"}, {"kind": "variable", "line": 59, "name": "key_multi_msgplayer", "signature": "extern int key_multi_msgplayer[8];"}, {"kind": "variable", "line": 61, "name": "key_weapon1", "signature": "extern int key_weapon1;"}, {"kind": "variable", "line": 62, "name": "key_weapon2", "signature": "extern int key_weapon2;"}, {"kind": "variable", "line": 63, "name": "key_weapon3", "signature": "extern int key_weapon3;"}, {"kind": "variable", "line": 64, "name": "key_weapon4", "signature": "extern int key_weapon4;"}, {"kind": "variable", "line": 65, "name": "key_weapon5", "signature": "extern int key_weapon5;"}, {"kind": "variable", "line": 66, "name": "key_weapon6", "signature": "extern int key_weapon6;"}, {"kind": "variable", "line": 67, "name": "key_weapon7", "signature": "extern int key_weapon7;"}, {"kind": "variable", "line": 68, "name": "key_weapon8", "signature": "extern int key_weapon8;"}, {"kind": "variable", "line": 70, "name": "key_arti_all", "signature": "extern int key_arti_all;"}, {"kind": "variable", "line": 71, "name": "key_arti_health", "signature": "extern int key_arti_health;"}, {"kind": "variable", "line": 72, "name": "key_arti_poisonbag", "signature": "extern int key_arti_poisonbag;"}, {"kind": "variable", "line": 73, "name": "key_arti_blastradius", "signature": "extern int key_arti_blastradius;"}, {"kind": "variable", "line": 74, "name": "key_arti_teleport", "signature": "extern int key_arti_teleport;"}, {"kind": "variable", "line": 75, "name": "key_arti_teleportother", "signature": "extern int key_arti_teleportother;"}, {"kind": "variable", "line": 76, "name": "key_arti_egg", "signature": "extern int key_arti_egg;"}, {"kind": "variable", "line": 77, "name": "key_arti_invulnerability", "signature": "extern int key_arti_invulnerability;"}, {"kind": "variable", "line": 79, "name": "key_demo_quit", "signature": "extern int key_demo_quit;"}, {"kind": "variable", "line": 80, "name": "key_spy", "signature": "extern int key_spy;"}, {"kind": "variable", "line": 81, "name": "key_prevweapon", "signature": "extern int key_prevweapon;"}, {"kind": "variable", "line": 82, "name": "key_nextweapon", "signature": "extern int key_nextweapon;"}, {"kind": "variable", "line": 84, "name": "key_map_north", "signature": "extern int key_map_north;"}, {"kind": "variable", "line": 85, "name": "key_map_south", "signature": "extern int key_map_south;"}, {"kind": "variable", "line": 86, "name": "key_map_east", "signature": "extern int key_map_east;"}, {"kind": "variable", "line": 87, "name": "key_map_west", "signature": "extern int key_map_west;"}, {"kind": "variable", "line": 88, "name": "key_map_zoomin", "signature": "extern int key_map_zoomin;"}, {"kind": "variable", "line": 89, "name": "key_map_zoomout", "signature": "extern int key_map_zoomout;"}, {"kind": "variable", "line": 90, "name": "key_map_toggle", "signature": "extern int key_map_toggle;"}, {"kind": "variable", "line": 91, "name": "key_map_maxzoom", "signature": "extern int key_map_maxzoom;"}, {"kind": "variable", "line": 92, "name": "key_map_follow", "signature": "extern int key_map_follow;"}, {"kind": "variable", "line": 93, "name": "key_map_grid", "signature": "extern int key_map_grid;"}, {"kind": "variable", "line": 94, "name": "key_map_mark", "signature": "extern int key_map_mark;"}, {"kind": "variable", "line": 95, "name": "key_map_clearmark", "signature": "extern int key_map_clearmark;"}, {"kind": "variable", "line": 99, "name": "key_menu_activate", "signature": "extern int key_menu_activate;"}, {"kind": "variable", "line": 100, "name": "key_menu_up", "signature": "extern int key_menu_up;"}, {"kind": "variable", "line": 101, "name": "key_menu_down", "signature": "extern int key_menu_down;"}, {"kind": "variable", "line": 102, "name": "key_menu_left", "signature": "extern int key_menu_left;"}, {"kind": "variable", "line": 103, "name": "key_menu_right", "signature": "extern int key_menu_right;"}, {"kind": "variable", "line": 104, "name": "key_menu_back", "signature": "extern int key_menu_back;"}, {"kind": "variable", "line": 105, "name": "key_menu_forward", "signature": "extern int key_menu_forward;"}, {"kind": "variable", "line": 106, "name": "key_menu_confirm", "signature": "extern int key_menu_confirm;"}, {"kind": "variable", "line": 107, "name": "key_menu_abort", "signature": "extern int key_menu_abort;"}, {"kind": "variable", "line": 109, "name": "key_menu_help", "signature": "extern int key_menu_help;"}, {"kind": "variable", "line": 110, "name": "key_menu_save", "signature": "extern int key_menu_save;"}, {"kind": "variable", "line": 111, "name": "key_menu_load", "signature": "extern int key_menu_load;"}, {"kind": "variable", "line": 112, "name": "key_menu_volume", "signature": "extern int key_menu_volume;"}, {"kind": "variable", "line": 113, "name": "key_menu_detail", "signature": "extern int key_menu_detail;"}, {"kind": "variable", "line": 114, "name": "key_menu_qsave", "signature": "extern int key_menu_qsave;"}, {"kind": "variable", "line": 115, "name": "key_menu_endgame", "signature": "extern int key_menu_endgame;"}, {"kind": "variable", "line": 116, "name": "key_menu_messages", "signature": "extern int key_menu_messages;"}, {"kind": "variable", "line": 117, "name": "key_menu_qload", "signature": "extern int key_menu_qload;"}, {"kind": "variable", "line": 118, "name": "key_menu_quit", "signature": "extern int key_menu_quit;"}, {"kind": "variable", "line": 119, "name": "key_menu_gamma", "signature": "extern int key_menu_gamma;"}, {"kind": "variable", "line": 121, "name": "key_menu_incscreen", "signature": "extern int key_menu_incscreen;"}, {"kind": "variable", "line": 122, "name": "key_menu_decscreen", "signature": "extern int key_menu_decscreen;"}, {"kind": "variable", "line": 123, "name": "key_menu_screenshot", "signature": "extern int key_menu_screenshot;"}, {"kind": "variable", "line": 125, "name": "mousebfire", "signature": "extern int mousebfire;"}, {"kind": "variable", "line": 126, "name": "mousebstrafe", "signature": "extern int mousebstrafe;"}, {"kind": "variable", "line": 127, "name": "mousebforward", "signature": "extern int mousebforward;"}, {"kind": "variable", "line": 129, "name": "mousebjump", "signature": "extern int mousebjump;"}, {"kind": "variable", "line": 131, "name": "mousebstrafeleft", "signature": "extern int mousebstrafeleft;"}, {"kind": "variable", "line": 132, "name": "mousebstraferight", "signature": "extern int mousebstraferight;"}, {"kind": "variable", "line": 133, "name": "mousebbackward", "signature": "extern int mousebbackward;"}, {"kind": "variable", "line": 134, "name": "mousebuse", "signature": "extern int mousebuse;"}, {"kind": "variable", "line": 136, "name": "mousebprevweapon", "signature": "extern int mousebprevweapon;"}, {"kind": "variable", "line": 137, "name": "mousebnextweapon", "signature": "extern int mousebnextweapon;"}, {"kind": "variable", "line": 139, "name": "joybfire", "signature": "extern int joybfire;"}, {"kind": "variable", "line": 140, "name": "joybstrafe", "signature": "extern int joybstrafe;"}, {"kind": "variable", "line": 141, "name": "joybuse", "signature": "extern int joybuse;"}, {"kind": "variable", "line": 142, "name": "joybspeed", "signature": "extern int joybspeed;"}, {"kind": "variable", "line": 144, "name": "joybjump", "signature": "extern int joybjump;"}, {"kind": "variable", "line": 146, "name": "joybstrafeleft", "signature": "extern int joybstrafeleft;"}, {"kind": "variable", "line": 147, "name": "joybstraferight", "signature": "extern int joybstraferight;"}, {"kind": "variable", "line": 149, "name": "joybprevweapon", "signature": "extern int joybprevweapon;"}, {"kind": "variable", "line": 150, "name": "joybnextweapon", "signature": "extern int joybnextweapon;"}, {"kind": "variable", "line": 152, "name": "joybmenu", "signature": "extern int joybmenu;"}, {"kind": "variable", "line": 154, "name": "dclick_use", "signature": "extern int dclick_use;"}, {"kind": "macro", "line": 18, "name": "__M_CONTROLS_H__", "signature": "#define __M_CONTROLS_H__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Fixed point implementation.", "id": "progs/doomgeneric/m_fixed.c", "kind": "module", "label": "m_fixed.c", "language": "c", "sha256": "70d2b5d7f44f1840", "symbol_count": 2, "symbols": [{"kind": "function", "line": 34, "name": "FixedMul", "signature": "fixed_t\nFixedMul\n( fixed_t\ta,\n fixed_t\tb )"}, {"kind": "function", "line": 47, "name": "FixedDiv", "signature": "fixed_t FixedDiv(fixed_t a, fixed_t b)"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Fixed point arithemtics, implementation. Fixed point, 32bit as 16.16.", "id": "progs/doomgeneric/m_fixed.h", "kind": "module", "label": "m_fixed.h", "language": "h", "sha256": "ee32bb268447144c", "symbol_count": 6, "symbols": [{"doc": "Fixed point, 32bit as 16.16. define FRACBITS\t\t16 define FRACUNIT\t\t(1<moveangle) direction. If blocked by either a wall or an actor returns FALSE If move is either clear or blocked only by a door, returns TRUE and sets... If a door is in the way, an OpenDoor call is made to start it opening.", "kind": "function", "line": 337, "name": "P_TryWalk", "signature": "boolean P_TryWalk (mobj_t* actor)"}, {"kind": "function", "line": 351, "name": "P_NewChaseDir", "signature": "void P_NewChaseDir (mobj_t*\tactor)"}, {"kind": "function", "line": 487, "name": "P_LookForPlayers", "signature": "boolean\nP_LookForPlayers\n( mobj_t*\tactor,\n boolean\tallaround )"}, {"doc": "A_KeenDie DOOM II special, map 32. Uses special tag 666.", "kind": "function", "line": 551, "name": "A_KeenDie", "signature": "void A_KeenDie (mobj_t* mo)"}, {"doc": "A_Look Stay in state until a player is sighted.", "kind": "function", "line": 589, "name": "A_Look", "signature": "void A_Look (mobj_t* actor)"}, {"doc": "A_Chase Actor has a melee attack, so it tries to close as fast as possible", "kind": "function", "line": 657, "name": "A_Chase", "signature": "void A_Chase (mobj_t*\tactor)"}, {"doc": "A_FaceTarget", "kind": "function", "line": 767, "name": "A_FaceTarget", "signature": "void A_FaceTarget (mobj_t* actor)"}, {"doc": "A_PosAttack", "kind": "function", "line": 787, "name": "A_PosAttack", "signature": "void A_PosAttack (mobj_t* actor)"}, {"kind": "function", "line": 806, "name": "A_SPosAttack", "signature": "void A_SPosAttack (mobj_t* actor)"}, {"kind": "function", "line": 830, "name": "A_CPosAttack", "signature": "void A_CPosAttack (mobj_t* actor)"}, {"kind": "function", "line": 850, "name": "A_CPosRefire", "signature": "void A_CPosRefire (mobj_t* actor)"}, {"kind": "function", "line": 867, "name": "A_SpidRefire", "signature": "void A_SpidRefire (mobj_t* actor)"}, {"kind": "function", "line": 883, "name": "A_BspiAttack", "signature": "void A_BspiAttack (mobj_t *actor)"}, {"doc": "A_TroopAttack", "kind": "function", "line": 898, "name": "A_TroopAttack", "signature": "void A_TroopAttack (mobj_t* actor)"}, {"kind": "function", "line": 920, "name": "A_SargAttack", "signature": "void A_SargAttack (mobj_t* actor)"}, {"kind": "function", "line": 935, "name": "A_HeadAttack", "signature": "void A_HeadAttack (mobj_t* actor)"}, {"kind": "function", "line": 954, "name": "A_CyberAttack", "signature": "void A_CyberAttack (mobj_t* actor)"}, {"kind": "function", "line": 964, "name": "A_BruisAttack", "signature": "void A_BruisAttack (mobj_t* actor)"}, {"doc": "A_SkelMissile", "kind": "function", "line": 987, "name": "A_SkelMissile", "signature": "void A_SkelMissile (mobj_t* actor)"}, {"kind": "function", "line": 1006, "name": "A_Tracer", "signature": "void A_Tracer (mobj_t* actor)"}, {"kind": "function", "line": 1078, "name": "A_SkelWhoosh", "signature": "void A_SkelWhoosh (mobj_t*\tactor)"}, {"kind": "function", "line": 1086, "name": "A_SkelFist", "signature": "void A_SkelFist (mobj_t*\tactor)"}, {"kind": "function", "line": 1114, "name": "PIT_VileCheck", "signature": "boolean PIT_VileCheck (mobj_t*\tthing)"}, {"doc": "A_VileChase Check for ressurecting a body", "kind": "function", "line": 1152, "name": "A_VileChase", "signature": "void A_VileChase (mobj_t* actor)"}, {"doc": "A_VileStart", "kind": "function", "line": 1218, "name": "A_VileStart", "signature": "void A_VileStart (mobj_t* actor)"}, {"kind": "function", "line": 1230, "name": "A_StartFire", "signature": "void A_StartFire (mobj_t* actor)"}, {"kind": "function", "line": 1236, "name": "A_FireCrackle", "signature": "void A_FireCrackle (mobj_t* actor)"}, {"kind": "function", "line": 1242, "name": "A_Fire", "signature": "void A_Fire (mobj_t* actor)"}, {"doc": "A_VileTarget Spawn the hellfire", "kind": "function", "line": 1273, "name": "A_VileTarget", "signature": "void A_VileTarget (mobj_t*\tactor)"}, {"doc": "A_VileAttack", "kind": "function", "line": 1298, "name": "A_VileAttack", "signature": "void A_VileAttack (mobj_t* actor)"}, {"kind": "function", "line": 1339, "name": "A_FatRaise", "signature": "void A_FatRaise (mobj_t *actor)"}, {"kind": "function", "line": 1346, "name": "A_FatAttack1", "signature": "void A_FatAttack1 (mobj_t* actor)"}, {"kind": "function", "line": 1366, "name": "A_FatAttack2", "signature": "void A_FatAttack2 (mobj_t* actor)"}, {"kind": "function", "line": 1385, "name": "A_FatAttack3", "signature": "void A_FatAttack3 (mobj_t*\tactor)"}, {"kind": "function", "line": 1415, "name": "A_SkullAttack", "signature": "void A_SkullAttack (mobj_t* actor)"}, {"kind": "function", "line": 1446, "name": "A_PainShootSkull", "signature": "void\nA_PainShootSkull\n( mobj_t*\tactor,\n angle_t\tangle )"}, {"doc": "A_PainAttack Spawn a lost soul and launch it at the target", "kind": "function", "line": 1508, "name": "A_PainAttack", "signature": "void A_PainAttack (mobj_t* actor)"}, {"kind": "function", "line": 1518, "name": "A_PainDie", "signature": "void A_PainDie (mobj_t* actor)"}, {"kind": "function", "line": 1531, "name": "A_Scream", "signature": "void A_Scream (mobj_t* actor)"}, {"kind": "function", "line": 1568, "name": "A_XScream", "signature": "void A_XScream (mobj_t* actor)"}, {"kind": "function", "line": 1573, "name": "A_Pain", "signature": "void A_Pain (mobj_t* actor)"}, {"kind": "function", "line": 1581, "name": "A_Fall", "signature": "void A_Fall (mobj_t *actor)"}, {"doc": "A_Explode", "kind": "function", "line": 1594, "name": "A_Explode", "signature": "void A_Explode (mobj_t* thingy)"}, {"kind": "function", "line": 1605, "name": "CheckBossEnd", "signature": "static boolean CheckBossEnd(mobjtype_t motype)"}, {"doc": "A_BossDeath Possibly trigger special effects if on first boss level", "kind": "function", "line": 1656, "name": "A_BossDeath", "signature": "void A_BossDeath (mobj_t* mo)"}, {"kind": "function", "line": 1757, "name": "A_Hoof", "signature": "void A_Hoof (mobj_t* mo)"}, {"kind": "function", "line": 1763, "name": "A_Metal", "signature": "void A_Metal (mobj_t* mo)"}, {"kind": "function", "line": 1769, "name": "A_BabyMetal", "signature": "void A_BabyMetal (mobj_t* mo)"}, {"kind": "function", "line": 1776, "name": "A_OpenShotgun2", "signature": "void\nA_OpenShotgun2\n( player_t*\tplayer,\n pspdef_t*\tpsp )"}, {"kind": "function", "line": 1784, "name": "A_LoadShotgun2", "signature": "void\nA_LoadShotgun2\n( player_t*\tplayer,\n pspdef_t*\tpsp )"}, {"kind": "function", "line": 1797, "name": "A_CloseShotgun2", "signature": "void\nA_CloseShotgun2\n( player_t*\tplayer,\n pspdef_t*\tpsp )"}, {"kind": "function", "line": 1811, "name": "A_BrainAwake", "signature": "void A_BrainAwake (mobj_t* mo)"}, {"kind": "function", "line": 1841, "name": "A_BrainPain", "signature": "void A_BrainPain (mobj_t*\tmo)"}, {"kind": "function", "line": 1847, "name": "A_BrainScream", "signature": "void A_BrainScream (mobj_t*\tmo)"}, {"kind": "function", "line": 1873, "name": "A_BrainExplode", "signature": "void A_BrainExplode (mobj_t* mo)"}, {"kind": "function", "line": 1894, "name": "A_BrainDie", "signature": "void A_BrainDie (mobj_t*\tmo)"}, {"kind": "function", "line": 1899, "name": "A_BrainSpit", "signature": "void A_BrainSpit (mobj_t*\tmo)"}, {"doc": "travelling cube sound", "kind": "function", "line": 1928, "name": "A_SpawnSound", "signature": "void A_SpawnSound (mobj_t* mo)"}, {"kind": "function", "line": 1934, "name": "A_SpawnFly", "signature": "void A_SpawnFly (mobj_t* mo)"}, {"kind": "function", "line": 1992, "name": "A_PlayerScream", "signature": "void A_PlayerScream (mobj_t* mo)"}, {"kind": "function", "line": 1792, "name": "A_ReFire", "signature": "void A_ReFire ( player_t* player, pspdef_t* psp );"}, {"kind": "macro", "line": 1337, "name": "FATSPREAD", "signature": "#define\tFATSPREAD"}, {"kind": "macro", "line": 1413, "name": "SKULLSPEED", "signature": "#define\tSKULLSPEED"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Floor animation: raising stairs. State. Data.", "id": "progs/doomgeneric/p_floor.c", "kind": "module", "label": "p_floor.c", "language": "c", "sha256": "712c9d45044f4041", "symbol_count": 4, "symbols": [{"kind": "function", "line": 42, "name": "T_MovePlane", "signature": "result_e\nT_MovePlane\n( sector_t*\tsector,\n fixed_t\tspeed,\n fixed_t\tdest,\n boolean\tcrush,\n int\t..."}, {"doc": "MOVE A FLOOR TO IT'S DESTINATION (UP OR DOWN)", "kind": "function", "line": 202, "name": "T_MoveFloor", "signature": "void T_MoveFloor(floormove_t* floor)"}, {"kind": "function", "line": 251, "name": "EV_DoFloor", "signature": "int\nEV_DoFloor\n( line_t*\tline,\n floor_e\tfloortype )"}, {"kind": "function", "line": 444, "name": "EV_BuildStairs", "signature": "int\nEV_BuildStairs\n( line_t*\tline,\n stair_e\ttype )"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Handling interactions (i.e., collisions). Data.", "id": "progs/doomgeneric/p_inter.c", "kind": "module", "label": "p_inter.c", "language": "c", "sha256": "e14d7655da6c3410", "symbol_count": 10, "symbols": [{"kind": "function", "line": 66, "name": "P_GiveAmmo", "signature": "boolean\nP_GiveAmmo\n( player_t*\tplayer,\n ammotype_t\tammo,\n int\t\tnum )"}, {"kind": "function", "line": 160, "name": "P_GiveWeapon", "signature": "boolean\nP_GiveWeapon\n( player_t*\tplayer,\n weapontype_t\tweapon,\n boolean\tdropped )"}, {"kind": "function", "line": 223, "name": "P_GiveBody", "signature": "boolean\nP_GiveBody\n( player_t*\tplayer,\n int\t\tnum )"}, {"kind": "function", "line": 246, "name": "P_GiveArmor", "signature": "boolean\nP_GiveArmor\n( player_t*\tplayer,\n int\t\tarmortype )"}, {"kind": "function", "line": 268, "name": "P_GiveCard", "signature": "void\nP_GiveCard\n( player_t*\tplayer,\n card_t\tcard )"}, {"kind": "function", "line": 284, "name": "P_GivePower", "signature": "boolean\nP_GivePower\n( player_t*\tplayer,\n int /*powertype_t*/\tpower )"}, {"kind": "function", "line": 333, "name": "P_TouchSpecialThing", "signature": "void\nP_TouchSpecialThing\n( mobj_t*\tspecial,\n mobj_t*\ttoucher )"}, {"kind": "function", "line": 666, "name": "P_KillMobj", "signature": "void\nP_KillMobj\n( mobj_t*\tsource,\n mobj_t*\ttarget )"}, {"kind": "function", "line": 779, "name": "P_DamageMobj", "signature": "void\nP_DamageMobj\n( mobj_t*\ttarget,\n mobj_t*\tinflictor,\n mobj_t*\tsource,\n int \t\tdamage )"}, {"kind": "macro", "line": 43, "name": "BONUSADD", "signature": "#define BONUSADD"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION:", "id": "progs/doomgeneric/p_inter.h", "kind": "module", "label": "p_inter.h", "language": "h", "sha256": "eb9b7042a9dff119", "symbol_count": 1, "symbols": [{"kind": "macro", "line": 21, "name": "__P_INTER__", "signature": "#define __P_INTER__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Handle Sector base lighting effects. Muzzle flash? State.", "id": "progs/doomgeneric/p_lights.c", "kind": "module", "label": "p_lights.c", "language": "c", "sha256": "acc6ad01b92fc769", "symbol_count": 11, "symbols": [{"doc": "T_FireFlicker", "kind": "function", "line": 39, "name": "T_FireFlicker", "signature": "void T_FireFlicker (fireflicker_t* flick)"}, {"doc": "P_SpawnFireFlicker", "kind": "function", "line": 61, "name": "P_SpawnFireFlicker", "signature": "void P_SpawnFireFlicker (sector_t*\tsector)"}, {"doc": "T_LightFlash Do flashing lights.", "kind": "function", "line": 91, "name": "T_LightFlash", "signature": "void T_LightFlash (lightflash_t* flash)"}, {"doc": "P_SpawnLightFlash After the map has been loaded, scan each sector for specials that spawn thinkers", "kind": "function", "line": 117, "name": "P_SpawnLightFlash", "signature": "void P_SpawnLightFlash (sector_t*\tsector)"}, {"doc": "T_StrobeFlash", "kind": "function", "line": 148, "name": "T_StrobeFlash", "signature": "void T_StrobeFlash (strobe_t*\t\tflash)"}, {"kind": "function", "line": 174, "name": "P_SpawnStrobeFlash", "signature": "void\nP_SpawnStrobeFlash\n( sector_t*\tsector,\n int\t\tfastOrSlow,\n int\t\tinSync )"}, {"doc": "Start strobing lights (usually from a trigger)", "kind": "function", "line": 208, "name": "EV_StartLightStrobing", "signature": "void EV_StartLightStrobing(line_t*\tline)"}, {"doc": "TURN LINE'S TAG LIGHTS OFF", "kind": "function", "line": 229, "name": "EV_TurnTagLightsOff", "signature": "void EV_TurnTagLightsOff(line_t* line)"}, {"kind": "function", "line": 264, "name": "EV_LightTurnOn", "signature": "void\nEV_LightTurnOn\n( line_t*\tline,\n int\t\tbright )"}, {"kind": "function", "line": 307, "name": "T_Glow", "signature": "void T_Glow(glow_t*\tg)"}, {"kind": "function", "line": 334, "name": "P_SpawnGlowingLight", "signature": "void P_SpawnGlowingLight(sector_t*\tsector)"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Play functions, animation, global header.", "id": "progs/doomgeneric/p_local.h", "kind": "module", "label": "p_local.h", "language": "h", "sha256": "ebba786a9d2bfaae", "symbol_count": 91, "symbols": [{"doc": "P_MAPUTL", "kind": "struct", "line": 133, "name": "divline_t"}, {"kind": "struct", "line": 142, "name": "d"}, {"kind": "function", "line": 70, "name": "P_InitThinkers", "signature": "void P_InitThinkers (void);"}, {"kind": "function", "line": 71, "name": "P_AddThinker", "signature": "void P_AddThinker (thinker_t* thinker);"}, {"kind": "function", "line": 72, "name": "P_RemoveThinker", "signature": "void P_RemoveThinker (thinker_t* thinker);"}, {"doc": "P_PSPR", "kind": "function", "line": 78, "name": "P_SetupPsprites", "signature": "void P_SetupPsprites (player_t* curplayer);"}, {"kind": "function", "line": 79, "name": "P_MovePsprites", "signature": "void P_MovePsprites (player_t* curplayer);"}, {"kind": "function", "line": 80, "name": "P_DropWeapon", "signature": "void P_DropWeapon (player_t* player);"}, {"doc": "P_USER", "kind": "function", "line": 86, "name": "P_PlayerThink", "signature": "void P_PlayerThink (player_t* player);"}, {"kind": "function", "line": 104, "name": "P_RespawnSpecials", "signature": "void P_RespawnSpecials (void);"}, {"kind": "function", "line": 107, "name": "P_SpawnMobj", "signature": "mobj_t* P_SpawnMobj ( fixed_t x, fixed_t y, fixed_t z, mobjtype_t type );"}, {"kind": "function", "line": 113, "name": "P_RemoveMobj", "signature": "void P_RemoveMobj (mobj_t* th);"}, {"kind": "function", "line": 114, "name": "P_SubstNullMobj", "signature": "mobj_t* P_SubstNullMobj (mobj_t* th);"}, {"kind": "function", "line": 116, "name": "P_MobjThinker", "signature": "void P_MobjThinker (mobj_t* mobj);"}, {"kind": "function", "line": 118, "name": "P_SpawnPuff", "signature": "void P_SpawnPuff (fixed_t x, fixed_t y, fixed_t z);"}, {"kind": "function", "line": 119, "name": "P_SpawnBlood", "signature": "void P_SpawnBlood (fixed_t x, fixed_t y, fixed_t z, int damage);"}, {"kind": "function", "line": 120, "name": "P_SpawnMissile", "signature": "mobj_t* P_SpawnMissile (mobj_t* source, mobj_t* dest, mobjtype_t type);"}, {"kind": "function", "line": 121, "name": "P_SpawnPlayerMissile", "signature": "void P_SpawnPlayerMissile (mobj_t* source, mobjtype_t type);"}, {"doc": "P_ENEMY", "kind": "function", "line": 127, "name": "P_NoiseAlert", "signature": "void P_NoiseAlert (mobj_t* target, mobj_t* emmiter);"}, {"kind": "function", "line": 162, "name": "P_AproxDistance", "signature": "fixed_t P_AproxDistance (fixed_t dx, fixed_t dy);"}, {"kind": "function", "line": 163, "name": "P_PointOnLineSide", "signature": "int P_PointOnLineSide (fixed_t x, fixed_t y, line_t* line);"}, {"kind": "function", "line": 164, "name": "P_PointOnDivlineSide", "signature": "int P_PointOnDivlineSide (fixed_t x, fixed_t y, divline_t* line);"}, {"kind": "function", "line": 165, "name": "P_MakeDivline", "signature": "void P_MakeDivline (line_t* li, divline_t* dl);"}, {"kind": "function", "line": 166, "name": "P_InterceptVector", "signature": "fixed_t P_InterceptVector (divline_t* v2, divline_t* v1);"}, {"kind": "function", "line": 167, "name": "P_BoxOnLineSide", "signature": "int P_BoxOnLineSide (fixed_t* tmbox, line_t* ld);"}, {"kind": "function", "line": 174, "name": "P_LineOpening", "signature": "void P_LineOpening (line_t* linedef);"}, {"kind": "function", "line": 194, "name": "P_UnsetThingPosition", "signature": "void P_UnsetThingPosition (mobj_t* thing);"}, {"kind": "function", "line": 195, "name": "P_SetThingPosition", "signature": "void P_SetThingPosition (mobj_t* thing);"}, {"kind": "function", "line": 228, "name": "P_SlideMove", "signature": "void P_SlideMove (mobj_t* mo);"}, {"kind": "function", "line": 230, "name": "P_UseLines", "signature": "void P_UseLines (player_t* player);"}, {"kind": "function", "line": 237, "name": "P_AimLineAttack", "signature": "fixed_t P_AimLineAttack ( mobj_t* t1, angle_t angle, fixed_t distance );"}, {"kind": "function", "line": 243, "name": "P_LineAttack", "signature": "void P_LineAttack ( mobj_t* t1, angle_t angle, fixed_t distance, fixed_t slope, int damage );"}, {"kind": "function", "line": 251, "name": "P_RadiusAttack", "signature": "void P_RadiusAttack ( mobj_t* spot, mobj_t* source, int damage );"}, {"kind": "function", "line": 279, "name": "P_TouchSpecialThing", "signature": "void P_TouchSpecialThing ( mobj_t* special, mobj_t* toucher );"}, {"kind": "function", "line": 284, "name": "P_DamageMobj", "signature": "void P_DamageMobj ( mobj_t* target, mobj_t* inflictor, mobj_t* source, int damage );"}, {"doc": "both the head and tail of the thinker list", "kind": "variable", "line": 67, "name": "thinkercap", "signature": "extern thinker_t thinkercap;"}, {"kind": "variable", "line": 98, "name": "itemrespawnque", "signature": "extern mapthing_t itemrespawnque[ITEMQUESIZE];"}, {"kind": "variable", "line": 99, "name": "itemrespawntime", "signature": "extern int itemrespawntime[ITEMQUESIZE];"}, {"kind": "variable", "line": 100, "name": "iquehead", "signature": "extern int iquehead;"}, {"kind": "variable", "line": 101, "name": "iquetail", "signature": "extern int iquetail;"}, {"kind": "variable", "line": 157, "name": "intercepts", "signature": "extern intercept_t intercepts[MAXINTERCEPTS];"}, {"kind": "variable", "line": 158, "name": "intercept_p", "signature": "extern intercept_t* intercept_p;"}, {"kind": "variable", "line": 169, "name": "opentop", "signature": "extern fixed_t opentop;"}, {"kind": "variable", "line": 170, "name": "openbottom", "signature": "extern fixed_t openbottom;"}, {"kind": "variable", "line": 171, "name": "openrange", "signature": "extern fixed_t openrange;"}, {"kind": "variable", "line": 172, "name": "lowfloor", "signature": "extern fixed_t lowfloor;"}, {"kind": "variable", "line": 183, "name": "trace", "signature": "extern divline_t trace;"}, {"doc": "If \"floatok\" true, move would be ok if within \"tmfloorz - tmceilingz\".", "kind": "variable", "line": 204, "name": "floatok", "signature": "extern boolean floatok;"}, {"kind": "variable", "line": 205, "name": "tmfloorz", "signature": "extern fixed_t tmfloorz;"}, {"kind": "variable", "line": 206, "name": "tmceilingz", "signature": "extern fixed_t tmceilingz;"}, {"kind": "variable", "line": 209, "name": "ceilingline", "signature": "extern line_t* ceilingline;"}, {"kind": "variable", "line": 222, "name": "spechit", "signature": "extern line_t* spechit[MAXSPECIALCROSS];"}, {"kind": "variable", "line": 223, "name": "numspechit", "signature": "extern int numspechit;"}, {"kind": "variable", "line": 234, "name": "linetarget", "signature": "extern mobj_t* linetarget;"}, {"doc": "P_SETUP", "kind": "variable", "line": 261, "name": "rejectmatrix", "signature": "extern byte* rejectmatrix;"}, {"kind": "variable", "line": 262, "name": "blockmaplump", "signature": "extern short* blockmaplump;"}, {"kind": "variable", "line": 263, "name": "blockmap", "signature": "extern short* blockmap;"}, {"kind": "variable", "line": 264, "name": "bmapwidth", "signature": "extern int bmapwidth;"}, {"kind": "variable", "line": 265, "name": "bmapheight", "signature": "extern int bmapheight;"}, {"kind": "variable", "line": 266, "name": "bmaporgx", "signature": "extern fixed_t bmaporgx;"}, {"kind": "variable", "line": 267, "name": "bmaporgy", "signature": "extern fixed_t bmaporgy;"}, {"kind": "variable", "line": 268, "name": "blocklinks", "signature": "extern mobj_t** blocklinks;"}, {"doc": "P_INTER", "kind": "variable", "line": 275, "name": "maxammo", "signature": "extern int maxammo[NUMAMMO];"}, {"kind": "variable", "line": 276, "name": "clipammo", "signature": "extern int clipammo[NUMAMMO];"}, {"kind": "macro", "line": 21, "name": "__P_LOCAL__", "signature": "#define __P_LOCAL__"}, {"kind": "macro", "line": 27, "name": "FLOATSPEED", "signature": "#define FLOATSPEED"}, {"kind": "macro", "line": 30, "name": "MAXHEALTH", "signature": "#define MAXHEALTH"}, {"kind": "macro", "line": 31, "name": "VIEWHEIGHT", "signature": "#define VIEWHEIGHT"}, {"kind": "macro", "line": 35, "name": "MAPBLOCKUNITS", "signature": "#define MAPBLOCKUNITS"}, {"kind": "macro", "line": 36, "name": "MAPBLOCKSIZE", "signature": "#define MAPBLOCKSIZE"}, {"kind": "macro", "line": 37, "name": "MAPBLOCKSHIFT", "signature": "#define MAPBLOCKSHIFT"}, {"kind": "macro", "line": 38, "name": "MAPBMASK", "signature": "#define MAPBMASK"}, {"kind": "macro", "line": 39, "name": "MAPBTOFRAC", "signature": "#define MAPBTOFRAC"}, {"kind": "macro", "line": 43, "name": "PLAYERRADIUS", "signature": "#define PLAYERRADIUS"}, {"kind": "macro", "line": 48, "name": "MAXRADIUS", "signature": "#define MAXRADIUS"}, {"kind": "macro", "line": 50, "name": "GRAVITY", "signature": "#define GRAVITY"}, {"kind": "macro", "line": 51, "name": "MAXMOVE", "signature": "#define MAXMOVE"}, {"kind": "macro", "line": 53, "name": "USERANGE", "signature": "#define USERANGE"}, {"kind": "macro", "line": 54, "name": "MELEERANGE", "signature": "#define MELEERANGE"}, {"kind": "macro", "line": 55, "name": "MISSILERANGE", "signature": "#define MISSILERANGE"}, {"kind": "macro", "line": 58, "name": "BASETHRESHOLD", "signature": "#define\tBASETHRESHOLD"}, {"kind": "macro", "line": 92, "name": "ONFLOORZ", "signature": "#define ONFLOORZ"}, {"kind": "macro", "line": 93, "name": "ONCEILINGZ", "signature": "#define ONCEILINGZ"}, {"kind": "macro", "line": 96, "name": "ITEMQUESIZE", "signature": "#define ITEMQUESIZE"}, {"kind": "macro", "line": 154, "name": "MAXINTERCEPTS_ORIGINAL", "signature": "#define MAXINTERCEPTS_ORIGINAL"}, {"kind": "macro", "line": 155, "name": "MAXINTERCEPTS", "signature": "#define MAXINTERCEPTS"}, {"kind": "macro", "line": 179, "name": "PT_ADDLINES", "signature": "#define PT_ADDLINES"}, {"kind": "macro", "line": 180, "name": "PT_ADDTHINGS", "signature": "#define PT_ADDTHINGS"}, {"kind": "macro", "line": 181, "name": "PT_EARLYOUT", "signature": "#define PT_EARLYOUT"}, {"kind": "macro", "line": 219, "name": "MAXSPECIALCROSS", "signature": "#define MAXSPECIALCROSS"}, {"kind": "macro", "line": 220, "name": "MAXSPECIALCROSS_ORIGINAL", "signature": "#define MAXSPECIALCROSS_ORIGINAL"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard, Andrey Budko This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Movement, collision handling. Shooting and aiming.", "id": "progs/doomgeneric/p_map.c", "kind": "module", "label": "p_map.c", "language": "c", "sha256": "adb4c28e3cc2865b", "symbol_count": 24, "symbols": [{"doc": "PIT_StompThing", "kind": "function", "line": 97, "name": "PIT_StompThing", "signature": "boolean PIT_StompThing (mobj_t* thing)"}, {"kind": "function", "line": 131, "name": "P_TeleportMove", "signature": "boolean\nP_TeleportMove\n( mobj_t*\tthing,\n fixed_t\tx,\n fixed_t\ty )"}, {"doc": "PIT_CheckLine Adjusts tmfloorz and tmceilingz as lines are contacted", "kind": "function", "line": 206, "name": "PIT_CheckLine", "signature": "boolean PIT_CheckLine (line_t* ld)"}, {"doc": "PIT_CheckThing", "kind": "function", "line": 275, "name": "PIT_CheckThing", "signature": "boolean PIT_CheckThing (mobj_t* thing)"}, {"kind": "function", "line": 402, "name": "P_CheckPosition", "signature": "boolean\nP_CheckPosition\n( mobj_t*\tthing,\n fixed_t\tx,\n fixed_t\ty )"}, {"kind": "function", "line": 478, "name": "P_TryMove", "signature": "boolean\nP_TryMove\n( mobj_t*\tthing,\n fixed_t\tx,\n fixed_t\ty )"}, {"doc": "P_ThingHeightClip Takes a valid thing and adjusts the thing->floorz, thing->ceilingz, and possibly thing->z. This is called for all nearby monsters whenever a sector changes height. If the thing doesn't fit, the z will be set to the lowest value and false will be returned.", "kind": "function", "line": 557, "name": "P_ThingHeightClip", "signature": "boolean P_ThingHeightClip (mobj_t* thing)"}, {"doc": "P_HitSlideLine Adjusts the xmove / ymove so that the next move will slide along the wall.", "kind": "function", "line": 611, "name": "P_HitSlideLine", "signature": "void P_HitSlideLine (line_t* ld)"}, {"doc": "PTR_SlideTraverse", "kind": "function", "line": 663, "name": "PTR_SlideTraverse", "signature": "boolean PTR_SlideTraverse (intercept_t* in)"}, {"doc": "P_SlideMove The momx / momy move is bad, so try to slide along a wall. Find the first line hit, move flush to it, and slide along it This is a kludgy mess.", "kind": "function", "line": 722, "name": "P_SlideMove", "signature": "void P_SlideMove (mobj_t* mo)"}, {"kind": "function", "line": 843, "name": "PTR_AimTraverse", "signature": "boolean\nPTR_AimTraverse (intercept_t* in)"}, {"doc": "PTR_ShootTraverse", "kind": "function", "line": 928, "name": "PTR_ShootTraverse", "signature": "boolean PTR_ShootTraverse (intercept_t* in)"}, {"kind": "function", "line": 1068, "name": "P_AimLineAttack", "signature": "fixed_t\nP_AimLineAttack\n( mobj_t*\tt1,\n angle_t\tangle,\n fixed_t\tdistance )"}, {"kind": "function", "line": 1110, "name": "P_LineAttack", "signature": "void\nP_LineAttack\n( mobj_t*\tt1,\n angle_t\tangle,\n fixed_t\tdistance,\n fixed_t\tslope,\n int\t\tdama..."}, {"kind": "function", "line": 1142, "name": "PTR_UseTraverse", "signature": "boolean\tPTR_UseTraverse (intercept_t* in)"}, {"doc": "P_UseLines Looks for special lines in front of the player to activate.", "kind": "function", "line": 1177, "name": "P_UseLines", "signature": "void P_UseLines (player_t*\tplayer)"}, {"doc": "PIT_RadiusAttack \"bombsource\" is the creature that caused the explosion at \"bombspot\".", "kind": "function", "line": 1211, "name": "PIT_RadiusAttack", "signature": "boolean PIT_RadiusAttack (mobj_t* thing)"}, {"kind": "function", "line": 1253, "name": "P_RadiusAttack", "signature": "void\nP_RadiusAttack\n( mobj_t*\tspot,\n mobj_t*\tsource,\n int\t\tdamage )"}, {"doc": "PIT_ChangeSector", "kind": "function", "line": 1304, "name": "PIT_ChangeSector", "signature": "boolean PIT_ChangeSector (mobj_t*\tthing)"}, {"kind": "function", "line": 1368, "name": "P_ChangeSector", "signature": "boolean\nP_ChangeSector\n( sector_t*\tsector,\n boolean\tcrunch )"}, {"kind": "function", "line": 1391, "name": "SpechitOverrun", "signature": "static void SpechitOverrun(line_t *ld)"}, {"doc": "slopes to top and bottom of target", "kind": "variable", "line": 834, "name": "topslope", "signature": "extern fixed_t topslope;"}, {"kind": "variable", "line": 835, "name": "bottomslope", "signature": "extern fixed_t bottomslope;"}, {"kind": "macro", "line": 50, "name": "DEFAULT_SPECHIT_MAGIC", "signature": "#define DEFAULT_SPECHIT_MAGIC"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard Copyright(C) 2005, 2006 Andrey Budko This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Movement/collision utility functions, as used by function in p_map.c. BLOCKMAP Iterator functions, and some PIT_* functions to use for iteration.", "id": "progs/doomgeneric/p_maputl.c", "kind": "module", "label": "p_maputl.c", "language": "c", "sha256": "7a658ce884e66bcc", "symbol_count": 19, "symbols": [{"kind": "struct", "line": 738, "name": "intercepts_overrun_t"}, {"kind": "function", "line": 44, "name": "P_AproxDistance", "signature": "fixed_t\nP_AproxDistance\n( fixed_t\tdx,\n fixed_t\tdy )"}, {"kind": "function", "line": 61, "name": "P_PointOnLineSide", "signature": "int\nP_PointOnLineSide\n( fixed_t\tx,\n fixed_t\ty,\n line_t*\tline )"}, {"kind": "function", "line": 105, "name": "P_BoxOnLineSide", "signature": "int\nP_BoxOnLineSide\n( fixed_t*\ttmbox,\n line_t*\tld )"}, {"kind": "function", "line": 156, "name": "P_PointOnDivlineSide", "signature": "int\nP_PointOnDivlineSide\n( fixed_t\tx,\n fixed_t\ty,\n divline_t*\tline )"}, {"kind": "function", "line": 206, "name": "P_MakeDivline", "signature": "void\nP_MakeDivline\n( line_t*\tli,\n divline_t*\tdl )"}, {"kind": "function", "line": 226, "name": "P_InterceptVector", "signature": "fixed_t\nP_InterceptVector\n( divline_t*\tv2,\n divline_t*\tv1 )"}, {"kind": "function", "line": 295, "name": "P_LineOpening", "signature": "void P_LineOpening (line_t* linedef)"}, {"doc": "P_UnsetThingPosition Unlinks a thing from block map and sectors. On each position change, BLOCKMAP and other lookups maintaining lists ot things inside these structures need to be updated.", "kind": "function", "line": 342, "name": "P_UnsetThingPosition", "signature": "void P_UnsetThingPosition (mobj_t* thing)"}, {"kind": "function", "line": 391, "name": "P_SetThingPosition", "signature": "void\nP_SetThingPosition (mobj_t* thing)"}, {"kind": "function", "line": 467, "name": "P_BlockLinesIterator", "signature": "boolean\nP_BlockLinesIterator\n( int\t\t\tx,\n int\t\t\ty,\n boolean(*func)(line_t*) )"}, {"kind": "function", "line": 508, "name": "P_BlockThingsIterator", "signature": "boolean\nP_BlockThingsIterator\n( int\t\t\tx,\n int\t\t\ty,\n boolean(*func)(mobj_t*) )"}, {"kind": "function", "line": 559, "name": "PIT_AddLineIntercepts", "signature": "boolean\nPIT_AddLineIntercepts (line_t* ld)"}, {"doc": "PIT_AddThingIntercepts", "kind": "function", "line": 614, "name": "PIT_AddThingIntercepts", "signature": "boolean PIT_AddThingIntercepts (mobj_t* thing)"}, {"kind": "function", "line": 682, "name": "P_TraverseIntercepts", "signature": "boolean\nP_TraverseIntercepts\n( traverser_t\tfunc,\n fixed_t\tmaxfrac )"}, {"kind": "function", "line": 782, "name": "InterceptsMemoryOverrun", "signature": "static void InterceptsMemoryOverrun(int location, int value)"}, {"kind": "function", "line": 827, "name": "InterceptsOverrun", "signature": "static void InterceptsOverrun(int num_intercepts, intercept_t *intercept)"}, {"kind": "function", "line": 861, "name": "P_PathTraverse", "signature": "boolean\nP_PathTraverse\n( fixed_t\t\tx1,\n fixed_t\t\ty1,\n fixed_t\t\tx2,\n fixed_t\t\ty2,\n int\t\t\tflags,..."}, {"kind": "variable", "line": 731, "name": "bulletslope", "signature": "extern fixed_t bulletslope;"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Moving object handling. Spawn functions.", "id": "progs/doomgeneric/p_mobj.c", "kind": "module", "label": "p_mobj.c", "language": "c", "sha256": "9b7db31b1eec59ce", "symbol_count": 21, "symbols": [{"kind": "function", "line": 48, "name": "P_SetMobjState", "signature": "boolean\nP_SetMobjState\n( mobj_t*\tmobj,\n statenum_t\tstate )"}, {"doc": "P_ExplodeMissile", "kind": "function", "line": 84, "name": "P_ExplodeMissile", "signature": "void P_ExplodeMissile (mobj_t* mo)"}, {"kind": "function", "line": 108, "name": "P_XYMovement", "signature": "void P_XYMovement (mobj_t* mo)"}, {"doc": "P_ZMovement", "kind": "function", "line": 240, "name": "P_ZMovement", "signature": "void P_ZMovement (mobj_t* mo)"}, {"kind": "function", "line": 383, "name": "P_NightmareRespawn", "signature": "void\nP_NightmareRespawn (mobj_t* mobj)"}, {"doc": "P_MobjThinker", "kind": "function", "line": 441, "name": "P_MobjThinker", "signature": "void P_MobjThinker (mobj_t* mobj)"}, {"kind": "function", "line": 506, "name": "P_SpawnMobj", "signature": "mobj_t*\nP_SpawnMobj\n( fixed_t\tx,\n fixed_t\ty,\n fixed_t\tz,\n mobjtype_t\ttype )"}, {"kind": "function", "line": 572, "name": "P_RemoveMobj", "signature": "void P_RemoveMobj (mobj_t* mobj)"}, {"doc": "P_RespawnSpecials", "kind": "function", "line": 604, "name": "P_RespawnSpecials", "signature": "void P_RespawnSpecials (void)"}, {"doc": "P_SpawnPlayer Called when a player is spawned on the level. Most of the player structure stays unchanged between levels.", "kind": "function", "line": 668, "name": "P_SpawnPlayer", "signature": "void P_SpawnPlayer (mapthing_t* mthing)"}, {"doc": "P_SpawnMapThing The fields of the mapthing should already be in host byte order.", "kind": "function", "line": 739, "name": "P_SpawnMapThing", "signature": "void P_SpawnMapThing (mapthing_t* mthing)"}, {"kind": "function", "line": 851, "name": "P_SpawnPuff", "signature": "void\nP_SpawnPuff\n( fixed_t\tx,\n fixed_t\ty,\n fixed_t\tz )"}, {"kind": "function", "line": 878, "name": "P_SpawnBlood", "signature": "void\nP_SpawnBlood\n( fixed_t\tx,\n fixed_t\ty,\n fixed_t\tz,\n int\t\tdamage )"}, {"doc": "P_CheckMissileSpawn Moves the missile forward a bit and possibly explodes it right there.", "kind": "function", "line": 907, "name": "P_CheckMissileSpawn", "signature": "void P_CheckMissileSpawn (mobj_t* th)"}, {"kind": "function", "line": 929, "name": "P_SubstNullMobj", "signature": "mobj_t *P_SubstNullMobj(mobj_t *mobj)"}, {"kind": "function", "line": 950, "name": "P_SpawnMissile", "signature": "mobj_t*\nP_SpawnMissile\n( mobj_t*\tsource,\n mobj_t*\tdest,\n mobjtype_t\ttype )"}, {"kind": "function", "line": 996, "name": "P_SpawnPlayerMissile", "signature": "void\nP_SpawnPlayerMissile\n( mobj_t*\tsource,\n mobjtype_t\ttype )"}, {"kind": "function", "line": 37, "name": "G_PlayerReborn", "signature": "void G_PlayerReborn (int player);"}, {"doc": "P_SpawnPuff", "kind": "variable", "line": 848, "name": "attackrange", "signature": "extern fixed_t attackrange;"}, {"kind": "macro", "line": 105, "name": "STOPSPEED", "signature": "#define STOPSPEED"}, {"kind": "macro", "line": 106, "name": "FRICTION", "signature": "#define FRICTION"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Map Objects, MObj, definition and handling. Basics. We need the thinker_t stuff. We need the WAD data structure for Map things,", "id": "progs/doomgeneric/p_mobj.h", "kind": "module", "label": "p_mobj.h", "language": "h", "sha256": "27a95e4eb63aad70", "symbol_count": 3, "symbols": [{"doc": "Map Object definition.", "kind": "struct", "line": 201, "name": "mobj_s"}, {"doc": "Map Object definition.", "kind": "type_alias", "line": 201, "name": "thinker", "signature": "typedef struct mobj_s { // List: thinker links. thinker_t thinker;"}, {"kind": "macro", "line": 21, "name": "__P_MOBJ__", "signature": "#define __P_MOBJ__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Plats (i.e. elevator platforms) code, raising/lowering. State.", "id": "progs/doomgeneric/p_plats.c", "kind": "module", "label": "p_plats.c", "language": "c", "sha256": "52e992e53e1e525b", "symbol_count": 6, "symbols": [{"doc": "Move a plat up and down", "kind": "function", "line": 45, "name": "T_PlatRaise", "signature": "void T_PlatRaise(plat_t* plat)"}, {"kind": "function", "line": 129, "name": "EV_DoPlat", "signature": "int\nEV_DoPlat\n( line_t*\tline,\n plattype_e\ttype,\n int\t\tamount )"}, {"kind": "function", "line": 248, "name": "P_ActivateInStasis", "signature": "void P_ActivateInStasis(int tag)"}, {"kind": "function", "line": 263, "name": "EV_StopPlat", "signature": "void EV_StopPlat(line_t* line)"}, {"kind": "function", "line": 278, "name": "P_AddActivePlat", "signature": "void P_AddActivePlat(plat_t* plat)"}, {"kind": "function", "line": 291, "name": "P_RemoveActivePlat", "signature": "void P_RemoveActivePlat(plat_t* plat)"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Weapon sprite animation, weapon objects. Action functions for weapons. State.", "id": "progs/doomgeneric/p_pspr.c", "kind": "module", "label": "p_pspr.c", "language": "c", "sha256": "f497aad5e8f74b47", "symbol_count": 35, "symbols": [{"kind": "function", "line": 50, "name": "P_SetPsprite", "signature": "void\nP_SetPsprite\n( player_t*\tplayer,\n int\t\tposition,\n statenum_t\tstnum )"}, {"kind": "function", "line": 103, "name": "P_CalcSwing", "signature": "void P_CalcSwing (player_t*\tplayer)"}, {"doc": "P_BringUpWeapon Starts bringing the pending weapon up from the bottom of the screen. Uses player", "kind": "function", "line": 129, "name": "P_BringUpWeapon", "signature": "void P_BringUpWeapon (player_t* player)"}, {"doc": "P_CheckAmmo Returns true if there is enough ammo to shoot. If not, selects the next weapon to use.", "kind": "function", "line": 152, "name": "P_CheckAmmo", "signature": "boolean P_CheckAmmo (player_t* player)"}, {"doc": "P_FireWeapon.", "kind": "function", "line": 237, "name": "P_FireWeapon", "signature": "void P_FireWeapon (player_t* player)"}, {"doc": "P_DropWeapon Player died, so put the weapon away.", "kind": "function", "line": 256, "name": "P_DropWeapon", "signature": "void P_DropWeapon (player_t* player)"}, {"kind": "function", "line": 273, "name": "A_WeaponReady", "signature": "void\nA_WeaponReady\n( player_t*\tplayer,\n pspdef_t*\tpsp )"}, {"doc": "A_ReFire The player can re-fire the weapon without lowering it entirely.", "kind": "function", "line": 334, "name": "A_ReFire", "signature": "void A_ReFire\n( player_t*\tplayer,\n pspdef_t*\tpsp )"}, {"kind": "function", "line": 357, "name": "A_CheckReload", "signature": "void\nA_CheckReload\n( player_t*\tplayer,\n pspdef_t*\tpsp )"}, {"kind": "function", "line": 376, "name": "A_Lower", "signature": "void\nA_Lower\n( player_t*\tplayer,\n pspdef_t*\tpsp )"}, {"kind": "function", "line": 414, "name": "A_Raise", "signature": "void\nA_Raise\n( player_t*\tplayer,\n pspdef_t*\tpsp )"}, {"kind": "function", "line": 440, "name": "A_GunFlash", "signature": "void\nA_GunFlash\n( player_t*\tplayer,\n pspdef_t*\tpsp )"}, {"kind": "function", "line": 459, "name": "A_Punch", "signature": "void\nA_Punch\n( player_t*\tplayer,\n pspdef_t*\tpsp )"}, {"kind": "function", "line": 493, "name": "A_Saw", "signature": "void\nA_Saw\n( player_t*\tplayer,\n pspdef_t*\tpsp )"}, {"kind": "function", "line": 542, "name": "DecreaseAmmo", "signature": "static void DecreaseAmmo(player_t *player, int ammonum, int amount)"}, {"kind": "function", "line": 559, "name": "A_FireMissile", "signature": "void\nA_FireMissile\n( player_t*\tplayer,\n pspdef_t*\tpsp )"}, {"kind": "function", "line": 572, "name": "A_FireBFG", "signature": "void\nA_FireBFG\n( player_t*\tplayer,\n pspdef_t*\tpsp )"}, {"kind": "function", "line": 587, "name": "A_FirePlasma", "signature": "void\nA_FirePlasma\n( player_t*\tplayer,\n pspdef_t*\tpsp )"}, {"kind": "function", "line": 610, "name": "P_BulletSlope", "signature": "void P_BulletSlope (mobj_t*\tmo)"}, {"kind": "function", "line": 635, "name": "P_GunShot", "signature": "void\nP_GunShot\n( mobj_t*\tmo,\n boolean\taccurate )"}, {"kind": "function", "line": 656, "name": "A_FirePistol", "signature": "void\nA_FirePistol\n( player_t*\tplayer,\n pspdef_t*\tpsp )"}, {"kind": "function", "line": 678, "name": "A_FireShotgun", "signature": "void\nA_FireShotgun\n( player_t*\tplayer,\n pspdef_t*\tpsp )"}, {"kind": "function", "line": 705, "name": "A_FireShotgun2", "signature": "void\nA_FireShotgun2\n( player_t*\tplayer,\n pspdef_t*\tpsp )"}, {"kind": "function", "line": 742, "name": "A_FireCGun", "signature": "void\nA_FireCGun\n( player_t*\tplayer,\n pspdef_t*\tpsp )"}, {"doc": "?", "kind": "function", "line": 770, "name": "A_Light0", "signature": "void A_Light0 (player_t *player, pspdef_t *psp)"}, {"kind": "function", "line": 775, "name": "A_Light1", "signature": "void A_Light1 (player_t *player, pspdef_t *psp)"}, {"kind": "function", "line": 780, "name": "A_Light2", "signature": "void A_Light2 (player_t *player, pspdef_t *psp)"}, {"doc": "A_BFGSpray Spawn a BFG explosion on every monster in view", "kind": "function", "line": 790, "name": "A_BFGSpray", "signature": "void A_BFGSpray (mobj_t* mo)"}, {"kind": "function", "line": 827, "name": "A_BFGsound", "signature": "void\nA_BFGsound\n( player_t*\tplayer,\n pspdef_t*\tpsp )"}, {"doc": "P_SetupPsprites Called at start of level for each player.", "kind": "function", "line": 840, "name": "P_SetupPsprites", "signature": "void P_SetupPsprites (player_t* player)"}, {"doc": "P_MovePsprites Called every tic by player thinking routine.", "kind": "function", "line": 860, "name": "P_MovePsprites", "signature": "void P_MovePsprites (player_t* player)"}, {"kind": "macro", "line": 38, "name": "LOWERSPEED", "signature": "#define LOWERSPEED"}, {"kind": "macro", "line": 39, "name": "RAISESPEED", "signature": "#define RAISESPEED"}, {"kind": "macro", "line": 41, "name": "WEAPONBOTTOM", "signature": "#define WEAPONBOTTOM"}, {"kind": "macro", "line": 42, "name": "WEAPONTOP", "signature": "#define WEAPONTOP"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Sprite animation. Basic data types. Needs fixed point, and BAM angles. Needs to include the precompiled", "id": "progs/doomgeneric/p_pspr.h", "kind": "module", "label": "p_pspr.h", "language": "h", "sha256": "5af811131d25f49f", "symbol_count": 4, "symbols": [{"kind": "struct", "line": 62, "name": "pspdef_t"}, {"kind": "macro", "line": 21, "name": "__P_PSPR__", "signature": "#define __P_PSPR__"}, {"kind": "macro", "line": 44, "name": "FF_FULLBRIGHT", "signature": "#define FF_FULLBRIGHT"}, {"kind": "macro", "line": 45, "name": "FF_FRAMEMASK", "signature": "#define FF_FRAMEMASK"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Archiving: SaveGame I/O. State.", "id": "progs/doomgeneric/p_saveg.c", "kind": "module", "label": "p_saveg.c", "language": "c", "sha256": "00523068acd9def9", "symbol_count": 58, "symbols": [{"kind": "function", "line": 47, "name": "P_TempSaveGameFile", "signature": "char *P_TempSaveGameFile(void)"}, {"kind": "function", "line": 61, "name": "P_SaveGameFile", "signature": "char *P_SaveGameFile(int slot)"}, {"kind": "function", "line": 81, "name": "saveg_read8", "signature": "static byte saveg_read8(void)"}, {"kind": "function", "line": 99, "name": "saveg_write8", "signature": "static void saveg_write8(byte value)"}, {"kind": "function", "line": 112, "name": "saveg_read16", "signature": "static short saveg_read16(void)"}, {"kind": "function", "line": 122, "name": "saveg_write16", "signature": "static void saveg_write16(short value)"}, {"kind": "function", "line": 128, "name": "saveg_read32", "signature": "static int saveg_read32(void)"}, {"kind": "function", "line": 140, "name": "saveg_write32", "signature": "static void saveg_write32(int value)"}, {"kind": "function", "line": 150, "name": "saveg_read_pad", "signature": "static void saveg_read_pad(void)"}, {"kind": "function", "line": 166, "name": "saveg_write_pad", "signature": "static void saveg_write_pad(void)"}, {"kind": "function", "line": 185, "name": "saveg_readp", "signature": "static void *saveg_readp(void)"}, {"kind": "function", "line": 190, "name": "saveg_writep", "signature": "static void saveg_writep(void *p)"}, {"kind": "function", "line": 208, "name": "saveg_read_mapthing_t", "signature": "static void saveg_read_mapthing_t(mapthing_t *str)"}, {"kind": "function", "line": 226, "name": "saveg_write_mapthing_t", "signature": "static void saveg_write_mapthing_t(mapthing_t *str)"}, {"kind": "function", "line": 248, "name": "saveg_read_actionf_t", "signature": "static void saveg_read_actionf_t(actionf_t *str)"}, {"kind": "function", "line": 254, "name": "saveg_write_actionf_t", "signature": "static void saveg_write_actionf_t(actionf_t *str)"}, {"kind": "function", "line": 273, "name": "saveg_read_thinker_t", "signature": "static void saveg_read_thinker_t(thinker_t *str)"}, {"kind": "function", "line": 285, "name": "saveg_write_thinker_t", "signature": "static void saveg_write_thinker_t(thinker_t *str)"}, {"kind": "function", "line": 301, "name": "saveg_read_mobj_t", "signature": "static void saveg_read_mobj_t(mobj_t *str)"}, {"kind": "function", "line": 421, "name": "saveg_write_mobj_t", "signature": "static void saveg_write_mobj_t(mobj_t *str)"}, {"kind": "function", "line": 541, "name": "saveg_read_ticcmd_t", "signature": "static void saveg_read_ticcmd_t(ticcmd_t *str)"}, {"kind": "function", "line": 563, "name": "saveg_write_ticcmd_t", "signature": "static void saveg_write_ticcmd_t(ticcmd_t *str)"}, {"kind": "function", "line": 589, "name": "saveg_read_pspdef_t", "signature": "static void saveg_read_pspdef_t(pspdef_t *str)"}, {"kind": "function", "line": 615, "name": "saveg_write_pspdef_t", "signature": "static void saveg_write_pspdef_t(pspdef_t *str)"}, {"kind": "function", "line": 641, "name": "saveg_read_player_t", "signature": "static void saveg_read_player_t(player_t *str)"}, {"kind": "function", "line": 772, "name": "saveg_write_player_t", "signature": "static void saveg_write_player_t(player_t *str)"}, {"kind": "function", "line": 908, "name": "saveg_read_ceiling_t", "signature": "static void saveg_read_ceiling_t(ceiling_t *str)"}, {"kind": "function", "line": 944, "name": "saveg_write_ceiling_t", "signature": "static void saveg_write_ceiling_t(ceiling_t *str)"}, {"kind": "function", "line": 981, "name": "saveg_read_vldoor_t", "signature": "static void saveg_read_vldoor_t(vldoor_t *str)"}, {"kind": "function", "line": 1011, "name": "saveg_write_vldoor_t", "signature": "static void saveg_write_vldoor_t(vldoor_t *str)"}, {"kind": "function", "line": 1042, "name": "saveg_read_floormove_t", "signature": "static void saveg_read_floormove_t(floormove_t *str)"}, {"kind": "function", "line": 1075, "name": "saveg_write_floormove_t", "signature": "static void saveg_write_floormove_t(floormove_t *str)"}, {"kind": "function", "line": 1109, "name": "saveg_read_plat_t", "signature": "static void saveg_read_plat_t(plat_t *str)"}, {"kind": "function", "line": 1151, "name": "saveg_write_plat_t", "signature": "static void saveg_write_plat_t(plat_t *str)"}, {"kind": "function", "line": 1194, "name": "saveg_read_lightflash_t", "signature": "static void saveg_read_lightflash_t(lightflash_t *str)"}, {"kind": "function", "line": 1221, "name": "saveg_write_lightflash_t", "signature": "static void saveg_write_lightflash_t(lightflash_t *str)"}, {"kind": "function", "line": 1249, "name": "saveg_read_strobe_t", "signature": "static void saveg_read_strobe_t(strobe_t *str)"}, {"kind": "function", "line": 1276, "name": "saveg_write_strobe_t", "signature": "static void saveg_write_strobe_t(strobe_t *str)"}, {"kind": "function", "line": 1304, "name": "saveg_read_glow_t", "signature": "static void saveg_read_glow_t(glow_t *str)"}, {"kind": "function", "line": 1325, "name": "saveg_write_glow_t", "signature": "static void saveg_write_glow_t(glow_t *str)"}, {"kind": "function", "line": 1347, "name": "P_WriteSaveGameHeader", "signature": "void P_WriteSaveGameHeader(char *description)"}, {"kind": "function", "line": 1379, "name": "P_ReadSaveGameHeader", "signature": "boolean P_ReadSaveGameHeader(void)"}, {"kind": "function", "line": 1419, "name": "P_ReadSaveGameEOF", "signature": "boolean P_ReadSaveGameEOF(void)"}, {"kind": "function", "line": 1432, "name": "P_WriteSaveGameEOF", "signature": "void P_WriteSaveGameEOF(void)"}, {"doc": "P_ArchivePlayers", "kind": "function", "line": 1440, "name": "P_ArchivePlayers", "signature": "void P_ArchivePlayers (void)"}, {"doc": "P_UnArchivePlayers", "kind": "function", "line": 1460, "name": "P_UnArchivePlayers", "signature": "void P_UnArchivePlayers (void)"}, {"doc": "P_ArchiveWorld", "kind": "function", "line": 1484, "name": "P_ArchiveWorld", "signature": "void P_ArchiveWorld (void)"}, {"doc": "P_UnArchiveWorld", "kind": "function", "line": 1532, "name": "P_UnArchiveWorld", "signature": "void P_UnArchiveWorld (void)"}, {"doc": "P_ArchiveThinkers", "kind": "function", "line": 1592, "name": "P_ArchiveThinkers", "signature": "void P_ArchiveThinkers (void)"}, {"doc": "P_UnArchiveThinkers", "kind": "function", "line": 1620, "name": "P_UnArchiveThinkers", "signature": "void P_UnArchiveThinkers (void)"}, {"doc": "Things to handle: T_MoveCeiling, (ceiling_t: sector_t * swizzle), - active list T_VerticalDoor, (vldoor_t: sector_t * swizzle), T_MoveFloor, (floormove_t: sector_t * swizzle), T_LightFlash, (lightflash_t: sector_t * swizzle), T_StrobeFlash, (strobe_t: sector_t *), T_Glow, (glow_t: sector_t *), T_PlatRaise, (plat_t: sector_t *), - active list", "kind": "function", "line": 1704, "name": "P_ArchiveSpecials", "signature": "void P_ArchiveSpecials (void)"}, {"doc": "P_UnArchiveSpecials", "kind": "function", "line": 1793, "name": "P_UnArchiveSpecials", "signature": "void P_UnArchiveSpecials (void)"}, {"kind": "macro", "line": 36, "name": "SAVEGAME_EOF", "signature": "#define SAVEGAME_EOF"}, {"kind": "macro", "line": 37, "name": "VERSIONSIZE", "signature": "#define VERSIONSIZE"}, {"kind": "macro", "line": 197, "name": "saveg_read_enum", "signature": "#define saveg_read_enum"}, {"kind": "macro", "line": 198, "name": "saveg_write_enum", "signature": "#define saveg_write_enum"}, {"kind": "macro", "line": 266, "name": "saveg_read_think_t", "signature": "#define saveg_read_think_t"}, {"kind": "macro", "line": 267, "name": "saveg_write_think_t", "signature": "#define saveg_write_think_t"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Savegame I/O, archiving, persistence. maximum size of a savegame description temporary filename to use while saving.", "id": "progs/doomgeneric/p_saveg.h", "kind": "module", "label": "p_saveg.h", "language": "h", "sha256": "b4fdcf80f0306af9", "symbol_count": 16, "symbols": [{"kind": "function", "line": 31, "name": "P_TempSaveGameFile", "signature": "char *P_TempSaveGameFile(void);"}, {"kind": "function", "line": 35, "name": "P_SaveGameFile", "signature": "char *P_SaveGameFile(int slot);"}, {"kind": "function", "line": 40, "name": "P_WriteSaveGameHeader", "signature": "void P_WriteSaveGameHeader(char *description);"}, {"kind": "function", "line": 45, "name": "P_WriteSaveGameEOF", "signature": "void P_WriteSaveGameEOF(void);"}, {"doc": "Persistent storage/archiving. These are the load / save game routines.", "kind": "function", "line": 49, "name": "P_ArchivePlayers", "signature": "void P_ArchivePlayers (void);"}, {"kind": "function", "line": 50, "name": "P_UnArchivePlayers", "signature": "void P_UnArchivePlayers (void);"}, {"kind": "function", "line": 51, "name": "P_ArchiveWorld", "signature": "void P_ArchiveWorld (void);"}, {"kind": "function", "line": 52, "name": "P_UnArchiveWorld", "signature": "void P_UnArchiveWorld (void);"}, {"kind": "function", "line": 53, "name": "P_ArchiveThinkers", "signature": "void P_ArchiveThinkers (void);"}, {"kind": "function", "line": 54, "name": "P_UnArchiveThinkers", "signature": "void P_UnArchiveThinkers (void);"}, {"kind": "function", "line": 55, "name": "P_ArchiveSpecials", "signature": "void P_ArchiveSpecials (void);"}, {"kind": "function", "line": 56, "name": "P_UnArchiveSpecials", "signature": "void P_UnArchiveSpecials (void);"}, {"kind": "variable", "line": 58, "name": "save_stream", "signature": "extern FILE *save_stream;"}, {"kind": "variable", "line": 59, "name": "savegame_error", "signature": "extern boolean savegame_error;"}, {"kind": "macro", "line": 21, "name": "__P_SAVEG__", "signature": "#define __P_SAVEG__"}, {"kind": "macro", "line": 27, "name": "SAVESTRINGSIZE", "signature": "#define SAVESTRINGSIZE"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Do all the WAD I/O, get map description, set up initial state and misc. LUTs.", "id": "progs/doomgeneric/p_setup.c", "kind": "module", "label": "p_setup.c", "language": "c", "sha256": "4486a198649812b5", "symbol_count": 17, "symbols": [{"doc": "P_LoadVertexes", "kind": "function", "line": 118, "name": "P_LoadVertexes", "signature": "void P_LoadVertexes (int lump)"}, {"doc": "GetSectorAtNullAddress", "kind": "function", "line": 153, "name": "GetSectorAtNullAddress", "signature": "sector_t* GetSectorAtNullAddress(void)"}, {"doc": "P_LoadSegs", "kind": "function", "line": 172, "name": "P_LoadSegs", "signature": "void P_LoadSegs (int lump)"}, {"doc": "P_LoadSubsectors", "kind": "function", "line": 236, "name": "P_LoadSubsectors", "signature": "void P_LoadSubsectors (int lump)"}, {"doc": "P_LoadSectors", "kind": "function", "line": 265, "name": "P_LoadSectors", "signature": "void P_LoadSectors (int lump)"}, {"doc": "P_LoadNodes", "kind": "function", "line": 298, "name": "P_LoadNodes", "signature": "void P_LoadNodes (int lump)"}, {"doc": "P_LoadThings", "kind": "function", "line": 335, "name": "P_LoadThings", "signature": "void P_LoadThings (int lump)"}, {"doc": "P_LoadLineDefs Also counts secret lines for intermissions.", "kind": "function", "line": 392, "name": "P_LoadLineDefs", "signature": "void P_LoadLineDefs (int lump)"}, {"doc": "P_LoadSideDefs", "kind": "function", "line": 473, "name": "P_LoadSideDefs", "signature": "void P_LoadSideDefs (int lump)"}, {"doc": "P_LoadBlockMap", "kind": "function", "line": 504, "name": "P_LoadBlockMap", "signature": "void P_LoadBlockMap (int lump)"}, {"doc": "P_GroupLines Builds sector line lists and subsector sector numbers. Finds block bounding boxes for sectors.", "kind": "function", "line": 545, "name": "P_GroupLines", "signature": "void P_GroupLines (void)"}, {"kind": "function", "line": 661, "name": "PadRejectArray", "signature": "static void PadRejectArray(byte *array, unsigned int len)"}, {"kind": "function", "line": 712, "name": "P_LoadReject", "signature": "static void P_LoadReject(int lumpnum)"}, {"kind": "function", "line": 744, "name": "P_SetupLevel", "signature": "void\nP_SetupLevel\n( int\t\tepisode,\n int\t\tmap,\n int\t\tplayermask,\n skill_t\tskill)"}, {"doc": "P_Init", "kind": "function", "line": 847, "name": "P_Init", "signature": "void P_Init (void)"}, {"kind": "function", "line": 44, "name": "P_SpawnMapThing", "signature": "void P_SpawnMapThing (mapthing_t* mthing);"}, {"kind": "macro", "line": 105, "name": "MAX_DEATHMATCH_STARTS", "signature": "#define MAX_DEATHMATCH_STARTS"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Setup a game, startup stuff. NOT called by W_Ticker. Fixme.", "id": "progs/doomgeneric/p_setup.h", "kind": "module", "label": "p_setup.h", "language": "h", "sha256": "5871b9df523ebaf2", "symbol_count": 3, "symbols": [{"kind": "function", "line": 28, "name": "P_SetupLevel", "signature": "void P_SetupLevel ( int episode, int map, int playermask, skill_t skill);"}, {"doc": "Called by startup code.", "kind": "function", "line": 35, "name": "P_Init", "signature": "void P_Init (void);"}, {"kind": "macro", "line": 21, "name": "__P_SETUP__", "signature": "#define __P_SETUP__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: LineOfSight/Visibility checks, uses REJECT Lookup Table. State. P_CheckSight", "id": "progs/doomgeneric/p_sight.c", "kind": "module", "label": "p_sight.c", "language": "c", "sha256": "27f0186b350cf627", "symbol_count": 5, "symbols": [{"kind": "function", "line": 48, "name": "P_DivlineSide", "signature": "int\nP_DivlineSide\n( fixed_t\tx,\n fixed_t\ty,\n divline_t*\tnode )"}, {"kind": "function", "line": 102, "name": "P_InterceptVector2", "signature": "fixed_t\nP_InterceptVector2\n( divline_t*\tv2,\n divline_t*\tv1 )"}, {"doc": "P_CrossSubsector Returns true if strace crosses the given subsector successfully.", "kind": "function", "line": 128, "name": "P_CrossSubsector", "signature": "boolean P_CrossSubsector (int num)"}, {"doc": "P_CrossBSPNode Returns true if strace crosses the given node successfully.", "kind": "function", "line": 258, "name": "P_CrossBSPNode", "signature": "boolean P_CrossBSPNode (int bspnum)"}, {"kind": "function", "line": 301, "name": "P_CheckSight", "signature": "boolean\nP_CheckSight\n( mobj_t*\tt1,\n mobj_t*\tt2 )"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Implements special effects: Texture animation, height or lighting changes according to adjacent sectors, respective utility functions, etc. Line Tag handling. Line and Sector triggers.", "id": "progs/doomgeneric/p_spec.c", "kind": "module", "label": "p_spec.c", "language": "c", "sha256": "96eb670d56dbb742", "symbol_count": 31, "symbols": [{"doc": "Animating textures and planes There is another anim_t used in wi_stuff, unrelated.", "kind": "struct", "line": 55, "name": "anim_t"}, {"doc": "source animation definition", "kind": "struct", "line": 68, "name": "animdef_t"}, {"kind": "function", "line": 143, "name": "P_InitPicAnims", "signature": "void P_InitPicAnims (void)"}, {"kind": "function", "line": 203, "name": "getSide", "signature": "side_t*\ngetSide\n( int\t\tcurrentSector,\n int\t\tline,\n int\t\tside )"}, {"kind": "function", "line": 219, "name": "getSector", "signature": "sector_t*\ngetSector\n( int\t\tcurrentSector,\n int\t\tline,\n int\t\tside )"}, {"kind": "function", "line": 234, "name": "twoSided", "signature": "int\ntwoSided\n( int\tsector,\n int\tline )"}, {"kind": "function", "line": 250, "name": "getNextSector", "signature": "sector_t*\ngetNextSector\n( line_t*\tline,\n sector_t*\tsec )"}, {"doc": "P_FindLowestFloorSurrounding() FIND LOWEST FLOOR HEIGHT IN SURROUNDING SECTORS", "kind": "function", "line": 269, "name": "P_FindLowestFloorSurrounding", "signature": "fixed_t\tP_FindLowestFloorSurrounding(sector_t* sec)"}, {"doc": "P_FindHighestFloorSurrounding() FIND HIGHEST FLOOR HEIGHT IN SURROUNDING SECTORS", "kind": "function", "line": 296, "name": "P_FindHighestFloorSurrounding", "signature": "fixed_t\tP_FindHighestFloorSurrounding(sector_t *sec)"}, {"kind": "function", "line": 330, "name": "P_FindNextHighestFloor", "signature": "fixed_t\nP_FindNextHighestFloor\n( sector_t* sec,\n int currentheight )"}, {"kind": "function", "line": 392, "name": "P_FindLowestCeilingSurrounding", "signature": "fixed_t\nP_FindLowestCeilingSurrounding(sector_t* sec)"}, {"doc": "FIND HIGHEST CEILING IN THE SURROUNDING SECTORS", "kind": "function", "line": 417, "name": "P_FindHighestCeilingSurrounding", "signature": "fixed_t\tP_FindHighestCeilingSurrounding(sector_t* sec)"}, {"kind": "function", "line": 444, "name": "P_FindSectorFromLineTag", "signature": "int\nP_FindSectorFromLineTag\n( line_t*\tline,\n int\t\tstart )"}, {"kind": "function", "line": 464, "name": "P_FindMinSurroundingLight", "signature": "int\nP_FindMinSurroundingLight\n( sector_t*\tsector,\n int\t\tmax )"}, {"kind": "function", "line": 502, "name": "P_CrossSpecialLine", "signature": "void\nP_CrossSpecialLine\n( int\t\tlinenum,\n int\t\tside,\n mobj_t*\tthing )"}, {"kind": "function", "line": 969, "name": "P_ShootSpecialLine", "signature": "void\nP_ShootSpecialLine\n( mobj_t*\tthing,\n line_t*\tline )"}, {"doc": "P_PlayerInSpecialSector Called every tic frame that the player origin is in a special sector", "kind": "function", "line": 1019, "name": "P_PlayerInSpecialSector", "signature": "void P_PlayerInSpecialSector (player_t* player)"}, {"kind": "function", "line": 1093, "name": "P_UpdateSpecials", "signature": "void P_UpdateSpecials (void)"}, {"kind": "function", "line": 1178, "name": "DonutOverrun", "signature": "static void DonutOverrun(fixed_t *s3_floorheight, short *s3_floorpic,\n li..."}, {"doc": "Special Stuff that can not be categorized", "kind": "function", "line": 1257, "name": "EV_DoDonut", "signature": "int EV_DoDonut(line_t*\tline)"}, {"doc": "Parses command line parameters.", "kind": "function", "line": 1374, "name": "P_SpawnSpecials", "signature": "void P_SpawnSpecials (void)"}, {"kind": "variable", "line": 80, "name": "anims", "signature": "extern anim_t anims[MAXANIMS];"}, {"kind": "variable", "line": 81, "name": "lastanim", "signature": "extern anim_t* lastanim;"}, {"kind": "variable", "line": 138, "name": "numlinespecials", "signature": "extern short numlinespecials;"}, {"kind": "variable", "line": 139, "name": "linespeciallist", "signature": "extern line_t* linespeciallist[MAXLINEANIMS];"}, {"kind": "variable", "line": 1185, "name": "numflats", "signature": "extern int numflats;"}, {"kind": "macro", "line": 78, "name": "MAXANIMS", "signature": "#define MAXANIMS"}, {"kind": "macro", "line": 136, "name": "MAXLINEANIMS", "signature": "#define MAXLINEANIMS"}, {"kind": "macro", "line": 327, "name": "MAX_ADJOINING_SECTORS", "signature": "#define MAX_ADJOINING_SECTORS"}, {"kind": "macro", "line": 1175, "name": "DONUT_FLOORHEIGHT_DEFAULT", "signature": "#define DONUT_FLOORHEIGHT_DEFAULT"}, {"kind": "macro", "line": 1176, "name": "DONUT_FLOORPIC_DEFAULT", "signature": "#define DONUT_FLOORPIC_DEFAULT"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: none Implements special effects: Texture animation, height or lighting changes according to adjacent sectors, respective utility functions, etc. End-level timer (-TIMER option)", "id": "progs/doomgeneric/p_spec.h", "kind": "module", "label": "p_spec.h", "language": "h", "sha256": "226e08c902850db2", "symbol_count": 94, "symbols": [{"doc": "P_LIGHTS", "kind": "struct", "line": 121, "name": "fireflicker_t"}, {"kind": "struct", "line": 133, "name": "lightflash_t"}, {"kind": "struct", "line": 147, "name": "strobe_t"}, {"kind": "struct", "line": 162, "name": "glow_t"}, {"doc": "P_SWITCH", "kind": "struct", "line": 206, "name": "switchlist_t"}, {"kind": "struct", "line": 224, "name": "button_t"}, {"kind": "struct", "line": 282, "name": "plat_t"}, {"kind": "struct", "line": 340, "name": "vldoor_t"}, {"kind": "struct", "line": 415, "name": "slidedoor_t"}, {"kind": "struct", "line": 431, "name": "slidename_t"}, {"kind": "struct", "line": 446, "name": "slideframe_t"}, {"kind": "struct", "line": 490, "name": "ceiling_t"}, {"kind": "struct", "line": 581, "name": "floormove_t"}, {"doc": "at game start", "kind": "function", "line": 39, "name": "P_InitPicAnims", "signature": "void P_InitPicAnims (void);"}, {"doc": "at map load", "kind": "function", "line": 42, "name": "P_SpawnSpecials", "signature": "void P_SpawnSpecials (void);"}, {"doc": "every tic", "kind": "function", "line": 45, "name": "P_UpdateSpecials", "signature": "void P_UpdateSpecials (void);"}, {"kind": "function", "line": 55, "name": "P_ShootSpecialLine", "signature": "void P_ShootSpecialLine ( mobj_t* thing, line_t* line );"}, {"kind": "function", "line": 60, "name": "P_CrossSpecialLine", "signature": "void P_CrossSpecialLine ( int linenum, int side, mobj_t* thing );"}, {"kind": "function", "line": 65, "name": "P_PlayerInSpecialSector", "signature": "void P_PlayerInSpecialSector (player_t* player);"}, {"kind": "function", "line": 68, "name": "twoSided", "signature": "int twoSided ( int sector, int line );"}, {"kind": "function", "line": 73, "name": "getSector", "signature": "sector_t* getSector ( int currentSector, int line, int side );"}, {"kind": "function", "line": 79, "name": "getSide", "signature": "side_t* getSide ( int currentSector, int line, int side );"}, {"kind": "function", "line": 84, "name": "P_FindLowestFloorSurrounding", "signature": "fixed_t P_FindLowestFloorSurrounding(sector_t* sec);"}, {"kind": "function", "line": 85, "name": "P_FindHighestFloorSurrounding", "signature": "fixed_t P_FindHighestFloorSurrounding(sector_t* sec);"}, {"kind": "function", "line": 88, "name": "P_FindNextHighestFloor", "signature": "fixed_t P_FindNextHighestFloor ( sector_t* sec, int currentheight );"}, {"kind": "function", "line": 92, "name": "P_FindLowestCeilingSurrounding", "signature": "fixed_t P_FindLowestCeilingSurrounding(sector_t* sec);"}, {"kind": "function", "line": 93, "name": "P_FindHighestCeilingSurrounding", "signature": "fixed_t P_FindHighestCeilingSurrounding(sector_t* sec);"}, {"kind": "function", "line": 96, "name": "P_FindSectorFromLineTag", "signature": "int P_FindSectorFromLineTag ( line_t* line, int start );"}, {"kind": "function", "line": 101, "name": "P_FindMinSurroundingLight", "signature": "int P_FindMinSurroundingLight ( sector_t* sector, int max );"}, {"kind": "function", "line": 106, "name": "getNextSector", "signature": "sector_t* getNextSector ( line_t* line, sector_t* sec );"}, {"doc": "SPECIAL", "kind": "function", "line": 114, "name": "EV_DoDonut", "signature": "int EV_DoDonut(line_t* line);"}, {"kind": "function", "line": 178, "name": "P_SpawnFireFlicker", "signature": "void P_SpawnFireFlicker (sector_t* sector);"}, {"kind": "function", "line": 179, "name": "T_LightFlash", "signature": "void T_LightFlash (lightflash_t* flash);"}, {"kind": "function", "line": 180, "name": "P_SpawnLightFlash", "signature": "void P_SpawnLightFlash (sector_t* sector);"}, {"kind": "function", "line": 181, "name": "T_StrobeFlash", "signature": "void T_StrobeFlash (strobe_t* flash);"}, {"kind": "function", "line": 184, "name": "P_SpawnStrobeFlash", "signature": "void P_SpawnStrobeFlash ( sector_t* sector, int fastOrSlow, int inSync );"}, {"kind": "function", "line": 189, "name": "EV_StartLightStrobing", "signature": "void EV_StartLightStrobing(line_t* line);"}, {"kind": "function", "line": 190, "name": "EV_TurnTagLightsOff", "signature": "void EV_TurnTagLightsOff(line_t* line);"}, {"kind": "function", "line": 193, "name": "EV_LightTurnOn", "signature": "void EV_LightTurnOn ( line_t* line, int bright );"}, {"kind": "function", "line": 197, "name": "T_Glow", "signature": "void T_Glow(glow_t* g);"}, {"kind": "function", "line": 198, "name": "P_SpawnGlowingLight", "signature": "void P_SpawnGlowingLight(sector_t* sector);"}, {"kind": "function", "line": 249, "name": "P_ChangeSwitchTexture", "signature": "void P_ChangeSwitchTexture ( line_t* line, int useAgain );"}, {"kind": "function", "line": 253, "name": "P_InitSwitchList", "signature": "void P_InitSwitchList(void);"}, {"kind": "function", "line": 308, "name": "T_PlatRaise", "signature": "void T_PlatRaise(plat_t* plat);"}, {"kind": "function", "line": 311, "name": "EV_DoPlat", "signature": "int EV_DoPlat ( line_t* line, plattype_e type, int amount );"}, {"kind": "function", "line": 316, "name": "P_AddActivePlat", "signature": "void P_AddActivePlat(plat_t* plat);"}, {"kind": "function", "line": 317, "name": "P_RemoveActivePlat", "signature": "void P_RemoveActivePlat(plat_t* plat);"}, {"kind": "function", "line": 318, "name": "EV_StopPlat", "signature": "void EV_StopPlat(line_t* line);"}, {"kind": "function", "line": 319, "name": "P_ActivateInStasis", "signature": "void P_ActivateInStasis(int tag);"}, {"kind": "function", "line": 365, "name": "EV_VerticalDoor", "signature": "void EV_VerticalDoor ( line_t* line, mobj_t* thing );"}, {"kind": "function", "line": 370, "name": "EV_DoDoor", "signature": "int EV_DoDoor ( line_t* line, vldoor_e type );"}, {"kind": "function", "line": 375, "name": "EV_DoLockedDoor", "signature": "int EV_DoLockedDoor ( line_t* line, vldoor_e type, mobj_t* thing );"}, {"kind": "function", "line": 380, "name": "T_VerticalDoor", "signature": "void T_VerticalDoor (vldoor_t* door);"}, {"kind": "function", "line": 381, "name": "P_SpawnDoorCloseIn30", "signature": "void P_SpawnDoorCloseIn30 (sector_t* sec);"}, {"kind": "function", "line": 384, "name": "P_SpawnDoorRaiseIn5Mins", "signature": "void P_SpawnDoorRaiseIn5Mins ( sector_t* sec, int secnum );"}, {"kind": "function", "line": 464, "name": "P_InitSlidingDoorFrames", "signature": "void P_InitSlidingDoorFrames(void);"}, {"kind": "function", "line": 467, "name": "EV_SlidingDoor", "signature": "void EV_SlidingDoor ( line_t* line, mobj_t* thing );"}, {"kind": "function", "line": 520, "name": "EV_DoCeiling", "signature": "int EV_DoCeiling ( line_t* line, ceiling_e type );"}, {"kind": "function", "line": 524, "name": "T_MoveCeiling", "signature": "void T_MoveCeiling (ceiling_t* ceiling);"}, {"kind": "function", "line": 525, "name": "P_AddActiveCeiling", "signature": "void P_AddActiveCeiling(ceiling_t* c);"}, {"kind": "function", "line": 526, "name": "P_RemoveActiveCeiling", "signature": "void P_RemoveActiveCeiling(ceiling_t* c);"}, {"kind": "function", "line": 527, "name": "EV_CeilingCrushStop", "signature": "int EV_CeilingCrushStop(line_t* line);"}, {"kind": "function", "line": 528, "name": "P_ActivateInStasisCeiling", "signature": "void P_ActivateInStasisCeiling(line_t* line);"}, {"kind": "function", "line": 617, "name": "EV_BuildStairs", "signature": "int EV_BuildStairs ( line_t* line, stair_e type );"}, {"kind": "function", "line": 622, "name": "EV_DoFloor", "signature": "int EV_DoFloor ( line_t* line, floor_e floortype );"}, {"kind": "function", "line": 626, "name": "T_MoveFloor", "signature": "void T_MoveFloor( floormove_t* floor);"}, {"kind": "function", "line": 632, "name": "EV_Teleport", "signature": "int EV_Teleport ( line_t* line, int side, mobj_t* thing );"}, {"doc": "End-level timer (-TIMER option)", "kind": "variable", "line": 30, "name": "levelTimer", "signature": "extern boolean levelTimer;"}, {"kind": "variable", "line": 31, "name": "levelTimeCount", "signature": "extern int levelTimeCount;"}, {"kind": "variable", "line": 246, "name": "buttonlist", "signature": "extern button_t buttonlist[MAXBUTTONS];"}, {"kind": "variable", "line": 306, "name": "activeplats", "signature": "extern plat_t* activeplats[MAXPLATS];"}, {"kind": "variable", "line": 517, "name": "activeceilings", "signature": "extern ceiling_t* activeceilings[MAXCEILINGS];"}, {"kind": "macro", "line": 24, "name": "__P_SPEC__", "signature": "#define __P_SPEC__"}, {"kind": "macro", "line": 35, "name": "MO_TELEPORTMAN", "signature": "#define MO_TELEPORTMAN"}, {"kind": "macro", "line": 173, "name": "GLOWSPEED", "signature": "#define GLOWSPEED"}, {"kind": "macro", "line": 174, "name": "STROBEBRIGHT", "signature": "#define STROBEBRIGHT"}, {"kind": "macro", "line": 175, "name": "FASTDARK", "signature": "#define FASTDARK"}, {"kind": "macro", "line": 176, "name": "SLOWDARK", "signature": "#define SLOWDARK"}, {"kind": "macro", "line": 238, "name": "MAXSWITCHES", "signature": "#define MAXSWITCHES"}, {"kind": "macro", "line": 241, "name": "MAXBUTTONS", "signature": "#define MAXBUTTONS"}, {"kind": "macro", "line": 244, "name": "BUTTONTIME", "signature": "#define BUTTONTIME"}, {"kind": "macro", "line": 301, "name": "PLATWAIT", "signature": "#define PLATWAIT"}, {"kind": "macro", "line": 302, "name": "PLATSPEED", "signature": "#define PLATSPEED"}, {"kind": "macro", "line": 303, "name": "MAXPLATS", "signature": "#define MAXPLATS"}, {"kind": "macro", "line": 361, "name": "VDOORSPEED", "signature": "#define VDOORSPEED"}, {"kind": "macro", "line": 362, "name": "VDOORWAIT", "signature": "#define VDOORWAIT"}, {"kind": "macro", "line": 456, "name": "SNUMFRAMES", "signature": "#define SNUMFRAMES"}, {"kind": "macro", "line": 458, "name": "SDOORWAIT", "signature": "#define SDOORWAIT"}, {"kind": "macro", "line": 459, "name": "SWAITTICS", "signature": "#define SWAITTICS"}, {"kind": "macro", "line": 462, "name": "MAXSLIDEDOORS", "signature": "#define MAXSLIDEDOORS"}, {"kind": "macro", "line": 513, "name": "CEILSPEED", "signature": "#define CEILSPEED"}, {"kind": "macro", "line": 514, "name": "CEILWAIT", "signature": "#define CEILWAIT"}, {"kind": "macro", "line": 515, "name": "MAXCEILINGS", "signature": "#define MAXCEILINGS"}, {"kind": "macro", "line": 597, "name": "FLOORSPEED", "signature": "#define FLOORSPEED"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Switches, buttons. Two-state animation. Exits.", "id": "progs/doomgeneric/p_switch.c", "kind": "module", "label": "p_switch.c", "language": "c", "sha256": "a87e935d528e94a4", "symbol_count": 4, "symbols": [{"doc": "P_InitSwitchList Only called at game initialization.", "kind": "function", "line": 101, "name": "P_InitSwitchList", "signature": "void P_InitSwitchList(void)"}, {"kind": "function", "line": 149, "name": "P_StartButton", "signature": "void\nP_StartButton\n( line_t*\tline,\n bwhere_e\tw,\n int\t\ttexture,\n int\t\ttime )"}, {"kind": "function", "line": 195, "name": "P_ChangeSwitchTexture", "signature": "void\nP_ChangeSwitchTexture\n( line_t*\tline,\n int \t\tuseAgain )"}, {"kind": "function", "line": 270, "name": "P_UseSpecialLine", "signature": "boolean\nP_UseSpecialLine\n( mobj_t*\tthing,\n line_t*\tline,\n int\t\tside )"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Teleportation. Data.", "id": "progs/doomgeneric/p_telept.c", "kind": "module", "label": "p_telept.c", "language": "c", "sha256": "d62ef8128f5bfa38", "symbol_count": 1, "symbols": [{"kind": "function", "line": 42, "name": "EV_Teleport", "signature": "int\nEV_Teleport\n( line_t*\tline,\n int\t\tside,\n mobj_t*\tthing )"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Archiving: SaveGame I/O. Thinker, Ticker.", "id": "progs/doomgeneric/p_tick.c", "kind": "module", "label": "p_tick.c", "language": "c", "sha256": "28efbc242e9807dc", "symbol_count": 6, "symbols": [{"doc": "P_InitThinkers", "kind": "function", "line": 46, "name": "P_InitThinkers", "signature": "void P_InitThinkers (void)"}, {"doc": "P_AddThinker Adds a new thinker at the end of the list.", "kind": "function", "line": 58, "name": "P_AddThinker", "signature": "void P_AddThinker (thinker_t* thinker)"}, {"doc": "P_RemoveThinker Deallocation is lazy -- it will not actually be freed until its thinking turn comes up.", "kind": "function", "line": 73, "name": "P_RemoveThinker", "signature": "void P_RemoveThinker (thinker_t* thinker)"}, {"doc": "P_AllocateThinker Allocates memory and adds a new thinker at the end of the list.", "kind": "function", "line": 85, "name": "P_AllocateThinker", "signature": "void P_AllocateThinker (thinker_t*\tthinker)"}, {"doc": "P_RunThinkers", "kind": "function", "line": 94, "name": "P_RunThinkers", "signature": "void P_RunThinkers (void)"}, {"kind": "function", "line": 123, "name": "P_Ticker", "signature": "void P_Ticker (void)"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: ? Called by C_Ticker, can call G_PlayerExited. Carries out all thinking of monsters and players.", "id": "progs/doomgeneric/p_tick.h", "kind": "module", "label": "p_tick.h", "language": "h", "sha256": "adce8e2c4a03fce9", "symbol_count": 2, "symbols": [{"doc": "Called by C_Ticker, can call G_PlayerExited. Carries out all thinking of monsters and players.", "kind": "function", "line": 29, "name": "P_Ticker", "signature": "void P_Ticker (void);"}, {"kind": "macro", "line": 21, "name": "__P_TICK__", "signature": "#define __P_TICK__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Player related stuff. Bobbing POV/weapon, movement. Pending weapon.", "id": "progs/doomgeneric/p_user.c", "kind": "module", "label": "p_user.c", "language": "c", "sha256": "eb07291c474798c8", "symbol_count": 8, "symbols": [{"kind": "function", "line": 52, "name": "P_Thrust", "signature": "void\nP_Thrust\n( player_t*\tplayer,\n angle_t\tangle,\n fixed_t\tmove )"}, {"doc": "P_CalcHeight Calculate the walking / running height adjustment", "kind": "function", "line": 70, "name": "P_CalcHeight", "signature": "void P_CalcHeight (player_t* player)"}, {"doc": "P_MovePlayer", "kind": "function", "line": 141, "name": "P_MovePlayer", "signature": "void P_MovePlayer (player_t* player)"}, {"kind": "function", "line": 175, "name": "P_DeathThink", "signature": "void P_DeathThink (player_t* player)"}, {"doc": "P_PlayerThink", "kind": "function", "line": 229, "name": "P_PlayerThink", "signature": "void P_PlayerThink (player_t* player)"}, {"kind": "macro", "line": 34, "name": "INVERSECOLORMAP", "signature": "#define INVERSECOLORMAP"}, {"kind": "macro", "line": 42, "name": "MAXBOB", "signature": "#define MAXBOB"}, {"kind": "macro", "line": 173, "name": "ANG5", "signature": "#define ANG5"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: BSP traversal, handling of LineSegs for rendering.", "id": "progs/doomgeneric/r_bsp.c", "kind": "module", "label": "r_bsp.c", "language": "c", "sha256": "89638d168de5d501", "symbol_count": 11, "symbols": [{"doc": "ClipWallSegment Clips the given range of columns and includes it in the new clip list.", "kind": "struct", "line": 73, "name": "cliprange_t"}, {"doc": "R_ClearDrawSegs", "kind": "function", "line": 61, "name": "R_ClearDrawSegs", "signature": "void R_ClearDrawSegs (void)"}, {"kind": "function", "line": 97, "name": "R_ClipSolidWallSegment", "signature": "void\nR_ClipSolidWallSegment\n( int\t\t\tfirst,\n int\t\t\tlast )"}, {"kind": "function", "line": 190, "name": "R_ClipPassWallSegment", "signature": "void\nR_ClipPassWallSegment\n( int\tfirst,\n int\tlast )"}, {"doc": "R_ClearClipSegs", "kind": "function", "line": 238, "name": "R_ClearClipSegs", "signature": "void R_ClearClipSegs (void)"}, {"doc": "R_AddLine Clips the given segment and adds any visible pieces to the line list.", "kind": "function", "line": 252, "name": "R_AddLine", "signature": "void R_AddLine (seg_t*\tline)"}, {"kind": "function", "line": 374, "name": "R_CheckBBox", "signature": "boolean R_CheckBBox (fixed_t*\tbspcoord)"}, {"doc": "R_Subsector Determine floor/ceiling planes. Add sprites of things in sector. Draw one or more line segments.", "kind": "function", "line": 490, "name": "R_Subsector", "signature": "void R_Subsector (int num)"}, {"doc": "RenderBSPNode Renders all subsectors below a given node, traversing subtree recursively. Just call with BSP root.", "kind": "function", "line": 545, "name": "R_RenderBSPNode", "signature": "void R_RenderBSPNode (int bspnum)"}, {"kind": "function", "line": 51, "name": "R_StoreWallRange", "signature": "void R_StoreWallRange ( int start, int stop );"}, {"kind": "macro", "line": 81, "name": "MAXSEGS", "signature": "#define MAXSEGS"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Refresh module, BSP traversal and handling.", "id": "progs/doomgeneric/r_bsp.h", "kind": "module", "label": "r_bsp.h", "language": "h", "sha256": "f8338f7087b57020", "symbol_count": 20, "symbols": [{"doc": "BSP?", "kind": "function", "line": 54, "name": "R_ClearClipSegs", "signature": "void R_ClearClipSegs (void);"}, {"kind": "function", "line": 55, "name": "R_ClearDrawSegs", "signature": "void R_ClearDrawSegs (void);"}, {"kind": "function", "line": 58, "name": "R_RenderBSPNode", "signature": "void R_RenderBSPNode (int bspnum);"}, {"kind": "variable", "line": 25, "name": "curline", "signature": "extern seg_t* curline;"}, {"kind": "variable", "line": 26, "name": "sidedef", "signature": "extern side_t* sidedef;"}, {"kind": "variable", "line": 27, "name": "linedef", "signature": "extern line_t* linedef;"}, {"kind": "variable", "line": 28, "name": "frontsector", "signature": "extern sector_t* frontsector;"}, {"kind": "variable", "line": 29, "name": "backsector", "signature": "extern sector_t* backsector;"}, {"kind": "variable", "line": 31, "name": "rw_x", "signature": "extern int rw_x;"}, {"kind": "variable", "line": 32, "name": "rw_stopx", "signature": "extern int rw_stopx;"}, {"kind": "variable", "line": 34, "name": "segtextured", "signature": "extern boolean segtextured;"}, {"doc": "false if the back side is the same plane", "kind": "variable", "line": 37, "name": "markfloor", "signature": "extern boolean markfloor;"}, {"kind": "variable", "line": 38, "name": "markceiling", "signature": "extern boolean markceiling;"}, {"kind": "variable", "line": 40, "name": "skymap", "signature": "extern boolean skymap;"}, {"kind": "variable", "line": 42, "name": "drawsegs", "signature": "extern drawseg_t drawsegs[MAXDRAWSEGS];"}, {"kind": "variable", "line": 43, "name": "ds_p", "signature": "extern drawseg_t* ds_p;"}, {"kind": "variable", "line": 45, "name": "hscalelight", "signature": "extern lighttable_t** hscalelight;"}, {"kind": "variable", "line": 46, "name": "vscalelight", "signature": "extern lighttable_t** vscalelight;"}, {"kind": "variable", "line": 47, "name": "dscalelight", "signature": "extern lighttable_t** dscalelight;"}, {"kind": "macro", "line": 21, "name": "__R_BSP__", "signature": "#define __R_BSP__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Preparation of data for rendering, generation of lookups, caching, retrieval by name.", "id": "progs/doomgeneric/r_data.c", "kind": "module", "label": "r_data.c", "language": "c", "sha256": "fb019e6ecbd1c17a", "symbol_count": 17, "symbols": [{"kind": "struct", "line": 106, "name": "texture_s"}, {"doc": "A single patch from a texture definition, basically a rectangular area within the texture rectangle.", "kind": "struct", "line": 89, "name": "texpatch_t"}, {"doc": "A maptexturedef_t describes a rectangular texture, which is composed of one or more mappatch_t structures that arrange graphic patches.", "kind": "type_alias", "line": 103, "name": "texture_t", "signature": "typedef struct texture_s texture_t;"}, {"kind": "function", "line": 186, "name": "R_DrawColumnInCache", "signature": "void\nR_DrawColumnInCache\n( column_t*\tpatch,\n byte*\t\tcache,\n int\t\toriginy,\n int\t\tcacheheight )"}, {"doc": "R_GenerateComposite Using the texture definition, the composite texture is created from the patches, and each column is cached.", "kind": "function", "line": 226, "name": "R_GenerateComposite", "signature": "void R_GenerateComposite (int texnum)"}, {"doc": "R_GenerateLookup", "kind": "function", "line": 294, "name": "R_GenerateLookup", "signature": "void R_GenerateLookup (int texnum)"}, {"kind": "function", "line": 383, "name": "R_GetColumn", "signature": "byte*\nR_GetColumn\n( int\t\ttex,\n int\t\tcol )"}, {"kind": "function", "line": 404, "name": "GenerateTextureHashTable", "signature": "static void GenerateTextureHashTable(void)"}, {"doc": "R_InitTextures Initializes the texture list with the textures from the world map.", "kind": "function", "line": 451, "name": "R_InitTextures", "signature": "void R_InitTextures (void)"}, {"doc": "R_InitFlats", "kind": "function", "line": 633, "name": "R_InitFlats", "signature": "void R_InitFlats (void)"}, {"doc": "R_InitSpriteLumps Finds the width and hoffset of all sprites in the wad, so the sprite does not need to be cached completely just for having the header info ready during rendering.", "kind": "function", "line": 655, "name": "R_InitSpriteLumps", "signature": "void R_InitSpriteLumps (void)"}, {"doc": "R_InitColormaps", "kind": "function", "line": 685, "name": "R_InitColormaps", "signature": "void R_InitColormaps (void)"}, {"doc": "R_InitData Locates all the lumps that will be used by all views Must be called after W_Init.", "kind": "function", "line": 703, "name": "R_InitData", "signature": "void R_InitData (void)"}, {"doc": "R_FlatNumForName Retrieval, get a flat number for a flat name.", "kind": "function", "line": 720, "name": "R_FlatNumForName", "signature": "int R_FlatNumForName (char* name)"}, {"doc": "R_CheckTextureNumForName Check whether texture is available. Filter out NoTexture indicator.", "kind": "function", "line": 744, "name": "R_CheckTextureNumForName", "signature": "int\tR_CheckTextureNumForName (char *name)"}, {"doc": "R_TextureNumForName Calls R_CheckTextureNumForName, aborts with error message.", "kind": "function", "line": 775, "name": "R_TextureNumForName", "signature": "int\tR_TextureNumForName (char* name)"}, {"kind": "function", "line": 800, "name": "R_PrecacheLevel", "signature": "void R_PrecacheLevel (void)"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Refresh module, data I/O, caching, retrieval of graphics by name. Retrieve column data for span blitting.", "id": "progs/doomgeneric/r_data.h", "kind": "module", "label": "r_data.h", "language": "h", "sha256": "3c9b4343fbc6428b", "symbol_count": 7, "symbols": [{"kind": "function", "line": 30, "name": "R_GetColumn", "signature": "byte* R_GetColumn ( int tex, int col );"}, {"doc": "I/O, setting up the stuff.", "kind": "function", "line": 36, "name": "R_InitData", "signature": "void R_InitData (void);"}, {"kind": "function", "line": 37, "name": "R_PrecacheLevel", "signature": "void R_PrecacheLevel (void);"}, {"doc": "Retrieval. Floor/ceiling opaque texture tiles, lookup by name. For animation?", "kind": "function", "line": 43, "name": "R_FlatNumForName", "signature": "int R_FlatNumForName (char* name);"}, {"doc": "Called by P_Ticker for switches and animations, returns the texture number for the texture name.", "kind": "function", "line": 48, "name": "R_TextureNumForName", "signature": "int R_TextureNumForName (char *name);"}, {"kind": "function", "line": 49, "name": "R_CheckTextureNumForName", "signature": "int R_CheckTextureNumForName (char *name);"}, {"kind": "macro", "line": 22, "name": "__R_DATA__", "signature": "#define __R_DATA__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Refresh/rendering module, shared data struct definitions. Screenwidth. Some more or less basic data types we depend on.", "id": "progs/doomgeneric/r_defs.h", "kind": "module", "label": "r_defs.h", "language": "h", "sha256": "88b7497aa14ad760", "symbol_count": 25, "symbols": [{"doc": "Forward of LineDefs, for Sectors.", "kind": "struct", "line": 76, "name": "line_s"}, {"kind": "struct", "line": 175, "name": "line_s"}, {"doc": "A SubSector. References a Sector. Basically, this is a list of LineSegs, indicating the visible walls that define (all or some) sides of a convex BSP leaf.", "kind": "struct", "line": 223, "name": "subsector_s"}, {"doc": "?", "kind": "struct", "line": 306, "name": "drawseg_s"}, {"doc": "A vissprite_t is a thing that will be drawn during a refresh. I.e. a sprite object that is partly visible.", "kind": "struct", "line": 338, "name": "vissprite_s"}, {"doc": "Your plain vanilla vertex. Note: transformed values not buffered locally, like some DOOM-alikes (\"wt\", \"WebView\") did.", "kind": "struct", "line": 67, "name": "vertex_t"}, {"doc": "Each sector has a degenmobj_t in its center for sound origin purposes. I suppose this does not handle sound from moving objects (doppler), because position is prolly just buffered, not updated.", "kind": "struct", "line": 84, "name": "degenmobj_t"}, {"doc": "The SECTORS record, at runtime. Stores things/mobjs.", "kind": "struct", "line": 97, "name": "sector_t"}, {"kind": "struct", "line": 140, "name": "side_t"}, {"doc": "The LineSeg.", "kind": "struct", "line": 236, "name": "seg_t"}, {"doc": "BSP node.", "kind": "struct", "line": 261, "name": "node_t"}, {"doc": "Sprites are patches with a special naming convention so they can be recognized by R_InitSprites. The base name is NNNNFx or NNNNFxFx, with x indicating the rotation, x = 0, 1-7. The sprite and frame specified by a thing_t is range checked at run time. A sprite is a patch_t that is assumed to represent a three dimensional object and may have multiple rotations pre drawn. Horizontal flipping is used to save space, thus NNNNF2F5 defines a mirrored patch. Some sprites will only have one picture used for all views: NNNNF0", "kind": "struct", "line": 390, "name": "spriteframe_t"}, {"doc": "A sprite definition: a number of animation frames.", "kind": "struct", "line": 411, "name": "spritedef_t"}, {"doc": "Now what is a visplane, anyway?", "kind": "struct", "line": 423, "name": "visplane_t"}, {"kind": "type_alias", "line": 172, "name": "v1", "signature": "typedef struct line_s { // Vertices, from v1 to v2. vertex_t* v1;"}, {"doc": "A SubSector. References a Sector. Basically, this is a list of LineSegs, indicating the visible walls that define (all or some) sides of a convex BSP leaf.", "kind": "type_alias", "line": 223, "name": "sector", "signature": "typedef struct subsector_s { sector_t* sector;"}, {"doc": "This could be wider for >8 bit display. Indeed, true color support is posibble precalculating 24bpp lightmap/colormap LUT. from darkening PLAYPAL to all black. Could even us emore than 32 levels.", "kind": "type_alias", "line": 298, "name": "lighttable_t", "signature": "typedef byte lighttable_t;"}, {"doc": "?", "kind": "type_alias", "line": 306, "name": "curline", "signature": "typedef struct drawseg_s { seg_t* curline;"}, {"doc": "A vissprite_t is a thing that will be drawn during a refresh. I.e. a sprite object that is partly visible.", "kind": "type_alias", "line": 338, "name": "prev", "signature": "typedef struct vissprite_s { // Doubly linked list. struct vissprite_s* prev;"}, {"kind": "macro", "line": 21, "name": "__R_DEFS__", "signature": "#define __R_DEFS__"}, {"kind": "macro", "line": 46, "name": "SIL_NONE", "signature": "#define SIL_NONE"}, {"kind": "macro", "line": 47, "name": "SIL_BOTTOM", "signature": "#define SIL_BOTTOM"}, {"kind": "macro", "line": 48, "name": "SIL_TOP", "signature": "#define SIL_TOP"}, {"kind": "macro", "line": 49, "name": "SIL_BOTH", "signature": "#define SIL_BOTH"}, {"kind": "macro", "line": 51, "name": "MAXDRAWSEGS", "signature": "#define MAXDRAWSEGS"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: The actual span/column drawing functions. Here find the main potential for optimization, e.g. inline assembly, different algorithms.", "id": "progs/doomgeneric/r_draw.c", "kind": "module", "label": "r_draw.c", "language": "c", "sha256": "b79e3f4967ece801", "symbol_count": 20, "symbols": [{"doc": "A column is a vertical slice/span from a wall texture that, given the DOOM style restrictions on the view orientation, will always have constant z depth. Thus a special case loop for very fast rendering can be used. It has also been used with Wolfenstein 3D.", "kind": "function", "line": 102, "name": "R_DrawColumn", "signature": "void R_DrawColumn (void)"}, {"doc": "UNUSED. Loop unrolled. if 0", "kind": "function", "line": 152, "name": "R_DrawColumn", "signature": "void R_DrawColumn (void)"}, {"kind": "function", "line": 208, "name": "R_DrawColumnLow", "signature": "void R_DrawColumnLow (void)"}, {"doc": "Framebuffer postprocessing. Creates a fuzzy image by copying pixels from adjacent ones to left and right. Used with an all black colormap, this could create the SHADOW effect, i.e. spectres and invisible players.", "kind": "function", "line": 283, "name": "R_DrawFuzzColumn", "signature": "void R_DrawFuzzColumn (void)"}, {"kind": "function", "line": 342, "name": "R_DrawFuzzColumnLow", "signature": "void R_DrawFuzzColumnLow (void)"}, {"kind": "function", "line": 424, "name": "R_DrawTranslatedColumn", "signature": "void R_DrawTranslatedColumn (void)"}, {"kind": "function", "line": 468, "name": "R_DrawTranslatedColumnLow", "signature": "void R_DrawTranslatedColumnLow (void)"}, {"doc": "R_InitTranslationTables Creates the translation tables to map the green color ramp to gray, brown, red. Assumes a given structure of the PLAYPAL. Could be read from a lump instead.", "kind": "function", "line": 530, "name": "R_InitTranslationTables", "signature": "void R_InitTranslationTables (void)"}, {"doc": "Draws the actual span.", "kind": "function", "line": 590, "name": "R_DrawSpan", "signature": "void R_DrawSpan (void)"}, {"doc": "UNUSED. Loop unrolled by 4. if 0", "kind": "function", "line": 646, "name": "R_DrawSpan", "signature": "void R_DrawSpan (void)"}, {"doc": "Again..", "kind": "function", "line": 719, "name": "R_DrawSpanLow", "signature": "void R_DrawSpanLow (void)"}, {"kind": "function", "line": 777, "name": "R_InitBuffer", "signature": "void\nR_InitBuffer\n( int\t\twidth,\n int\t\theight )"}, {"doc": "R_FillBackScreen Fills the back screen with a pattern for variable screen sizes Also draws a beveled edge.", "kind": "function", "line": 812, "name": "R_FillBackScreen", "signature": "void R_FillBackScreen (void)"}, {"kind": "function", "line": 919, "name": "R_VideoErase", "signature": "void\nR_VideoErase\n( unsigned\tofs,\n int\t\tcount )"}, {"doc": "R_DrawViewBorder Draws the border around the view for different size windows?", "kind": "function", "line": 941, "name": "R_DrawViewBorder", "signature": "void R_DrawViewBorder (void)"}, {"kind": "macro", "line": 41, "name": "MAXWIDTH", "signature": "#define MAXWIDTH"}, {"kind": "macro", "line": 42, "name": "MAXHEIGHT", "signature": "#define MAXHEIGHT"}, {"kind": "macro", "line": 45, "name": "SBARHEIGHT", "signature": "#define SBARHEIGHT"}, {"kind": "macro", "line": 257, "name": "FUZZTABLE", "signature": "#define FUZZTABLE"}, {"kind": "macro", "line": 258, "name": "FUZZOFF", "signature": "#define FUZZOFF"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: System specific interface stuff.", "id": "progs/doomgeneric/r_draw.h", "kind": "module", "label": "r_draw.h", "language": "h", "sha256": "e2f1007b60431104", "symbol_count": 32, "symbols": [{"doc": "The span blitting interface. Hook in assembler or system specific BLT here.", "kind": "function", "line": 40, "name": "R_DrawColumn", "signature": "void R_DrawColumn (void);"}, {"kind": "function", "line": 41, "name": "R_DrawColumnLow", "signature": "void R_DrawColumnLow (void);"}, {"doc": "The Spectre/Invisibility effect.", "kind": "function", "line": 44, "name": "R_DrawFuzzColumn", "signature": "void R_DrawFuzzColumn (void);"}, {"kind": "function", "line": 45, "name": "R_DrawFuzzColumnLow", "signature": "void R_DrawFuzzColumnLow (void);"}, {"doc": "Draw with color translation tables, for player sprite rendering, Green/Red/Blue/Indigo shirts.", "kind": "function", "line": 50, "name": "R_DrawTranslatedColumn", "signature": "void R_DrawTranslatedColumn (void);"}, {"kind": "function", "line": 51, "name": "R_DrawTranslatedColumnLow", "signature": "void R_DrawTranslatedColumnLow (void);"}, {"kind": "function", "line": 54, "name": "R_VideoErase", "signature": "void R_VideoErase ( unsigned ofs, int count );"}, {"doc": "Span blitting for rows, floor/ceiling. No Sepctre effect needed.", "kind": "function", "line": 78, "name": "R_DrawSpan", "signature": "void R_DrawSpan (void);"}, {"doc": "Low resolution mode, 160x200?", "kind": "function", "line": 81, "name": "R_DrawSpanLow", "signature": "void R_DrawSpanLow (void);"}, {"kind": "function", "line": 85, "name": "R_InitBuffer", "signature": "void R_InitBuffer ( int width, int height );"}, {"doc": "Initialize color translation tables, for player rendering etc.", "kind": "function", "line": 92, "name": "R_InitTranslationTables", "signature": "void R_InitTranslationTables (void);"}, {"doc": "Rendering function.", "kind": "function", "line": 97, "name": "R_FillBackScreen", "signature": "void R_FillBackScreen (void);"}, {"doc": "If the view size is not full screen, draws a border around it.", "kind": "function", "line": 100, "name": "R_DrawViewBorder", "signature": "void R_DrawViewBorder (void);"}, {"kind": "variable", "line": 26, "name": "dc_colormap", "signature": "extern lighttable_t* dc_colormap;"}, {"kind": "variable", "line": 27, "name": "dc_x", "signature": "extern int dc_x;"}, {"kind": "variable", "line": 28, "name": "dc_yl", "signature": "extern int dc_yl;"}, {"kind": "variable", "line": 29, "name": "dc_yh", "signature": "extern int dc_yh;"}, {"kind": "variable", "line": 30, "name": "dc_iscale", "signature": "extern fixed_t dc_iscale;"}, {"kind": "variable", "line": 31, "name": "dc_texturemid", "signature": "extern fixed_t dc_texturemid;"}, {"doc": "first pixel in a column", "kind": "variable", "line": 34, "name": "dc_source", "signature": "extern byte* dc_source;"}, {"kind": "variable", "line": 58, "name": "ds_y", "signature": "extern int ds_y;"}, {"kind": "variable", "line": 59, "name": "ds_x1", "signature": "extern int ds_x1;"}, {"kind": "variable", "line": 60, "name": "ds_x2", "signature": "extern int ds_x2;"}, {"kind": "variable", "line": 62, "name": "ds_colormap", "signature": "extern lighttable_t* ds_colormap;"}, {"kind": "variable", "line": 64, "name": "ds_xfrac", "signature": "extern fixed_t ds_xfrac;"}, {"kind": "variable", "line": 65, "name": "ds_yfrac", "signature": "extern fixed_t ds_yfrac;"}, {"kind": "variable", "line": 66, "name": "ds_xstep", "signature": "extern fixed_t ds_xstep;"}, {"kind": "variable", "line": 67, "name": "ds_ystep", "signature": "extern fixed_t ds_ystep;"}, {"doc": "start of a 64*64 tile image", "kind": "variable", "line": 70, "name": "ds_source", "signature": "extern byte* ds_source;"}, {"kind": "variable", "line": 72, "name": "translationtables", "signature": "extern byte* translationtables;"}, {"kind": "variable", "line": 73, "name": "dc_translation", "signature": "extern byte* dc_translation;"}, {"kind": "macro", "line": 21, "name": "__R_DRAW__", "signature": "#define __R_DRAW__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Refresh (R_*) module, global header. All the rendering/drawing stuff is here. Binary Angles, sine/cosine/atan lookups. Screen size related parameters. Include the refresh/render data structs.", "id": "progs/doomgeneric/r_local.h", "kind": "module", "label": "r_local.h", "language": "h", "sha256": "e957f7e74dcbff58", "symbol_count": 1, "symbols": [{"kind": "macro", "line": 21, "name": "__R_LOCAL__", "signature": "#define __R_LOCAL__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Rendering main loop and setup functions, utility functions (BSP, geometry, trigonometry). See tables.c, too.", "id": "progs/doomgeneric/r_main.c", "kind": "module", "label": "r_main.c", "language": "c", "sha256": "48a35e73bc9c71c5", "symbol_count": 20, "symbols": [{"kind": "function", "line": 123, "name": "R_AddPointToBox", "signature": "void\nR_AddPointToBox\n( int\t\tx,\n int\t\ty,\n fixed_t*\tbox )"}, {"kind": "function", "line": 146, "name": "R_PointOnSide", "signature": "int\nR_PointOnSide\n( fixed_t\tx,\n fixed_t\ty,\n node_t*\tnode )"}, {"kind": "function", "line": 199, "name": "R_PointOnSegSide", "signature": "int\nR_PointOnSegSide\n( fixed_t\tx,\n fixed_t\ty,\n seg_t*\tline )"}, {"kind": "function", "line": 276, "name": "R_PointToAngle", "signature": "angle_t\nR_PointToAngle\n( fixed_t\tx,\n fixed_t\ty )"}, {"kind": "function", "line": 362, "name": "R_PointToAngle2", "signature": "angle_t\nR_PointToAngle2\n( fixed_t\tx1,\n fixed_t\ty1,\n fixed_t\tx2,\n fixed_t\ty2 )"}, {"kind": "function", "line": 376, "name": "R_PointToDist", "signature": "fixed_t\nR_PointToDist\n( fixed_t\tx,\n fixed_t\ty )"}, {"doc": "R_InitPointToAngle", "kind": "function", "line": 422, "name": "R_InitPointToAngle", "signature": "void R_InitPointToAngle (void)"}, {"doc": "R_ScaleFromGlobalAngle Returns the texture mapping scale for the current line (horizontal span) at the given angle. rw_distance must be calculated first.", "kind": "function", "line": 449, "name": "R_ScaleFromGlobalAngle", "signature": "fixed_t R_ScaleFromGlobalAngle (angle_t visangle)"}, {"doc": "R_InitTables", "kind": "function", "line": 505, "name": "R_InitTables", "signature": "void R_InitTables (void)"}, {"doc": "R_InitTextureMapping", "kind": "function", "line": 540, "name": "R_InitTextureMapping", "signature": "void R_InitTextureMapping (void)"}, {"kind": "function", "line": 610, "name": "R_InitLightTables", "signature": "void R_InitLightTables (void)"}, {"kind": "function", "line": 654, "name": "R_SetViewSize", "signature": "void\nR_SetViewSize\n( int\t\tblocks,\n int\t\tdetail )"}, {"doc": "R_ExecuteSetViewSize", "kind": "function", "line": 667, "name": "R_ExecuteSetViewSize", "signature": "void R_ExecuteSetViewSize (void)"}, {"kind": "function", "line": 767, "name": "R_Init", "signature": "void R_Init (void)"}, {"kind": "function", "line": 794, "name": "R_PointInSubsector", "signature": "subsector_t*\nR_PointInSubsector\n( fixed_t\tx,\n fixed_t\ty )"}, {"doc": "R_SetupFrame", "kind": "function", "line": 823, "name": "R_SetupFrame", "signature": "void R_SetupFrame (player_t* player)"}, {"doc": "R_RenderView", "kind": "function", "line": 863, "name": "R_RenderPlayerView", "signature": "void R_RenderPlayerView (player_t* player)"}, {"kind": "variable", "line": 54, "name": "walllights", "signature": "extern lighttable_t** walllights;"}, {"kind": "macro", "line": 43, "name": "FIELDOFVIEW", "signature": "#define FIELDOFVIEW"}, {"kind": "macro", "line": 608, "name": "DISTMAP", "signature": "#define DISTMAP"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: System specific interface stuff. POV related.", "id": "progs/doomgeneric/r_main.h", "kind": "module", "label": "r_main.h", "language": "h", "sha256": "0938bde8c2599487", "symbol_count": 36, "symbols": [{"doc": "Function pointers to switch refresh/drawing functions. Used to select shadow mode etc.", "kind": "function", "line": 92, "name": "void", "signature": "extern void (*colfunc) (void);"}, {"kind": "function", "line": 103, "name": "R_PointOnSide", "signature": "int R_PointOnSide ( fixed_t x, fixed_t y, node_t* node );"}, {"kind": "function", "line": 109, "name": "R_PointOnSegSide", "signature": "int R_PointOnSegSide ( fixed_t x, fixed_t y, seg_t* line );"}, {"kind": "function", "line": 115, "name": "R_PointToAngle", "signature": "angle_t R_PointToAngle ( fixed_t x, fixed_t y );"}, {"kind": "function", "line": 120, "name": "R_PointToAngle2", "signature": "angle_t R_PointToAngle2 ( fixed_t x1, fixed_t y1, fixed_t x2, fixed_t y2 );"}, {"kind": "function", "line": 127, "name": "R_PointToDist", "signature": "fixed_t R_PointToDist ( fixed_t x, fixed_t y );"}, {"kind": "function", "line": 132, "name": "R_ScaleFromGlobalAngle", "signature": "fixed_t R_ScaleFromGlobalAngle (angle_t visangle);"}, {"kind": "function", "line": 135, "name": "R_PointInSubsector", "signature": "subsector_t* R_PointInSubsector ( fixed_t x, fixed_t y );"}, {"kind": "function", "line": 140, "name": "R_AddPointToBox", "signature": "void R_AddPointToBox ( int x, int y, fixed_t* box );"}, {"doc": "Called by G_Drawer.", "kind": "function", "line": 152, "name": "R_RenderPlayerView", "signature": "void R_RenderPlayerView (player_t *player);"}, {"doc": "Called by startup code.", "kind": "function", "line": 155, "name": "R_Init", "signature": "void R_Init (void);"}, {"doc": "Called by M_Responder.", "kind": "function", "line": 158, "name": "R_SetViewSize", "signature": "void R_SetViewSize (int blocks, int detail);"}, {"doc": "POV related.", "kind": "variable", "line": 32, "name": "viewcos", "signature": "extern fixed_t viewcos;"}, {"kind": "variable", "line": 33, "name": "viewsin", "signature": "extern fixed_t viewsin;"}, {"kind": "variable", "line": 35, "name": "viewwindowx", "signature": "extern int viewwindowx;"}, {"kind": "variable", "line": 36, "name": "viewwindowy", "signature": "extern int viewwindowy;"}, {"kind": "variable", "line": 40, "name": "centerx", "signature": "extern int centerx;"}, {"kind": "variable", "line": 41, "name": "centery", "signature": "extern int centery;"}, {"kind": "variable", "line": 43, "name": "centerxfrac", "signature": "extern fixed_t centerxfrac;"}, {"kind": "variable", "line": 44, "name": "centeryfrac", "signature": "extern fixed_t centeryfrac;"}, {"kind": "variable", "line": 45, "name": "projection", "signature": "extern fixed_t projection;"}, {"kind": "variable", "line": 47, "name": "validcount", "signature": "extern int validcount;"}, {"kind": "variable", "line": 49, "name": "linecount", "signature": "extern int linecount;"}, {"kind": "variable", "line": 50, "name": "loopcount", "signature": "extern int loopcount;"}, {"kind": "variable", "line": 70, "name": "scalelightfixed", "signature": "extern lighttable_t* scalelightfixed[MAXLIGHTSCALE];"}, {"kind": "variable", "line": 73, "name": "extralight", "signature": "extern int extralight;"}, {"kind": "variable", "line": 74, "name": "fixedcolormap", "signature": "extern lighttable_t* fixedcolormap;"}, {"doc": "Blocky/low detail mode. B remove this? 0 = high, 1 = low", "kind": "variable", "line": 85, "name": "detailshift", "signature": "extern int detailshift;"}, {"kind": "macro", "line": 21, "name": "__R_MAIN__", "signature": "#define __R_MAIN__"}, {"kind": "macro", "line": 61, "name": "LIGHTLEVELS", "signature": "#define LIGHTLEVELS"}, {"kind": "macro", "line": 62, "name": "LIGHTSEGSHIFT", "signature": "#define LIGHTSEGSHIFT"}, {"kind": "macro", "line": 64, "name": "MAXLIGHTSCALE", "signature": "#define MAXLIGHTSCALE"}, {"kind": "macro", "line": 65, "name": "LIGHTSCALESHIFT", "signature": "#define LIGHTSCALESHIFT"}, {"kind": "macro", "line": 66, "name": "MAXLIGHTZ", "signature": "#define MAXLIGHTZ"}, {"kind": "macro", "line": 67, "name": "LIGHTZSHIFT", "signature": "#define LIGHTZSHIFT"}, {"kind": "macro", "line": 79, "name": "NUMCOLORMAPS", "signature": "#define NUMCOLORMAPS"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Here is a core component: drawing the floors and ceilings, while maintaining a per column clipping list only. Moreover, the sky areas have to be determined.", "id": "progs/doomgeneric/r_plane.c", "kind": "module", "label": "r_plane.c", "language": "c", "sha256": "19295b2052790f3a", "symbol_count": 9, "symbols": [{"doc": "R_InitPlanes Only at game startup.", "kind": "function", "line": 94, "name": "R_InitPlanes", "signature": "void R_InitPlanes (void)"}, {"kind": "function", "line": 114, "name": "R_MapPlane", "signature": "void\nR_MapPlane\n( int\t\ty,\n int\t\tx1,\n int\t\tx2 )"}, {"doc": "R_ClearPlanes At begining of frame.", "kind": "function", "line": 178, "name": "R_ClearPlanes", "signature": "void R_ClearPlanes (void)"}, {"kind": "function", "line": 211, "name": "R_FindPlane", "signature": "visplane_t*\nR_FindPlane\n( fixed_t\theight,\n int\t\tpicnum,\n int\t\tlightlevel )"}, {"kind": "function", "line": 259, "name": "R_CheckPlane", "signature": "visplane_t*\nR_CheckPlane\n( visplane_t*\tpl,\n int\t\tstart,\n int\t\tstop )"}, {"kind": "function", "line": 324, "name": "R_MakeSpans", "signature": "void\nR_MakeSpans\n( int\t\tx,\n int\t\tt1,\n int\t\tb1,\n int\t\tt2,\n int\t\tb2 )"}, {"doc": "R_DrawPlanes At the end of each frame.", "kind": "function", "line": 360, "name": "R_DrawPlanes", "signature": "void R_DrawPlanes (void)"}, {"kind": "macro", "line": 45, "name": "MAXVISPLANES", "signature": "#define MAXVISPLANES"}, {"kind": "macro", "line": 52, "name": "MAXOPENINGS", "signature": "#define MAXOPENINGS"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Refresh, visplane stuff (floor, ceilings). Visplane related.", "id": "progs/doomgeneric/r_plane.h", "kind": "module", "label": "r_plane.h", "language": "h", "sha256": "766e89765316993a", "symbol_count": 15, "symbols": [{"kind": "function", "line": 43, "name": "R_InitPlanes", "signature": "void R_InitPlanes (void);"}, {"kind": "function", "line": 44, "name": "R_ClearPlanes", "signature": "void R_ClearPlanes (void);"}, {"kind": "function", "line": 47, "name": "R_MapPlane", "signature": "void R_MapPlane ( int y, int x1, int x2 );"}, {"kind": "function", "line": 53, "name": "R_MakeSpans", "signature": "void R_MakeSpans ( int x, int t1, int b1, int t2, int b2 );"}, {"kind": "function", "line": 60, "name": "R_DrawPlanes", "signature": "void R_DrawPlanes (void);"}, {"kind": "function", "line": 63, "name": "R_FindPlane", "signature": "visplane_t* R_FindPlane ( fixed_t height, int picnum, int lightlevel );"}, {"kind": "function", "line": 69, "name": "R_CheckPlane", "signature": "visplane_t* R_CheckPlane ( visplane_t* pl, int start, int stop );"}, {"doc": "Visplane related.", "kind": "variable", "line": 29, "name": "lastopening", "signature": "extern short* lastopening;"}, {"kind": "variable", "line": 34, "name": "floorfunc", "signature": "extern planefunction_t floorfunc;"}, {"kind": "variable", "line": 35, "name": "ceilingfunc_t", "signature": "extern planefunction_t ceilingfunc_t;"}, {"kind": "variable", "line": 37, "name": "floorclip", "signature": "extern short floorclip[SCREENWIDTH];"}, {"kind": "variable", "line": 38, "name": "ceilingclip", "signature": "extern short ceilingclip[SCREENWIDTH];"}, {"kind": "variable", "line": 40, "name": "yslope", "signature": "extern fixed_t yslope[SCREENHEIGHT];"}, {"kind": "variable", "line": 41, "name": "distscale", "signature": "extern fixed_t distscale[SCREENWIDTH];"}, {"kind": "macro", "line": 21, "name": "__R_PLANE__", "signature": "#define __R_PLANE__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: All the clipping: columns, horizontal spans, sky columns.", "id": "progs/doomgeneric/r_segs.c", "kind": "module", "label": "r_segs.c", "language": "c", "sha256": "92afcd82ccb3b602", "symbol_count": 5, "symbols": [{"kind": "function", "line": 96, "name": "R_RenderMaskedSegRange", "signature": "void\nR_RenderMaskedSegRange\n( drawseg_t*\tds,\n int\t\tx1,\n int\t\tx2 )"}, {"kind": "function", "line": 199, "name": "R_RenderSegLoop", "signature": "void R_RenderSegLoop (void)"}, {"kind": "function", "line": 372, "name": "R_StoreWallRange", "signature": "void\nR_StoreWallRange\n( int\tstart,\n int\tstop )"}, {"kind": "macro", "line": 196, "name": "HEIGHTBITS", "signature": "#define HEIGHTBITS"}, {"kind": "macro", "line": 197, "name": "HEIGHTUNIT", "signature": "#define HEIGHTUNIT"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Refresh module, drawing LineSegs from BSP.", "id": "progs/doomgeneric/r_segs.h", "kind": "module", "label": "r_segs.h", "language": "h", "sha256": "90bebfde358f5312", "symbol_count": 2, "symbols": [{"kind": "function", "line": 27, "name": "R_RenderMaskedSegRange", "signature": "void R_RenderMaskedSegRange ( drawseg_t* ds, int x1, int x2 );"}, {"kind": "macro", "line": 21, "name": "__R_SEGS__", "signature": "#define __R_SEGS__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Sky rendering. The DOOM sky is a texture map like any wall, wrapping around. A 1024 columns equal 360 degrees. The default sky map is 256 columns and repeats 4 times on a 320 screen? Needed for FRACUNIT. Needed for Flat retrieval.", "id": "progs/doomgeneric/r_sky.c", "kind": "module", "label": "r_sky.c", "language": "c", "sha256": "2ad5474b2387d51b", "symbol_count": 1, "symbols": [{"doc": "R_InitSkyMap Called whenever the view size changes.", "kind": "function", "line": 47, "name": "R_InitSkyMap", "signature": "void R_InitSkyMap (void)"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Sky rendering. SKY, store the number for name. The sky map is 256*128*4 maps.", "id": "progs/doomgeneric/r_sky.h", "kind": "module", "label": "r_sky.h", "language": "h", "sha256": "03805143d3e5d601", "symbol_count": 6, "symbols": [{"doc": "Called whenever the view size changes.", "kind": "function", "line": 35, "name": "R_InitSkyMap", "signature": "void R_InitSkyMap (void);"}, {"kind": "variable", "line": 31, "name": "skytexture", "signature": "extern int skytexture;"}, {"kind": "variable", "line": 32, "name": "skytexturemid", "signature": "extern int skytexturemid;"}, {"kind": "macro", "line": 21, "name": "__R_SKY__", "signature": "#define __R_SKY__"}, {"kind": "macro", "line": 26, "name": "SKYFLATNAME", "signature": "#define\t\t\tSKYFLATNAME"}, {"kind": "macro", "line": 29, "name": "ANGLETOSKYSHIFT", "signature": "#define ANGLETOSKYSHIFT"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Refresh/render internal state variables (global). Need data structure definitions.", "id": "progs/doomgeneric/r_state.h", "kind": "module", "label": "r_state.h", "language": "h", "sha256": "0778640d51a6815f", "symbol_count": 45, "symbols": [{"doc": "needed for texture pegging", "kind": "variable", "line": 38, "name": "textureheight", "signature": "extern fixed_t* textureheight;"}, {"doc": "needed for pre rendering (fracs)", "kind": "variable", "line": 41, "name": "spritewidth", "signature": "extern fixed_t* spritewidth;"}, {"kind": "variable", "line": 43, "name": "spriteoffset", "signature": "extern fixed_t* spriteoffset;"}, {"kind": "variable", "line": 44, "name": "spritetopoffset", "signature": "extern fixed_t* spritetopoffset;"}, {"kind": "variable", "line": 46, "name": "colormaps", "signature": "extern lighttable_t* colormaps;"}, {"kind": "variable", "line": 48, "name": "viewwidth", "signature": "extern int viewwidth;"}, {"kind": "variable", "line": 49, "name": "scaledviewwidth", "signature": "extern int scaledviewwidth;"}, {"kind": "variable", "line": 50, "name": "viewheight", "signature": "extern int viewheight;"}, {"kind": "variable", "line": 52, "name": "firstflat", "signature": "extern int firstflat;"}, {"doc": "for global animation", "kind": "variable", "line": 55, "name": "flattranslation", "signature": "extern int* flattranslation;"}, {"kind": "variable", "line": 56, "name": "texturetranslation", "signature": "extern int* texturetranslation;"}, {"doc": "Sprite....", "kind": "variable", "line": 60, "name": "firstspritelump", "signature": "extern int firstspritelump;"}, {"kind": "variable", "line": 61, "name": "lastspritelump", "signature": "extern int lastspritelump;"}, {"kind": "variable", "line": 62, "name": "numspritelumps", "signature": "extern int numspritelumps;"}, {"doc": "Lookup tables for map data.", "kind": "variable", "line": 69, "name": "numsprites", "signature": "extern int numsprites;"}, {"kind": "variable", "line": 70, "name": "sprites", "signature": "extern spritedef_t* sprites;"}, {"kind": "variable", "line": 72, "name": "numvertexes", "signature": "extern int numvertexes;"}, {"kind": "variable", "line": 73, "name": "vertexes", "signature": "extern vertex_t* vertexes;"}, {"kind": "variable", "line": 75, "name": "numsegs", "signature": "extern int numsegs;"}, {"kind": "variable", "line": 76, "name": "segs", "signature": "extern seg_t* segs;"}, {"kind": "variable", "line": 78, "name": "numsectors", "signature": "extern int numsectors;"}, {"kind": "variable", "line": 79, "name": "sectors", "signature": "extern sector_t* sectors;"}, {"kind": "variable", "line": 81, "name": "numsubsectors", "signature": "extern int numsubsectors;"}, {"kind": "variable", "line": 82, "name": "subsectors", "signature": "extern subsector_t* subsectors;"}, {"kind": "variable", "line": 84, "name": "numnodes", "signature": "extern int numnodes;"}, {"kind": "variable", "line": 85, "name": "nodes", "signature": "extern node_t* nodes;"}, {"kind": "variable", "line": 87, "name": "numlines", "signature": "extern int numlines;"}, {"kind": "variable", "line": 88, "name": "lines", "signature": "extern line_t* lines;"}, {"kind": "variable", "line": 90, "name": "numsides", "signature": "extern int numsides;"}, {"kind": "variable", "line": 91, "name": "sides", "signature": "extern side_t* sides;"}, {"doc": "POV data.", "kind": "variable", "line": 97, "name": "viewx", "signature": "extern fixed_t viewx;"}, {"kind": "variable", "line": 98, "name": "viewy", "signature": "extern fixed_t viewy;"}, {"kind": "variable", "line": 99, "name": "viewz", "signature": "extern fixed_t viewz;"}, {"kind": "variable", "line": 101, "name": "viewangle", "signature": "extern angle_t viewangle;"}, {"kind": "variable", "line": 102, "name": "viewplayer", "signature": "extern player_t* viewplayer;"}, {"doc": "?", "kind": "variable", "line": 106, "name": "clipangle", "signature": "extern angle_t clipangle;"}, {"kind": "variable", "line": 108, "name": "viewangletox", "signature": "extern int viewangletox[FINEANGLES/2];"}, {"kind": "variable", "line": 109, "name": "xtoviewangle", "signature": "extern angle_t xtoviewangle[SCREENWIDTH+1];"}, {"kind": "variable", "line": 112, "name": "rw_distance", "signature": "extern fixed_t rw_distance;"}, {"kind": "variable", "line": 113, "name": "rw_normalangle", "signature": "extern angle_t rw_normalangle;"}, {"doc": "angle to line origin", "kind": "variable", "line": 118, "name": "rw_angle1", "signature": "extern int rw_angle1;"}, {"doc": "Segs count?", "kind": "variable", "line": 121, "name": "sscount", "signature": "extern int sscount;"}, {"kind": "variable", "line": 123, "name": "floorplane", "signature": "extern visplane_t* floorplane;"}, {"kind": "variable", "line": 124, "name": "ceilingplane", "signature": "extern visplane_t* ceilingplane;"}, {"kind": "macro", "line": 21, "name": "__R_STATE__", "signature": "#define __R_STATE__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Refresh of things, i.e. objects represented by sprites.", "id": "progs/doomgeneric/r_things.c", "kind": "module", "label": "r_things.c", "language": "c", "sha256": "c9fea2b898d4e1a8", "symbol_count": 17, "symbols": [{"kind": "struct", "line": 48, "name": "maskdraw_t"}, {"kind": "function", "line": 100, "name": "R_InstallSpriteLump", "signature": "void\nR_InstallSpriteLump\n( int\t\tlump,\n unsigned\tframe,\n unsigned\trotation,\n boolean\tflipped )"}, {"doc": "R_InitSpriteDefs Pass a null terminated list of sprite names (4 chars exactly) to be used. Builds the sprite rotation matrixes to account for horizontally flipped sprites. Will report an error if the lumps are inconsistant. Only called at startup. Sprite lump names are 4 characters for the actor, a letter for the frame, and a number for the rotation. A sprite that is flippable will have an additional letter/number appended. The rotation character can be 0 to signify no rotations.", "kind": "function", "line": 171, "name": "R_InitSpriteDefs", "signature": "void R_InitSpriteDefs (char** namelist)"}, {"doc": "R_InitSprites Called at program start.", "kind": "function", "line": 291, "name": "R_InitSprites", "signature": "void R_InitSprites (char** namelist)"}, {"doc": "R_ClearSprites Called at frame start.", "kind": "function", "line": 309, "name": "R_ClearSprites", "signature": "void R_ClearSprites (void)"}, {"kind": "function", "line": 320, "name": "R_NewVisSprite", "signature": "vissprite_t* R_NewVisSprite (void)"}, {"kind": "function", "line": 343, "name": "R_DrawMaskedColumn", "signature": "void R_DrawMaskedColumn (column_t* column)"}, {"kind": "function", "line": 389, "name": "R_DrawVisSprite", "signature": "void\nR_DrawVisSprite\n( vissprite_t*\t\tvis,\n int\t\t\tx1,\n int\t\t\tx2 )"}, {"doc": "R_ProjectSprite Generates a vissprite for a thing if it might be visible.", "kind": "function", "line": 444, "name": "R_ProjectSprite", "signature": "void R_ProjectSprite (mobj_t* thing)"}, {"doc": "R_AddSprites During BSP traversal, this adds sprites by sector.", "kind": "function", "line": 605, "name": "R_AddSprites", "signature": "void R_AddSprites (sector_t* sec)"}, {"doc": "R_DrawPSprite", "kind": "function", "line": 638, "name": "R_DrawPSprite", "signature": "void R_DrawPSprite (pspdef_t* psp)"}, {"doc": "R_DrawPlayerSprites", "kind": "function", "line": 738, "name": "R_DrawPlayerSprites", "signature": "void R_DrawPlayerSprites (void)"}, {"kind": "function", "line": 779, "name": "R_SortVisSprites", "signature": "void R_SortVisSprites (void)"}, {"kind": "function", "line": 837, "name": "R_DrawSprite", "signature": "void R_DrawSprite (vissprite_t* spr)"}, {"doc": "R_DrawMasked", "kind": "function", "line": 951, "name": "R_DrawMasked", "signature": "void R_DrawMasked (void)"}, {"kind": "macro", "line": 40, "name": "MINZ", "signature": "#define MINZ"}, {"kind": "macro", "line": 41, "name": "BASEYCENTER", "signature": "#define BASEYCENTER"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Rendering of moving objects, sprites.", "id": "progs/doomgeneric/r_things.h", "kind": "module", "label": "r_things.h", "language": "h", "sha256": "e42430dcb5255351", "symbol_count": 22, "symbols": [{"kind": "function", "line": 46, "name": "R_DrawMaskedColumn", "signature": "void R_DrawMaskedColumn (column_t* column);"}, {"kind": "function", "line": 49, "name": "R_SortVisSprites", "signature": "void R_SortVisSprites (void);"}, {"kind": "function", "line": 51, "name": "R_AddSprites", "signature": "void R_AddSprites (sector_t* sec);"}, {"kind": "function", "line": 52, "name": "R_AddPSprites", "signature": "void R_AddPSprites (void);"}, {"kind": "function", "line": 53, "name": "R_DrawSprites", "signature": "void R_DrawSprites (void);"}, {"kind": "function", "line": 54, "name": "R_InitSprites", "signature": "void R_InitSprites (char** namelist);"}, {"kind": "function", "line": 55, "name": "R_ClearSprites", "signature": "void R_ClearSprites (void);"}, {"kind": "function", "line": 56, "name": "R_DrawMasked", "signature": "void R_DrawMasked (void);"}, {"kind": "function", "line": 59, "name": "R_ClipVisSprite", "signature": "void R_ClipVisSprite ( vissprite_t* vis, int xl, int xh );"}, {"kind": "variable", "line": 27, "name": "vissprites", "signature": "extern vissprite_t vissprites[MAXVISSPRITES];"}, {"kind": "variable", "line": 28, "name": "vissprite_p", "signature": "extern vissprite_t* vissprite_p;"}, {"kind": "variable", "line": 29, "name": "vsprsortedhead", "signature": "extern vissprite_t vsprsortedhead;"}, {"doc": "Constant arrays used for psprite clipping and initializing clipping.", "kind": "variable", "line": 33, "name": "negonearray", "signature": "extern short negonearray[SCREENWIDTH];"}, {"kind": "variable", "line": 34, "name": "screenheightarray", "signature": "extern short screenheightarray[SCREENWIDTH];"}, {"doc": "vars for R_DrawMaskedColumn", "kind": "variable", "line": 37, "name": "mfloorclip", "signature": "extern short* mfloorclip;"}, {"kind": "variable", "line": 38, "name": "mceilingclip", "signature": "extern short* mceilingclip;"}, {"kind": "variable", "line": 39, "name": "spryscale", "signature": "extern fixed_t spryscale;"}, {"kind": "variable", "line": 40, "name": "sprtopscreen", "signature": "extern fixed_t sprtopscreen;"}, {"kind": "variable", "line": 42, "name": "pspritescale", "signature": "extern fixed_t pspritescale;"}, {"kind": "variable", "line": 43, "name": "pspriteiscale", "signature": "extern fixed_t pspriteiscale;"}, {"kind": "macro", "line": 21, "name": "__R_THINGS__", "signature": "#define __R_THINGS__"}, {"kind": "macro", "line": 25, "name": "MAXVISSPRITES", "signature": "#define MAXVISSPRITES"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: none", "id": "progs/doomgeneric/s_sound.c", "kind": "module", "label": "s_sound.c", "language": "c", "sha256": "687c9ee8b66f9012", "symbol_count": 25, "symbols": [{"kind": "struct", "line": 66, "name": "channel_t"}, {"kind": "function", "line": 114, "name": "S_Init", "signature": "void S_Init(int sfxVolume, int musicVolume)"}, {"kind": "function", "line": 146, "name": "S_Shutdown", "signature": "void S_Shutdown(void)"}, {"kind": "function", "line": 152, "name": "S_StopChannel", "signature": "static void S_StopChannel(int cnum)"}, {"kind": "function", "line": 191, "name": "S_Start", "signature": "void S_Start(void)"}, {"kind": "function", "line": 243, "name": "S_StopSound", "signature": "void S_StopSound(mobj_t *origin)"}, {"kind": "function", "line": 262, "name": "S_GetChannel", "signature": "static int S_GetChannel(mobj_t *origin, sfxinfo_t *sfxinfo)"}, {"kind": "function", "line": 323, "name": "S_AdjustSoundParams", "signature": "static int S_AdjustSoundParams(mobj_t *listener, mobj_t *source,\n i..."}, {"kind": "function", "line": 391, "name": "S_StartSound", "signature": "void S_StartSound(void *origin_p, int sfx_id)"}, {"kind": "function", "line": 482, "name": "S_PauseSound", "signature": "void S_PauseSound(void)"}, {"kind": "function", "line": 491, "name": "S_ResumeSound", "signature": "void S_ResumeSound(void)"}, {"kind": "function", "line": 504, "name": "S_UpdateSounds", "signature": "void S_UpdateSounds(mobj_t *listener)"}, {"kind": "function", "line": 571, "name": "S_SetMusicVolume", "signature": "void S_SetMusicVolume(int volume)"}, {"kind": "function", "line": 582, "name": "S_SetSfxVolume", "signature": "void S_SetSfxVolume(int volume)"}, {"kind": "function", "line": 596, "name": "S_StartMusic", "signature": "void S_StartMusic(int m_id)"}, {"kind": "function", "line": 601, "name": "S_ChangeMusic", "signature": "void S_ChangeMusic(int musicnum, int looping)"}, {"kind": "function", "line": 649, "name": "S_MusicPlaying", "signature": "boolean S_MusicPlaying(void)"}, {"kind": "function", "line": 654, "name": "S_StopMusic", "signature": "void S_StopMusic(void)"}, {"kind": "macro", "line": 44, "name": "S_CLIPPING_DIST", "signature": "#define S_CLIPPING_DIST"}, {"kind": "macro", "line": 52, "name": "S_CLOSE_DIST", "signature": "#define S_CLOSE_DIST"}, {"kind": "macro", "line": 56, "name": "S_ATTENUATOR", "signature": "#define S_ATTENUATOR"}, {"kind": "macro", "line": 60, "name": "S_STEREO_SWING", "signature": "#define S_STEREO_SWING"}, {"kind": "macro", "line": 62, "name": "NORM_PITCH", "signature": "#define NORM_PITCH"}, {"kind": "macro", "line": 63, "name": "NORM_PRIORITY", "signature": "#define NORM_PRIORITY"}, {"kind": "macro", "line": 64, "name": "NORM_SEP", "signature": "#define NORM_SEP"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: The not so system specific sound interface. Initializes sound stuff, including volume Sets channels, SFX and music volume, allocates channel buffer, sets S_sfx lookup.", "id": "progs/doomgeneric/s_sound.h", "kind": "module", "label": "s_sound.h", "language": "h", "sha256": "ae05ca9bc2170b54", "symbol_count": 15, "symbols": [{"kind": "function", "line": 32, "name": "S_Init", "signature": "void S_Init(int sfxVolume, int musicVolume);"}, {"kind": "function", "line": 37, "name": "S_Shutdown", "signature": "void S_Shutdown(void);"}, {"kind": "function", "line": 47, "name": "S_Start", "signature": "void S_Start(void);"}, {"kind": "function", "line": 54, "name": "S_StartSound", "signature": "void S_StartSound(void *origin, int sound_id);"}, {"doc": "Stop sound for thing at ", "kind": "function", "line": 57, "name": "S_StopSound", "signature": "void S_StopSound(mobj_t *origin);"}, {"doc": "Start music using from sounds.h", "kind": "function", "line": 61, "name": "S_StartMusic", "signature": "void S_StartMusic(int music_id);"}, {"doc": "Start music using from sounds.h, and set whether looping", "kind": "function", "line": 65, "name": "S_ChangeMusic", "signature": "void S_ChangeMusic(int music_id, int looping);"}, {"doc": "Stops the music fer sure.", "kind": "function", "line": 71, "name": "S_StopMusic", "signature": "void S_StopMusic(void);"}, {"doc": "Stop and resume music, during game PAUSE.", "kind": "function", "line": 74, "name": "S_PauseSound", "signature": "void S_PauseSound(void);"}, {"kind": "function", "line": 75, "name": "S_ResumeSound", "signature": "void S_ResumeSound(void);"}, {"doc": "Updates music & sounds", "kind": "function", "line": 81, "name": "S_UpdateSounds", "signature": "void S_UpdateSounds(mobj_t *listener);"}, {"kind": "function", "line": 83, "name": "S_SetMusicVolume", "signature": "void S_SetMusicVolume(int volume);"}, {"kind": "function", "line": 84, "name": "S_SetSfxVolume", "signature": "void S_SetSfxVolume(int volume);"}, {"kind": "variable", "line": 86, "name": "snd_channels", "signature": "extern int snd_channels;"}, {"kind": "macro", "line": 21, "name": "__S_SOUND__", "signature": "#define __S_SOUND__"}]}, {"doc": "sha1.c - SHA1 hash function", "id": "progs/doomgeneric/sha1.c", "kind": "module", "label": "sha1.c", "language": "c", "sha256": "6dd3c3831615b8e7", "symbol_count": 19, "symbols": [{"kind": "function", "line": 40, "name": "SHA1_Init", "signature": "void SHA1_Init(sha1_context_t *hd)"}, {"doc": "Transform the message X which consists of 16 32-bit-words", "kind": "function", "line": 55, "name": "Transform", "signature": "static void Transform(sha1_context_t *hd, byte *data)"}, {"doc": "Update the message digest with the contents of INBUF with length INLEN.", "kind": "function", "line": 198, "name": "SHA1_Update", "signature": "void SHA1_Update(sha1_context_t *hd, byte *inbuf, size_t inlen)"}, {"kind": "function", "line": 238, "name": "SHA1_Final", "signature": "void SHA1_Final(sha1_digest_t digest, sha1_context_t *hd)"}, {"kind": "function", "line": 303, "name": "SHA1_UpdateInt32", "signature": "void SHA1_UpdateInt32(sha1_context_t *context, unsigned int val)"}, {"kind": "function", "line": 315, "name": "SHA1_UpdateString", "signature": "void SHA1_UpdateString(sha1_context_t *context, char *str)"}, {"kind": "macro", "line": 84, "name": "K1", "signature": "#define K1"}, {"kind": "macro", "line": 85, "name": "K2", "signature": "#define K2"}, {"kind": "macro", "line": 86, "name": "K3", "signature": "#define K3"}, {"kind": "macro", "line": 87, "name": "K4", "signature": "#define K4"}, {"kind": "macro", "line": 88, "name": "F1", "signature": "#define F1(x,y,z)"}, {"kind": "macro", "line": 89, "name": "F2", "signature": "#define F2(x,y,z)"}, {"kind": "macro", "line": 90, "name": "F3", "signature": "#define F3(x,y,z)"}, {"kind": "macro", "line": 91, "name": "F4", "signature": "#define F4(x,y,z)"}, {"kind": "macro", "line": 93, "name": "rol", "signature": "#define rol(x,n)"}, {"kind": "macro", "line": 95, "name": "M", "signature": "#define M(i)"}, {"kind": "macro", "line": 99, "name": "R", "signature": "#define R(a,b,c,d,e,f,k,m)"}, {"kind": "macro", "line": 288, "name": "X", "signature": "#define X(a)"}, {"kind": "macro", "line": 290, "name": "X", "signature": "#define X(a)"}]}, {"doc": "Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: SHA-1 digest.", "id": "progs/doomgeneric/sha1.h", "kind": "module", "label": "sha1.h", "language": "h", "sha256": "80273e50ac3b1907", "symbol_count": 9, "symbols": [{"kind": "struct", "line": 26, "name": "sha1_context_s"}, {"doc": "include \"doomtype.h\"", "kind": "type_alias", "line": 22, "name": "sha1_context_t", "signature": "typedef struct sha1_context_s sha1_context_t;"}, {"kind": "type_alias", "line": 24, "name": "sha1_digest_t", "signature": "typedef byte sha1_digest_t[20];"}, {"kind": "function", "line": 33, "name": "SHA1_Init", "signature": "void SHA1_Init(sha1_context_t *context);"}, {"kind": "function", "line": 34, "name": "SHA1_Update", "signature": "void SHA1_Update(sha1_context_t *context, byte *buf, size_t len);"}, {"kind": "function", "line": 35, "name": "SHA1_Final", "signature": "void SHA1_Final(sha1_digest_t digest, sha1_context_t *context);"}, {"kind": "function", "line": 36, "name": "SHA1_UpdateInt32", "signature": "void SHA1_UpdateInt32(sha1_context_t *context, unsigned int val);"}, {"kind": "function", "line": 37, "name": "SHA1_UpdateString", "signature": "void SHA1_UpdateString(sha1_context_t *context, char *str);"}, {"kind": "macro", "line": 19, "name": "__SHA1_H__", "signature": "#define __SHA1_H__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Created by a sound utility. Kept as a sample, DOOM2 sounds. Information about all the music", "id": "progs/doomgeneric/sounds.c", "kind": "module", "label": "sounds.c", "language": "c", "sha256": "cc955e6f5679ae53", "symbol_count": 3, "symbols": [{"kind": "macro", "line": 31, "name": "MUSIC", "signature": "#define MUSIC(name)"}, {"kind": "macro", "line": 111, "name": "SOUND", "signature": "#define SOUND(name, priority)"}, {"kind": "macro", "line": 113, "name": "SOUND_LINK", "signature": "#define SOUND_LINK(name, priority, link_id, pitch, volume)"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Created by the sound utility written by Dave Taylor. Kept as a sample, DOOM2 sounds. Frozen. the complete set of sound effects", "id": "progs/doomgeneric/sounds.h", "kind": "module", "label": "sounds.h", "language": "h", "sha256": "11d2c0a233fe8a99", "symbol_count": 3, "symbols": [{"doc": "the complete set of sound effects", "kind": "variable", "line": 26, "name": "S_sfx", "signature": "extern sfxinfo_t S_sfx[];"}, {"doc": "the complete set of music", "kind": "variable", "line": 29, "name": "S_music", "signature": "extern musicinfo_t S_music[];"}, {"kind": "macro", "line": 21, "name": "__SOUNDS__", "signature": "#define __SOUNDS__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: The status bar widget code.", "id": "progs/doomgeneric/st_lib.c", "kind": "module", "label": "st_lib.c", "language": "c", "sha256": "ecdd1b524fc4ac8d", "symbol_count": 11, "symbols": [{"kind": "function", "line": 51, "name": "STlib_init", "signature": "void STlib_init(void)"}, {"kind": "function", "line": 59, "name": "STlib_initNum", "signature": "void\nSTlib_initNum\n( st_number_t*\t\tn,\n int\t\t\tx,\n int\t\t\ty,\n patch_t**\t\tpl,\n int*\t\t\tnum,\n bool..."}, {"kind": "function", "line": 84, "name": "STlib_drawNum", "signature": "void\nSTlib_drawNum\n( st_number_t*\tn,\n boolean\trefresh )"}, {"kind": "function", "line": 146, "name": "STlib_updateNum", "signature": "void\nSTlib_updateNum\n( st_number_t*\t\tn,\n boolean\t\trefresh )"}, {"kind": "function", "line": 156, "name": "STlib_initPercent", "signature": "void\nSTlib_initPercent\n( st_percent_t*\t\tp,\n int\t\t\tx,\n int\t\t\ty,\n patch_t**\t\tpl,\n int*\t\t\tnum,\n ..."}, {"kind": "function", "line": 173, "name": "STlib_updatePercent", "signature": "void\nSTlib_updatePercent\n( st_percent_t*\t\tper,\n int\t\t\trefresh )"}, {"kind": "function", "line": 186, "name": "STlib_initMultIcon", "signature": "void\nSTlib_initMultIcon\n( st_multicon_t*\ti,\n int\t\t\tx,\n int\t\t\ty,\n patch_t**\t\til,\n int*\t\t\tinum,..."}, {"kind": "function", "line": 205, "name": "STlib_updateMultIcon", "signature": "void\nSTlib_updateMultIcon\n( st_multicon_t*\tmi,\n boolean\t\trefresh )"}, {"kind": "function", "line": 236, "name": "STlib_initBinIcon", "signature": "void\nSTlib_initBinIcon\n( st_binicon_t*\t\tb,\n int\t\t\tx,\n int\t\t\ty,\n patch_t*\t\ti,\n boolean*\t\tval,\n..."}, {"kind": "function", "line": 255, "name": "STlib_updateBinIcon", "signature": "void\nSTlib_updateBinIcon\n( st_binicon_t*\t\tbi,\n boolean\t\trefresh )"}, {"doc": "in AM_map.c", "kind": "variable", "line": 40, "name": "automapactive", "signature": "extern boolean automapactive;"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: The status bar widget code. We are referring to patches. Typedefs of widgets Number widget", "id": "progs/doomgeneric/st_lib.h", "kind": "module", "label": "st_lib.h", "language": "h", "sha256": "b4b351b3ccbe30cd", "symbol_count": 14, "symbols": [{"kind": "struct", "line": 32, "name": "st_number_t"}, {"doc": "Percent widget (\"child\" of number widget, or, more precisely, contains a number widget.)", "kind": "struct", "line": 64, "name": "st_percent_t"}, {"doc": "Multiple Icon widget", "kind": "struct", "line": 77, "name": "st_multicon_t"}, {"kind": "struct", "line": 106, "name": "st_binicon_t"}, {"doc": "Initializes widget library. More precisely, initialize STMINUS, everything else is done somewhere else.", "kind": "function", "line": 138, "name": "STlib_init", "signature": "void STlib_init(void);"}, {"kind": "function", "line": 144, "name": "STlib_initNum", "signature": "void STlib_initNum ( st_number_t* n, int x, int y, patch_t** pl, int* num, boolean* on, int width );"}, {"kind": "function", "line": 154, "name": "STlib_updateNum", "signature": "void STlib_updateNum ( st_number_t* n, boolean refresh );"}, {"kind": "function", "line": 161, "name": "STlib_initPercent", "signature": "void STlib_initPercent ( st_percent_t* p, int x, int y, patch_t** pl, int* num, boolean* on, patch_t* percent );"}, {"kind": "function", "line": 172, "name": "STlib_updatePercent", "signature": "void STlib_updatePercent ( st_percent_t* per, int refresh );"}, {"kind": "function", "line": 179, "name": "STlib_initMultIcon", "signature": "void STlib_initMultIcon ( st_multicon_t* mi, int x, int y, patch_t** il, int* inum, boolean* on );"}, {"kind": "function", "line": 189, "name": "STlib_updateMultIcon", "signature": "void STlib_updateMultIcon ( st_multicon_t* mi, boolean refresh );"}, {"kind": "function", "line": 196, "name": "STlib_initBinIcon", "signature": "void STlib_initBinIcon ( st_binicon_t* b, int x, int y, patch_t* i, boolean* val, boolean* on );"}, {"kind": "function", "line": 205, "name": "STlib_updateBinIcon", "signature": "void STlib_updateBinIcon ( st_binicon_t* bi, boolean refresh );"}, {"kind": "macro", "line": 20, "name": "__STLIB__", "signature": "#define __STLIB__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Status bar code. Does the face/direction indicator animatin. Does palette indicators as well (red pain/berserk, bright pickup)", "id": "progs/doomgeneric/st_stuff.c", "kind": "module", "label": "st_stuff.c", "language": "c", "sha256": "d22d1bd40509c02c", "symbol_count": 137, "symbols": [{"kind": "function", "line": 416, "name": "ST_refreshBackground", "signature": "void ST_refreshBackground(void)"}, {"kind": "function", "line": 439, "name": "ST_Responder", "signature": "boolean\nST_Responder (event_t* ev)"}, {"kind": "function", "line": 665, "name": "ST_calcPainOffset", "signature": "int ST_calcPainOffset(void)"}, {"doc": "This is a not-very-pretty routine which handles the face states and their timing. the precedence of expressions is: dead > evil grin > turned head > straight ahead", "kind": "function", "line": 688, "name": "ST_updateFaceWidget", "signature": "void ST_updateFaceWidget(void)"}, {"kind": "function", "line": 860, "name": "ST_updateWidgets", "signature": "void ST_updateWidgets(void)"}, {"kind": "function", "line": 924, "name": "ST_Ticker", "signature": "void ST_Ticker (void)"}, {"kind": "function", "line": 936, "name": "ST_doPaletteStuff", "signature": "void ST_doPaletteStuff(void)"}, {"kind": "function", "line": 1001, "name": "ST_drawWidgets", "signature": "void ST_drawWidgets(boolean refresh)"}, {"kind": "function", "line": 1036, "name": "ST_doRefresh", "signature": "void ST_doRefresh(void)"}, {"kind": "function", "line": 1049, "name": "ST_diffDraw", "signature": "void ST_diffDraw(void)"}, {"kind": "function", "line": 1055, "name": "ST_Drawer", "signature": "void ST_Drawer (boolean fullscreen, boolean refresh)"}, {"kind": "function", "line": 1076, "name": "ST_loadUnloadGraphics", "signature": "static void ST_loadUnloadGraphics(load_callback_t callback)"}, {"kind": "function", "line": 1162, "name": "ST_loadCallback", "signature": "static void ST_loadCallback(char *lumpname, patch_t **variable)"}, {"kind": "function", "line": 1167, "name": "ST_loadGraphics", "signature": "void ST_loadGraphics(void)"}, {"kind": "function", "line": 1172, "name": "ST_loadData", "signature": "void ST_loadData(void)"}, {"kind": "function", "line": 1178, "name": "ST_unloadCallback", "signature": "static void ST_unloadCallback(char *lumpname, patch_t **variable)"}, {"kind": "function", "line": 1184, "name": "ST_unloadGraphics", "signature": "void ST_unloadGraphics(void)"}, {"kind": "function", "line": 1189, "name": "ST_unloadData", "signature": "void ST_unloadData(void)"}, {"kind": "function", "line": 1194, "name": "ST_initData", "signature": "void ST_initData(void)"}, {"kind": "function", "line": 1227, "name": "ST_createWidgets", "signature": "void ST_createWidgets(void)"}, {"kind": "function", "line": 1389, "name": "ST_Start", "signature": "void ST_Start (void)"}, {"kind": "function", "line": 1401, "name": "ST_Stop", "signature": "void ST_Stop (void)"}, {"kind": "function", "line": 1411, "name": "ST_Init", "signature": "void ST_Init (void)"}, {"kind": "macro", "line": 68, "name": "STARTREDPALS", "signature": "#define STARTREDPALS"}, {"kind": "macro", "line": 69, "name": "STARTBONUSPALS", "signature": "#define STARTBONUSPALS"}, {"kind": "macro", "line": 70, "name": "NUMREDPALS", "signature": "#define NUMREDPALS"}, {"kind": "macro", "line": 71, "name": "NUMBONUSPALS", "signature": "#define NUMBONUSPALS"}, {"kind": "macro", "line": 73, "name": "RADIATIONPAL", "signature": "#define RADIATIONPAL"}, {"kind": "macro", "line": 77, "name": "ST_FACEPROBABILITY", "signature": "#define ST_FACEPROBABILITY"}, {"kind": "macro", "line": 80, "name": "ST_TOGGLECHAT", "signature": "#define ST_TOGGLECHAT"}, {"kind": "macro", "line": 83, "name": "ST_X", "signature": "#define ST_X"}, {"kind": "macro", "line": 84, "name": "ST_X2", "signature": "#define ST_X2"}, {"kind": "macro", "line": 86, "name": "ST_FX", "signature": "#define ST_FX"}, {"kind": "macro", "line": 87, "name": "ST_FY", "signature": "#define ST_FY"}, {"kind": "macro", "line": 91, "name": "ST_TALLNUMWIDTH", "signature": "#define ST_TALLNUMWIDTH"}, {"kind": "macro", "line": 94, "name": "ST_NUMPAINFACES", "signature": "#define ST_NUMPAINFACES"}, {"kind": "macro", "line": 95, "name": "ST_NUMSTRAIGHTFACES", "signature": "#define ST_NUMSTRAIGHTFACES"}, {"kind": "macro", "line": 96, "name": "ST_NUMTURNFACES", "signature": "#define ST_NUMTURNFACES"}, {"kind": "macro", "line": 97, "name": "ST_NUMSPECIALFACES", "signature": "#define ST_NUMSPECIALFACES"}, {"kind": "macro", "line": 99, "name": "ST_FACESTRIDE", "signature": "#define ST_FACESTRIDE"}, {"kind": "macro", "line": 102, "name": "ST_NUMEXTRAFACES", "signature": "#define ST_NUMEXTRAFACES"}, {"kind": "macro", "line": 104, "name": "ST_NUMFACES", "signature": "#define ST_NUMFACES"}, {"kind": "macro", "line": 107, "name": "ST_TURNOFFSET", "signature": "#define ST_TURNOFFSET"}, {"kind": "macro", "line": 108, "name": "ST_OUCHOFFSET", "signature": "#define ST_OUCHOFFSET"}, {"kind": "macro", "line": 109, "name": "ST_EVILGRINOFFSET", "signature": "#define ST_EVILGRINOFFSET"}, {"kind": "macro", "line": 110, "name": "ST_RAMPAGEOFFSET", "signature": "#define ST_RAMPAGEOFFSET"}, {"kind": "macro", "line": 111, "name": "ST_GODFACE", "signature": "#define ST_GODFACE"}, {"kind": "macro", "line": 112, "name": "ST_DEADFACE", "signature": "#define ST_DEADFACE"}, {"kind": "macro", "line": 114, "name": "ST_FACESX", "signature": "#define ST_FACESX"}, {"kind": "macro", "line": 115, "name": "ST_FACESY", "signature": "#define ST_FACESY"}, {"kind": "macro", "line": 117, "name": "ST_EVILGRINCOUNT", "signature": "#define ST_EVILGRINCOUNT"}, {"kind": "macro", "line": 118, "name": "ST_STRAIGHTFACECOUNT", "signature": "#define ST_STRAIGHTFACECOUNT"}, {"kind": "macro", "line": 119, "name": "ST_TURNCOUNT", "signature": "#define ST_TURNCOUNT"}, {"kind": "macro", "line": 120, "name": "ST_OUCHCOUNT", "signature": "#define ST_OUCHCOUNT"}, {"kind": "macro", "line": 121, "name": "ST_RAMPAGEDELAY", "signature": "#define ST_RAMPAGEDELAY"}, {"kind": "macro", "line": 123, "name": "ST_MUCHPAIN", "signature": "#define ST_MUCHPAIN"}, {"kind": "macro", "line": 135, "name": "ST_AMMOWIDTH", "signature": "#define ST_AMMOWIDTH"}, {"kind": "macro", "line": 136, "name": "ST_AMMOX", "signature": "#define ST_AMMOX"}, {"kind": "macro", "line": 137, "name": "ST_AMMOY", "signature": "#define ST_AMMOY"}, {"kind": "macro", "line": 140, "name": "ST_HEALTHWIDTH", "signature": "#define ST_HEALTHWIDTH"}, {"kind": "macro", "line": 141, "name": "ST_HEALTHX", "signature": "#define ST_HEALTHX"}, {"kind": "macro", "line": 142, "name": "ST_HEALTHY", "signature": "#define ST_HEALTHY"}, {"kind": "macro", "line": 145, "name": "ST_ARMSX", "signature": "#define ST_ARMSX"}, {"kind": "macro", "line": 146, "name": "ST_ARMSY", "signature": "#define ST_ARMSY"}, {"kind": "macro", "line": 147, "name": "ST_ARMSBGX", "signature": "#define ST_ARMSBGX"}, {"kind": "macro", "line": 148, "name": "ST_ARMSBGY", "signature": "#define ST_ARMSBGY"}, {"kind": "macro", "line": 149, "name": "ST_ARMSXSPACE", "signature": "#define ST_ARMSXSPACE"}, {"kind": "macro", "line": 150, "name": "ST_ARMSYSPACE", "signature": "#define ST_ARMSYSPACE"}, {"kind": "macro", "line": 153, "name": "ST_FRAGSX", "signature": "#define ST_FRAGSX"}, {"kind": "macro", "line": 154, "name": "ST_FRAGSY", "signature": "#define ST_FRAGSY"}, {"kind": "macro", "line": 155, "name": "ST_FRAGSWIDTH", "signature": "#define ST_FRAGSWIDTH"}, {"kind": "macro", "line": 158, "name": "ST_ARMORWIDTH", "signature": "#define ST_ARMORWIDTH"}, {"kind": "macro", "line": 159, "name": "ST_ARMORX", "signature": "#define ST_ARMORX"}, {"kind": "macro", "line": 160, "name": "ST_ARMORY", "signature": "#define ST_ARMORY"}, {"kind": "macro", "line": 163, "name": "ST_KEY0WIDTH", "signature": "#define ST_KEY0WIDTH"}, {"kind": "macro", "line": 164, "name": "ST_KEY0HEIGHT", "signature": "#define ST_KEY0HEIGHT"}, {"kind": "macro", "line": 165, "name": "ST_KEY0X", "signature": "#define ST_KEY0X"}, {"kind": "macro", "line": 166, "name": "ST_KEY0Y", "signature": "#define ST_KEY0Y"}, {"kind": "macro", "line": 167, "name": "ST_KEY1WIDTH", "signature": "#define ST_KEY1WIDTH"}, {"kind": "macro", "line": 168, "name": "ST_KEY1X", "signature": "#define ST_KEY1X"}, {"kind": "macro", "line": 169, "name": "ST_KEY1Y", "signature": "#define ST_KEY1Y"}, {"kind": "macro", "line": 170, "name": "ST_KEY2WIDTH", "signature": "#define ST_KEY2WIDTH"}, {"kind": "macro", "line": 171, "name": "ST_KEY2X", "signature": "#define ST_KEY2X"}, {"kind": "macro", "line": 172, "name": "ST_KEY2Y", "signature": "#define ST_KEY2Y"}, {"kind": "macro", "line": 175, "name": "ST_AMMO0WIDTH", "signature": "#define ST_AMMO0WIDTH"}, {"kind": "macro", "line": 176, "name": "ST_AMMO0HEIGHT", "signature": "#define ST_AMMO0HEIGHT"}, {"kind": "macro", "line": 177, "name": "ST_AMMO0X", "signature": "#define ST_AMMO0X"}, {"kind": "macro", "line": 178, "name": "ST_AMMO0Y", "signature": "#define ST_AMMO0Y"}, {"kind": "macro", "line": 179, "name": "ST_AMMO1WIDTH", "signature": "#define ST_AMMO1WIDTH"}, {"kind": "macro", "line": 180, "name": "ST_AMMO1X", "signature": "#define ST_AMMO1X"}, {"kind": "macro", "line": 181, "name": "ST_AMMO1Y", "signature": "#define ST_AMMO1Y"}, {"kind": "macro", "line": 182, "name": "ST_AMMO2WIDTH", "signature": "#define ST_AMMO2WIDTH"}, {"kind": "macro", "line": 183, "name": "ST_AMMO2X", "signature": "#define ST_AMMO2X"}, {"kind": "macro", "line": 184, "name": "ST_AMMO2Y", "signature": "#define ST_AMMO2Y"}, {"kind": "macro", "line": 185, "name": "ST_AMMO3WIDTH", "signature": "#define ST_AMMO3WIDTH"}, {"kind": "macro", "line": 186, "name": "ST_AMMO3X", "signature": "#define ST_AMMO3X"}, {"kind": "macro", "line": 187, "name": "ST_AMMO3Y", "signature": "#define ST_AMMO3Y"}, {"kind": "macro", "line": 191, "name": "ST_MAXAMMO0WIDTH", "signature": "#define ST_MAXAMMO0WIDTH"}, {"kind": "macro", "line": 192, "name": "ST_MAXAMMO0HEIGHT", "signature": "#define ST_MAXAMMO0HEIGHT"}, {"kind": "macro", "line": 193, "name": "ST_MAXAMMO0X", "signature": "#define ST_MAXAMMO0X"}, {"kind": "macro", "line": 194, "name": "ST_MAXAMMO0Y", "signature": "#define ST_MAXAMMO0Y"}, {"kind": "macro", "line": 195, "name": "ST_MAXAMMO1WIDTH", "signature": "#define ST_MAXAMMO1WIDTH"}, {"kind": "macro", "line": 196, "name": "ST_MAXAMMO1X", "signature": "#define ST_MAXAMMO1X"}, {"kind": "macro", "line": 197, "name": "ST_MAXAMMO1Y", "signature": "#define ST_MAXAMMO1Y"}, {"kind": "macro", "line": 198, "name": "ST_MAXAMMO2WIDTH", "signature": "#define ST_MAXAMMO2WIDTH"}, {"kind": "macro", "line": 199, "name": "ST_MAXAMMO2X", "signature": "#define ST_MAXAMMO2X"}, {"kind": "macro", "line": 200, "name": "ST_MAXAMMO2Y", "signature": "#define ST_MAXAMMO2Y"}, {"kind": "macro", "line": 201, "name": "ST_MAXAMMO3WIDTH", "signature": "#define ST_MAXAMMO3WIDTH"}, {"kind": "macro", "line": 202, "name": "ST_MAXAMMO3X", "signature": "#define ST_MAXAMMO3X"}, {"kind": "macro", "line": 203, "name": "ST_MAXAMMO3Y", "signature": "#define ST_MAXAMMO3Y"}, {"kind": "macro", "line": 206, "name": "ST_WEAPON0X", "signature": "#define ST_WEAPON0X"}, {"kind": "macro", "line": 207, "name": "ST_WEAPON0Y", "signature": "#define ST_WEAPON0Y"}, {"kind": "macro", "line": 210, "name": "ST_WEAPON1X", "signature": "#define ST_WEAPON1X"}, {"kind": "macro", "line": 211, "name": "ST_WEAPON1Y", "signature": "#define ST_WEAPON1Y"}, {"kind": "macro", "line": 214, "name": "ST_WEAPON2X", "signature": "#define ST_WEAPON2X"}, {"kind": "macro", "line": 215, "name": "ST_WEAPON2Y", "signature": "#define ST_WEAPON2Y"}, {"kind": "macro", "line": 218, "name": "ST_WEAPON3X", "signature": "#define ST_WEAPON3X"}, {"kind": "macro", "line": 219, "name": "ST_WEAPON3Y", "signature": "#define ST_WEAPON3Y"}, {"kind": "macro", "line": 222, "name": "ST_WEAPON4X", "signature": "#define ST_WEAPON4X"}, {"kind": "macro", "line": 223, "name": "ST_WEAPON4Y", "signature": "#define ST_WEAPON4Y"}, {"kind": "macro", "line": 226, "name": "ST_WEAPON5X", "signature": "#define ST_WEAPON5X"}, {"kind": "macro", "line": 227, "name": "ST_WEAPON5Y", "signature": "#define ST_WEAPON5Y"}, {"kind": "macro", "line": 230, "name": "ST_WPNSX", "signature": "#define ST_WPNSX"}, {"kind": "macro", "line": 231, "name": "ST_WPNSY", "signature": "#define ST_WPNSY"}, {"kind": "macro", "line": 234, "name": "ST_DETHX", "signature": "#define ST_DETHX"}, {"kind": "macro", "line": 235, "name": "ST_DETHY", "signature": "#define ST_DETHY"}, {"kind": "macro", "line": 241, "name": "ST_MSGTEXTX", "signature": "#define ST_MSGTEXTX"}, {"kind": "macro", "line": 242, "name": "ST_MSGTEXTY", "signature": "#define ST_MSGTEXTY"}, {"kind": "macro", "line": 244, "name": "ST_MSGWIDTH", "signature": "#define ST_MSGWIDTH"}, {"kind": "macro", "line": 246, "name": "ST_MSGHEIGHT", "signature": "#define ST_MSGHEIGHT"}, {"kind": "macro", "line": 248, "name": "ST_OUTTEXTX", "signature": "#define ST_OUTTEXTX"}, {"kind": "macro", "line": 249, "name": "ST_OUTTEXTY", "signature": "#define ST_OUTTEXTY"}, {"kind": "macro", "line": 252, "name": "ST_OUTWIDTH", "signature": "#define ST_OUTWIDTH"}, {"kind": "macro", "line": 254, "name": "ST_OUTHEIGHT", "signature": "#define ST_OUTHEIGHT"}, {"kind": "macro", "line": 256, "name": "ST_MAPTITLEX", "signature": "#define ST_MAPTITLEX"}, {"kind": "macro", "line": 259, "name": "ST_MAPTITLEY", "signature": "#define ST_MAPTITLEY"}, {"kind": "macro", "line": 260, "name": "ST_MAPHEIGHT", "signature": "#define ST_MAPHEIGHT"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Status bar code. Does the face/direction indicator animatin. Does palette indicators as well (red pain/berserk, bright pickup) Size of statusbar. Now sensitive for scaling.", "id": "progs/doomgeneric/st_stuff.h", "kind": "module", "label": "st_stuff.h", "language": "h", "sha256": "00c12d7ad00b8d50", "symbol_count": 19, "symbols": [{"doc": "Called by main loop.", "kind": "function", "line": 43, "name": "ST_Ticker", "signature": "void ST_Ticker (void);"}, {"doc": "Called by main loop.", "kind": "function", "line": 46, "name": "ST_Drawer", "signature": "void ST_Drawer (boolean fullscreen, boolean refresh);"}, {"doc": "Called when the console player is spawned on each level.", "kind": "function", "line": 49, "name": "ST_Start", "signature": "void ST_Start (void);"}, {"doc": "Called by startup code.", "kind": "function", "line": 52, "name": "ST_Init", "signature": "void ST_Init (void);"}, {"kind": "variable", "line": 76, "name": "st_backing_screen", "signature": "extern byte *st_backing_screen;"}, {"kind": "variable", "line": 77, "name": "cheat_mus", "signature": "extern cheatseq_t cheat_mus;"}, {"kind": "variable", "line": 78, "name": "cheat_god", "signature": "extern cheatseq_t cheat_god;"}, {"kind": "variable", "line": 79, "name": "cheat_ammo", "signature": "extern cheatseq_t cheat_ammo;"}, {"kind": "variable", "line": 80, "name": "cheat_ammonokey", "signature": "extern cheatseq_t cheat_ammonokey;"}, {"kind": "variable", "line": 81, "name": "cheat_noclip", "signature": "extern cheatseq_t cheat_noclip;"}, {"kind": "variable", "line": 82, "name": "cheat_commercial_noclip", "signature": "extern cheatseq_t cheat_commercial_noclip;"}, {"kind": "variable", "line": 83, "name": "cheat_powerup", "signature": "extern cheatseq_t cheat_powerup[7];"}, {"kind": "variable", "line": 84, "name": "cheat_choppers", "signature": "extern cheatseq_t cheat_choppers;"}, {"kind": "variable", "line": 85, "name": "cheat_clev", "signature": "extern cheatseq_t cheat_clev;"}, {"kind": "variable", "line": 86, "name": "cheat_mypos", "signature": "extern cheatseq_t cheat_mypos;"}, {"kind": "macro", "line": 22, "name": "__STSTUFF_H__", "signature": "#define __STSTUFF_H__"}, {"kind": "macro", "line": 30, "name": "ST_HEIGHT", "signature": "#define ST_HEIGHT"}, {"kind": "macro", "line": 31, "name": "ST_WIDTH", "signature": "#define ST_WIDTH"}, {"kind": "macro", "line": 32, "name": "ST_Y", "signature": "#define ST_Y"}]}, {"id": "progs/doomgeneric/statdump.c", "kind": "module", "label": "statdump.c", "language": "c", "sha256": "af1299bfda45515d", "symbol_count": 11, "symbols": [{"kind": "function", "line": 71, "name": "DiscoverGamemode", "signature": "static void DiscoverGamemode(wbstartstruct_t *stats, int num_stats)"}, {"kind": "function", "line": 130, "name": "GetNumPlayers", "signature": "static int GetNumPlayers(wbstartstruct_t *stats)"}, {"kind": "function", "line": 150, "name": "PrintBanner", "signature": "static void PrintBanner(FILE *stream)"}, {"kind": "function", "line": 155, "name": "PrintPercentage", "signature": "static void PrintPercentage(FILE *stream, int amount, int total)"}, {"kind": "function", "line": 180, "name": "PrintPlayerStats", "signature": "static void PrintPlayerStats(FILE *stream, wbstartstruct_t *stats,\n int player_num)"}, {"kind": "function", "line": 213, "name": "PrintFragsTable", "signature": "static void PrintFragsTable(FILE *stream, wbstartstruct_t *stats)"}, {"kind": "function", "line": 272, "name": "PrintLevelName", "signature": "static void PrintLevelName(FILE *stream, int episode, int level)"}, {"kind": "function", "line": 301, "name": "PrintStats", "signature": "static void PrintStats(FILE *stream, wbstartstruct_t *stats)"}, {"kind": "function", "line": 333, "name": "StatCopy", "signature": "void StatCopy(wbstartstruct_t *stats)"}, {"kind": "function", "line": 343, "name": "StatDump", "signature": "void StatDump(void)"}, {"kind": "macro", "line": 56, "name": "MAX_CAPTURES", "signature": "#define MAX_CAPTURES"}]}, {"id": "progs/doomgeneric/statdump.h", "kind": "module", "label": "statdump.h", "language": "h", "sha256": "751e90ff887c601e", "symbol_count": 3, "symbols": [{"kind": "function", "line": 20, "name": "StatCopy", "signature": "void StatCopy(wbstartstruct_t *stats);"}, {"kind": "function", "line": 21, "name": "StatDump", "signature": "void StatDump(void);"}, {"kind": "macro", "line": 18, "name": "DOOM_STATDUMP_H", "signature": "#define DOOM_STATDUMP_H"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Lookup tables. Do not try to look them up :-). In the order of appearance: int finetangent[4096]\t- Tangens LUT. Should work with BAM fairly well (12 of 16bit, effectively, by shifting). int finesine[10240]\t\t- Sine lookup. Guess what, serves as cosine, too. Remarkable thing is, how to use BAMs with this? int tantoangle[2049]\t- ArcTan LUT, maps tan(angle) to angle fast. Gotta search.", "id": "progs/doomgeneric/tables.c", "kind": "module", "label": "tables.c", "language": "c", "sha256": "01d3e7829691f4af", "symbol_count": 1, "symbols": [{"kind": "function", "line": 41, "name": "SlopeDiv", "signature": "int SlopeDiv(unsigned int num, unsigned int den)"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 1993-2008 Raven Software Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Lookup tables. Do not try to look them up :-). In the order of appearance: int finetangent[4096]\t- Tangens LUT. Should work with BAM fairly well (12 of 16bit, effectively, by shifting). int finesine[10240]\t\t- Sine lookup. Guess what, serves as cosine, too. Remarkable thing is, how to use BAMs with this? int tantoangle[2049]\t- ArcTan LUT, maps tan(angle) to angle fast. Gotta search.", "id": "progs/doomgeneric/tables.h", "kind": "module", "label": "tables.h", "language": "h", "sha256": "66fa027ccaa100e6", "symbol_count": 21, "symbols": [{"doc": "define SLOPERANGE\t\t2048 define SLOPEBITS\t\t11 define DBITS\t\t\t(FRACBITS-SLOPEBITS)", "kind": "type_alias", "line": 80, "name": "angle_t", "signature": "typedef unsigned angle_t;"}, {"doc": "Utility function, called by R_PointToAngle.", "kind": "function", "line": 92, "name": "SlopeDiv", "signature": "int SlopeDiv(unsigned int num, unsigned int den);"}, {"doc": "Effective size is 10240.", "kind": "variable", "line": 49, "name": "finesine", "signature": "extern const fixed_t finesine[5*FINEANGLES/4];"}, {"doc": "Re-use data, is just PI/2 pahse shift.", "kind": "variable", "line": 52, "name": "finecosine", "signature": "extern const fixed_t *finecosine;"}, {"doc": "Effective size is 4096.", "kind": "variable", "line": 56, "name": "finetangent", "signature": "extern const fixed_t finetangent[FINEANGLES/2];"}, {"doc": "Effective size is 2049; The +1 size is to handle the case when x==y without additional checking.", "kind": "variable", "line": 87, "name": "tantoangle", "signature": "extern const angle_t tantoangle[SLOPERANGE+1];"}, {"kind": "macro", "line": 35, "name": "__TABLES__", "signature": "#define __TABLES__"}, {"kind": "macro", "line": 41, "name": "FINEANGLES", "signature": "#define FINEANGLES"}, {"kind": "macro", "line": 42, "name": "FINEMASK", "signature": "#define FINEMASK"}, {"kind": "macro", "line": 46, "name": "ANGLETOFINESHIFT", "signature": "#define ANGLETOFINESHIFT"}, {"kind": "macro", "line": 63, "name": "ANG45", "signature": "#define ANG45"}, {"kind": "macro", "line": 64, "name": "ANG90", "signature": "#define ANG90"}, {"kind": "macro", "line": 65, "name": "ANG180", "signature": "#define ANG180"}, {"kind": "macro", "line": 66, "name": "ANG270", "signature": "#define ANG270"}, {"kind": "macro", "line": 67, "name": "ANG_MAX", "signature": "#define ANG_MAX"}, {"kind": "macro", "line": 69, "name": "ANG1", "signature": "#define ANG1"}, {"kind": "macro", "line": 70, "name": "ANG60", "signature": "#define ANG60"}, {"kind": "macro", "line": 75, "name": "ANG1_X", "signature": "#define ANG1_X"}, {"kind": "macro", "line": 77, "name": "SLOPERANGE", "signature": "#define SLOPERANGE"}, {"kind": "macro", "line": 78, "name": "SLOPEBITS", "signature": "#define SLOPEBITS"}, {"kind": "macro", "line": 79, "name": "DBITS", "signature": "#define DBITS"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Refresh/rendering module, shared data struct definitions. Patches. A patch holds one or more columns. Patches are used for sprites and all masked pictures, and we compose textures from the TEXTURE1/2 lists of patches.", "id": "progs/doomgeneric/v_patch.h", "kind": "module", "label": "v_patch.h", "language": "h", "sha256": "8634ef248b385cd0", "symbol_count": 2, "symbols": [{"doc": "column_t is a list of 0 or more post_t, (byte)-1 terminated", "kind": "type_alias", "line": 47, "name": "column_t", "signature": "typedef post_t column_t;"}, {"kind": "macro", "line": 21, "name": "V_PATCH_H", "signature": "#define V_PATCH_H"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 1993-2008 Raven Software Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Gamma correction LUT stuff. Functions to draw patches (by post) directly to screen. Functions to blit a block to the screen.", "id": "progs/doomgeneric/v_video.c", "kind": "module", "label": "v_video.c", "language": "c", "sha256": "7b3938a3eebfe1fb", "symbol_count": 32, "symbols": [{"doc": "V_MarkRect", "kind": "function", "line": 69, "name": "V_MarkRect", "signature": "void V_MarkRect(int x, int y, int width, int height)"}, {"doc": "V_CopyRect", "kind": "function", "line": 85, "name": "V_CopyRect", "signature": "void V_CopyRect(int srcx, int srcy, byte *source,\n int width, int height,\n ..."}, {"doc": "V_SetPatchClipCallback haleyjd 08/28/10: Added for Strife support. By calling this function, you can setup runtime error checking for patch clipping. Strife never caused errors by drawing patches partway off-screen. Some versions of vanilla DOOM also behaved differently than the default implementation, so this could possibly be extended to those as well for accurate emulation.", "kind": "function", "line": 129, "name": "V_SetPatchClipCallback", "signature": "void V_SetPatchClipCallback(vpatchclipfunc_t func)"}, {"kind": "function", "line": 139, "name": "V_DrawPatch", "signature": "void V_DrawPatch(int x, int y, patch_t *patch)"}, {"kind": "function", "line": 203, "name": "V_DrawPatchFlipped", "signature": "void V_DrawPatchFlipped(int x, int y, patch_t *patch)"}, {"kind": "function", "line": 268, "name": "V_DrawPatchDirect", "signature": "void V_DrawPatchDirect(int x, int y, patch_t *patch)"}, {"kind": "function", "line": 279, "name": "V_DrawTLPatch", "signature": "void V_DrawTLPatch(int x, int y, patch_t * patch)"}, {"kind": "function", "line": 329, "name": "V_DrawXlaPatch", "signature": "void V_DrawXlaPatch(int x, int y, patch_t * patch)"}, {"kind": "function", "line": 378, "name": "V_DrawAltTLPatch", "signature": "void V_DrawAltTLPatch(int x, int y, patch_t * patch)"}, {"kind": "function", "line": 428, "name": "V_DrawShadowedPatch", "signature": "void V_DrawShadowedPatch(int x, int y, patch_t *patch)"}, {"kind": "function", "line": 482, "name": "V_LoadTintTable", "signature": "void V_LoadTintTable(void)"}, {"kind": "function", "line": 493, "name": "V_LoadXlaTable", "signature": "void V_LoadXlaTable(void)"}, {"kind": "function", "line": 503, "name": "V_DrawBlock", "signature": "void V_DrawBlock(int x, int y, int width, int height, byte *src)"}, {"kind": "function", "line": 529, "name": "V_DrawFilledBox", "signature": "void V_DrawFilledBox(int x, int y, int w, int h, int c)"}, {"kind": "function", "line": 549, "name": "V_DrawHorizLine", "signature": "void V_DrawHorizLine(int x, int y, int w, int c)"}, {"kind": "function", "line": 562, "name": "V_DrawVertLine", "signature": "void V_DrawVertLine(int x, int y, int h, int c)"}, {"kind": "function", "line": 576, "name": "V_DrawBox", "signature": "void V_DrawBox(int x, int y, int w, int h, int c)"}, {"kind": "function", "line": 589, "name": "V_DrawRawScreen", "signature": "void V_DrawRawScreen(byte *raw)"}, {"doc": "V_Init", "kind": "function", "line": 597, "name": "V_Init", "signature": "void V_Init (void)"}, {"kind": "function", "line": 606, "name": "V_UseBuffer", "signature": "void V_UseBuffer(byte *buffer)"}, {"kind": "function", "line": 613, "name": "V_RestoreBuffer", "signature": "void V_RestoreBuffer(void)"}, {"kind": "function", "line": 653, "name": "WritePCXfile", "signature": "void WritePCXfile(char *filename, byte *data,\n int width, int height,\n ..."}, {"kind": "function", "line": 711, "name": "error_fn", "signature": "static void error_fn(png_structp p, png_const_charp s)"}, {"kind": "function", "line": 716, "name": "warning_fn", "signature": "static void warning_fn(png_structp p, png_const_charp s)"}, {"kind": "function", "line": 721, "name": "WritePNGfile", "signature": "void WritePNGfile(char *filename, byte *data,\n int width, int height,\n ..."}, {"kind": "function", "line": 791, "name": "V_ScreenShot", "signature": "void V_ScreenShot(char *format)"}, {"kind": "function", "line": 846, "name": "V_DrawMouseSpeedBox", "signature": "void V_DrawMouseSpeedBox(int speed)"}, {"doc": "ifdef HAVE_LIBPNG", "kind": "variable", "line": 800, "name": "png_screenshots", "signature": "extern int png_screenshots;"}, {"kind": "variable", "line": 848, "name": "usemouse", "signature": "extern int usemouse;"}, {"kind": "macro", "line": 46, "name": "RANGECHECK", "signature": "#define RANGECHECK"}, {"kind": "macro", "line": 843, "name": "MOUSE_SPEED_BOX_WIDTH", "signature": "#define MOUSE_SPEED_BOX_WIDTH"}, {"kind": "macro", "line": 844, "name": "MOUSE_SPEED_BOX_HEIGHT", "signature": "#define MOUSE_SPEED_BOX_HEIGHT"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Gamma correction LUT. Functions to draw patches (by post) directly to screen. Functions to blit a block to the screen. Needed because we are refering to patches.", "id": "progs/doomgeneric/v_video.h", "kind": "module", "label": "v_video.h", "language": "h", "sha256": "16d6585767d8f8eb", "symbol_count": 27, "symbols": [{"kind": "function", "line": 45, "name": "V_SetPatchClipCallback", "signature": "void V_SetPatchClipCallback(vpatchclipfunc_t func);"}, {"doc": "Allocates buffer screens, call before R_Init.", "kind": "function", "line": 49, "name": "V_Init", "signature": "void V_Init (void);"}, {"kind": "function", "line": 53, "name": "V_CopyRect", "signature": "void V_CopyRect(int srcx, int srcy, byte *source, int width, int height, int destx, int desty);"}, {"kind": "function", "line": 57, "name": "V_DrawPatch", "signature": "void V_DrawPatch(int x, int y, patch_t *patch);"}, {"kind": "function", "line": 58, "name": "V_DrawPatchFlipped", "signature": "void V_DrawPatchFlipped(int x, int y, patch_t *patch);"}, {"kind": "function", "line": 59, "name": "V_DrawTLPatch", "signature": "void V_DrawTLPatch(int x, int y, patch_t *patch);"}, {"kind": "function", "line": 60, "name": "V_DrawAltTLPatch", "signature": "void V_DrawAltTLPatch(int x, int y, patch_t * patch);"}, {"kind": "function", "line": 61, "name": "V_DrawShadowedPatch", "signature": "void V_DrawShadowedPatch(int x, int y, patch_t *patch);"}, {"kind": "function", "line": 62, "name": "V_DrawXlaPatch", "signature": "void V_DrawXlaPatch(int x, int y, patch_t * patch);"}, {"kind": "function", "line": 63, "name": "V_DrawPatchDirect", "signature": "void V_DrawPatchDirect(int x, int y, patch_t *patch);"}, {"kind": "function", "line": 67, "name": "V_DrawBlock", "signature": "void V_DrawBlock(int x, int y, int width, int height, byte *src);"}, {"kind": "function", "line": 69, "name": "V_MarkRect", "signature": "void V_MarkRect(int x, int y, int width, int height);"}, {"kind": "function", "line": 71, "name": "V_DrawFilledBox", "signature": "void V_DrawFilledBox(int x, int y, int w, int h, int c);"}, {"kind": "function", "line": 72, "name": "V_DrawHorizLine", "signature": "void V_DrawHorizLine(int x, int y, int w, int c);"}, {"kind": "function", "line": 73, "name": "V_DrawVertLine", "signature": "void V_DrawVertLine(int x, int y, int h, int c);"}, {"kind": "function", "line": 74, "name": "V_DrawBox", "signature": "void V_DrawBox(int x, int y, int w, int h, int c);"}, {"kind": "function", "line": 78, "name": "V_DrawRawScreen", "signature": "void V_DrawRawScreen(byte *raw);"}, {"kind": "function", "line": 82, "name": "V_UseBuffer", "signature": "void V_UseBuffer(byte *buffer);"}, {"kind": "function", "line": 86, "name": "V_RestoreBuffer", "signature": "void V_RestoreBuffer(void);"}, {"kind": "function", "line": 92, "name": "V_ScreenShot", "signature": "void V_ScreenShot(char *format);"}, {"kind": "function", "line": 97, "name": "V_LoadTintTable", "signature": "void V_LoadTintTable(void);"}, {"kind": "function", "line": 103, "name": "V_LoadXlaTable", "signature": "void V_LoadXlaTable(void);"}, {"kind": "function", "line": 105, "name": "V_DrawMouseSpeedBox", "signature": "void V_DrawMouseSpeedBox(int speed);"}, {"kind": "variable", "line": 37, "name": "dirtybox", "signature": "extern int dirtybox[4];"}, {"kind": "variable", "line": 39, "name": "tinttable", "signature": "extern byte *tinttable;"}, {"kind": "macro", "line": 23, "name": "__V_VIDEO__", "signature": "#define __V_VIDEO__"}, {"kind": "macro", "line": 34, "name": "CENTERY", "signature": "#define CENTERY"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Generate a checksum of the WAD directory.", "id": "progs/doomgeneric/w_checksum.c", "kind": "module", "label": "w_checksum.c", "language": "c", "sha256": "51785b9bfaedd06b", "symbol_count": 3, "symbols": [{"kind": "function", "line": 31, "name": "GetFileNumber", "signature": "static int GetFileNumber(wad_file_t *handle)"}, {"kind": "function", "line": 57, "name": "ChecksumAddLump", "signature": "static void ChecksumAddLump(sha1_context_t *sha1_context, lumpinfo_t *lump)"}, {"kind": "function", "line": 68, "name": "W_Checksum", "signature": "void W_Checksum(sha1_digest_t digest)"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Generate a checksum of the WAD directory.", "id": "progs/doomgeneric/w_checksum.h", "kind": "module", "label": "w_checksum.h", "language": "h", "sha256": "a38a2efbd83629a8", "symbol_count": 2, "symbols": [{"kind": "function", "line": 24, "name": "W_Checksum", "signature": "extern void W_Checksum(sha1_digest_t digest);"}, {"kind": "macro", "line": 20, "name": "W_CHECKSUM_H", "signature": "#define W_CHECKSUM_H"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: WAD I/O functions.", "id": "progs/doomgeneric/w_file.c", "kind": "module", "label": "w_file.c", "language": "c", "sha256": "2acf906087fb61e3", "symbol_count": 6, "symbols": [{"kind": "function", "line": 53, "name": "W_OpenFile", "signature": "wad_file_t *W_OpenFile(char *path)"}, {"kind": "function", "line": 85, "name": "W_CloseFile", "signature": "void W_CloseFile(wad_file_t *wad)"}, {"kind": "function", "line": 90, "name": "W_Read", "signature": "size_t W_Read(wad_file_t *wad, unsigned int offset,\n void *buffer, size_t buffer_len)"}, {"kind": "variable", "line": 28, "name": "stdc_wad_file", "signature": "extern wad_file_class_t stdc_wad_file;"}, {"doc": "ifdef _WIN32", "kind": "variable", "line": 32, "name": "win32_wad_file", "signature": "extern wad_file_class_t win32_wad_file;"}, {"doc": "ifdef HAVE_MMAP", "kind": "variable", "line": 37, "name": "posix_wad_file", "signature": "extern wad_file_class_t posix_wad_file;"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: WAD I/O functions.", "id": "progs/doomgeneric/w_file.h", "kind": "module", "label": "w_file.h", "language": "h", "sha256": "06188e02e1d567a9", "symbol_count": 7, "symbols": [{"kind": "struct", "line": 46, "name": "_wad_file_s"}, {"kind": "struct", "line": 28, "name": "wad_file_class_t"}, {"doc": "include include \"doomtype.h\"", "kind": "type_alias", "line": 25, "name": "wad_file_t", "signature": "typedef struct _wad_file_s wad_file_t;"}, {"kind": "function", "line": 65, "name": "W_OpenFile", "signature": "wad_file_t *W_OpenFile(char *path);"}, {"kind": "function", "line": 69, "name": "W_CloseFile", "signature": "void W_CloseFile(wad_file_t *wad);"}, {"kind": "function", "line": 75, "name": "W_Read", "signature": "size_t W_Read(wad_file_t *wad, unsigned int offset, void *buffer, size_t buffer_len);"}, {"kind": "macro", "line": 21, "name": "__W_FILE__", "signature": "#define __W_FILE__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: WAD I/O functions.", "id": "progs/doomgeneric/w_file_stdc.c", "kind": "module", "label": "w_file_stdc.c", "language": "c", "sha256": "838aab7c3d023e57", "symbol_count": 5, "symbols": [{"kind": "struct", "line": 25, "name": "stdc_wad_file_t"}, {"kind": "function", "line": 33, "name": "W_StdC_OpenFile", "signature": "static wad_file_t *W_StdC_OpenFile(char *path)"}, {"kind": "function", "line": 56, "name": "W_StdC_CloseFile", "signature": "static void W_StdC_CloseFile(wad_file_t *wad)"}, {"kind": "function", "line": 69, "name": "W_StdC_Read", "signature": "size_t W_StdC_Read(wad_file_t *wad, unsigned int offset,\n void *buffer, size_t ..."}, {"kind": "variable", "line": 31, "name": "stdc_wad_file", "signature": "extern wad_file_class_t stdc_wad_file;"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Common code to parse command line, identifying WAD files to load. Parse the command line, merging WAD files that are sppecified. Returns true if at least one file was added.", "id": "progs/doomgeneric/w_main.c", "kind": "module", "label": "w_main.c", "language": "c", "sha256": "57cd2756e669dc68", "symbol_count": 1, "symbols": [{"kind": "function", "line": 30, "name": "W_ParseCommandLine", "signature": "boolean W_ParseCommandLine(void)"}]}, {"doc": "Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Common code to parse command line, identifying WAD files to load.", "id": "progs/doomgeneric/w_main.h", "kind": "module", "label": "w_main.h", "language": "h", "sha256": "dc99ae306d83540d", "symbol_count": 1, "symbols": [{"kind": "macro", "line": 19, "name": "W_MAIN_H", "signature": "#define W_MAIN_H"}]}, {"doc": "Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Handles merging of PWADs, similar to deutex's -merge option Ideally this should work exactly the same as in deutex, but trying to read the deutex source code made my brain hurt. Add a new WAD and merge it into the main directory", "id": "progs/doomgeneric/w_merge.h", "kind": "module", "label": "w_merge.h", "language": "h", "sha256": "976fba40db874b57", "symbol_count": 7, "symbols": [{"kind": "function", "line": 29, "name": "W_MergeFile", "signature": "void W_MergeFile(char *filename);"}, {"kind": "function", "line": 33, "name": "W_NWTMergeFile", "signature": "void W_NWTMergeFile(char *filename, int flags);"}, {"kind": "function", "line": 37, "name": "W_NWTDashMerge", "signature": "void W_NWTDashMerge(char *filename);"}, {"kind": "function", "line": 41, "name": "W_PrintDirectory", "signature": "void W_PrintDirectory(void);"}, {"kind": "macro", "line": 22, "name": "W_MERGE_H", "signature": "#define W_MERGE_H"}, {"kind": "macro", "line": 24, "name": "W_NWT_MERGE_SPRITES", "signature": "#define W_NWT_MERGE_SPRITES"}, {"kind": "macro", "line": 25, "name": "W_NWT_MERGE_FLATS", "signature": "#define W_NWT_MERGE_FLATS"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Handles WAD file header, directory, lump I/O.", "id": "progs/doomgeneric/w_wad.c", "kind": "module", "label": "w_wad.c", "language": "c", "sha256": "ec7713a25f7b6cbc", "symbol_count": 16, "symbols": [{"kind": "function", "line": 72, "name": "W_LumpNameHash", "signature": "unsigned int W_LumpNameHash(const char *s)"}, {"doc": "Increase the size of the lumpinfo[] array to the specified size.", "kind": "function", "line": 89, "name": "ExtendLumpInfo", "signature": "static void ExtendLumpInfo(int newnumlumps)"}, {"kind": "function", "line": 141, "name": "W_AddFile", "signature": "wad_file_t *W_AddFile (char *filename)"}, {"doc": "W_NumLumps", "kind": "function", "line": 246, "name": "W_NumLumps", "signature": "int W_NumLumps (void)"}, {"kind": "function", "line": 258, "name": "W_CheckNumForName", "signature": "int W_CheckNumForName (char* name)"}, {"doc": "W_GetNumForName Calls W_CheckNumForName, but bombs out if not found.", "kind": "function", "line": 308, "name": "W_GetNumForName", "signature": "int W_GetNumForName (char* name)"}, {"doc": "W_LumpLength Returns the buffer size needed to load the given lump.", "kind": "function", "line": 327, "name": "W_LumpLength", "signature": "int W_LumpLength (unsigned int lump)"}, {"doc": "W_ReadLump Loads the lump into the given buffer, which must be >= W_LumpLength().", "kind": "function", "line": 344, "name": "W_ReadLump", "signature": "void W_ReadLump(unsigned int lump, void *dest)"}, {"kind": "function", "line": 384, "name": "W_CacheLumpNum", "signature": "void *W_CacheLumpNum(int lumpnum, int tag)"}, {"doc": "W_CacheLumpName", "kind": "function", "line": 431, "name": "W_CacheLumpName", "signature": "void *W_CacheLumpName(char *name, int tag)"}, {"kind": "function", "line": 446, "name": "W_ReleaseLumpNum", "signature": "void W_ReleaseLumpNum(int lumpnum)"}, {"kind": "function", "line": 467, "name": "W_ReleaseLumpName", "signature": "void W_ReleaseLumpName(char *name)"}, {"kind": "function", "line": 480, "name": "W_Profile", "signature": "void W_Profile (void)"}, {"kind": "function", "line": 541, "name": "W_GenerateHashTable", "signature": "void W_GenerateHashTable(void)"}, {"kind": "function", "line": 588, "name": "W_CheckCorrectIWAD", "signature": "void W_CheckCorrectIWAD(GameMission_t mission)"}, {"kind": "function", "line": 39, "name": "I_EndRead", "signature": "void I_EndRead (void);"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: WAD I/O functions.", "id": "progs/doomgeneric/w_wad.h", "kind": "module", "label": "w_wad.h", "language": "h", "sha256": "fb34bdb0a8c3f9a1", "symbol_count": 17, "symbols": [{"kind": "struct", "line": 41, "name": "lumpinfo_s"}, {"doc": "WADFILE I/O related stuff.", "kind": "type_alias", "line": 38, "name": "lumpinfo_t", "signature": "typedef struct lumpinfo_s lumpinfo_t;"}, {"kind": "function", "line": 58, "name": "W_AddFile", "signature": "wad_file_t *W_AddFile (char *filename);"}, {"kind": "function", "line": 60, "name": "W_CheckNumForName", "signature": "int W_CheckNumForName (char* name);"}, {"kind": "function", "line": 61, "name": "W_GetNumForName", "signature": "int W_GetNumForName (char* name);"}, {"kind": "function", "line": 63, "name": "W_LumpLength", "signature": "int W_LumpLength (unsigned int lump);"}, {"kind": "function", "line": 64, "name": "W_ReadLump", "signature": "void W_ReadLump (unsigned int lump, void *dest);"}, {"kind": "function", "line": 66, "name": "W_CacheLumpNum", "signature": "void* W_CacheLumpNum (int lump, int tag);"}, {"kind": "function", "line": 67, "name": "W_CacheLumpName", "signature": "void* W_CacheLumpName (char* name, int tag);"}, {"kind": "function", "line": 69, "name": "W_GenerateHashTable", "signature": "void W_GenerateHashTable(void);"}, {"kind": "function", "line": 71, "name": "W_LumpNameHash", "signature": "extern unsigned int W_LumpNameHash(const char *s);"}, {"kind": "function", "line": 73, "name": "W_ReleaseLumpNum", "signature": "void W_ReleaseLumpNum(int lump);"}, {"kind": "function", "line": 74, "name": "W_ReleaseLumpName", "signature": "void W_ReleaseLumpName(char *name);"}, {"kind": "function", "line": 76, "name": "W_CheckCorrectIWAD", "signature": "void W_CheckCorrectIWAD(GameMission_t mission);"}, {"kind": "variable", "line": 55, "name": "lumpinfo", "signature": "extern lumpinfo_t *lumpinfo;"}, {"kind": "variable", "line": 56, "name": "numlumps", "signature": "extern unsigned int numlumps;"}, {"kind": "macro", "line": 21, "name": "__W_WAD__", "signature": "#define __W_WAD__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Intermission screens.", "id": "progs/doomgeneric/wi_stuff.c", "kind": "module", "label": "wi_stuff.c", "language": "c", "sha256": "0e610899b0e67dd1", "symbol_count": 68, "symbols": [{"kind": "struct", "line": 117, "name": "point_t"}, {"doc": "Animation. There is another anim_t used in p_spec.", "kind": "struct", "line": 129, "name": "anim_t"}, {"doc": "slam background", "kind": "function", "line": 402, "name": "WI_slamBackground", "signature": "void WI_slamBackground(void)"}, {"doc": "The ticker is used to detect keys because of timing issues in netgames.", "kind": "function", "line": 409, "name": "WI_Responder", "signature": "boolean WI_Responder(event_t* ev)"}, {"doc": "Draws \" Finished!\"", "kind": "function", "line": 416, "name": "WI_drawLF", "signature": "void WI_drawLF(void)"}, {"doc": "Draws \"Entering \"", "kind": "function", "line": 452, "name": "WI_drawEL", "signature": "void WI_drawEL(void)"}, {"kind": "function", "line": 471, "name": "WI_drawOnLnode", "signature": "void\nWI_drawOnLnode\n( int\t\tn,\n patch_t*\tc[] )"}, {"kind": "function", "line": 519, "name": "WI_initAnimatedBack", "signature": "void WI_initAnimatedBack(void)"}, {"kind": "function", "line": 548, "name": "WI_updateAnimatedBack", "signature": "void WI_updateAnimatedBack(void)"}, {"kind": "function", "line": 599, "name": "WI_drawAnimatedBack", "signature": "void WI_drawAnimatedBack(void)"}, {"kind": "function", "line": 628, "name": "WI_drawNum", "signature": "int\nWI_drawNum\n( int\t\tx,\n int\t\ty,\n int\t\tn,\n int\t\tdigits )"}, {"kind": "function", "line": 685, "name": "WI_drawPercent", "signature": "void\nWI_drawPercent\n( int\t\tx,\n int\t\ty,\n int\t\tp )"}, {"kind": "function", "line": 704, "name": "WI_drawTime", "signature": "void\nWI_drawTime\n( int\t\tx,\n int\t\ty,\n int\t\tt )"}, {"kind": "function", "line": 740, "name": "WI_End", "signature": "void WI_End(void)"}, {"kind": "function", "line": 746, "name": "WI_initNoState", "signature": "void WI_initNoState(void)"}, {"kind": "function", "line": 753, "name": "WI_updateNoState", "signature": "void WI_updateNoState(void)"}, {"kind": "function", "line": 772, "name": "WI_initShowNextLoc", "signature": "void WI_initShowNextLoc(void)"}, {"kind": "function", "line": 781, "name": "WI_updateShowNextLoc", "signature": "void WI_updateShowNextLoc(void)"}, {"kind": "function", "line": 791, "name": "WI_drawShowNextLoc", "signature": "void WI_drawShowNextLoc(void)"}, {"kind": "function", "line": 832, "name": "WI_drawNoState", "signature": "void WI_drawNoState(void)"}, {"kind": "function", "line": 838, "name": "WI_fragSum", "signature": "int WI_fragSum(int playernum)"}, {"kind": "function", "line": 869, "name": "WI_initDeathmatchStats", "signature": "void WI_initDeathmatchStats(void)"}, {"kind": "function", "line": 898, "name": "WI_updateDeathmatchStats", "signature": "void WI_updateDeathmatchStats(void)"}, {"kind": "function", "line": 1001, "name": "WI_drawDeathmatchStats", "signature": "void WI_drawDeathmatchStats(void)"}, {"kind": "function", "line": 1089, "name": "WI_initNetgameStats", "signature": "void WI_initNetgameStats(void)"}, {"kind": "function", "line": 1117, "name": "WI_updateNetgameStats", "signature": "void WI_updateNetgameStats(void)"}, {"kind": "function", "line": 1272, "name": "WI_drawNetgameStats", "signature": "void WI_drawNetgameStats(void)"}, {"kind": "function", "line": 1329, "name": "WI_initStats", "signature": "void WI_initStats(void)"}, {"kind": "function", "line": 1341, "name": "WI_updateStats", "signature": "void WI_updateStats(void)"}, {"kind": "function", "line": 1447, "name": "WI_drawStats", "signature": "void WI_drawStats(void)"}, {"kind": "function", "line": 1481, "name": "WI_checkForAccelerate", "signature": "void WI_checkForAccelerate(void)"}, {"doc": "Updates stuff each tick", "kind": "function", "line": 1514, "name": "WI_Ticker", "signature": "void WI_Ticker(void)"}, {"kind": "function", "line": 1554, "name": "WI_loadUnloadData", "signature": "static void WI_loadUnloadData(load_callback_t callback)"}, {"kind": "function", "line": 1704, "name": "WI_loadCallback", "signature": "static void WI_loadCallback(char *name, patch_t **variable)"}, {"kind": "function", "line": 1709, "name": "WI_loadData", "signature": "void WI_loadData(void)"}, {"kind": "function", "line": 1735, "name": "WI_unloadCallback", "signature": "static void WI_unloadCallback(char *name, patch_t **variable)"}, {"kind": "function", "line": 1741, "name": "WI_unloadData", "signature": "void WI_unloadData(void)"}, {"kind": "function", "line": 1752, "name": "WI_Drawer", "signature": "void WI_Drawer (void)"}, {"kind": "function", "line": 1776, "name": "WI_initVariables", "signature": "void WI_initVariables(wbstartstruct_t* wbstartstruct)"}, {"kind": "function", "line": 1818, "name": "WI_Start", "signature": "void WI_Start(wbstartstruct_t* wbstartstruct)"}, {"kind": "macro", "line": 61, "name": "NUMEPISODES", "signature": "#define NUMEPISODES"}, {"kind": "macro", "line": 62, "name": "NUMMAPS", "signature": "#define NUMMAPS"}, {"kind": "macro", "line": 75, "name": "WI_TITLEY", "signature": "#define WI_TITLEY"}, {"kind": "macro", "line": 76, "name": "WI_SPACINGY", "signature": "#define WI_SPACINGY"}, {"kind": "macro", "line": 79, "name": "SP_STATSX", "signature": "#define SP_STATSX"}, {"kind": "macro", "line": 80, "name": "SP_STATSY", "signature": "#define SP_STATSY"}, {"kind": "macro", "line": 82, "name": "SP_TIMEX", "signature": "#define SP_TIMEX"}, {"kind": "macro", "line": 83, "name": "SP_TIMEY", "signature": "#define SP_TIMEY"}, {"kind": "macro", "line": 87, "name": "NG_STATSY", "signature": "#define NG_STATSY"}, {"kind": "macro", "line": 88, "name": "NG_STATSX", "signature": "#define NG_STATSX"}, {"kind": "macro", "line": 90, "name": "NG_SPACINGX", "signature": "#define NG_SPACINGX"}, {"kind": "macro", "line": 94, "name": "DM_MATRIXX", "signature": "#define DM_MATRIXX"}, {"kind": "macro", "line": 95, "name": "DM_MATRIXY", "signature": "#define DM_MATRIXY"}, {"kind": "macro", "line": 97, "name": "DM_SPACINGX", "signature": "#define DM_SPACINGX"}, {"kind": "macro", "line": 99, "name": "DM_TOTALSX", "signature": "#define DM_TOTALSX"}, {"kind": "macro", "line": 101, "name": "DM_KILLERSX", "signature": "#define DM_KILLERSX"}, {"kind": "macro", "line": 102, "name": "DM_KILLERSY", "signature": "#define DM_KILLERSY"}, {"kind": "macro", "line": 103, "name": "DM_VICTIMSX", "signature": "#define DM_VICTIMSX"}, {"kind": "macro", "line": 104, "name": "DM_VICTIMSY", "signature": "#define DM_VICTIMSY"}, {"kind": "macro", "line": 222, "name": "ANIM", "signature": "#define ANIM(type, period, nanims, x, y, nexttic)"}, {"kind": "macro", "line": 288, "name": "SP_KILLS", "signature": "#define SP_KILLS"}, {"kind": "macro", "line": 289, "name": "SP_ITEMS", "signature": "#define SP_ITEMS"}, {"kind": "macro", "line": 290, "name": "SP_SECRET", "signature": "#define SP_SECRET"}, {"kind": "macro", "line": 291, "name": "SP_FRAGS", "signature": "#define SP_FRAGS"}, {"kind": "macro", "line": 292, "name": "SP_TIME", "signature": "#define SP_TIME"}, {"kind": "macro", "line": 293, "name": "SP_PAR", "signature": "#define SP_PAR"}, {"kind": "macro", "line": 295, "name": "SP_PAUSE", "signature": "#define SP_PAUSE"}, {"kind": "macro", "line": 298, "name": "SHOWNEXTLOCDELAY", "signature": "#define SHOWNEXTLOCDELAY"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Intermission. #include \"v_video.h\" States for the intermission", "id": "progs/doomgeneric/wi_stuff.h", "kind": "module", "label": "wi_stuff.h", "language": "h", "sha256": "a4f6e9e22c710099", "symbol_count": 5, "symbols": [{"doc": "Called by main loop, animate the intermission.", "kind": "function", "line": 36, "name": "WI_Ticker", "signature": "void WI_Ticker (void);"}, {"doc": "Called by main loop, draws the intermission directly into the screen buffer.", "kind": "function", "line": 40, "name": "WI_Drawer", "signature": "void WI_Drawer (void);"}, {"doc": "Setup for an intermission screen.", "kind": "function", "line": 43, "name": "WI_Start", "signature": "void WI_Start(wbstartstruct_t* wbstartstruct);"}, {"doc": "Shut down the intermission screen", "kind": "function", "line": 46, "name": "WI_End", "signature": "void WI_End(void);"}, {"kind": "macro", "line": 20, "name": "__WI_STUFF__", "signature": "#define __WI_STUFF__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Zone Memory Allocation. Neat. ZONE MEMORY ALLOCATION There is never any space between memblocks, and there will never be two contiguous free memblocks. The rover can be left pointing at a non-empty block.", "id": "progs/doomgeneric/z_zone.c", "kind": "module", "label": "z_zone.c", "language": "c", "sha256": "031f2455f114e1d7", "symbol_count": 18, "symbols": [{"kind": "struct", "line": 39, "name": "memblock_s"}, {"kind": "struct", "line": 50, "name": "memzone_t"}, {"doc": "define MEM_ALIGN sizeof(void *) define ZONEID\t0x1d4a11", "kind": "type_alias", "line": 38, "name": "size", "signature": "typedef struct memblock_s { int size;"}, {"doc": "Z_ClearZone", "kind": "function", "line": 71, "name": "Z_ClearZone", "signature": "void Z_ClearZone (memzone_t* zone)"}, {"doc": "Z_Init", "kind": "function", "line": 97, "name": "Z_Init", "signature": "void Z_Init (void)"}, {"doc": "Z_Free", "kind": "function", "line": 126, "name": "Z_Free", "signature": "void Z_Free (void* ptr)"}, {"kind": "function", "line": 185, "name": "Z_Malloc", "signature": "void*\nZ_Malloc\n( int\t\tsize,\n int\t\ttag,\n void*\t\tuser )"}, {"kind": "function", "line": 298, "name": "Z_FreeTags", "signature": "void\nZ_FreeTags\n( int\t\tlowtag,\n int\t\thightag )"}, {"kind": "function", "line": 328, "name": "Z_DumpHeap", "signature": "void\nZ_DumpHeap\n( int\t\tlowtag,\n int\t\thightag )"}, {"doc": "Z_FileDumpHeap", "kind": "function", "line": 367, "name": "Z_FileDumpHeap", "signature": "void Z_FileDumpHeap (FILE* f)"}, {"doc": "Z_CheckHeap", "kind": "function", "line": 400, "name": "Z_CheckHeap", "signature": "void Z_CheckHeap (void)"}, {"doc": "Z_ChangeTag", "kind": "function", "line": 429, "name": "Z_ChangeTag2", "signature": "void Z_ChangeTag2(void *ptr, int tag, char *file, int line)"}, {"kind": "function", "line": 446, "name": "Z_ChangeUser", "signature": "void Z_ChangeUser(void *ptr, void **user)"}, {"doc": "Z_FreeMemory", "kind": "function", "line": 466, "name": "Z_FreeMemory", "signature": "int Z_FreeMemory (void)"}, {"kind": "function", "line": 484, "name": "Z_ZoneSize", "signature": "unsigned int Z_ZoneSize(void)"}, {"kind": "macro", "line": 36, "name": "MEM_ALIGN", "signature": "#define MEM_ALIGN"}, {"kind": "macro", "line": 37, "name": "ZONEID", "signature": "#define ZONEID"}, {"kind": "macro", "line": 181, "name": "MINFRAGMENT", "signature": "#define MINFRAGMENT"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Zone Memory Allocation, perhaps NeXT ObjectiveC inspired. Remark: this was the only stuff that, according to John Carmack, might have been useful for Quake. ZONE MEMORY", "id": "progs/doomgeneric/z_zone.h", "kind": "module", "label": "z_zone.h", "language": "h", "sha256": "5075045fd434b971", "symbol_count": 13, "symbols": [{"kind": "function", "line": 53, "name": "Z_Init", "signature": "void Z_Init (void);"}, {"kind": "function", "line": 54, "name": "Z_Malloc", "signature": "void* Z_Malloc (int size, int tag, void *ptr);"}, {"kind": "function", "line": 55, "name": "Z_Free", "signature": "void Z_Free (void *ptr);"}, {"kind": "function", "line": 56, "name": "Z_FreeTags", "signature": "void Z_FreeTags (int lowtag, int hightag);"}, {"kind": "function", "line": 57, "name": "Z_DumpHeap", "signature": "void Z_DumpHeap (int lowtag, int hightag);"}, {"kind": "function", "line": 58, "name": "Z_FileDumpHeap", "signature": "void Z_FileDumpHeap (FILE *f);"}, {"kind": "function", "line": 59, "name": "Z_CheckHeap", "signature": "void Z_CheckHeap (void);"}, {"kind": "function", "line": 60, "name": "Z_ChangeTag2", "signature": "void Z_ChangeTag2 (void *ptr, int tag, char *file, int line);"}, {"kind": "function", "line": 61, "name": "Z_ChangeUser", "signature": "void Z_ChangeUser(void *ptr, void **user);"}, {"kind": "function", "line": 62, "name": "Z_FreeMemory", "signature": "int Z_FreeMemory (void);"}, {"kind": "function", "line": 63, "name": "Z_ZoneSize", "signature": "unsigned int Z_ZoneSize(void);"}, {"kind": "macro", "line": 25, "name": "__Z_ZONE__", "signature": "#define __Z_ZONE__"}, {"kind": "macro", "line": 69, "name": "Z_ChangeTag", "signature": "#define Z_ChangeTag(p,t)"}]}, {"doc": "Docstring: MiniOS file browser (Nuklear ring-3 app, MiniFS: file/file.elf).", "id": "progs/file/file.c", "kind": "module", "label": "file.c", "language": "c", "sha256": "af51a65c9b229928", "symbol_count": 46, "symbols": [{"kind": "struct", "line": 55, "name": "file_assoc"}, {"doc": "static struct fassoc_table file_assocs; static int file_quit; static char file_cwd[FILE_MAX_PATH]; static char file_entries[FILE_LIST_CAP]; static long file_entry_count; static char file_status[FILE_STATUS_MAX]; static char file_preview_path[FILE_MAX_PATH]; static unsigned char file_preview_px[FILE_PREVIEW_W * FILE_PREVIEW_H]; static int file_preview_w; static int file_preview_h; static int file_preview_on; /** Raw DIR_LIST syscall (241): names land NUL-separated in buf.", "kind": "function", "line": 75, "name": "file_sys_dir_list", "signature": "static long file_sys_dir_list(const char *path, char *buf, long cap)"}, {"doc": "static int file_preview_h; static int file_preview_on; /** Raw DIR_LIST syscall (241): names land NUL-separated in buf. static long file_sys_dir_list(const char *path, char *buf, long cap) { long ret; __asm__ volatile(\"syscall\" : \"=a\"(ret) : \"a\"(MINIOS_SYS_DIR_LIST), \"D\"(path), \"S\"(buf), \"d\"(cap) : \"rcx\", \"r11\", \"memory\"); return ret; } /** Raw SPAWN syscall (215) preserving this app across the child.", "kind": "function", "line": 85, "name": "file_sys_spawn", "signature": "static long file_sys_spawn(const char *path, int argc, const char **argv)"}, {"doc": "} /** Raw SPAWN syscall (215) preserving this app across the child. static long file_sys_spawn(const char *path, int argc, const char **argv) { long ret; register long r10 __asm__(\"r10\") = (long)argv; __asm__ volatile(\"syscall\" : \"=a\"(ret) : \"a\"(MINIOS_SYS_SPAWN), \"D\"(path), \"S\"(0), \"d\"((long)argc), \"r\"(r10) : \"rcx\", \"r11\", \"memory\"); return ret; } /** Lowercase the extension of fname into dst (no dot, empty when none).", "kind": "function", "line": 96, "name": "file_ext_of", "signature": "static void file_ext_of(const char *fname, char *dst, unsigned cap)"}, {"doc": "if (fname[k] == '.') { dot = k; found = 1; } if (!found || dot + 1 >= n) { dst[0] = 0; return; } { unsigned m = 0; for (k = dot + 1; k < n && m + 1 < cap && m <= FILE_EXT_MAX; k++) { char c = fname[k]; if (c >= 'A' && c <= 'Z') c = (char)(c + 32); dst[m++] = c; } dst[m] = 0; } } /** Join dir + name into dst, fail closed on overflow.", "kind": "function", "line": 117, "name": "file_join", "signature": "static int file_join(const char *dir, const char *name, char *dst, unsigned cap)"}, {"doc": "static int file_join(const char *dir, const char *name, char *dst, unsigned cap) { unsigned a = 0; unsigned b = 0; while (dir[a] && a < cap) a++; while (name[b] && b < FILE_NAME_MAX) b++; if (a + 1 + b + 1 > cap) return -1; memcpy(dst, dir, a); if (a > 0 && dst[a - 1] != '/') dst[a++] = '/'; memcpy(dst + a, name, b); dst[a + b] = 0; return 0; } /** Parent of an absolute path, root stays root.", "kind": "function", "line": 131, "name": "file_parent", "signature": "static void file_parent(char *path)"}, {"doc": "return 0; } /** Parent of an absolute path, root stays root. static void file_parent(char *path) { unsigned n = 0; while (path[n]) n++; while (n > 1 && path[n - 1] == '/') path[--n] = 0; while (n > 1 && path[n - 1] != '/') n--; if (n <= 1) { path[0] = '/'; path[1] = 0; return; } path[n - 1] = 0; } /** Validate one association line: ext|program, fail closed.", "kind": "function", "line": 141, "name": "file_assoc_line", "signature": "static int file_assoc_line(const char *line, char *ext, char *prog)"}, {"doc": "} if (line[p + k] && line[p + k] != '\\n' && line[p + k] != '\\r') return -1; while (p > 0 && (prog[p - 1] == ' ' || prog[p - 1] == '\\t')) p--; prog[p] = 0; } ext[m] = 0; if (!prog[0]) return -1; if (strcmp(prog, FILE_ACTION_SHELL) != 0 && strcmp(prog, FILE_ACTION_INTERNAL) != 0 && prog[0] != '/') return -1; return 0; } /** Load the association table, builtins on failure.", "kind": "function", "line": 174, "name": "file_assoc_load", "signature": "static void file_assoc_load(void)"}, {"doc": "char line[FILE_LOG_LINE]; char ext[FILE_EXT_MAX + 1]; char prog[FILE_PROG_MAX + 1]; fassoc_clear(&file_assocs); f = fopen(FILE_ASSOC_PATH, \"r\"); if (!f) return; while (fgets(line, sizeof(line), f)) { if (file_assoc_line(line, ext, prog) != 0) continue; if (fassoc_push(&file_assocs, ext, prog) != 0) break; } fclose(f); } /** Program for an extension, empty when unmapped.", "kind": "function", "line": 190, "name": "file_assoc_lookup", "signature": "static const char *file_assoc_lookup(const char *ext)"}, {"doc": "if (!f) return; while (fgets(line, sizeof(line), f)) { if (file_assoc_line(line, ext, prog) != 0) continue; if (fassoc_push(&file_assocs, ext, prog) != 0) break; } fclose(f); } /** Program for an extension, empty when unmapped. static const char *file_assoc_lookup(const char *ext) { return fassoc_lookup(&file_assocs, ext); } /** Dispatch kind for a file name through the association table.", "kind": "function", "line": 195, "name": "file_action_of", "signature": "static int file_action_of(const char *fname, const char **prog_out)"}, {"doc": "/** Dispatch kind for a file name through the association table. static int file_action_of(const char *fname, const char **prog_out) { char ext[FILE_EXT_MAX + 1]; const char *prog; file_ext_of(fname, ext, sizeof(ext)); prog = file_assoc_lookup(ext); if (prog_out) *prog_out = prog; if (!prog[0]) return FILE_ACT_UNKNOWN; if (strcmp(prog, FILE_ACTION_SHELL) == 0) return FILE_ACT_SHELL; if (strcmp(prog, FILE_ACTION_INTERNAL) == 0) return FILE_ACT_INTERNAL; return FILE_ACT_TEXT; } /** Refresh the entry list for the cwd, fail closed with a status.", "kind": "function", "line": 208, "name": "file_refresh", "signature": "static void file_refresh(void)"}, {"doc": "long rc = file_sys_dir_list(file_cwd, file_entries, FILE_LIST_CAP); if (rc < 0) { file_entry_count = 0; file_entries[0] = 0; snprintf(file_status, sizeof(file_status), \"cannot list %s (%ld)\", file_cwd, rc); return; } file_entry_count = rc; snprintf(file_status, sizeof(file_status), \"%s (%ld entries)\", file_cwd, rc); } /** Decode a png file into the preview buffer, nearest-neighbor downscale.", "kind": "function", "line": 223, "name": "file_preview_load", "signature": "static int file_preview_load(const char *path)"}, {"doc": "FILE_PREVIEW_W, FILE_PREVIEW_H) != MPNG_ERR_OK) { stbi_image_free(px); return -1; } } stbi_image_free(px); file_preview_w = FILE_PREVIEW_W; file_preview_h = FILE_PREVIEW_H; file_preview_on = 1; return 0; } /** Blit the preview buffer into the NK back-buffer after rasterize.", "kind": "function", "line": 256, "name": "file_preview_blit", "signature": "static void file_preview_blit(int ox, int oy)"}, {"doc": "volatile uint8_t *fb = NK_BACKBUF; int x; int y; if (!file_preview_on) return; for (y = 0; y < file_preview_h; y++) for (x = 0; x < file_preview_w; x++) { int dx = ox + x; int dy = oy + y; if (dx < 0 || dx >= NK_W || dy < 0 || dy >= NK_H) continue; fb[dy * NK_W + dx] = file_preview_px[y * FILE_PREVIEW_W + x]; } } /** Run a program with the display released so output lands on console.", "kind": "function", "line": 271, "name": "file_spawn_visible", "signature": "static long file_spawn_visible(const char *tool, int argc, const char **argv,\n ..."}, {"doc": "printf(\"file: %s exit code: %ld\\n\", label, rc); fflush(stdout); nk_sys_vga_mode(1); nk_build_palette(pal768); nk_sys_palette(pal768); nk_sys_kbd_raw(1); if (rc != 0) snprintf(file_status, sizeof(file_status), \"%s exit %ld\", label, rc); else snprintf(file_status, sizeof(file_status), \"%s ok\", label); return rc; } /** Open a text file in vedit, preserving this browser.", "kind": "function", "line": 294, "name": "file_open_text", "signature": "static void file_open_text(const char *path)"}, {"doc": "} /** Open a text file in vedit, preserving this browser. static void file_open_text(const char *path) { const char *args[3]; char label[FILE_LOG_LINE]; args[0] = FILE_TOOL_VEDIT; args[1] = path; args[2] = 0; snprintf(label, sizeof(label), \"vedit %s\", path); file_spawn_visible(FILE_TOOL_VEDIT, 2, args, label); } /** Run a shell-kind file: elf/o directly, cvm through the interpreter.", "kind": "function", "line": 305, "name": "file_run_shell", "signature": "static void file_run_shell(const char *path)"}, {"doc": "if (strcmp(ext, \"cvm\") == 0) { args[0] = path; args[1] = 0; snprintf(label, sizeof(label), \"run %s\", path); file_spawn_visible(FILE_TOOL_CVM, 1, args, label); return; } args[0] = path; args[1] = 0; snprintf(label, sizeof(label), \"run %s\", path); file_spawn_visible(path, 1, args, label); } /** Dispatch one file name through the association table.", "kind": "function", "line": 344, "name": "file_activate", "signature": "static void file_activate(const char *dir, const char *name)"}, {"doc": "snprintf(file_preview_path, sizeof(file_preview_path), \"%s\", path); snprintf(file_status, sizeof(file_status), \"preview %s\", path); } else { file_preview_on = 0; snprintf(file_status, sizeof(file_status), \"cannot preview %s\", path); } } else { file_preview_on = 0; snprintf(file_status, sizeof(file_status), \"no handler for %s\", name); } } /** Immediate-mode frame: breadcrumb, places, content grid, status.", "kind": "function", "line": 375, "name": "file_ui_build", "signature": "static void file_ui_build(struct nk_context *ctx)"}, {"doc": "off += (long)el; idx++; if (off >= FILE_LIST_CAP) break; } } if (file_preview_on) { nk_layout_row_dynamic(ctx, 18, 1); nk_label(ctx, file_preview_path, NK_TEXT_LEFT); } } nk_end(ctx); } /** Headless selftest for BDD: assoc vectors plus a live listing.", "kind": "function", "line": 452, "name": "file_selftest", "signature": "static int file_selftest(void)"}, {"kind": "function", "line": 553, "name": "file_gui_run", "signature": "static void file_gui_run(void)"}, {"kind": "function", "line": 610, "name": "main", "signature": "int main(int argc, char **argv)"}, {"kind": "macro", "line": 24, "name": "STB_IMAGE_IMPLEMENTATION", "signature": "#define STB_IMAGE_IMPLEMENTATION"}, {"kind": "macro", "line": 25, "name": "STBI_ONLY_PNG", "signature": "#define STBI_ONLY_PNG"}, {"kind": "macro", "line": 26, "name": "STBI_NO_STDIO", "signature": "#define STBI_NO_STDIO"}, {"kind": "macro", "line": 30, "name": "FILE_MAX_PATH", "signature": "#define FILE_MAX_PATH"}, {"kind": "macro", "line": 31, "name": "FILE_MAX_ENTRIES", "signature": "#define FILE_MAX_ENTRIES"}, {"kind": "macro", "line": 32, "name": "FILE_NAME_MAX", "signature": "#define FILE_NAME_MAX"}, {"kind": "macro", "line": 33, "name": "FILE_LIST_CAP", "signature": "#define FILE_LIST_CAP"}, {"kind": "macro", "line": 34, "name": "FILE_ASSOC_PATH", "signature": "#define FILE_ASSOC_PATH"}, {"kind": "macro", "line": 35, "name": "FILE_EXT_MAX", "signature": "#define FILE_EXT_MAX"}, {"kind": "macro", "line": 36, "name": "FILE_PROG_MAX", "signature": "#define FILE_PROG_MAX"}, {"kind": "macro", "line": 37, "name": "FILE_TOOL_VEDIT", "signature": "#define FILE_TOOL_VEDIT"}, {"kind": "macro", "line": 38, "name": "FILE_TOOL_CVM", "signature": "#define FILE_TOOL_CVM"}, {"kind": "macro", "line": 39, "name": "FILE_STATUS_MAX", "signature": "#define FILE_STATUS_MAX"}, {"kind": "macro", "line": 40, "name": "FILE_UI_MEMORY", "signature": "#define FILE_UI_MEMORY"}, {"kind": "macro", "line": 41, "name": "FILE_PREVIEW_W", "signature": "#define FILE_PREVIEW_W"}, {"kind": "macro", "line": 42, "name": "FILE_PREVIEW_H", "signature": "#define FILE_PREVIEW_H"}, {"kind": "macro", "line": 43, "name": "FILE_PREVIEW_FILE_MAX", "signature": "#define FILE_PREVIEW_FILE_MAX"}, {"kind": "macro", "line": 44, "name": "FILE_TITLE", "signature": "#define FILE_TITLE"}, {"kind": "macro", "line": 45, "name": "FILE_ACTION_SHELL", "signature": "#define FILE_ACTION_SHELL"}, {"kind": "macro", "line": 46, "name": "FILE_ACTION_INTERNAL", "signature": "#define FILE_ACTION_INTERNAL"}, {"kind": "macro", "line": 47, "name": "FILE_LOG_LINE", "signature": "#define FILE_LOG_LINE"}, {"kind": "macro", "line": 50, "name": "FILE_ACT_TEXT", "signature": "#define FILE_ACT_TEXT"}, {"kind": "macro", "line": 51, "name": "FILE_ACT_SHELL", "signature": "#define FILE_ACT_SHELL"}, {"kind": "macro", "line": 52, "name": "FILE_ACT_INTERNAL", "signature": "#define FILE_ACT_INTERNAL"}, {"kind": "macro", "line": 53, "name": "FILE_ACT_UNKNOWN", "signature": "#define FILE_ACT_UNKNOWN"}]}, {"doc": "Docstring: dynamic association table for the MiniOS file browser.", "id": "progs/file/file_assoc.h", "kind": "module", "label": "file_assoc.h", "language": "h", "sha256": "af3bef2e5eed1ae0", "symbol_count": 17, "symbols": [{"doc": "#ifndef FASSOC_HARD_MAX #define FASSOC_HARD_MAX 512 #endif #ifndef FASSOC_GROW_NUM #define FASSOC_GROW_NUM 2 #endif #ifndef FASSOC_GROW_DEN #define FASSOC_GROW_DEN 1 #endif /** Docstring: one validated association entry, ext without dot.", "kind": "struct", "line": 46, "name": "fassoc_entry"}, {"doc": "#define FASSOC_GROW_NUM 2 #endif #ifndef FASSOC_GROW_DEN #define FASSOC_GROW_DEN 1 #endif /** Docstring: one validated association entry, ext without dot. struct fassoc_entry { char ext[FASSOC_EXT_MAX + 1]; char prog[FASSOC_PROG_MAX + 1]; }; /** Docstring: dynamic table state, zero init is valid.", "kind": "struct", "line": 52, "name": "fassoc_table"}, {"doc": "/** Docstring: one validated association entry, ext without dot. struct fassoc_entry { char ext[FASSOC_EXT_MAX + 1]; char prog[FASSOC_PROG_MAX + 1]; }; /** Docstring: dynamic table state, zero init is valid. struct fassoc_table { struct fassoc_entry *p; size_t cnt; size_t cap; }; /** Docstring: validate ext against the assoc line charset and bound.", "kind": "function", "line": 59, "name": "fassoc_ext_ok", "signature": "static int fassoc_ext_ok(const char *ext)"}, {"doc": "static int fassoc_ext_ok(const char *ext) { size_t n = 0; size_t k = 0; if (ext == NULL) return 0; while (ext[n] != 0) n++; if (n == 0 || n > (size_t)FASSOC_EXT_MAX) return 0; for (k = 0; k < n; k++) { char c = ext[k]; if (!((c >= 'a' && c <= 'z') || (c >= '0' && c <= '9'))) return 0; } return 1; } /** Docstring: validate prog against shell, internal, or absolute path.", "kind": "function", "line": 73, "name": "fassoc_prog_ok", "signature": "static int fassoc_prog_ok(const char *prog)"}, {"doc": "size_t k = 0; if (prog == NULL) return 0; while (prog[n] != 0) n++; if (n == 0 || n > (size_t)FASSOC_PROG_MAX) return 0; if (strcmp(prog, \"shell\") == 0) return 1; if (strcmp(prog, \"internal\") == 0) return 1; if (prog[0] != '/') return 0; for (k = 0; k < n; k++) { if (prog[k] == '|') return 0; } return 1; } /** Docstring: reset table to empty without releasing capacity.", "kind": "function", "line": 89, "name": "fassoc_clear", "signature": "static void fassoc_clear(struct fassoc_table *t)"}, {"doc": "if (prog[0] != '/') return 0; for (k = 0; k < n; k++) { if (prog[k] == '|') return 0; } return 1; } /** Docstring: reset table to empty without releasing capacity. static void fassoc_clear(struct fassoc_table *t) { if (t == NULL) return; t->cnt = 0; } /** Docstring: release backing store and reset to zero init state.", "kind": "function", "line": 95, "name": "fassoc_free", "signature": "static void fassoc_free(struct fassoc_table *t)"}, {"doc": "if (t == NULL) return; t->cnt = 0; } /** Docstring: release backing store and reset to zero init state. static void fassoc_free(struct fassoc_table *t) { if (t == NULL) return; free(t->p); t->p = NULL; t->cnt = 0; t->cap = 0; } /** Docstring: ensure capacity for want entries, old data kept on failure.", "kind": "function", "line": 104, "name": "fassoc_reserve", "signature": "static int fassoc_reserve(struct fassoc_table *t, size_t want)"}, {"doc": "while (ncap < want) { size_t nxt = ncap * (size_t)FASSOC_GROW_NUM / (size_t)FASSOC_GROW_DEN + 1; if (nxt <= ncap) return -1; if (nxt > (size_t)FASSOC_HARD_MAX) nxt = (size_t)FASSOC_HARD_MAX; ncap = nxt; } np = (struct fassoc_entry *)realloc(t->p, ncap * sizeof(*np)); if (np == NULL) return -1; t->p = np; t->cap = ncap; return 0; } /** Docstring: append one validated entry, fail closed without mutation.", "kind": "function", "line": 125, "name": "fassoc_push", "signature": "static int fassoc_push(struct fassoc_table *t, const char *ext, const char *prog)"}, {"doc": "if (t == NULL) return -1; if (!fassoc_ext_ok(ext)) return -1; if (!fassoc_prog_ok(prog)) return -1; if (t->cnt >= (size_t)FASSOC_HARD_MAX) return -1; if (t->cnt >= t->cap) { if (fassoc_reserve(t, t->cnt + 1) != 0) return -1; } strcpy(t->p[t->cnt].ext, ext); strcpy(t->p[t->cnt].prog, prog); t->cnt++; return 0; } /** Docstring: program for ext in file order, empty string when unmapped.", "kind": "function", "line": 140, "name": "fassoc_lookup", "signature": "static const char *fassoc_lookup(const struct fassoc_table *t, const char *ext)"}, {"doc": "return 0; } /** Docstring: program for ext in file order, empty string when unmapped. static const char *fassoc_lookup(const struct fassoc_table *t, const char *ext) { size_t k = 0; if (t == NULL || ext == NULL || ext[0] == 0) return \"\"; for (k = 0; k < t->cnt; k++) { if (strcmp(t->p[k].ext, ext) == 0) return t->p[k].prog; } return \"\"; } /** Docstring: logical entry count, zero for null table.", "kind": "function", "line": 150, "name": "fassoc_count", "signature": "static size_t fassoc_count(const struct fassoc_table *t)"}, {"kind": "macro", "line": 15, "name": "MINIOS_FILE_ASSOC_H", "signature": "#define MINIOS_FILE_ASSOC_H"}, {"kind": "macro", "line": 22, "name": "FASSOC_EXT_MAX", "signature": "#define FASSOC_EXT_MAX"}, {"kind": "macro", "line": 26, "name": "FASSOC_PROG_MAX", "signature": "#define FASSOC_PROG_MAX"}, {"kind": "macro", "line": 30, "name": "FASSOC_INIT_CAP", "signature": "#define FASSOC_INIT_CAP"}, {"kind": "macro", "line": 34, "name": "FASSOC_HARD_MAX", "signature": "#define FASSOC_HARD_MAX"}, {"kind": "macro", "line": 38, "name": "FASSOC_GROW_NUM", "signature": "#define FASSOC_GROW_NUM"}, {"kind": "macro", "line": 42, "name": "FASSOC_GROW_DEN", "signature": "#define FASSOC_GROW_DEN"}]}, {"doc": "freedomui_minios - Real FreeDom browser on MiniOS, DOOM/Q2G pattern.", "id": "progs/freedomui/freedomui_minios.c", "kind": "module", "label": "freedomui_minios.c", "language": "c", "sha256": "bd6038800650caf9", "symbol_count": 42, "symbols": [{"doc": "#define FUI_NET_BUF 768L #define FUI_REQ_MAX 768L #define FUI_HOST_MAX 64L #define FUI_PATH_MAX 128L #define FUI_URL_MAX 512L #define FUI_HOPS_MAX 3L #define FUI_FONT_W 8L #define FUI_FONT_H 8L #define FUI_TITLE_MAX 31L /** Shared 8x8 bitmap font, one copy in progs/nuklear/font8x8.c. extern const uint8_t nk_font8x8[96][8]; /** Centralized configuration for the MiniOS backend.", "kind": "struct", "line": 69, "name": "FreedomUiConfig"}, {"doc": "#define FUI_NET_BUF 768L #define FUI_REQ_MAX 768L #define FUI_HOST_MAX 64L #define FUI_PATH_MAX 128L #define FUI_URL_MAX 512L #define FUI_HOPS_MAX 3L #define FUI_FONT_W 8L #define FUI_FONT_H 8L #define FUI_TITLE_MAX 31L /** Shared 8x8 bitmap font, one copy in progs/nuklear/font8x8.c. extern const uint8_t nk_font8x8[96][8]; /** Centralized configuration for the MiniOS backend.", "kind": "type_alias", "line": 69, "name": "present_buf", "signature": "typedef struct FreedomUiConfig { long present_buf;"}, {"doc": "long path_max; long url_max; long hops_max; long font_w; long font_h; long port_http; long port_https; long ink_bg; long ink_fg; long bar_bg; long bar_fg; } FreedomUiConfig; /** Default configuration derived from the ABI header.", "kind": "function", "line": 97, "name": "freedomui_default", "signature": "static FreedomUiConfig freedomui_default(void)"}, {"doc": "Shared hybrid palette, one table for every NK-window app (progs/nk_palette.h); this wrapper keeps the historic name and fail-closed contract the host suite pins.", "kind": "function", "line": 130, "name": "freedomui_build_palette", "signature": "static long freedomui_build_palette(unsigned char *pal, long cap)"}, {"doc": "Parse a fetched body through the real engine into owned title and text. Runs hp_parse with secure defaults (scripts stripped, handlers stripped) then hp_get_title and hp_extract_text. Both out pointers are owned buffers the caller releases with hp_free; either may be NULL when the document carries no title or no text. Returns element count, or -1 on parse failure. Fail-closed on every bound.", "kind": "function", "line": 145, "name": "freedomui_engine_text", "signature": "static long freedomui_engine_text(char *body, long n, char **title, char **text)"}, {"doc": "static char f_path[FUI_PATH_MAX]; static char f_loc[FUI_URL_MAX]; static char f_hdr[FUI_HDR_MAX]; static char f_body[FUI_BODY_CAP]; static char *f_text; static ui_layout f_lay; static long f_elems; static long f_nbytes; static long f_secure; static long f_port; static long f_status; static long f_truncated; /** Present syscall wrapper for the NK buffer path.", "kind": "function", "line": 193, "name": "freedomui_sys_present", "signature": "static long freedomui_sys_present(long buf, long origin)"}, {"doc": "static long f_nbytes; static long f_secure; static long f_port; static long f_status; static long f_truncated; /** Present syscall wrapper for the NK buffer path. static long freedomui_sys_present(long buf, long origin) { long ret; __asm__ volatile(\"syscall\" : \"=a\"(ret) : \"a\"(MINIOS_SYS_GFX_PRESENT), \"D\"(buf), \"S\"(origin) : \"rcx\", \"r11\", \"memory\"); return ret; } /** Set window title through the generic title syscall.", "kind": "function", "line": 200, "name": "freedomui_sys_title", "signature": "static long freedomui_sys_title(char *t)"}, {"doc": "static long freedomui_sys_present(long buf, long origin) { long ret; __asm__ volatile(\"syscall\" : \"=a\"(ret) : \"a\"(MINIOS_SYS_GFX_PRESENT), \"D\"(buf), \"S\"(origin) : \"rcx\", \"r11\", \"memory\"); return ret; } /** Set window title through the generic title syscall. static long freedomui_sys_title(char *t) { long ret; __asm__ volatile(\"syscall\" : \"=a\"(ret) : \"a\"(MINIOS_SYS_GFX_SET_TITLE), \"D\"(t) : \"rcx\", \"r11\", \"memory\"); return ret; } /** Upload the 768-byte graphics palette before presenting indexed pixels.", "kind": "function", "line": 207, "name": "freedomui_sys_palette", "signature": "static long freedomui_sys_palette(unsigned char *pal)"}, {"doc": "static long freedomui_sys_title(char *t) { long ret; __asm__ volatile(\"syscall\" : \"=a\"(ret) : \"a\"(MINIOS_SYS_GFX_SET_TITLE), \"D\"(t) : \"rcx\", \"r11\", \"memory\"); return ret; } /** Upload the 768-byte graphics palette before presenting indexed pixels. static long freedomui_sys_palette(unsigned char *pal) { long ret; __asm__ volatile(\"syscall\" : \"=a\"(ret) : \"a\"(MINIOS_SYS_PALETTE), \"D\"(pal) : \"rcx\", \"r11\", \"memory\"); return ret; } /** Read desktop mouse state into a four word buffer.", "kind": "function", "line": 214, "name": "freedomui_sys_mouse", "signature": "static long freedomui_sys_mouse(long *m)"}, {"doc": "static long freedomui_sys_palette(unsigned char *pal) { long ret; __asm__ volatile(\"syscall\" : \"=a\"(ret) : \"a\"(MINIOS_SYS_PALETTE), \"D\"(pal) : \"rcx\", \"r11\", \"memory\"); return ret; } /** Read desktop mouse state into a four word buffer. static long freedomui_sys_mouse(long *m) { long ret; __asm__ volatile(\"syscall\" : \"=a\"(ret) : \"a\"(MINIOS_SYS_MOUSE), \"D\"(m) : \"rcx\", \"r11\", \"memory\"); return ret; } /** Poll one raw keyboard scancode, negative when idle.", "kind": "function", "line": 221, "name": "freedomui_sys_kbd", "signature": "static long freedomui_sys_kbd(void)"}, {"doc": "static long freedomui_sys_mouse(long *m) { long ret; __asm__ volatile(\"syscall\" : \"=a\"(ret) : \"a\"(MINIOS_SYS_MOUSE), \"D\"(m) : \"rcx\", \"r11\", \"memory\"); return ret; } /** Poll one raw keyboard scancode, negative when idle. static long freedomui_sys_kbd(void) { long ret; __asm__ volatile(\"syscall\" : \"=a\"(ret) : \"a\"(MINIOS_SYS_KBD), \"D\"(0) : \"rcx\", \"r11\", \"memory\"); return ret; } /** Tell the kernel a graphics program owns the display.", "kind": "function", "line": 228, "name": "freedomui_sys_vga_mode", "signature": "static long freedomui_sys_vga_mode(long on)"}, {"doc": "static long freedomui_sys_kbd(void) { long ret; __asm__ volatile(\"syscall\" : \"=a\"(ret) : \"a\"(MINIOS_SYS_KBD), \"D\"(0) : \"rcx\", \"r11\", \"memory\"); return ret; } /** Tell the kernel a graphics program owns the display. static long freedomui_sys_vga_mode(long on) { long ret; __asm__ volatile(\"syscall\" : \"=a\"(ret) : \"a\"(MINIOS_SYS_VGA_MODE), \"D\"(on) : \"rcx\", \"r11\", \"memory\"); return ret; } /** Switch the console into raw scancode mode.", "kind": "function", "line": 235, "name": "freedomui_sys_kbd_raw", "signature": "static long freedomui_sys_kbd_raw(long on)"}, {"doc": "static long freedomui_sys_vga_mode(long on) { long ret; __asm__ volatile(\"syscall\" : \"=a\"(ret) : \"a\"(MINIOS_SYS_VGA_MODE), \"D\"(on) : \"rcx\", \"r11\", \"memory\"); return ret; } /** Switch the console into raw scancode mode. static long freedomui_sys_kbd_raw(long on) { long ret; __asm__ volatile(\"syscall\" : \"=a\"(ret) : \"a\"(MINIOS_SYS_KBD_RAW), \"D\"(on) : \"rcx\", \"r11\", \"memory\"); return ret; } /** Voluntary yield to the scheduler.", "kind": "function", "line": 242, "name": "freedomui_sys_yield", "signature": "static long freedomui_sys_yield(void)"}, {"doc": "static long freedomui_sys_kbd_raw(long on) { long ret; __asm__ volatile(\"syscall\" : \"=a\"(ret) : \"a\"(MINIOS_SYS_KBD_RAW), \"D\"(on) : \"rcx\", \"r11\", \"memory\"); return ret; } /** Voluntary yield to the scheduler. static long freedomui_sys_yield(void) { long ret; __asm__ volatile(\"syscall\" : \"=a\"(ret) : \"a\"(MINIOS_SYS_SCHED_YIELD), \"D\"(0) : \"rcx\", \"r11\", \"memory\"); return ret; } /** Bounded append of src at dst[pos].", "kind": "function", "line": 249, "name": "fui_append", "signature": "static long fui_append(char *dst, long pos, char *src, long cap)"}, {"doc": "} i = 0L; while (src[i] != 0) { if (pos + i + 1L >= cap) { return -1L; } dst[pos + i] = src[i]; i++; } dst[pos + i] = 0; return pos + i; } /** Bounded string length.", "kind": "function", "line": 267, "name": "fui_strlen", "signature": "static long fui_strlen(char *s, long cap)"}, {"doc": "if (!s || cap <= 0L) { return -1L; } i = 0L; while (i < cap && s[i] != 0) { i++; } if (i >= cap) { return -1L; } return i; } /** Split an http(s) URL into host, path, port and secure flag.", "kind": "function", "line": 283, "name": "fui_split_url", "signature": "static long fui_split_url(FreedomUiConfig *c, char *url, char *host, char *path, long *port, long..."}, {"doc": "return 0L; } path[k] = p[hl + k]; k++; } path[k] = 0; } else { path[0] = '/'; path[1] = 0; } return 1L; } /** Parse response headers into status, length, encoding and routing.", "kind": "function", "line": 352, "name": "fui_parse_headers", "signature": "static long fui_parse_headers(FreedomUiConfig *c, char *hdr, long *status, long *clen, long *hasc..."}, {"doc": "} k++; } } } line++; while (hdr[i] == '\\r' || hdr[i] == '\\n') { i++; } } return 0L; } /** Fetch one response body into the page buffer.", "kind": "function", "line": 470, "name": "fui_fetch_raw", "signature": "static long fui_fetch_raw(FreedomUiConfig *c, char *host, char *path, long port, long secure)"}, {"doc": "if (got < c->body_cap) { f_body[got] = (char)ch; got++; } else { f_truncated = 1L; } } } } tls_close((int)fd); return got; } /** Render the engine text window at the given scroll offset.", "kind": "function", "line": 698, "name": "fui_render", "signature": "static long fui_render(FreedomUiConfig *c, size_t off)"}, {"doc": "long ink; if (bits & (0x80 >> px)) { ink = c->bar_fg; } else { ink = c->bar_bg; } fb[((size_t)c->text_rows * (size_t)c->font_h + (size_t)row) * (size_t)c->surface_w + (size_t)col * (size_t)c->font_w + (size_t)px] = (unsigned char)ink; } } } return freedomui_sys_present(c->present_buf, 0L); } /** Interactive scroll loop until q or ESC quits.", "kind": "function", "line": 817, "name": "fui_browse", "signature": "static long fui_browse(FreedomUiConfig *c)"}, {"doc": "} off = ui_clamp_scroll((size_t)want, f_lay.count, (size_t)c->text_rows); changed = 1L; } if (changed) { if (fui_render(c, off) < 0L) { return 1L; } } freedomui_sys_yield(); } } /** Guest selftest entry mirroring the Nuklear frame contract.", "kind": "function", "line": 896, "name": "freedomui_selftest", "signature": "static long freedomui_selftest(void)"}, {"doc": "return 1L; } if (freedomui_sys_kbd() > 0x7FFFFFFFL) { printf(\"freedomui: kbd out of range\\n\"); return 1L; } freedomui_sys_title(\"FreeDom\"); printf(\"freedomui: frame ok (%ldx%ld)\\n\", c.surface_w, c.surface_h); return 0L; } #endif #ifdef FREEDOMUI_HOST_TEST /** Host harness probe for pure backend logic plus engine linkage.", "kind": "function", "line": 984, "name": "freedomui_host_probe", "signature": "static long freedomui_host_probe(FreedomUiConfig *c)"}, {"doc": "if (title) { hp_free(title); } return -1L; } ui_layout_free(&lay); hp_free(text); if (title) { hp_free(title); } return 0L; } /** Host harness entry for pure backend logic plus engine linkage.", "kind": "function", "line": 1067, "name": "freedomui_host_entry", "signature": "int freedomui_host_entry(FreedomUiConfig *c)"}, {"doc": "ui_layout_free(&lay); hp_free(text); if (title) { hp_free(title); } return 0L; } /** Host harness entry for pure backend logic plus engine linkage. int freedomui_host_entry(FreedomUiConfig *c) { return (int)freedomui_host_probe(c); } #else /** Guest entry point shared by the MiniFS binary.", "kind": "function", "line": 1072, "name": "main", "signature": "int main(int argc, char **argv)"}, {"kind": "function", "line": 44, "name": "net_dns_resolve", "signature": "int net_dns_resolve(const char *host);"}, {"kind": "function", "line": 45, "name": "tls_handshake", "signature": "int tls_handshake(int fd, char *host);"}, {"kind": "function", "line": 46, "name": "tls_send", "signature": "int tls_send(int fd, char *buf, int len);"}, {"kind": "function", "line": 47, "name": "tls_recv", "signature": "int tls_recv(int fd, char *buf, int len);"}, {"kind": "function", "line": 48, "name": "tls_close", "signature": "void tls_close(int fd);"}, {"kind": "macro", "line": 51, "name": "FUI_COLS", "signature": "#define FUI_COLS"}, {"kind": "macro", "line": 52, "name": "FUI_TEXT_ROWS", "signature": "#define FUI_TEXT_ROWS"}, {"kind": "macro", "line": 53, "name": "FUI_BODY_CAP", "signature": "#define FUI_BODY_CAP"}, {"kind": "macro", "line": 54, "name": "FUI_HDR_MAX", "signature": "#define FUI_HDR_MAX"}, {"kind": "macro", "line": 55, "name": "FUI_NET_BUF", "signature": "#define FUI_NET_BUF"}, {"kind": "macro", "line": 56, "name": "FUI_REQ_MAX", "signature": "#define FUI_REQ_MAX"}, {"kind": "macro", "line": 57, "name": "FUI_HOST_MAX", "signature": "#define FUI_HOST_MAX"}, {"kind": "macro", "line": 58, "name": "FUI_PATH_MAX", "signature": "#define FUI_PATH_MAX"}, {"kind": "macro", "line": 59, "name": "FUI_URL_MAX", "signature": "#define FUI_URL_MAX"}, {"kind": "macro", "line": 60, "name": "FUI_HOPS_MAX", "signature": "#define FUI_HOPS_MAX"}, {"kind": "macro", "line": 61, "name": "FUI_FONT_W", "signature": "#define FUI_FONT_W"}, {"kind": "macro", "line": 62, "name": "FUI_FONT_H", "signature": "#define FUI_FONT_H"}, {"kind": "macro", "line": 63, "name": "FUI_TITLE_MAX", "signature": "#define FUI_TITLE_MAX"}]}, {"id": "progs/lisp/lisp.c", "kind": "module", "label": "lisp.c", "language": "c", "sha256": "0ea572689618ffe9", "symbol_count": 105, "symbols": [{"doc": "Runtime value node with one payload per type.", "kind": "struct", "line": 113, "name": "Node"}, {"doc": "Single name binding inside an environment frame.", "kind": "struct", "line": 140, "name": "Binding"}, {"doc": "Lexical environment frame with a parent chain.", "kind": "struct", "line": 149, "name": "Env"}, {"doc": "Allocation record so the whole heap frees at exit.", "kind": "struct", "line": 157, "name": "AllocTracker"}, {"doc": "Interpreter runtime with globals, streams and resource tables.", "kind": "struct", "line": 165, "name": "Runtime"}, {"doc": "Result of a single read step with a bounded diagnostic.", "kind": "struct", "line": 104, "name": "ParseResult"}, {"doc": "Character cursor over an immutable source buffer.", "kind": "struct", "line": 181, "name": "Reader"}, {"doc": "Growable byte buffer for tokens and strings.", "kind": "struct", "line": 192, "name": "StringBuilder"}, {"doc": "========================================================================= Primitive registry ========================================================================= A flat name -> function table instead of ~30 repeated bind_primitive() calls. Adding a builtin is now one row here; init_env() itself never needs to change again to register it. * =========================================================================", "kind": "struct", "line": 1960, "name": "PrimEntry"}, {"doc": "Central configuration for every bound in the interpreter. No other literal below controls a limit, a port, a syscall number or a user-visible string twice; edits happen here. Every array sized by one of these constants below (open_files[], argv[], message[]) MUST spell the constant, not the number, so this enum stays the single source of truth it claims to be.", "kind": "enum", "line": 41, "name": "LispConfig"}, {"kind": "type_alias", "line": 65, "name": "Runtime", "signature": "typedef struct Runtime Runtime;"}, {"kind": "type_alias", "line": 67, "name": "Node", "signature": "typedef struct Node Node;"}, {"kind": "type_alias", "line": 68, "name": "Env", "signature": "typedef struct Env Env;"}, {"kind": "type_alias", "line": 69, "name": "Binding", "signature": "typedef struct Binding Binding;"}, {"kind": "type_alias", "line": 70, "name": "AllocTracker", "signature": "typedef struct AllocTracker AllocTracker;"}, {"doc": "Version string printed by --version and the REPL banner.", "kind": "function", "line": 62, "name": "lisp_version", "signature": "static const char *lisp_version(void)"}, {"doc": "Raw 3-argument syscall through the x86-64 Linux ABI.", "kind": "function", "line": 205, "name": "msys", "signature": "static long msys(long n, long a1, long a2, long a3)"}, {"doc": "Raw 5-argument syscall for SYS_SPAWN with path, redirect, argc, argv.", "kind": "function", "line": 218, "name": "msys5", "signature": "static long msys5(long n, long a1, long a2, long a3, long a4, long a5)"}, {"doc": "Report a fatal internal failure and terminate the process.", "kind": "function", "line": 233, "name": "fatal", "signature": "static void fatal(Runtime *rt, const char *message)"}, {"doc": "Allocate zeroed tracked memory that frees with the runtime.", "kind": "function", "line": 242, "name": "xalloc", "signature": "static void *xalloc(Runtime *rt, size_t size)"}, {"doc": "Duplicate a string into tracked memory.", "kind": "function", "line": 266, "name": "xstrdup", "signature": "static char *xstrdup(Runtime *rt, const char *source)"}, {"doc": "Allocate a node of the given type in tracked memory.", "kind": "function", "line": 284, "name": "make_node", "signature": "static Node *make_node(Runtime *rt, NodeType type)"}, {"doc": "Build an error value carrying a diagnostic message.", "kind": "function", "line": 293, "name": "make_error", "signature": "static Node *make_error(Runtime *rt, const char *message)"}, {"doc": "Build a numeric value node.", "kind": "function", "line": 302, "name": "make_num", "signature": "static Node *make_num(Runtime *rt, int64_t value)"}, {"doc": "Build a string value node from a NUL-terminated source.", "kind": "function", "line": 311, "name": "make_str", "signature": "static Node *make_str(Runtime *rt, const char *value)"}, {"doc": "Build a symbol value node from a NUL-terminated name.", "kind": "function", "line": 320, "name": "make_sym", "signature": "static Node *make_sym(Runtime *rt, const char *value)"}, {"doc": "Build a primitive function value node.", "kind": "function", "line": 329, "name": "make_prim", "signature": "static Node *make_prim(Runtime *rt, PrimFn function)"}, {"doc": "Build a cons cell from two values.", "kind": "function", "line": 338, "name": "cons", "signature": "static Node *cons(Runtime *rt, Node *car, Node *cdr)"}, {"doc": "Test whether a node is the empty list in any of its spellings.", "kind": "function", "line": 348, "name": "is_nil", "signature": "static bool is_nil(Runtime *rt, const Node *node)"}, {"doc": "Register an open FILE handle and wrap it in a file value node.", "kind": "function", "line": 355, "name": "make_file", "signature": "static Node *make_file(Runtime *rt, FILE *handle)"}, {"doc": "Close every tracked file and release every tracked allocation.", "kind": "function", "line": 377, "name": "cleanup", "signature": "static void cleanup(Runtime *rt)"}, {"doc": "Initialize a runtime with streams, constants and empty tables.", "kind": "function", "line": 399, "name": "runtime_init", "signature": "static void runtime_init(Runtime *rt)"}, {"doc": "Allocate a new environment frame with an optional parent.", "kind": "function", "line": 411, "name": "env_new", "signature": "static Env *env_new(Runtime *rt, Env *parent)"}, {"doc": "Bind a symbol to a value in the innermost frame.", "kind": "function", "line": 421, "name": "env_bind", "signature": "static void env_bind(Runtime *rt, Env *env, Node *symbol, Node *value)"}, {"doc": "Update the nearest visible binding of a symbol.", "kind": "function", "line": 432, "name": "env_set", "signature": "static bool env_set(Env *env, Node *symbol, Node *value)"}, {"doc": "Resolve the nearest visible binding of a symbol.", "kind": "function", "line": 454, "name": "env_lookup", "signature": "static Node *env_lookup(Env *env, Node *symbol)"}, {"doc": "Peek at the current reader character without consuming it.", "kind": "function", "line": 475, "name": "reader_peek", "signature": "static char reader_peek(const Reader *reader)"}, {"doc": "Consume one reader character and track line and column.", "kind": "function", "line": 482, "name": "reader_next", "signature": "static char reader_next(Reader *reader)"}, {"doc": "Test whether the reader reached the end of its buffer.", "kind": "function", "line": 500, "name": "reader_at_end", "signature": "static bool reader_at_end(const Reader *reader)"}, {"doc": "Skip whitespace and line comments starting with a semicolon.", "kind": "function", "line": 507, "name": "skip_space_and_comments", "signature": "static void skip_space_and_comments(Reader *reader)"}, {"doc": "Initialize a string builder with a bounded initial capacity.", "kind": "function", "line": 523, "name": "sb_init", "signature": "static void sb_init(StringBuilder *builder)"}, {"doc": "Append one byte to a string builder with overflow-checked growth.", "kind": "function", "line": 536, "name": "sb_push", "signature": "static void sb_push(StringBuilder *builder, char value)"}, {"doc": "Build a successful parse result.", "kind": "function", "line": 562, "name": "parse_ok", "signature": "static ParseResult parse_ok(Node *value)"}, {"doc": "Build an end-of-input parse result.", "kind": "function", "line": 573, "name": "parse_eof", "signature": "static ParseResult parse_eof(void)"}, {"doc": "Build a parse error result with a bounded message.", "kind": "function", "line": 584, "name": "parse_error", "signature": "static ParseResult parse_error(const char *message)"}, {"doc": "Read a parenthesized list terminated by a closing paren.", "kind": "function", "line": 596, "name": "read_list", "signature": "static ParseResult read_list(Runtime *rt, Reader *reader)"}, {"doc": "Read a double-quoted string with backslash escapes.", "kind": "function", "line": 626, "name": "read_string", "signature": "static ParseResult read_string(Runtime *rt, Reader *reader)"}, {"doc": "Test whether a character terminates an atom token.", "kind": "function", "line": 677, "name": "token_delimiter", "signature": "static bool token_delimiter(char c)"}, {"doc": "Read a number, nil, t or symbol token.", "kind": "function", "line": 685, "name": "read_atom", "signature": "static ParseResult read_atom(Runtime *rt, Reader *reader)"}, {"doc": "Read one expression, skipping whitespace and comments first.", "kind": "function", "line": 721, "name": "read_expr", "signature": "static ParseResult read_expr(Runtime *rt, Reader *reader)"}, {"doc": "Count proper list elements and report whether the spine is proper.", "kind": "function", "line": 750, "name": "list_count", "signature": "static size_t list_count(Runtime *rt, Node *list, bool *proper)"}, {"doc": "Test whether an argument list has exactly the expected length.", "kind": "function", "line": 767, "name": "has_arity", "signature": "static bool has_arity(Runtime *rt, Node *args, size_t expected)"}, {"doc": "Fetch the positional argument at an index or NULL when absent.", "kind": "function", "line": 775, "name": "arg_at", "signature": "static Node *arg_at(Runtime *rt, Node *args, size_t index)"}, {"doc": "Test whether an already-fetched argument matches one ArgKind.", "kind": "function", "line": 815, "name": "arg_matches", "signature": "static bool arg_matches(const Node *value, ArgKind kind)"}, {"doc": "Validate that args is a proper list of exactly n elements whose types match kinds[0..n), writing each fetched argument into out[0..n). Returns false (out[] left untouched) on any mismatch; the caller's one job on failure is to pick the error message, since that is the only part that legitimately differs between primitives.", "kind": "function", "line": 841, "name": "check_args", "signature": "static bool check_args(Runtime *rt, Node *args, const ArgKind *kinds,\n size_t n, Node **out)"}, {"doc": "Validate that args is the empty argument list.", "kind": "function", "line": 861, "name": "arity0", "signature": "static bool arity0(Runtime *rt, Node *args)"}, {"doc": "Add two numbers with overflow reported as an error value.", "kind": "function", "line": 869, "name": "prim_add", "signature": "static Node *prim_add(Runtime *rt, Node *args)"}, {"doc": "Subtract two numbers with overflow reported as an error value.", "kind": "function", "line": 885, "name": "prim_sub", "signature": "static Node *prim_sub(Runtime *rt, Node *args)"}, {"doc": "Multiply two numbers with overflow reported as an error value.", "kind": "function", "line": 901, "name": "prim_mul", "signature": "static Node *prim_mul(Runtime *rt, Node *args)"}, {"doc": "Divide two numbers with zero and overflow reported as errors.", "kind": "function", "line": 917, "name": "prim_div", "signature": "static Node *prim_div(Runtime *rt, Node *args)"}, {"doc": "Compare two numbers for equality.", "kind": "function", "line": 939, "name": "prim_eq", "signature": "static Node *prim_eq(Runtime *rt, Node *args)"}, {"doc": "Compare two numbers with less-than.", "kind": "function", "line": 951, "name": "prim_lt", "signature": "static Node *prim_lt(Runtime *rt, Node *args)"}, {"doc": "Return the first element of a cons cell or nil.", "kind": "function", "line": 963, "name": "prim_car", "signature": "static Node *prim_car(Runtime *rt, Node *args)"}, {"doc": "Return the rest of a cons cell or nil.", "kind": "function", "line": 975, "name": "prim_cdr", "signature": "static Node *prim_cdr(Runtime *rt, Node *args)"}, {"doc": "Build a cons cell from two values.", "kind": "function", "line": 987, "name": "prim_cons", "signature": "static Node *prim_cons(Runtime *rt, Node *args)"}, {"doc": "Concatenate two strings with an overflow-checked allocation.", "kind": "function", "line": 999, "name": "prim_string_concat", "signature": "static Node *prim_string_concat(Runtime *rt, Node *args)"}, {"doc": "Compare two strings for equality.", "kind": "function", "line": 1026, "name": "prim_string_eq", "signature": "static Node *prim_string_eq(Runtime *rt, Node *args)"}, {"doc": "Return the byte length of a string.", "kind": "function", "line": 1038, "name": "prim_string_length", "signature": "static Node *prim_string_length(Runtime *rt, Node *args)"}, {"doc": "Return the one-character string at a byte index or nil when out of range.", "kind": "function", "line": 1050, "name": "prim_string_at", "signature": "static Node *prim_string_at(Runtime *rt, Node *args)"}, {"doc": "Convert between a one-character string and its byte value.", "kind": "function", "line": 1072, "name": "prim_char_code", "signature": "static Node *prim_char_code(Runtime *rt, Node *args)"}, {"doc": "Print a value without a trailing newline.", "kind": "function", "line": 1094, "name": "prim_print", "signature": "static Node *prim_print(Runtime *rt, Node *args)"}, {"doc": "Print a value with a trailing newline.", "kind": "function", "line": 1108, "name": "prim_println", "signature": "static Node *prim_println(Runtime *rt, Node *args)"}, {"doc": "Test whether a file mode string belongs to the safe whitelist.", "kind": "function", "line": 1123, "name": "file_mode_allowed", "signature": "static bool file_mode_allowed(const char *mode)"}, {"doc": "Read one byte from a file or nil at end of file.", "kind": "function", "line": 1183, "name": "prim_read_char", "signature": "static Node *prim_read_char(Runtime *rt, Node *args)"}, {"doc": "Write a string or byte value to an open file.", "kind": "function", "line": 1200, "name": "prim_write", "signature": "static Node *prim_write(Runtime *rt, Node *args)"}, {"doc": "Close an open file and release its runtime slot.", "kind": "function", "line": 1224, "name": "prim_close_file", "signature": "static Node *prim_close_file(Runtime *rt, Node *args)"}, {"doc": "Test whether a value is nil.", "kind": "function", "line": 1249, "name": "prim_null_p", "signature": "static Node *prim_null_p(Runtime *rt, Node *args)"}, {"doc": "Test whether a value is a number.", "kind": "function", "line": 1261, "name": "prim_number_p", "signature": "static Node *prim_number_p(Runtime *rt, Node *args)"}, {"doc": "Test whether a value is a string.", "kind": "function", "line": 1273, "name": "prim_string_p", "signature": "static Node *prim_string_p(Runtime *rt, Node *args)"}, {"doc": "Return the message of an error value or nil for other values.", "kind": "function", "line": 1285, "name": "prim_error_message", "signature": "static Node *prim_error_message(Runtime *rt, Node *args)"}, {"doc": "Terminate the process with a numeric exit status. Variable arity (0 or 1); stays outside check_args() for the same reason open-file does.", "kind": "function", "line": 1303, "name": "prim_exit", "signature": "static Node *prim_exit(Runtime *rt, Node *args)"}, {"doc": "Return milliseconds since boot through the kernel time service.", "kind": "function", "line": 1330, "name": "prim_time_ms", "signature": "static Node *prim_time_ms(Runtime *rt, Node *args)"}, {"doc": "Return the clock time as a three-element list or nil when unavailable.", "kind": "function", "line": 1340, "name": "prim_rtc", "signature": "static Node *prim_rtc(Runtime *rt, Node *args)"}, {"doc": "Return framebuffer width, height and pitch or nil when unavailable.", "kind": "function", "line": 1357, "name": "prim_fb_info", "signature": "static Node *prim_fb_info(Runtime *rt, Node *args)"}, {"doc": "Read or set the speaker volume, clamped to the valid range. Variable arity (0 or 1); stays outside check_args() for the same reason open-file does.", "kind": "function", "line": 1377, "name": "prim_vol", "signature": "static Node *prim_vol(Runtime *rt, Node *args)"}, {"doc": "Load a 768-byte VGA palette from a string value.", "kind": "function", "line": 1405, "name": "prim_pal", "signature": "static Node *prim_pal(Runtime *rt, Node *args)"}, {"doc": "Play a speaker tone for a bounded millisecond duration.", "kind": "function", "line": 1421, "name": "prim_pcspeaker", "signature": "static Node *prim_pcspeaker(Runtime *rt, Node *args)"}, {"doc": "Run a program through SYS_SPAWN and return its exit code.", "kind": "function", "line": 1465, "name": "prim_minios_run", "signature": "static Node *prim_minios_run(Runtime *rt, Node *args)"}, {"doc": "Evaluate every element of a list into a fresh proper list. Error results travel as ordinary values so programs can inspect them with error-message; only a hard evaluation failure aborts the walk.", "kind": "function", "line": 1527, "name": "eval_list", "signature": "static Node *eval_list(Runtime *rt, Node *list, Env *env)"}, {"doc": "Evaluate a body sequence and return the last value.", "kind": "function", "line": 1551, "name": "eval_sequence", "signature": "static Node *eval_sequence(Runtime *rt, Node *body, Env *env)"}, {"doc": "Test whether a parameter list holds only symbols.", "kind": "function", "line": 1569, "name": "valid_params", "signature": "static bool valid_params(Runtime *rt, Node *params)"}, {"doc": "Evaluate an expression with tail-call reuse and a bounded depth.", "kind": "function", "line": 1583, "name": "eval", "signature": "static Node *eval(Runtime *rt, Node *expression, Env *env)"}, {"doc": "Write a string with escape sequences for readable output.", "kind": "function", "line": 1846, "name": "print_escaped_string", "signature": "static void print_escaped_string(FILE *out, const char *value)"}, {"doc": "Print a value in readable or display form with a bounded depth.", "kind": "function", "line": 1877, "name": "print_node", "signature": "static void print_node(Runtime *rt, Node *node, bool readable)"}, {"doc": "Register one named primitive in an environment frame.", "kind": "function", "line": 1948, "name": "bind_primitive", "signature": "static void bind_primitive(Runtime *rt, Env *env, const char *name,\n PrimFn function)"}, {"doc": "Build the global environment with arithmetic, strings, files and MiniOS.", "kind": "function", "line": 2004, "name": "init_env", "signature": "static Env *init_env(Runtime *rt)"}, {"doc": "Expose the script argument vector as a proper list of strings.", "kind": "function", "line": 2017, "name": "bind_argv", "signature": "static void bind_argv(Runtime *rt, Env *env, int argc, char **argv, int first)"}, {"doc": "Read a whole file into memory with a hard size cap.", "kind": "function", "line": 2029, "name": "read_all_file", "signature": "static char *read_all_file(const char *filename, size_t max_bytes)"}, {"doc": "Evaluate every form in a source buffer and report the first failure.", "kind": "function", "line": 2087, "name": "process_source", "signature": "static int process_source(Runtime *rt, const char *source,\n const char *source_name, bool echo)"}, {"doc": "Evaluate one inline expression from the -e flag.", "kind": "function", "line": 2129, "name": "process_inline", "signature": "static int process_inline(Runtime *rt, const char *code)"}, {"doc": "Print usage for the command line interface.", "kind": "function", "line": 2136, "name": "print_usage", "signature": "static void print_usage(Runtime *rt)"}, {"doc": "Run the interactive read-eval loop on the runtime input stream.", "kind": "function", "line": 2143, "name": "repl", "signature": "static int repl(Runtime *rt)"}, {"doc": "Entry point with -e, script and REPL modes plus bounded arguments.", "kind": "function", "line": 2190, "name": "main", "signature": "int main(int argc, char **argv)"}, {"kind": "function", "line": 9, "name": "numbers", "signature": "* * Language surface: numbers (int64), strings, symbols, cons cells, closures * with lexical scope, and the special forms quote, if, begin, define, set!, * lambda and let. Diagnostics go to stderr, va"}, {"kind": "function", "line": 1300, "name": "arity", "signature": "* * Variable arity (0 or 1);"}]}, {"id": "progs/lisp/tin.c", "kind": "module", "label": "tin.c", "language": "c", "sha256": "d69dd0f3784f4cf0", "symbol_count": 1, "symbols": [{"kind": "function", "line": 1, "name": "main", "signature": "int main()"}]}, {"id": "progs/lua/lua_main.c", "kind": "module", "label": "lua_main.c", "language": "c", "sha256": "59395b1eac4b1f42", "symbol_count": 7, "symbols": [{"kind": "function", "line": 22, "name": "luaL_require_global", "signature": "static void luaL_require_global(lua_State *L, const char *name,\n l..."}, {"kind": "function", "line": 28, "name": "set_arg_table", "signature": "static void set_arg_table(lua_State *L, int argc, char **argv, int first)"}, {"kind": "function", "line": 41, "name": "docode", "signature": "static int docode(lua_State *L, const char *code)"}, {"kind": "function", "line": 51, "name": "dofile", "signature": "static int dofile(lua_State *L, const char *name)"}, {"kind": "function", "line": 61, "name": "repl", "signature": "static int repl(lua_State *L)"}, {"kind": "function", "line": 105, "name": "main", "signature": "int main(int argc, char **argv)"}, {"kind": "function", "line": 5, "name": "module", "signature": "* C module (minios.c) can be registered globally before any script runs: * `minios.run(...)`, `minios.time_ms()`, etc. are available as a plain global * table, exactly like `import minios` in MicroPyt"}]}, {"id": "progs/lua/minios.c", "kind": "module", "label": "minios.c", "language": "c", "sha256": "633653288561a337", "symbol_count": 17, "symbols": [{"doc": "/* ── raw syscall helpers (x86-64 Linux ABI) ─────────────────────────── static long msys(long n, long a1, long a2, long a3) { long ret; __asm__ volatile( \"syscall\" : \"=a\"(ret) : \"a\"(n), \"D\"(a1), \"S\"(a2), \"d\"(a3) : \"rcx\", \"r11\", \"memory\" ); return ret; } /* 5-argument syscall (SYS_SPAWN needs path, redirect, argc, argv).", "kind": "function", "line": 37, "name": "msys5", "signature": "static long msys5(long n, long a1, long a2, long a3, long a4, long a5)"}, {"doc": "} /* ── MiniOS syscall numbers (canonical table from minios_abi.h) ─────── #include \"minios_abi.h\" #define SYS_TIME_MS MINIOS_SYS_TIME #define SYS_PALETTE MINIOS_SYS_PALETTE #define SYS_PCSPK_INIT MINIOS_SYS_PCSPK_INIT #define SYS_PCSPK_TONE MINIOS_SYS_PCSPK_TONE #define SYS_RTC MINIOS_SYS_RTC #define SYS_FB_INFO MINIOS_SYS_FB_INFO #define SYS_PCSPK_VOL MINIOS_SYS_PCSPK_VOL #define SYS_SPAWN MINIOS_SYS_SPAWN /* ── minios.time_ms() ────────────────────────────────────────────────", "kind": "function", "line": 62, "name": "minios_time_ms", "signature": "static int minios_time_ms(lua_State *L)"}, {"doc": "#define SYS_PCSPK_INIT MINIOS_SYS_PCSPK_INIT #define SYS_PCSPK_TONE MINIOS_SYS_PCSPK_TONE #define SYS_RTC MINIOS_SYS_RTC #define SYS_FB_INFO MINIOS_SYS_FB_INFO #define SYS_PCSPK_VOL MINIOS_SYS_PCSPK_VOL #define SYS_SPAWN MINIOS_SYS_SPAWN /* ── minios.time_ms() ──────────────────────────────────────────────── static int minios_time_ms(lua_State *L) { lua_pushinteger(L, (lua_Integer)msys(SYS_TIME_MS, 0, 0, 0)); return 1; } /* ── minios.rtc() -> hour, minute, second ────────────────────────────", "kind": "function", "line": 68, "name": "minios_rtc", "signature": "static int minios_rtc(lua_State *L)"}, {"doc": "static int minios_rtc(lua_State *L) { int h, m, s; if (msys(SYS_RTC, (long)&h, (long)&m, (long)&s) < 0) { lua_pushnil(L); lua_pushstring(L, \"rtc read failed\"); return 2; } lua_pushinteger(L, h); lua_pushinteger(L, m); lua_pushinteger(L, s); return 3; } /* ── minios.fb_info() -> width, height, pitch ────────────────────────", "kind": "function", "line": 82, "name": "minios_fb_info", "signature": "static int minios_fb_info(lua_State *L)"}, {"doc": "static int minios_fb_info(lua_State *L) { int w, h, p; if (msys(SYS_FB_INFO, (long)&w, (long)&h, (long)&p) < 0) { lua_pushnil(L); lua_pushstring(L, \"fb_info failed\"); return 2; } lua_pushinteger(L, w); lua_pushinteger(L, h); lua_pushinteger(L, p); return 3; } /* ── minios.vol([v]) -> current volume ───────────────────────────────", "kind": "function", "line": 96, "name": "minios_vol", "signature": "static int minios_vol(lua_State *L)"}, {"doc": "/* ── minios.vol([v]) -> current volume ─────────────────────────────── static int minios_vol(lua_State *L) { if (lua_gettop(L) >= 1 && !lua_isnil(L, 1)) { int v = (int)luaL_checkinteger(L, 1); if (v < 0 || v > 100) return luaL_error(L, \"volume must be 0..100\"); lua_pushinteger(L, (lua_Integer)msys(SYS_PCSPK_VOL, v, 0, 0)); } else { lua_pushinteger(L, (lua_Integer)msys(SYS_PCSPK_VOL, -1, 0, 0)); } return 1; } /* ── minios.pal(buf) -- load a 768-byte VGA DAC palette ──────────────", "kind": "function", "line": 109, "name": "minios_pal", "signature": "static int minios_pal(lua_State *L)"}, {"doc": "return 1; } /* ── minios.pal(buf) -- load a 768-byte VGA DAC palette ────────────── static int minios_pal(lua_State *L) { size_t len; const char *buf = luaL_checklstring(L, 1, &len); if (len < 768) return luaL_error(L, \"palette must be 768 bytes\"); msys(SYS_PALETTE, (long)buf, 0, 0); return 0; } /* ── minios.pcspeaker(freq, ms) ──────────────────────────────────────", "kind": "function", "line": 119, "name": "minios_pcspeaker", "signature": "static int minios_pcspeaker(lua_State *L)"}, {"doc": "── minios.run(path[, args][, redirect]) -> exit code ─────────────── Runs a program through SYS_SPAWN (215), preserving the caller (Lua) so it can chain toolchain commands. args is an optional Lua table of strings; * redirect is an optional output file path that captures the console output.", "kind": "function", "line": 136, "name": "minios_run", "signature": "static int minios_run(lua_State *L)"}, {"kind": "function", "line": 192, "name": "luaopen_minios", "signature": "int luaopen_minios(lua_State *L)"}, {"kind": "macro", "line": 52, "name": "SYS_TIME_MS", "signature": "#define SYS_TIME_MS"}, {"kind": "macro", "line": 53, "name": "SYS_PALETTE", "signature": "#define SYS_PALETTE"}, {"kind": "macro", "line": 54, "name": "SYS_PCSPK_INIT", "signature": "#define SYS_PCSPK_INIT"}, {"kind": "macro", "line": 55, "name": "SYS_PCSPK_TONE", "signature": "#define SYS_PCSPK_TONE"}, {"kind": "macro", "line": 56, "name": "SYS_RTC", "signature": "#define SYS_RTC"}, {"kind": "macro", "line": 57, "name": "SYS_FB_INFO", "signature": "#define SYS_FB_INFO"}, {"kind": "macro", "line": 58, "name": "SYS_PCSPK_VOL", "signature": "#define SYS_PCSPK_VOL"}, {"kind": "macro", "line": 59, "name": "SYS_SPAWN", "signature": "#define SYS_SPAWN"}]}, {"doc": "MiniOS frozen library package.", "id": "progs/micropython/variants/minios/lib/__init__.py", "kind": "module", "label": "__init__.py", "language": "py", "sha256": "51f3b511a54d6d26", "symbol_count": 0, "symbols": []}, {"doc": "hello.py -- frozen demo: runs at import time as a smoke test.", "id": "progs/micropython/variants/minios/lib/hello.py", "kind": "module", "label": "hello.py", "language": "py", "sha256": "1e22dbf31982b6fd", "symbol_count": 0, "symbols": []}, {"doc": "manifest.py -- frozen modules for the MiniOS MicroPython variant. Scripts listed here are compiled to .mpy by mpy-cross and embedded in the firmware binary, so they are available as frozen imports without touching the filesystem.", "id": "progs/micropython/variants/minios/manifest.py", "kind": "module", "label": "manifest.py", "language": "py", "sha256": "c1e5f0994826444a", "symbol_count": 0, "symbols": []}, {"id": "progs/micropython/variants/minios/minios_module.c", "kind": "module", "label": "minios_module.c", "language": "c", "sha256": "01944d8854bbe3f9", "symbol_count": 21, "symbols": [{"doc": "/* ── raw syscall helper (x86-64 Linux ABI) ─────────────────────────── static long msys(long n, long a1, long a2, long a3) { long ret; __asm__ volatile( \"syscall\" : \"=a\"(ret) : \"a\"(n), \"D\"(a1), \"S\"(a2), \"d\"(a3) : \"rcx\", \"r11\", \"memory\" ); return ret; } /* 5-argument syscall (SYS_SPAWN needs path, redirect, argc, argv, status).", "kind": "function", "line": 26, "name": "msys5", "signature": "static long msys5(long n, long a1, long a2, long a3, long a4, long a5)"}, {"kind": "function", "line": 52, "name": "minios_time_ms", "signature": "static mp_obj_t minios_time_ms(void)"}, {"kind": "function", "line": 59, "name": "minios_rtc", "signature": "static mp_obj_t minios_rtc(void)"}, {"kind": "function", "line": 76, "name": "minios_fb_info", "signature": "static mp_obj_t minios_fb_info(void)"}, {"kind": "function", "line": 111, "name": "minios_pal", "signature": "static mp_obj_t minios_pal(mp_obj_t buf_in)"}, {"kind": "function", "line": 127, "name": "minios_pcspeaker", "signature": "static mp_obj_t minios_pcspeaker(mp_obj_t freq_in, mp_obj_t ms_in)"}, {"kind": "function", "line": 149, "name": "minios_run", "signature": "static mp_obj_t minios_run(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args)"}, {"kind": "function", "line": 55, "name": "MP_DEFINE_CONST_FUN_OBJ_0", "signature": "static MP_DEFINE_CONST_FUN_OBJ_0(minios_time_ms_obj, minios_time_ms);"}, {"kind": "function", "line": 107, "name": "MP_DEFINE_CONST_FUN_OBJ_VAR", "signature": "static MP_DEFINE_CONST_FUN_OBJ_VAR(minios_vol_obj, 0, minios_vol);"}, {"kind": "function", "line": 123, "name": "MP_DEFINE_CONST_FUN_OBJ_1", "signature": "static MP_DEFINE_CONST_FUN_OBJ_1(minios_pal_obj, minios_pal);"}, {"kind": "function", "line": 140, "name": "MP_DEFINE_CONST_FUN_OBJ_2", "signature": "static MP_DEFINE_CONST_FUN_OBJ_2(minios_pcspeaker_obj, minios_pcspeaker);"}, {"kind": "function", "line": 193, "name": "MP_DEFINE_CONST_FUN_OBJ_KW", "signature": "static MP_DEFINE_CONST_FUN_OBJ_KW(minios_run_obj, 1, minios_run);"}, {"kind": "function", "line": 207, "name": "MP_DEFINE_CONST_DICT", "signature": "static MP_DEFINE_CONST_DICT(minios_module_globals, minios_module_globals_table);"}, {"kind": "macro", "line": 41, "name": "SYS_TIME_MS", "signature": "#define SYS_TIME_MS"}, {"kind": "macro", "line": 42, "name": "SYS_PALETTE", "signature": "#define SYS_PALETTE"}, {"kind": "macro", "line": 43, "name": "SYS_PCSPK_INIT", "signature": "#define SYS_PCSPK_INIT"}, {"kind": "macro", "line": 44, "name": "SYS_PCSPK_TONE", "signature": "#define SYS_PCSPK_TONE"}, {"kind": "macro", "line": 45, "name": "SYS_RTC", "signature": "#define SYS_RTC"}, {"kind": "macro", "line": 46, "name": "SYS_FB_INFO", "signature": "#define SYS_FB_INFO"}, {"kind": "macro", "line": 47, "name": "SYS_PCSPK_VOL", "signature": "#define SYS_PCSPK_VOL"}, {"kind": "macro", "line": 48, "name": "SYS_SPAWN", "signature": "#define SYS_SPAWN"}]}, {"id": "progs/micropython/variants/minios/mpconfigvariant.h", "kind": "module", "label": "mpconfigvariant.h", "language": "h", "sha256": "6234cc6b5888fb75", "symbol_count": 38, "symbols": [{"kind": "macro", "line": 11, "name": "MICROPY_CONFIG_ROM_LEVEL", "signature": "#define MICROPY_CONFIG_ROM_LEVEL"}, {"kind": "macro", "line": 14, "name": "MICROPY_FLOAT_IMPL", "signature": "#define MICROPY_FLOAT_IMPL"}, {"kind": "macro", "line": 15, "name": "MICROPY_LONGINT_IMPL", "signature": "#define MICROPY_LONGINT_IMPL"}, {"kind": "macro", "line": 18, "name": "MICROPY_ERROR_REPORTING", "signature": "#define MICROPY_ERROR_REPORTING"}, {"kind": "macro", "line": 19, "name": "MICROPY_WARNINGS", "signature": "#define MICROPY_WARNINGS"}, {"kind": "macro", "line": 20, "name": "MICROPY_DEBUG_PRINTERS", "signature": "#define MICROPY_DEBUG_PRINTERS"}, {"kind": "macro", "line": 23, "name": "MICROPY_USE_READLINE", "signature": "#define MICROPY_USE_READLINE"}, {"kind": "macro", "line": 30, "name": "MICROPY_KBD_EXCEPTION", "signature": "#define MICROPY_KBD_EXCEPTION"}, {"kind": "macro", "line": 31, "name": "MICROPY_ASYNC_KBD_INTR", "signature": "#define MICROPY_ASYNC_KBD_INTR"}, {"kind": "macro", "line": 34, "name": "MICROPY_HELPER_REPL", "signature": "#define MICROPY_HELPER_REPL"}, {"kind": "macro", "line": 35, "name": "MICROPY_PY_SYS_PS1", "signature": "#define MICROPY_PY_SYS_PS1"}, {"kind": "macro", "line": 36, "name": "MICROPY_PY_SYS_PS2", "signature": "#define MICROPY_PY_SYS_PS2"}, {"kind": "macro", "line": 37, "name": "MICROPY_PY_SYS_ATEXIT", "signature": "#define MICROPY_PY_SYS_ATEXIT"}, {"kind": "macro", "line": 38, "name": "MICROPY_PY_SYS_EXC_INFO", "signature": "#define MICROPY_PY_SYS_EXC_INFO"}, {"kind": "macro", "line": 39, "name": "MICROPY_PY_SYS_STDFILES", "signature": "#define MICROPY_PY_SYS_STDFILES"}, {"kind": "macro", "line": 42, "name": "MICROPY_PY_OS", "signature": "#define MICROPY_PY_OS"}, {"kind": "macro", "line": 43, "name": "MICROPY_PY_OS_INCLUDEFILE", "signature": "#define MICROPY_PY_OS_INCLUDEFILE"}, {"kind": "macro", "line": 44, "name": "MICROPY_PY_OS_ERRNO", "signature": "#define MICROPY_PY_OS_ERRNO"}, {"kind": "macro", "line": 45, "name": "MICROPY_PY_OS_GETENV_PUTENV_UNSETENV", "signature": "#define MICROPY_PY_OS_GETENV_PUTENV_UNSETENV"}, {"kind": "macro", "line": 46, "name": "MICROPY_PY_OS_SYSTEM", "signature": "#define MICROPY_PY_OS_SYSTEM"}, {"kind": "macro", "line": 47, "name": "MICROPY_PY_OS_URANDOM", "signature": "#define MICROPY_PY_OS_URANDOM"}, {"kind": "macro", "line": 50, "name": "MICROPY_PY_TIME", "signature": "#define MICROPY_PY_TIME"}, {"kind": "macro", "line": 53, "name": "MICROPY_PY_SOCKET", "signature": "#define MICROPY_PY_SOCKET"}, {"kind": "macro", "line": 54, "name": "MICROPY_PY_SSL", "signature": "#define MICROPY_PY_SSL"}, {"kind": "macro", "line": 55, "name": "MICROPY_PY_FFI", "signature": "#define MICROPY_PY_FFI"}, {"kind": "macro", "line": 56, "name": "MICROPY_PY_THREAD", "signature": "#define MICROPY_PY_THREAD"}, {"kind": "macro", "line": 57, "name": "MICROPY_PY_MACHINE", "signature": "#define MICROPY_PY_MACHINE"}, {"kind": "macro", "line": 58, "name": "MICROPY_PY_WEBSOCKET", "signature": "#define MICROPY_PY_WEBSOCKET"}, {"kind": "macro", "line": 61, "name": "MICROPY_PERSISTENT_CODE_LOAD", "signature": "#define MICROPY_PERSISTENT_CODE_LOAD"}, {"kind": "macro", "line": 64, "name": "MICROPY_REPL_EMACS_WORDS_MOVE", "signature": "#define MICROPY_REPL_EMACS_WORDS_MOVE"}, {"kind": "macro", "line": 65, "name": "MICROPY_REPL_EMACS_EXTRA_WORDS_MOVE", "signature": "#define MICROPY_REPL_EMACS_EXTRA_WORDS_MOVE"}, {"kind": "macro", "line": 66, "name": "MICROPY_USE_READLINE_HISTORY", "signature": "#define MICROPY_USE_READLINE_HISTORY"}, {"kind": "macro", "line": 71, "name": "MICROPY_OPT_COMPUTED_GOTO", "signature": "#define MICROPY_OPT_COMPUTED_GOTO"}, {"kind": "macro", "line": 74, "name": "MICROPY_ENABLE_EMERGENCY_EXCEPTION_BUF", "signature": "#define MICROPY_ENABLE_EMERGENCY_EXCEPTION_BUF"}, {"kind": "macro", "line": 75, "name": "MICROPY_EMERGENCY_EXCEPTION_BUF_SIZE", "signature": "#define MICROPY_EMERGENCY_EXCEPTION_BUF_SIZE"}, {"kind": "macro", "line": 78, "name": "MICROPY_PY_GC_COLLECT_RETVAL", "signature": "#define MICROPY_PY_GC_COLLECT_RETVAL"}, {"kind": "macro", "line": 81, "name": "MICROPY_VFS_ROM", "signature": "#define MICROPY_VFS_ROM"}, {"kind": "macro", "line": 82, "name": "MICROPY_VFS_ROM_IOCTL", "signature": "#define MICROPY_VFS_ROM_IOCTL"}]}, {"doc": "minicraft.c - Minecraft-like voxel walker for MiniOS (ring 3, static ELF).", "id": "progs/minicraft/minicraft.c", "kind": "module", "label": "minicraft.c", "language": "c", "sha256": "986aced9348e4e30", "symbol_count": 233, "symbols": [{"kind": "struct", "line": 206, "name": "Recipe"}, {"kind": "struct", "line": 285, "name": "Pig"}, {"kind": "struct", "line": 1635, "name": "RayHit"}, {"doc": "snprintf(last_act, sizeof(last_act), \"+%s\", mc_block_name(nb)); } last_act_ms = now; beep(440, 50); } } last_edit_ms = now; } } } prev_buttons = m[2]; } /* Frozen v3 header (saves already on disk); v4 appends mobs_n.", "kind": "struct", "line": 2863, "name": "SaveHeaderV3"}, {"kind": "struct", "line": 2877, "name": "SaveHeader"}, {"kind": "struct", "line": 2892, "name": "ChunkHeader"}, {"kind": "function", "line": 221, "name": "best_tool_for", "signature": "static int best_tool_for(unsigned char b)"}, {"kind": "function", "line": 240, "name": "break_time_ms", "signature": "static long break_time_ms(unsigned char b, int tool)"}, {"kind": "function", "line": 265, "name": "break_beep_for", "signature": "static long break_beep_for(unsigned char b)"}, {"kind": "function", "line": 306, "name": "mc_toggle_zoom", "signature": "static void mc_toggle_zoom(void)"}, {"kind": "function", "line": 327, "name": "s_time_ms", "signature": "static long s_time_ms(void)"}, {"kind": "function", "line": 332, "name": "s_kbd", "signature": "static long s_kbd(void)"}, {"kind": "function", "line": 337, "name": "s_kbd_raw", "signature": "static long s_kbd_raw(long on)"}, {"doc": "Serial fallback for menus: SYS_KBD in raw mode carries PS/2 only, so a serial console can never drive a scancode menu (Enter, digits and arrows never arrive). GETC_RAW serves the serial side with no line buffering; translate its bytes to the scancode the menu already handles, -1 when idle. Menu-only: gameplay keeps the raw * scancode path untouched.", "kind": "function", "line": 349, "name": "s_getc_raw", "signature": "static long s_getc_raw(void)"}, {"kind": "function", "line": 363, "name": "ser_get", "signature": "static long ser_get(void)"}, {"kind": "function", "line": 376, "name": "ser_unget", "signature": "static void ser_unget(unsigned char b)"}, {"kind": "function", "line": 381, "name": "menu_ser_key", "signature": "static long menu_ser_key(long b)"}, {"doc": "Drain stale scancodes (typematic repeats, a release that arrived with * its press) before leaving a menu, so they never retrigger on return.", "kind": "function", "line": 418, "name": "kbd_drain", "signature": "static void kbd_drain(void)"}, {"kind": "function", "line": 423, "name": "s_vga", "signature": "static long s_vga(long on)"}, {"kind": "function", "line": 428, "name": "s_pal", "signature": "static long s_pal(const unsigned char *p)"}, {"kind": "function", "line": 433, "name": "s_present", "signature": "static long s_present(void)"}, {"kind": "function", "line": 438, "name": "s_title", "signature": "static long s_title(const char *t)"}, {"kind": "function", "line": 443, "name": "s_mouse", "signature": "static long s_mouse(int *m)"}, {"kind": "function", "line": 448, "name": "s_zoom", "signature": "static long s_zoom(long on)"}, {"kind": "function", "line": 453, "name": "s_yield", "signature": "static void s_yield(void)"}, {"kind": "function", "line": 458, "name": "s_pcspk_init", "signature": "static long s_pcspk_init(void)"}, {"kind": "function", "line": 463, "name": "__attribute__", "signature": "static long __attribute__((unused)) s_tone(long f)"}, {"kind": "function", "line": 468, "name": "beep", "signature": "static void beep(long freq, long dur_ms)"}, {"kind": "function", "line": 487, "name": "pal_set", "signature": "static void pal_set(int i, int r, int g, int b)"}, {"kind": "function", "line": 493, "name": "build_palette", "signature": "static void build_palette(void)"}, {"kind": "function", "line": 552, "name": "in_world", "signature": "static int in_world(int x, int y, int z)"}, {"doc": "(void)x; (void)y; return z >= 0 && z < MC_H; } static unsigned int hash2(int x, int y); static unsigned int hash2_seed(int x, int y, unsigned int seed); static void gen_terrain_chunk(int slot); static void decorate_chunk(int slot); static void chunk_build_meta(int slot); static int save_chunk_file(int slot); static int load_chunk_file(int slot, int cx, int cy); /* Chunk math on unbounded coords: floor division so negatives land right.", "kind": "function", "line": 567, "name": "chunk_of", "signature": "static int chunk_of(int v)"}, {"kind": "function", "line": 571, "name": "chunk_local", "signature": "static int chunk_local(int v)"}, {"kind": "function", "line": 576, "name": "chunk_lidx", "signature": "static int chunk_lidx(int lx, int ly, int z)"}, {"doc": "O(1) fast path: DDA walks neighbours, so the last chunk almost always * hits; the 49-slot scan is the rare slow path, never the hot loop.", "kind": "function", "line": 582, "name": "chunk_find", "signature": "static int chunk_find(int cx, int cy)"}, {"kind": "function", "line": 596, "name": "world_max_recompute", "signature": "static void world_max_recompute(void)"}, {"kind": "function", "line": 605, "name": "chunk_evict_slot", "signature": "static int chunk_evict_slot(int cx, int cy)"}, {"kind": "function", "line": 625, "name": "chunk_ensure", "signature": "static int chunk_ensure(int cx, int cy)"}, {"kind": "function", "line": 648, "name": "chunk_build_meta", "signature": "static void chunk_build_meta(int slot)"}, {"kind": "function", "line": 693, "name": "col_recompute", "signature": "static void col_recompute(int x, int y)"}, {"kind": "function", "line": 718, "name": "col_top_at", "signature": "static int col_top_at(int x, int y)"}, {"kind": "function", "line": 725, "name": "light_recompute_col", "signature": "static void light_recompute_col(int x, int y)"}, {"kind": "function", "line": 754, "name": "get_b", "signature": "static unsigned char get_b(int x, int y, int z)"}, {"kind": "function", "line": 764, "name": "set_b", "signature": "static void set_b(int x, int y, int z, unsigned char b)"}, {"kind": "function", "line": 780, "name": "set_b_raw", "signature": "static void set_b_raw(int x, int y, int z, unsigned char b)"}, {"doc": "world_dirty = 1; } static void set_b_raw(int x, int y, int z, unsigned char b) { int s; if (z < 0 || z >= MC_H) return; s = chunk_find(chunk_of(x), chunk_of(y)); if (s < 0) return; ch_blocks[s][chunk_lidx(chunk_local(x), chunk_local(y), z)] = b; } /* skylight 1.0 at surface fading to 0.22 deep: O(1) via chunk light", "kind": "function", "line": 791, "name": "sky_light", "signature": "static float sky_light(int x, int y, int z)"}, {"kind": "function", "line": 801, "name": "is_solid", "signature": "static int is_solid(unsigned char b)"}, {"kind": "function", "line": 804, "name": "in_water_at", "signature": "static int in_water_at(float x, float y, float z)"}, {"kind": "function", "line": 809, "name": "is_visible", "signature": "static int is_visible(unsigned char b)"}, {"kind": "function", "line": 813, "name": "hash2", "signature": "static unsigned int hash2(int x, int y)"}, {"kind": "function", "line": 820, "name": "hash2_seed", "signature": "static unsigned int hash2_seed(int x, int y, unsigned int seed)"}, {"kind": "function", "line": 829, "name": "mc_smoothstep", "signature": "static float mc_smoothstep(float t)"}, {"doc": "Voronoi biome lattice: floor division so negatives land right. A smoothed (bilinear) field must NOT be thresholded here: averaging 4 uniforms * collapses the distribution and kills every biome but forest.", "kind": "function", "line": 836, "name": "biome_fdiv", "signature": "static int biome_fdiv(int v, int c)"}, {"kind": "function", "line": 851, "name": "voro_site", "signature": "static void voro_site(int cx, int cy, unsigned int seed, int cell,\n int *sx, int *sy)"}, {"kind": "function", "line": 859, "name": "biome_voro", "signature": "static int biome_voro(int x, int y, unsigned int seed, int cell,\n int ox, int oy, unsigned int..."}, {"kind": "function", "line": 883, "name": "biome_desert", "signature": "static int biome_desert(int x, int y, unsigned int seed)"}, {"kind": "function", "line": 887, "name": "biome_snow", "signature": "static int biome_snow(int x, int y, unsigned int seed)"}, {"kind": "function", "line": 891, "name": "is_cave", "signature": "static int is_cave(int x, int y, int z, unsigned int seed)"}, {"kind": "function", "line": 899, "name": "ground_h_seed", "signature": "static int ground_h_seed(int x, int y, unsigned int seed)"}, {"kind": "function", "line": 921, "name": "inv_add", "signature": "static int inv_add(int b, int n)"}, {"kind": "function", "line": 935, "name": "inv_remove", "signature": "static int inv_remove(int b, int n)"}, {"kind": "function", "line": 985, "name": "decorate_column", "signature": "static void decorate_column(int x, int y, unsigned int seed)"}, {"kind": "function", "line": 1024, "name": "gen_terrain_chunk", "signature": "static void gen_terrain_chunk(int slot)"}, {"kind": "function", "line": 1033, "name": "decorate_chunk", "signature": "static void decorate_chunk(int slot)"}, {"doc": "Keep a (2R+1)^2 ring of terrain around the player, an inner ring decorated, drop the rest (dirty chunks hit disk first). Runs every frame: pure cache hits when standing still, a few chunk gens on border * crossings. Coordinates are unbounded: no edge, no wall, no wrap.", "kind": "function", "line": 1046, "name": "ensure_around_px", "signature": "static void ensure_around_px(float px, float py)"}, {"kind": "function", "line": 1080, "name": "ensure_around", "signature": "static void ensure_around(void)"}, {"doc": "save_chunk_file(i); ch_used[i] = 0; if (ch_cache == i) ch_cache = -1; } } world_max_recompute(); } static void ensure_around(void) { ensure_around_px(pl_x, pl_y); } /* World gen phases: 1 terrain ring 2 decor ring 3 spawn 4 mobs.", "kind": "function", "line": 1085, "name": "new_world", "signature": "static void new_world(unsigned int seed)"}, {"kind": "function", "line": 1181, "name": "mob_spawn_one", "signature": "static void mob_spawn_one(Pig *m, int id, int hp, long now)"}, {"kind": "function", "line": 1233, "name": "pig_collides", "signature": "static int pig_collides(float x, float y, float z)"}, {"kind": "function", "line": 1247, "name": "creeper_explode", "signature": "static void creeper_explode(Pig *c, long now)"}, {"doc": "Creeper perception in 3D: planar delta, eye-height delta and full distance. The old code used planar distance only, so a player flying * 10 blocks overhead still lit the fuse.", "kind": "function", "line": 1315, "name": "creep_sense", "signature": "static void creep_sense(Pig *c, float *pdx, float *pdy, float *pdz, float *pd3)"}, {"doc": "Voxel line of sight between creeper eyes and player eyes, sampled every half block. Walls blind the chase; open field keeps the old * behaviour byte for byte. Bounded steps, no allocation.", "kind": "function", "line": 1327, "name": "creep_has_los", "signature": "static int creep_has_los(Pig *c)"}, {"doc": "Herd separation: creepers inside MC_CREEP_SEP_D push apart so the pack * never stacks on one tile and every one of the 3 does not arrive glued.", "kind": "function", "line": 1351, "name": "creep_separate", "signature": "static void creep_separate(Pig *p, int id, float dt)"}, {"kind": "function", "line": 1376, "name": "tick_mob", "signature": "static void tick_mob(Pig *p, int id, float dt, long now)"}, {"kind": "function", "line": 1497, "name": "tick_pigs", "signature": "static void tick_pigs(float dt, long now)"}, {"kind": "function", "line": 1505, "name": "face_color", "signature": "static unsigned char face_color(unsigned char b, int face)"}, {"kind": "function", "line": 1554, "name": "sky_color", "signature": "static unsigned char sky_color(float dz, float sun_dot, int x, int y, float tsec)"}, {"kind": "function", "line": 1587, "name": "shade_block", "signature": "static unsigned char shade_block(unsigned char b, int face, int bx, int by, int bz,\n ..."}, {"kind": "function", "line": 1644, "name": "cast_ray", "signature": "static RayHit cast_ray(float ox, float oy, float oz, float dx, float dy, float dz, float maxd)"}, {"kind": "function", "line": 1735, "name": "eye_z", "signature": "static float eye_z(void)"}, {"kind": "function", "line": 1802, "name": "mc_glyph", "signature": "static int mc_glyph(char ch)"}, {"kind": "function", "line": 1810, "name": "mc_pixel", "signature": "static void mc_pixel(int x, int y, unsigned char c)"}, {"kind": "function", "line": 1816, "name": "mc_text", "signature": "static void mc_text(int x, int y, const char *s, unsigned char fg)"}, {"kind": "function", "line": 1829, "name": "mc_text_bg", "signature": "static void mc_text_bg(int x, int y, const char *s, unsigned char fg, unsigned char bg)"}, {"kind": "function", "line": 1842, "name": "mc_block_name", "signature": "static const char *mc_block_name(unsigned char b)"}, {"kind": "function", "line": 1862, "name": "mc_facing", "signature": "static char mc_facing(void)"}, {"kind": "function", "line": 1877, "name": "cam_build", "signature": "static void cam_build(void)"}, {"kind": "function", "line": 1895, "name": "render_terrain", "signature": "static void render_terrain(RayHit tgt, float cyaw, float syaw, float cpit,\n ..."}, {"kind": "function", "line": 1930, "name": "mob_pixel", "signature": "static unsigned char mob_pixel(Pig *m, int id, int px, int py, int x0, int x1, int y0, int y1)"}, {"kind": "function", "line": 1964, "name": "render_mob_array", "signature": "static void render_mob_array(Pig *arr, int n, float fx, float fy, float fz,\n float rx, float r..."}, {"kind": "function", "line": 2015, "name": "render_pigs", "signature": "static void render_pigs(float cyaw, float syaw, float cpit, float spit, float ez)"}, {"kind": "function", "line": 2023, "name": "render_frame", "signature": "static void render_frame(void)"}, {"kind": "function", "line": 2136, "name": "sc_hist_push", "signature": "static void sc_hist_push(unsigned char b)"}, {"kind": "function", "line": 2147, "name": "poll_kbd", "signature": "static void poll_kbd(void)"}, {"kind": "function", "line": 2340, "name": "player_collides", "signature": "static int player_collides(float x, float y, float z)"}, {"kind": "function", "line": 2364, "name": "move_x", "signature": "static void move_x(float nx)"}, {"kind": "function", "line": 2369, "name": "move_y", "signature": "static void move_y(float ny)"}, {"kind": "function", "line": 2374, "name": "move_z_abs", "signature": "static MoveResult move_z_abs(float nz)"}, {"kind": "function", "line": 2389, "name": "block_intersects_player", "signature": "static int block_intersects_player(int bx, int by, int bz)"}, {"kind": "function", "line": 2398, "name": "try_autostep", "signature": "static void try_autostep(float tx, float ty)"}, {"kind": "function", "line": 2409, "name": "hurt", "signature": "static void hurt(int dmg, const char *why)"}, {"kind": "function", "line": 2434, "name": "tick_player", "signature": "static void tick_player(float dt)"}, {"kind": "function", "line": 2533, "name": "tick_water", "signature": "static void tick_water(long now)"}, {"kind": "function", "line": 2581, "name": "tick_hunger", "signature": "static void tick_hunger(long now)"}, {"kind": "function", "line": 2593, "name": "goal_text", "signature": "static const char *goal_text(void)"}, {"kind": "function", "line": 2604, "name": "tick_goals", "signature": "static void tick_goals(void)"}, {"kind": "function", "line": 2615, "name": "tick_discover", "signature": "static void tick_discover(long now)"}, {"kind": "function", "line": 2653, "name": "tick_interact", "signature": "static void tick_interact(void)"}, {"kind": "function", "line": 2904, "name": "mc_crc32", "signature": "static uint32_t mc_crc32(const void *data, size_t len, uint32_t crc)"}, {"kind": "function", "line": 2917, "name": "save_compute_crc", "signature": "static uint32_t save_compute_crc(const SaveHeader *hd)"}, {"kind": "function", "line": 2923, "name": "chunk_path", "signature": "static void chunk_path(int cx, int cy, char *out, size_t n)"}, {"kind": "function", "line": 2927, "name": "save_chunk_file", "signature": "static int save_chunk_file(int slot)"}, {"kind": "function", "line": 2959, "name": "load_chunk_file", "signature": "static int load_chunk_file(int slot, int cx, int cy)"}, {"kind": "function", "line": 3041, "name": "save_validate_loaded", "signature": "static int save_validate_loaded(void)"}, {"kind": "function", "line": 3060, "name": "load_reset_runtime", "signature": "static void load_reset_runtime(void)"}, {"doc": "Import a 64x64x32 legacy blob into chunks (0..3, 0..3), then dirty so * region files persist it. Old saves keep their world, new code owns it.", "kind": "function", "line": 3093, "name": "carve_blob", "signature": "static void carve_blob(const unsigned char *blob)"}, {"doc": "Legacy raw save: fixed old_inv[12] layout is fragile if B_COUNT grows; * kept read-only for ancient saves, never written. Do not extend.", "kind": "function", "line": 3122, "name": "load_world_legacy", "signature": "static int load_world_legacy(FILE *f)"}, {"kind": "function", "line": 3160, "name": "load_apply_player", "signature": "static void load_apply_player(const SaveHeader *hd)"}, {"kind": "function", "line": 3179, "name": "load_world_v3", "signature": "static int load_world_v3(FILE *f, SaveHeader *hd)"}, {"kind": "function", "line": 3219, "name": "load_world_v2", "signature": "static int load_world_v2(FILE *f, SaveHeader *hd)"}, {"kind": "function", "line": 3256, "name": "load_world", "signature": "static int load_world(void)"}, {"kind": "function", "line": 3330, "name": "selftest", "signature": "static int selftest(void)"}, {"doc": "128x128 columns (64 biome cells): a 64-wide patch covers too few * 16-block biome cells and the desert rate fluctuates wildly by area.", "kind": "function", "line": 3591, "name": "census", "signature": "static int census(void)"}, {"kind": "function", "line": 3655, "name": "dumpstats", "signature": "static int dumpstats(void)"}, {"kind": "function", "line": 3739, "name": "title_menu", "signature": "static int title_menu(int have_save, int *seed_io)"}, {"doc": "Pause menu on ESC (Alt+F4 still kills the process kernel-side): * 0 = resume, 1 = new world with *seed_io, 2 = save + quit to shell.", "kind": "function", "line": 3907, "name": "pause_menu", "signature": "static int pause_menu(int *seed_io)"}, {"kind": "function", "line": 4080, "name": "main", "signature": "int main(int argc, char **argv)"}, {"kind": "function", "line": 320, "name": "save_world", "signature": "static int save_world(void);"}, {"kind": "macro", "line": 34, "name": "MC_H", "signature": "#define MC_H"}, {"kind": "macro", "line": 35, "name": "MC_CHUNK", "signature": "#define MC_CHUNK"}, {"kind": "macro", "line": 36, "name": "MC_LOAD_R", "signature": "#define MC_LOAD_R"}, {"kind": "macro", "line": 37, "name": "MC_CHUNKS", "signature": "#define MC_CHUNKS"}, {"kind": "macro", "line": 38, "name": "MC_CVOL", "signature": "#define MC_CVOL"}, {"kind": "macro", "line": 39, "name": "MC_COLS", "signature": "#define MC_COLS"}, {"kind": "macro", "line": 41, "name": "FB_W", "signature": "#define FB_W"}, {"kind": "macro", "line": 42, "name": "FB_H", "signature": "#define FB_H"}, {"kind": "macro", "line": 45, "name": "BACKBUF", "signature": "#define BACKBUF"}, {"kind": "macro", "line": 47, "name": "BACKBUF", "signature": "#define BACKBUF"}, {"kind": "macro", "line": 50, "name": "SAVE_PATH", "signature": "#define SAVE_PATH"}, {"kind": "macro", "line": 51, "name": "SAVE_TMP_PATH", "signature": "#define SAVE_TMP_PATH"}, {"kind": "macro", "line": 52, "name": "MC_SAVE_MAGIC", "signature": "#define MC_SAVE_MAGIC"}, {"kind": "macro", "line": 53, "name": "MC_SAVE_VERSION", "signature": "#define MC_SAVE_VERSION"}, {"kind": "macro", "line": 54, "name": "MC_SAVE_CRC_SEED", "signature": "#define MC_SAVE_CRC_SEED"}, {"kind": "macro", "line": 55, "name": "MC_CHUNK_MAGIC", "signature": "#define MC_CHUNK_MAGIC"}, {"kind": "macro", "line": 56, "name": "MC_CHUNK_VERSION", "signature": "#define MC_CHUNK_VERSION"}, {"kind": "macro", "line": 59, "name": "MC_EYE", "signature": "#define MC_EYE"}, {"kind": "macro", "line": 60, "name": "MC_GRAV", "signature": "#define MC_GRAV"}, {"kind": "macro", "line": 61, "name": "MC_JUMP", "signature": "#define MC_JUMP"}, {"kind": "macro", "line": 62, "name": "MC_MAXFALL", "signature": "#define MC_MAXFALL"}, {"kind": "macro", "line": 63, "name": "MC_SPEED", "signature": "#define MC_SPEED"}, {"kind": "macro", "line": 64, "name": "MC_FLY_SPEED", "signature": "#define MC_FLY_SPEED"}, {"kind": "macro", "line": 65, "name": "MC_SPRINT", "signature": "#define MC_SPRINT"}, {"kind": "macro", "line": 66, "name": "MC_MOUSE", "signature": "#define MC_MOUSE"}, {"kind": "macro", "line": 67, "name": "MC_REACH", "signature": "#define MC_REACH"}, {"kind": "macro", "line": 68, "name": "MC_VIEW", "signature": "#define MC_VIEW"}, {"kind": "macro", "line": 69, "name": "MC_DDA_STEPS", "signature": "#define MC_DDA_STEPS"}, {"kind": "macro", "line": 70, "name": "MC_BREAK_MS", "signature": "#define MC_BREAK_MS"}, {"kind": "macro", "line": 71, "name": "MC_BREAK_GRACE_MS", "signature": "#define MC_BREAK_GRACE_MS"}, {"kind": "macro", "line": 72, "name": "MC_PLACE_MS", "signature": "#define MC_PLACE_MS"}, {"kind": "macro", "line": 73, "name": "MC_WATER_GRAV", "signature": "#define MC_WATER_GRAV"}, {"kind": "macro", "line": 74, "name": "MC_WATER_SINK", "signature": "#define MC_WATER_SINK"}, {"kind": "macro", "line": 75, "name": "MC_WATER_SWIM", "signature": "#define MC_WATER_SWIM"}, {"kind": "macro", "line": 76, "name": "MC_INV_MAX", "signature": "#define MC_INV_MAX"}, {"kind": "macro", "line": 77, "name": "MC_PITCH_MAX", "signature": "#define MC_PITCH_MAX"}, {"kind": "macro", "line": 78, "name": "MC_AUTOSTEP", "signature": "#define MC_AUTOSTEP"}, {"kind": "macro", "line": 79, "name": "MC_HP_MAX", "signature": "#define MC_HP_MAX"}, {"kind": "macro", "line": 80, "name": "MC_PIGS", "signature": "#define MC_PIGS"}, {"kind": "macro", "line": 81, "name": "MC_CREEPS_MAX", "signature": "#define MC_CREEPS_MAX"}, {"kind": "macro", "line": 82, "name": "MC_CREEPS_DEF", "signature": "#define MC_CREEPS_DEF"}, {"kind": "macro", "line": 83, "name": "MC_CREEP_HP", "signature": "#define MC_CREEP_HP"}, {"kind": "macro", "line": 84, "name": "MC_FUSE_MS", "signature": "#define MC_FUSE_MS"}, {"kind": "macro", "line": 85, "name": "MC_BOOM_R", "signature": "#define MC_BOOM_R"}, {"kind": "macro", "line": 88, "name": "MC_CREEP_SENSE", "signature": "#define MC_CREEP_SENSE"}, {"kind": "macro", "line": 89, "name": "MC_CREEP_DZ_MAX", "signature": "#define MC_CREEP_DZ_MAX"}, {"kind": "macro", "line": 90, "name": "MC_CREEP_FUSE_D", "signature": "#define MC_CREEP_FUSE_D"}, {"kind": "macro", "line": 91, "name": "MC_CREEP_DEFUSE_D", "signature": "#define MC_CREEP_DEFUSE_D"}, {"kind": "macro", "line": 92, "name": "MC_CREEP_SEP_D", "signature": "#define MC_CREEP_SEP_D"}, {"kind": "macro", "line": 93, "name": "MC_PORK_HEAL", "signature": "#define MC_PORK_HEAL"}, {"kind": "macro", "line": 94, "name": "MC_HUNGER_MAX", "signature": "#define MC_HUNGER_MAX"}, {"kind": "macro", "line": 95, "name": "MC_HUNGER_MS", "signature": "#define MC_HUNGER_MS"}, {"kind": "macro", "line": 96, "name": "MC_PIG_HP", "signature": "#define MC_PIG_HP"}, {"kind": "macro", "line": 97, "name": "MC_PIG_HURT_MS", "signature": "#define MC_PIG_HURT_MS"}, {"kind": "macro", "line": 98, "name": "MC_DAY_MS", "signature": "#define MC_DAY_MS"}, {"kind": "macro", "line": 99, "name": "MC_SAVE_SECS", "signature": "#define MC_SAVE_SECS"}, {"kind": "macro", "line": 100, "name": "MC_BAYER_N", "signature": "#define MC_BAYER_N"}, {"kind": "macro", "line": 101, "name": "MC_H_BASE", "signature": "#define MC_H_BASE"}, {"kind": "macro", "line": 102, "name": "MC_H_WT_DET", "signature": "#define MC_H_WT_DET"}, {"kind": "macro", "line": 103, "name": "MC_H_WT_MID", "signature": "#define MC_H_WT_MID"}, {"kind": "macro", "line": 104, "name": "MC_H_WT_COARSE", "signature": "#define MC_H_WT_COARSE"}, {"kind": "macro", "line": 107, "name": "SC_ESC", "signature": "#define SC_ESC"}, {"kind": "macro", "line": 108, "name": "SC_1", "signature": "#define SC_1"}, {"kind": "macro", "line": 109, "name": "SC_9", "signature": "#define SC_9"}, {"kind": "macro", "line": 110, "name": "SC_Q", "signature": "#define SC_Q"}, {"kind": "macro", "line": 111, "name": "SC_W", "signature": "#define SC_W"}, {"kind": "macro", "line": 112, "name": "SC_E", "signature": "#define SC_E"}, {"kind": "macro", "line": 113, "name": "SC_R", "signature": "#define SC_R"}, {"kind": "macro", "line": 114, "name": "SC_T", "signature": "#define SC_T"}, {"kind": "macro", "line": 115, "name": "SC_U", "signature": "#define SC_U"}, {"kind": "macro", "line": 116, "name": "SC_I", "signature": "#define SC_I"}, {"kind": "macro", "line": 117, "name": "SC_O", "signature": "#define SC_O"}, {"kind": "macro", "line": 118, "name": "SC_P", "signature": "#define SC_P"}, {"kind": "macro", "line": 119, "name": "SC_J", "signature": "#define SC_J"}, {"kind": "macro", "line": 120, "name": "SC_A", "signature": "#define SC_A"}, {"kind": "macro", "line": 121, "name": "SC_S", "signature": "#define SC_S"}, {"kind": "macro", "line": 122, "name": "SC_D", "signature": "#define SC_D"}, {"kind": "macro", "line": 123, "name": "SC_F", "signature": "#define SC_F"}, {"kind": "macro", "line": 124, "name": "SC_G", "signature": "#define SC_G"}, {"kind": "macro", "line": 125, "name": "SC_K", "signature": "#define SC_K"}, {"kind": "macro", "line": 126, "name": "SC_L", "signature": "#define SC_L"}, {"kind": "macro", "line": 127, "name": "SC_C", "signature": "#define SC_C"}, {"kind": "macro", "line": 128, "name": "SC_V", "signature": "#define SC_V"}, {"kind": "macro", "line": 129, "name": "SC_B", "signature": "#define SC_B"}, {"kind": "macro", "line": 130, "name": "SC_N", "signature": "#define SC_N"}, {"kind": "macro", "line": 131, "name": "SC_ENTER", "signature": "#define SC_ENTER"}, {"kind": "macro", "line": 132, "name": "SC_BACK", "signature": "#define SC_BACK"}, {"kind": "macro", "line": 133, "name": "SC_0", "signature": "#define SC_0"}, {"kind": "macro", "line": 134, "name": "MC_SEED_MAX", "signature": "#define MC_SEED_MAX"}, {"kind": "macro", "line": 135, "name": "MC_KBD_SEQ_SPINS", "signature": "#define MC_KBD_SEQ_SPINS"}, {"kind": "macro", "line": 136, "name": "SC_SPACE", "signature": "#define SC_SPACE"}, {"kind": "macro", "line": 137, "name": "SC_LSHIFT", "signature": "#define SC_LSHIFT"}, {"kind": "macro", "line": 138, "name": "SC_RSHIFT", "signature": "#define SC_RSHIFT"}, {"kind": "macro", "line": 139, "name": "SC_CTRL", "signature": "#define SC_CTRL"}, {"kind": "macro", "line": 140, "name": "EXT_UP", "signature": "#define EXT_UP"}, {"kind": "macro", "line": 141, "name": "EXT_DOWN", "signature": "#define EXT_DOWN"}, {"kind": "macro", "line": 142, "name": "EXT_LEFT", "signature": "#define EXT_LEFT"}, {"kind": "macro", "line": 143, "name": "EXT_RIGHT", "signature": "#define EXT_RIGHT"}, {"kind": "macro", "line": 144, "name": "EXT_F11", "signature": "#define EXT_F11"}, {"kind": "macro", "line": 298, "name": "MOB_PIG", "signature": "#define MOB_PIG"}, {"kind": "macro", "line": 299, "name": "MOB_CREEP", "signature": "#define MOB_CREEP"}, {"kind": "macro", "line": 359, "name": "SER_STASH_CAP", "signature": "#define SER_STASH_CAP"}, {"kind": "macro", "line": 848, "name": "MC_VORO_DESERT_CELL", "signature": "#define MC_VORO_DESERT_CELL"}, {"kind": "macro", "line": 849, "name": "MC_VORO_SNOW_CELL", "signature": "#define MC_VORO_SNOW_CELL"}, {"kind": "macro", "line": 2901, "name": "MC_LEGACY_WORLD", "signature": "#define MC_LEGACY_WORLD"}]}, {"doc": "minios_abi.h -- Single source of truth for the MiniOS user-kernel ABI.", "id": "progs/minios_abi.h", "kind": "module", "label": "minios_abi.h", "language": "h", "sha256": "317b24b45262d7d7", "symbol_count": 129, "symbols": [{"kind": "macro", "line": 2, "name": "MINIOS_ABI_H", "signature": "#define MINIOS_ABI_H"}, {"kind": "macro", "line": 41, "name": "MINIOS_ABI_VERSION", "signature": "#define MINIOS_ABI_VERSION"}, {"kind": "macro", "line": 45, "name": "MINIOS_ABI_CHECKSUM", "signature": "#define MINIOS_ABI_CHECKSUM"}, {"kind": "macro", "line": 101, "name": "MINIOS_USER_LOAD_BASE", "signature": "#define MINIOS_USER_LOAD_BASE"}, {"kind": "macro", "line": 102, "name": "MINIOS_USER_LOAD_END", "signature": "#define MINIOS_USER_LOAD_END"}, {"kind": "macro", "line": 103, "name": "MINIOS_USER_STACK_SIZE", "signature": "#define MINIOS_USER_STACK_SIZE"}, {"kind": "macro", "line": 104, "name": "MINIOS_USER_STACK_TOP", "signature": "#define MINIOS_USER_STACK_TOP"}, {"kind": "macro", "line": 105, "name": "MINIOS_USER_STACK_BASE", "signature": "#define MINIOS_USER_STACK_BASE"}, {"kind": "macro", "line": 106, "name": "MINIOS_USER_BRK_END", "signature": "#define MINIOS_USER_BRK_END"}, {"kind": "macro", "line": 123, "name": "MINIOS_DOOM_BACKBUF_ADDR", "signature": "#define MINIOS_DOOM_BACKBUF_ADDR"}, {"kind": "macro", "line": 124, "name": "MINIOS_DOOM_W", "signature": "#define MINIOS_DOOM_W"}, {"kind": "macro", "line": 125, "name": "MINIOS_DOOM_H", "signature": "#define MINIOS_DOOM_H"}, {"kind": "macro", "line": 126, "name": "MINIOS_FB_ADDR", "signature": "#define MINIOS_FB_ADDR"}, {"kind": "macro", "line": 127, "name": "MINIOS_NK_BACKBUF_ADDR", "signature": "#define MINIOS_NK_BACKBUF_ADDR"}, {"kind": "macro", "line": 128, "name": "MINIOS_NK_W", "signature": "#define MINIOS_NK_W"}, {"kind": "macro", "line": 129, "name": "MINIOS_NK_H", "signature": "#define MINIOS_NK_H"}, {"kind": "macro", "line": 134, "name": "MINIOS_HEAP_BASE", "signature": "#define MINIOS_HEAP_BASE"}, {"kind": "macro", "line": 135, "name": "MINIOS_HEAP_SIZE", "signature": "#define MINIOS_HEAP_SIZE"}, {"kind": "macro", "line": 140, "name": "MINIOS_FB_WIDTH_MAX", "signature": "#define MINIOS_FB_WIDTH_MAX"}, {"kind": "macro", "line": 141, "name": "MINIOS_FB_HEIGHT_MAX", "signature": "#define MINIOS_FB_HEIGHT_MAX"}, {"kind": "macro", "line": 159, "name": "MINIOS_SYS_READ", "signature": "#define MINIOS_SYS_READ"}, {"kind": "macro", "line": 160, "name": "MINIOS_SYS_WRITE", "signature": "#define MINIOS_SYS_WRITE"}, {"kind": "macro", "line": 161, "name": "MINIOS_SYS_OPEN", "signature": "#define MINIOS_SYS_OPEN"}, {"kind": "macro", "line": 162, "name": "MINIOS_SYS_CLOSE", "signature": "#define MINIOS_SYS_CLOSE"}, {"kind": "macro", "line": 163, "name": "MINIOS_SYS_FSTAT", "signature": "#define MINIOS_SYS_FSTAT"}, {"kind": "macro", "line": 164, "name": "MINIOS_SYS_POLL", "signature": "#define MINIOS_SYS_POLL"}, {"kind": "macro", "line": 165, "name": "MINIOS_SYS_LSEEK", "signature": "#define MINIOS_SYS_LSEEK"}, {"kind": "macro", "line": 166, "name": "MINIOS_SYS_MMAP", "signature": "#define MINIOS_SYS_MMAP"}, {"kind": "macro", "line": 167, "name": "MINIOS_SYS_MPROTECT", "signature": "#define MINIOS_SYS_MPROTECT"}, {"kind": "macro", "line": 168, "name": "MINIOS_SYS_MUNMAP", "signature": "#define MINIOS_SYS_MUNMAP"}, {"kind": "macro", "line": 169, "name": "MINIOS_SYS_BRK", "signature": "#define MINIOS_SYS_BRK"}, {"kind": "macro", "line": 170, "name": "MINIOS_SYS_RT_SIGACTION", "signature": "#define MINIOS_SYS_RT_SIGACTION"}, {"kind": "macro", "line": 171, "name": "MINIOS_SYS_RT_SIGPROCMASK", "signature": "#define MINIOS_SYS_RT_SIGPROCMASK"}, {"kind": "macro", "line": 172, "name": "MINIOS_SYS_IOCTL", "signature": "#define MINIOS_SYS_IOCTL"}, {"kind": "macro", "line": 173, "name": "MINIOS_SYS_WRITEV", "signature": "#define MINIOS_SYS_WRITEV"}, {"kind": "macro", "line": 174, "name": "MINIOS_SYS_ACCESS", "signature": "#define MINIOS_SYS_ACCESS"}, {"kind": "macro", "line": 175, "name": "MINIOS_SYS_SCHED_YIELD", "signature": "#define MINIOS_SYS_SCHED_YIELD"}, {"kind": "macro", "line": 176, "name": "MINIOS_SYS_GETPID", "signature": "#define MINIOS_SYS_GETPID"}, {"kind": "macro", "line": 177, "name": "MINIOS_SYS_SOCKET", "signature": "#define MINIOS_SYS_SOCKET"}, {"kind": "macro", "line": 178, "name": "MINIOS_SYS_CONNECT", "signature": "#define MINIOS_SYS_CONNECT"}, {"kind": "macro", "line": 179, "name": "MINIOS_SYS_SENDTO", "signature": "#define MINIOS_SYS_SENDTO"}, {"kind": "macro", "line": 180, "name": "MINIOS_SYS_RECVFROM", "signature": "#define MINIOS_SYS_RECVFROM"}, {"kind": "macro", "line": 181, "name": "MINIOS_SYS_SHUTDOWN", "signature": "#define MINIOS_SYS_SHUTDOWN"}, {"kind": "macro", "line": 182, "name": "MINIOS_SYS_FORK", "signature": "#define MINIOS_SYS_FORK"}, {"kind": "macro", "line": 183, "name": "MINIOS_SYS_VFORK", "signature": "#define MINIOS_SYS_VFORK"}, {"kind": "macro", "line": 184, "name": "MINIOS_SYS_EXECVE", "signature": "#define MINIOS_SYS_EXECVE"}, {"kind": "macro", "line": 185, "name": "MINIOS_SYS_EXIT", "signature": "#define MINIOS_SYS_EXIT"}, {"kind": "macro", "line": 186, "name": "MINIOS_SYS_WAIT4", "signature": "#define MINIOS_SYS_WAIT4"}, {"kind": "macro", "line": 187, "name": "MINIOS_SYS_KILL", "signature": "#define MINIOS_SYS_KILL"}, {"kind": "macro", "line": 188, "name": "MINIOS_SYS_UNAME", "signature": "#define MINIOS_SYS_UNAME"}, {"kind": "macro", "line": 189, "name": "MINIOS_SYS_UNLINK", "signature": "#define MINIOS_SYS_UNLINK"}, {"kind": "macro", "line": 190, "name": "MINIOS_SYS_READLINK", "signature": "#define MINIOS_SYS_READLINK"}, {"kind": "macro", "line": 191, "name": "MINIOS_SYS_GETTID", "signature": "#define MINIOS_SYS_GETTID"}, {"kind": "macro", "line": 195, "name": "MINIOS_SYS_FLOCK", "signature": "#define MINIOS_SYS_FLOCK"}, {"kind": "macro", "line": 196, "name": "MINIOS_SYS_FSYNC", "signature": "#define MINIOS_SYS_FSYNC"}, {"kind": "macro", "line": 197, "name": "MINIOS_SYS_FDATASYNC", "signature": "#define MINIOS_SYS_FDATASYNC"}, {"kind": "macro", "line": 198, "name": "MINIOS_SYS_GETCWD", "signature": "#define MINIOS_SYS_GETCWD"}, {"kind": "macro", "line": 199, "name": "MINIOS_SYS_GETTIMEOFDAY", "signature": "#define MINIOS_SYS_GETTIMEOFDAY"}, {"kind": "macro", "line": 200, "name": "MINIOS_SYS_ARCH_PRCTL", "signature": "#define MINIOS_SYS_ARCH_PRCTL"}, {"kind": "macro", "line": 201, "name": "MINIOS_SYS_OPENAT", "signature": "#define MINIOS_SYS_OPENAT"}, {"kind": "macro", "line": 202, "name": "MINIOS_SYS_NEWFSTATAT", "signature": "#define MINIOS_SYS_NEWFSTATAT"}, {"kind": "macro", "line": 205, "name": "MINIOS_SYS_STATX", "signature": "#define MINIOS_SYS_STATX"}, {"kind": "macro", "line": 209, "name": "MINIOS_SYS_SET_ROBUST_LIST", "signature": "#define MINIOS_SYS_SET_ROBUST_LIST"}, {"kind": "macro", "line": 213, "name": "MINIOS_SYS_PRLIMIT64", "signature": "#define MINIOS_SYS_PRLIMIT64"}, {"kind": "macro", "line": 214, "name": "MINIOS_SYS_GETRANDOM", "signature": "#define MINIOS_SYS_GETRANDOM"}, {"kind": "macro", "line": 215, "name": "MINIOS_SYS_RSEQ", "signature": "#define MINIOS_SYS_RSEQ"}, {"kind": "macro", "line": 216, "name": "MINIOS_SYS_EXIT_GROUP", "signature": "#define MINIOS_SYS_EXIT_GROUP"}, {"kind": "macro", "line": 217, "name": "MINIOS_SYS_SET_TID_ADDRESS", "signature": "#define MINIOS_SYS_SET_TID_ADDRESS"}, {"kind": "macro", "line": 218, "name": "MINIOS_SYS_CLOCK_GETTIME", "signature": "#define MINIOS_SYS_CLOCK_GETTIME"}, {"kind": "macro", "line": 219, "name": "MINIOS_SYS_TGKILL", "signature": "#define MINIOS_SYS_TGKILL"}, {"kind": "macro", "line": 222, "name": "MINIOS_SYS_DNS", "signature": "#define MINIOS_SYS_DNS"}, {"kind": "macro", "line": 228, "name": "MINIOS_SYS_TLS_HANDSHAKE", "signature": "#define MINIOS_SYS_TLS_HANDSHAKE"}, {"kind": "macro", "line": 229, "name": "MINIOS_SYS_TLS_SEND", "signature": "#define MINIOS_SYS_TLS_SEND"}, {"kind": "macro", "line": 230, "name": "MINIOS_SYS_TLS_RECV", "signature": "#define MINIOS_SYS_TLS_RECV"}, {"kind": "macro", "line": 231, "name": "MINIOS_SYS_TIME", "signature": "#define MINIOS_SYS_TIME"}, {"kind": "macro", "line": 232, "name": "MINIOS_SYS_KBD", "signature": "#define MINIOS_SYS_KBD"}, {"kind": "macro", "line": 233, "name": "MINIOS_SYS_PALETTE", "signature": "#define MINIOS_SYS_PALETTE"}, {"kind": "macro", "line": 234, "name": "MINIOS_SYS_KBD_RAW", "signature": "#define MINIOS_SYS_KBD_RAW"}, {"kind": "macro", "line": 235, "name": "MINIOS_SYS_VGA_MODE", "signature": "#define MINIOS_SYS_VGA_MODE"}, {"kind": "macro", "line": 236, "name": "MINIOS_SYS_PCSPK_INIT", "signature": "#define MINIOS_SYS_PCSPK_INIT"}, {"kind": "macro", "line": 237, "name": "MINIOS_SYS_PCSPK_TONE", "signature": "#define MINIOS_SYS_PCSPK_TONE"}, {"kind": "macro", "line": 238, "name": "MINIOS_SYS_DOOM_FRAME", "signature": "#define MINIOS_SYS_DOOM_FRAME"}, {"kind": "macro", "line": 239, "name": "MINIOS_SYS_RTC", "signature": "#define MINIOS_SYS_RTC"}, {"kind": "macro", "line": 240, "name": "MINIOS_SYS_FB_INFO", "signature": "#define MINIOS_SYS_FB_INFO"}, {"kind": "macro", "line": 241, "name": "MINIOS_SYS_PCSPK_VOL", "signature": "#define MINIOS_SYS_PCSPK_VOL"}, {"kind": "macro", "line": 242, "name": "MINIOS_SYS_SPAWN", "signature": "#define MINIOS_SYS_SPAWN"}, {"kind": "macro", "line": 243, "name": "MINIOS_SYS_LZ4_COMPRESS", "signature": "#define MINIOS_SYS_LZ4_COMPRESS"}, {"kind": "macro", "line": 244, "name": "MINIOS_SYS_LZ4_DECOMPRESS", "signature": "#define MINIOS_SYS_LZ4_DECOMPRESS"}, {"kind": "macro", "line": 245, "name": "MINIOS_SYS_MOUSE", "signature": "#define MINIOS_SYS_MOUSE"}, {"kind": "macro", "line": 246, "name": "MINIOS_SYS_NK_FRAME", "signature": "#define MINIOS_SYS_NK_FRAME"}, {"kind": "macro", "line": 247, "name": "MINIOS_SYS_SB16_OPEN", "signature": "#define MINIOS_SYS_SB16_OPEN"}, {"kind": "macro", "line": 248, "name": "MINIOS_SYS_SB16_SUBMIT", "signature": "#define MINIOS_SYS_SB16_SUBMIT"}, {"kind": "macro", "line": 249, "name": "MINIOS_SYS_GFX_SET_TITLE", "signature": "#define MINIOS_SYS_GFX_SET_TITLE"}, {"kind": "macro", "line": 250, "name": "MINIOS_SYS_SB16_PUMP", "signature": "#define MINIOS_SYS_SB16_PUMP"}, {"kind": "macro", "line": 251, "name": "MINIOS_SYS_SB16_STREAM_OPEN", "signature": "#define MINIOS_SYS_SB16_STREAM_OPEN"}, {"kind": "macro", "line": 252, "name": "MINIOS_SYS_SB16_STREAM_CLOSE", "signature": "#define MINIOS_SYS_SB16_STREAM_CLOSE"}, {"kind": "macro", "line": 253, "name": "MINIOS_SYS_SB16_STREAM_SUBMIT", "signature": "#define MINIOS_SYS_SB16_STREAM_SUBMIT"}, {"kind": "macro", "line": 254, "name": "MINIOS_SYS_SB16_STREAM_VOLUME", "signature": "#define MINIOS_SYS_SB16_STREAM_VOLUME"}, {"kind": "macro", "line": 255, "name": "MINIOS_SYS_THREAD_SPAWN", "signature": "#define MINIOS_SYS_THREAD_SPAWN"}, {"kind": "macro", "line": 256, "name": "MINIOS_SYS_FUTEX_WAIT", "signature": "#define MINIOS_SYS_FUTEX_WAIT"}, {"kind": "macro", "line": 257, "name": "MINIOS_SYS_FUTEX_WAKE", "signature": "#define MINIOS_SYS_FUTEX_WAKE"}, {"kind": "macro", "line": 258, "name": "MINIOS_SYS_SUBMIT_BATCH", "signature": "#define MINIOS_SYS_SUBMIT_BATCH"}, {"kind": "macro", "line": 259, "name": "MINIOS_SYS_GETC_RAW", "signature": "#define MINIOS_SYS_GETC_RAW"}, {"kind": "macro", "line": 260, "name": "MINIOS_SYS_GFX_PRESENT", "signature": "#define MINIOS_SYS_GFX_PRESENT"}, {"kind": "macro", "line": 261, "name": "MINIOS_SYS_SECCOMP", "signature": "#define MINIOS_SYS_SECCOMP"}, {"kind": "macro", "line": 262, "name": "MINIOS_SYS_NICE", "signature": "#define MINIOS_SYS_NICE"}, {"kind": "macro", "line": 263, "name": "MINIOS_SYS_RLIMIT", "signature": "#define MINIOS_SYS_RLIMIT"}, {"kind": "macro", "line": 264, "name": "MINIOS_SYS_DIR_LIST", "signature": "#define MINIOS_SYS_DIR_LIST"}, {"kind": "macro", "line": 265, "name": "MINIOS_SYS_GFX_ZOOM", "signature": "#define MINIOS_SYS_GFX_ZOOM"}, {"kind": "macro", "line": 270, "name": "MINIOS_SYS_WL_ATTACH", "signature": "#define MINIOS_SYS_WL_ATTACH"}, {"kind": "macro", "line": 271, "name": "MINIOS_SYS_WL_COMMIT", "signature": "#define MINIOS_SYS_WL_COMMIT"}, {"kind": "macro", "line": 272, "name": "MINIOS_SYS_WL_INPUT", "signature": "#define MINIOS_SYS_WL_INPUT"}, {"kind": "macro", "line": 274, "name": "MINIOS_SYS_CLONE", "signature": "#define MINIOS_SYS_CLONE"}, {"kind": "macro", "line": 282, "name": "MINIOS_GFX_BUF_GAME", "signature": "#define MINIOS_GFX_BUF_GAME"}, {"kind": "macro", "line": 283, "name": "MINIOS_GFX_BUF_NK", "signature": "#define MINIOS_GFX_BUF_NK"}, {"kind": "macro", "line": 284, "name": "MINIOS_SYS_FRAMEBUFFER_COMMIT", "signature": "#define MINIOS_SYS_FRAMEBUFFER_COMMIT"}, {"kind": "macro", "line": 285, "name": "MINIOS_SYS_WINDOW_PRESENT", "signature": "#define MINIOS_SYS_WINDOW_PRESENT"}, {"kind": "macro", "line": 286, "name": "MINIOS_SYS_WINDOW_TITLE", "signature": "#define MINIOS_SYS_WINDOW_TITLE"}, {"kind": "macro", "line": 289, "name": "SYS_TIME_MS", "signature": "#define SYS_TIME_MS"}, {"kind": "macro", "line": 290, "name": "SYS_PALETTE", "signature": "#define SYS_PALETTE"}, {"kind": "macro", "line": 291, "name": "SYS_PCSPK_INIT", "signature": "#define SYS_PCSPK_INIT"}, {"kind": "macro", "line": 292, "name": "SYS_PCSPK_TONE", "signature": "#define SYS_PCSPK_TONE"}, {"kind": "macro", "line": 293, "name": "SYS_RTC", "signature": "#define SYS_RTC"}, {"kind": "macro", "line": 294, "name": "SYS_FB_INFO", "signature": "#define SYS_FB_INFO"}, {"kind": "macro", "line": 295, "name": "SYS_PCSPK_VOL", "signature": "#define SYS_PCSPK_VOL"}, {"kind": "macro", "line": 296, "name": "SYS_SPAWN", "signature": "#define SYS_SPAWN"}, {"kind": "macro", "line": 297, "name": "SYS_TIME", "signature": "#define SYS_TIME"}, {"kind": "macro", "line": 298, "name": "SYS_WRITE", "signature": "#define SYS_WRITE"}, {"kind": "macro", "line": 301, "name": "MINIOS_EABI_MISMATCH", "signature": "#define MINIOS_EABI_MISMATCH"}]}, {"doc": "Docstring: shared ring-3 PNG helpers for MiniOS apps (progs/minios_png.h).", "id": "progs/minios_png.h", "kind": "module", "label": "minios_png.h", "language": "h", "sha256": "6b0005b1c9b1602c", "symbol_count": 19, "symbols": [{"doc": "static const char *mpng_left_candidates[MPNG_LEFT_N] = { \"/icons/doom.png\", \"/icons/doomedit.png\", \"/icons/quake2.png\", \"/icons/piano.png\", \"/icons/nuklear.png\", \"/icons/vedit.png\", \"/icons/file.png\", \"/icons/shell.png\", \"/icons/paint.png\", \"/icons/minicraft.png\" }; /** Docstring: direct 3-3-2 index for one RGB triple, the pokemon ramp.", "kind": "function", "line": 54, "name": "mpng_332_idx", "signature": "static int mpng_332_idx(unsigned r, unsigned g, unsigned b)"}, {"doc": "\"/icons/nuklear.png\", \"/icons/vedit.png\", \"/icons/file.png\", \"/icons/shell.png\", \"/icons/paint.png\", \"/icons/minicraft.png\" }; /** Docstring: direct 3-3-2 index for one RGB triple, the pokemon ramp. static int mpng_332_idx(unsigned r, unsigned g, unsigned b) { return (int)(((r & 0xE0u)) | (((g & 0xE0u) >> 3)) | (((b & 0xC0u) >> 6))); } /** Docstring: nearest palette index by squared RGB distance, fail closed.", "kind": "function", "line": 59, "name": "mpng_nearest", "signature": "static int mpng_nearest(const unsigned char *pal, long pal_n, unsigned r,\n ..."}, {"doc": "for (k = 0; k < pal_n; k++) { long dr = (long)pal[k * 3] - (long)r; long dg = (long)pal[k * 3 + 1] - (long)g; long db = (long)pal[k * 3 + 2] - (long)b; long d = dr * dr + dg * dg + db * db; if (d < bd) { bd = d; best = k; } } return (int)best; } /** Docstring: centered offset of inner inside outer, negative when unfit.", "kind": "function", "line": 80, "name": "mpng_center", "signature": "static int mpng_center(int outer, int inner)"}, {"doc": "} return (int)best; } /** Docstring: centered offset of inner inside outer, negative when unfit. static int mpng_center(int outer, int inner) { if (outer < 0 || inner < 0) return -1; if (inner > outer) return -1; return (outer - inner) / 2; } /** Docstring: integer scale that fits src inside a box, at least 1.", "kind": "function", "line": 89, "name": "mpng_fit_scale", "signature": "static int mpng_fit_scale(int sw, int sh, int boxw, int boxh)"}, {"doc": "int s = 1; int best = 1; if (sw <= 0 || sh <= 0 || boxw <= 0 || boxh <= 0) return -1; for (s = 1; s <= boxw && s <= boxh; s++) { if (sw * s <= boxw && sh * s <= boxh) best = s; else break; } return best; } /** Docstring: scale RGB into indexed dst with nearest neighbour.", "kind": "function", "line": 104, "name": "mpng_rgb_to_idx_scaled", "signature": "static int mpng_rgb_to_idx_scaled(const unsigned char *rgb, int sw, int sh,\n ..."}, {"doc": "int sy = y * sh / dh; for (x = 0; x < dw; x++) { int sx = x * sw / dw; const unsigned char *p = rgb + (sy * sw + sx) * 3; int v = mpng_nearest(pal, pal_n, p[0], p[1], p[2]); if (v < 0) return MPNG_ERR_BOUND; dst[y * dw + x] = (unsigned char)v; } } return MPNG_ERR_OK; } /** Docstring: scale RGB into 3-3-2 indexed dst with nearest neighbour.", "kind": "function", "line": 134, "name": "mpng_rgb_to_332_scaled", "signature": "static int mpng_rgb_to_332_scaled(const unsigned char *rgb, int sw, int sh,\n ..."}, {"doc": "if (dw > MPNG_MAX_DIM || dh > MPNG_MAX_DIM) return MPNG_ERR_BOUND; for (y = 0; y < dh; y++) { int sy = y * sh / dh; for (x = 0; x < dw; x++) { int sx = x * sw / dw; const unsigned char *p = rgb + (sy * sw + sx) * 3; dst[y * dw + x] = (unsigned char)mpng_332_idx(p[0], p[1], p[2]); } } return MPNG_ERR_OK; } /** Docstring: blit an indexed tile into an indexed frame, clipped.", "kind": "function", "line": 158, "name": "mpng_blit_idx", "signature": "static int mpng_blit_idx(unsigned char *fb, int fw, int fh,\n const unsign..."}, {"doc": "int dy = oy + y; if (dy < 0 || dy >= fh) continue; for (x = 0; x < tw; x++) { int dx = ox + x; if (dx < 0 || dx >= fw) continue; fb[dy * fw + dx] = tile[y * tw + x]; } } return MPNG_ERR_OK; } /** Docstring: bounded whole-file read, malloced, caller frees.", "kind": "function", "line": 184, "name": "mpng_load_file", "signature": "static int mpng_load_file(const char *path, unsigned char **out, long *out_n,\n ..."}, {"kind": "macro", "line": 22, "name": "MINIOS_PNG_H", "signature": "#define MINIOS_PNG_H"}, {"kind": "macro", "line": 28, "name": "MPNG_FILE_MAX", "signature": "#define MPNG_FILE_MAX"}, {"kind": "macro", "line": 29, "name": "MPNG_MAX_DIM", "signature": "#define MPNG_MAX_DIM"}, {"kind": "macro", "line": 30, "name": "MPNG_PAL_N", "signature": "#define MPNG_PAL_N"}, {"kind": "macro", "line": 31, "name": "MPNG_PAL_BYTES", "signature": "#define MPNG_PAL_BYTES"}, {"kind": "macro", "line": 32, "name": "MPNG_PATH_MAX", "signature": "#define MPNG_PATH_MAX"}, {"kind": "macro", "line": 33, "name": "MPNG_RIGHT_PATH", "signature": "#define MPNG_RIGHT_PATH"}, {"kind": "macro", "line": 34, "name": "MPNG_LEFT_N", "signature": "#define MPNG_LEFT_N"}, {"kind": "macro", "line": 35, "name": "MPNG_ERR_OK", "signature": "#define MPNG_ERR_OK"}, {"kind": "macro", "line": 36, "name": "MPNG_ERR_BOUND", "signature": "#define MPNG_ERR_BOUND"}, {"kind": "macro", "line": 37, "name": "MPNG_ERR_EMPTY", "signature": "#define MPNG_ERR_EMPTY"}]}, {"doc": "nk_palette.h - one shared hybrid palette for every NK-window app.", "id": "progs/nk_palette.h", "kind": "module", "label": "nk_palette.h", "language": "h", "sha256": "6d8656a6a2c1808b", "symbol_count": 9, "symbols": [{"kind": "function", "line": 22, "name": "nk_palette_build", "signature": "static int nk_palette_build(unsigned char *pal, long cap)"}, {"kind": "macro", "line": 12, "name": "NK_PALETTE_H", "signature": "#define NK_PALETTE_H"}, {"kind": "macro", "line": 14, "name": "NK_PAL_BYTES", "signature": "#define NK_PAL_BYTES"}, {"kind": "macro", "line": 15, "name": "NK_PAL_DESK", "signature": "#define NK_PAL_DESK"}, {"kind": "macro", "line": 16, "name": "NK_PAL_CUBE", "signature": "#define NK_PAL_CUBE"}, {"kind": "macro", "line": 17, "name": "NK_PAL_GRAYS", "signature": "#define NK_PAL_GRAYS"}, {"kind": "macro", "line": 18, "name": "NK_PAL_ACCENTS", "signature": "#define NK_PAL_ACCENTS"}, {"kind": "macro", "line": 19, "name": "NK_PAL_ERR_OK", "signature": "#define NK_PAL_ERR_OK"}, {"kind": "macro", "line": 20, "name": "NK_PAL_ERR_BOUND", "signature": "#define NK_PAL_ERR_BOUND"}]}, {"doc": "cvm_emit.c — node-graph to CVM bytecode compiler.", "id": "progs/nuklear/cvm_emit.c", "kind": "module", "label": "cvm_emit.c", "language": "c", "sha256": "e7b7158ee3180a43", "symbol_count": 56, "symbols": [{"kind": "struct", "line": 73, "name": "codebuf"}, {"kind": "function", "line": 8, "name": "code", "signature": "* exit code (OP_HALT leaves the operand-stack top as the exit status, which\n * the shell reports ..."}, {"kind": "function", "line": 79, "name": "cb_push", "signature": "static int cb_push(struct codebuf *cb, unsigned char c)"}, {"kind": "function", "line": 91, "name": "cb_u32", "signature": "static int cb_u32(struct codebuf *cb, unsigned long v)"}, {"kind": "function", "line": 97, "name": "cb_i64", "signature": "static int cb_i64(struct codebuf *cb, long long v)"}, {"kind": "function", "line": 103, "name": "cb_patch_u32", "signature": "static void cb_patch_u32(struct codebuf *cb, size_t pos, unsigned long v)"}, {"doc": "static int cb_i64(struct codebuf *cb, long long v) { for (int i = 0; i < 8; i++) if (cb_push(cb, (unsigned char)(v >> (8 * i))) < 0) return -1; return 0; } static void cb_patch_u32(struct codebuf *cb, size_t pos, unsigned long v) { cb->b[pos + 0] = (unsigned char)(v & 255); cb->b[pos + 1] = (unsigned char)((v >> 8) & 255); cb->b[pos + 2] = (unsigned char)((v >> 16) & 255); cb->b[pos + 3] = (unsigned char)((v >> 24) & 255); } /* Push an integer literal with the shortest encoding.", "kind": "function", "line": 111, "name": "cb_imm", "signature": "static int cb_imm(struct codebuf *cb, long long v)"}, {"doc": "if (v >= -128 && v <= 127) { if (cb_push(cb, OP_PUSH_IMM8) < 0) return -1; if (cb_push(cb, (unsigned char)(v & 0xFF)) < 0) return -1; } else if (v >= -2147483648LL && v <= 2147483647LL) { if (cb_push(cb, OP_PUSH_IMM32) < 0) return -1; if (cb_u32(cb, (unsigned long)(unsigned long long)v) < 0) return -1; } else { if (cb_push(cb, OP_PUSH_IMM64) < 0) return -1; if (cb_i64(cb, v) < 0) return -1; } return 0; } /* Number of required inputs for a node type.", "kind": "function", "line": 126, "name": "req_inputs", "signature": "static int req_inputs(enum cvm_node_type t)"}, {"kind": "function", "line": 145, "name": "is_sink", "signature": "static int is_sink(enum cvm_node_type t)"}, {"doc": "case NODE_EXIT: return 1; case NODE_IF: return 3; default: return 2; } } static int is_sink(enum cvm_node_type t) { return t == NODE_PRINT || t == NODE_PRINTS || t == NODE_EXIT; } /* ---- topological sort (Kahn, stable) ----", "kind": "function", "line": 150, "name": "topo_sort", "signature": "static int topo_sort(const struct cvm_node *nodes, int n,\n int *order, char *..."}, {"doc": "Emit one operand: the wired local slot or the fallback literal. The caller * guarantees validation passed, so an open input always has use_lit set.", "kind": "function", "line": 213, "name": "emit_operand", "signature": "static int emit_operand(struct codebuf *code, const struct cvm_node *nodes,\n ..."}, {"kind": "function", "line": 224, "name": "emit_jz", "signature": "static int emit_jz(struct codebuf *code, size_t *rel_pos)"}, {"kind": "function", "line": 230, "name": "emit_jmp", "signature": "static int emit_jmp(struct codebuf *code, size_t *rel_pos)"}, {"kind": "function", "line": 236, "name": "cvm_compile", "signature": "int cvm_compile(const struct cvm_node *nodes, int n,\n unsigned char **out, size_t ..."}, {"doc": "size_t ft = (size_t)nf * CVM_FUNC_ENTRY_SIZE; size_t gt = (size_t)ng * CVM_GLOBAL_ENTRY_SIZE; size_t nt = (size_t)nn * CVM_NATIVE_ENTRY_SIZE; size_t st = (size_t)ns * 8; size_t code_off = CVM_MODULE_HEADER_SIZE + ft + gt + nt + st; size_t total = code_off + (size_t)cs + ds.len + (size_t)sp; unsigned char *mod = (unsigned char *)calloc(1, total); if (!mod) goto oom; mod[0] = CVM_MAGIC_0; mod[1] = CVM_MAGIC_1; mod[2] = CVM_MAGIC_2; mod[3] = CVM_MAGIC_3; mod[4] = (unsigned char)CVM_VERSION_MAJOR; mod[5] = 0; /* minor", "kind": "function", "line": 491, "name": "w32", "signature": "void w32(void *p, unsigned v)"}, {"kind": "function", "line": 3, "name": "module", "signature": "* * Emits a cvm2 module (format v2) from a dataflow graph. Nodes are * topologically sorted (a true DAG order, so the editor can connect nodes in * any sequence);"}, {"kind": "macro", "line": 29, "name": "CVM_MAGIC_0", "signature": "#define CVM_MAGIC_0"}, {"kind": "macro", "line": 30, "name": "CVM_MAGIC_1", "signature": "#define CVM_MAGIC_1"}, {"kind": "macro", "line": 31, "name": "CVM_MAGIC_2", "signature": "#define CVM_MAGIC_2"}, {"kind": "macro", "line": 32, "name": "CVM_MAGIC_3", "signature": "#define CVM_MAGIC_3"}, {"kind": "macro", "line": 33, "name": "CVM_VERSION_MAJOR", "signature": "#define CVM_VERSION_MAJOR"}, {"kind": "macro", "line": 34, "name": "CVM_MODULE_HEADER_SIZE", "signature": "#define CVM_MODULE_HEADER_SIZE"}, {"kind": "macro", "line": 35, "name": "CVM_FUNC_ENTRY_SIZE", "signature": "#define CVM_FUNC_ENTRY_SIZE"}, {"kind": "macro", "line": 36, "name": "CVM_GLOBAL_ENTRY_SIZE", "signature": "#define CVM_GLOBAL_ENTRY_SIZE"}, {"kind": "macro", "line": 37, "name": "CVM_NATIVE_ENTRY_SIZE", "signature": "#define CVM_NATIVE_ENTRY_SIZE"}, {"kind": "macro", "line": 40, "name": "OP_PUSH_IMM64", "signature": "#define OP_PUSH_IMM64"}, {"kind": "macro", "line": 41, "name": "OP_PUSH_IMM32", "signature": "#define OP_PUSH_IMM32"}, {"kind": "macro", "line": 42, "name": "OP_PUSH_IMM8", "signature": "#define OP_PUSH_IMM8"}, {"kind": "macro", "line": 43, "name": "OP_PUSH_ZERO", "signature": "#define OP_PUSH_ZERO"}, {"kind": "macro", "line": 44, "name": "OP_PUSH_LOCAL", "signature": "#define OP_PUSH_LOCAL"}, {"kind": "macro", "line": 45, "name": "OP_STORE_LOCAL", "signature": "#define OP_STORE_LOCAL"}, {"kind": "macro", "line": 46, "name": "OP_ADD", "signature": "#define OP_ADD"}, {"kind": "macro", "line": 47, "name": "OP_SUB", "signature": "#define OP_SUB"}, {"kind": "macro", "line": 48, "name": "OP_MUL", "signature": "#define OP_MUL"}, {"kind": "macro", "line": 49, "name": "OP_DIV", "signature": "#define OP_DIV"}, {"kind": "macro", "line": 50, "name": "OP_MOD", "signature": "#define OP_MOD"}, {"kind": "macro", "line": 51, "name": "OP_NEG", "signature": "#define OP_NEG"}, {"kind": "macro", "line": 52, "name": "OP_AND", "signature": "#define OP_AND"}, {"kind": "macro", "line": 53, "name": "OP_OR", "signature": "#define OP_OR"}, {"kind": "macro", "line": 54, "name": "OP_XOR", "signature": "#define OP_XOR"}, {"kind": "macro", "line": 55, "name": "OP_NOT", "signature": "#define OP_NOT"}, {"kind": "macro", "line": 56, "name": "OP_SHL", "signature": "#define OP_SHL"}, {"kind": "macro", "line": 57, "name": "OP_SHR", "signature": "#define OP_SHR"}, {"kind": "macro", "line": 58, "name": "OP_CMP_EQ", "signature": "#define OP_CMP_EQ"}, {"kind": "macro", "line": 59, "name": "OP_CMP_NE", "signature": "#define OP_CMP_NE"}, {"kind": "macro", "line": 60, "name": "OP_CMP_LT", "signature": "#define OP_CMP_LT"}, {"kind": "macro", "line": 61, "name": "OP_CMP_LE", "signature": "#define OP_CMP_LE"}, {"kind": "macro", "line": 62, "name": "OP_CMP_GT", "signature": "#define OP_CMP_GT"}, {"kind": "macro", "line": 63, "name": "OP_CMP_GE", "signature": "#define OP_CMP_GE"}, {"kind": "macro", "line": 64, "name": "OP_LNOT", "signature": "#define OP_LNOT"}, {"kind": "macro", "line": 65, "name": "OP_JMP", "signature": "#define OP_JMP"}, {"kind": "macro", "line": 66, "name": "OP_JZ", "signature": "#define OP_JZ"}, {"kind": "macro", "line": 67, "name": "OP_CALL_NATIVE", "signature": "#define OP_CALL_NATIVE"}, {"kind": "macro", "line": 68, "name": "OP_LEA_DATA", "signature": "#define OP_LEA_DATA"}, {"kind": "macro", "line": 69, "name": "OP_HALT", "signature": "#define OP_HALT"}, {"kind": "macro", "line": 71, "name": "CVM_MAX_NODES", "signature": "#define CVM_MAX_NODES"}]}, {"doc": "cvm_emit.h — node-graph compiler for CVM (cvm2 module format v2).", "id": "progs/nuklear/cvm_emit.h", "kind": "module", "label": "cvm_emit.h", "language": "h", "sha256": "29435b6185e81455", "symbol_count": 6, "symbols": [{"doc": "One node in the graph. Inputs are indices of other nodes; a negative input means open, in which case the per-input literal is used when use_lit[k] is set, otherwise compilation fails with a node-context diagnostic. Output nodes (PRINT/PRINTS/EXIT) terminate the compiled program and can never be * used as an input source.", "kind": "struct", "line": 56, "name": "cvm_node"}, {"doc": "into a self-contained .cvm module: a single entry function whose bytecode computes every node value into a local slot and prints/exits at the output nodes. The emitted module is loadable by the CVM interpreter (objects/cvm.o) exactly like one produced by `ld -f cvm`, so `run` can execute it. Output uses the `printf`/`puts` natives (registered by cvm_host.c); exit codes come from the operand stack via OP_HALT. #include /* String payload bound for STR constants and PRINT formats. #define CVM_NODE_STR_MAX 128 /* Node types the graph compiler understands.", "kind": "enum", "line": 22, "name": "cvm_node_type"}, {"kind": "function", "line": 6, "name": "graph", "signature": "* * A node graph (constants, arithmetic, bitwise, comparisons, a conditional * select, and string constants feeding PRINT/PRINTS/EXIT sinks) is compiled * into a self-contained .cvm module: a single e"}, {"kind": "function", "line": 67, "name": "err", "signature": "* err (err_cap bytes). The module is heap-allocated and owned by the caller * (free it). */ int cvm_compile(const struct cvm_node *nodes, int n, unsigned char **out, size_t *out_size, char *err, size_"}, {"kind": "macro", "line": 2, "name": "CVM_EMIT_H", "signature": "#define CVM_EMIT_H"}, {"kind": "macro", "line": 19, "name": "CVM_NODE_STR_MAX", "signature": "#define CVM_NODE_STR_MAX"}]}, {"doc": "font8x8 - shared 8x8 bitmap font for MiniOS ring-3 graphics programs.", "id": "progs/nuklear/font8x8.c", "kind": "module", "label": "font8x8.c", "language": "c", "sha256": "df9ee1b0204fd419", "symbol_count": 0, "symbols": []}, {"doc": "node_editor.c — visual low-code editor that compiles to CVM bytecode.", "id": "progs/nuklear/node_editor.c", "kind": "module", "label": "node_editor.c", "language": "c", "sha256": "facdf984288e4ca3", "symbol_count": 34, "symbols": [{"kind": "struct", "line": 44, "name": "gnode"}, {"doc": "G_COUNT }; struct gnode { int kind; long long ival; char sval[STR_MAX]; int in[3]; long long lit[3]; int use_lit[3]; float x, y; }; /* Single registry: name, text-format word, inputs, outputs, color.", "kind": "struct", "line": 55, "name": "nodedef"}, {"kind": "function", "line": 96, "name": "node_inputs", "signature": "static int node_inputs(int k)"}, {"kind": "function", "line": 101, "name": "node_outputs", "signature": "static int node_outputs(int k)"}, {"kind": "function", "line": 106, "name": "kind_name", "signature": "static const char *kind_name(int k)"}, {"kind": "function", "line": 111, "name": "kind_color", "signature": "static struct nk_color kind_color(int k)"}, {"kind": "function", "line": 116, "name": "graph_clear", "signature": "static void graph_clear(void)"}, {"kind": "function", "line": 122, "name": "graph_add", "signature": "static int graph_add(int kind)"}, {"kind": "function", "line": 136, "name": "graph_del", "signature": "static void graph_del(int idx)"}, {"doc": "g_count--; for (int i = 0; i < g_count; i++) for (int k = 0; k < 3; k++) { if (g_nodes[i].in[k] == idx) { g_nodes[i].in[k] = -1; } else if (g_nodes[i].in[k] > idx) { g_nodes[i].in[k]--; } } if (g_selected == idx) g_selected = -1; else if (g_selected > idx) g_selected--; } /* Map the graph into the compiler's node array. Returns node count or <0.", "kind": "function", "line": 154, "name": "graph_to_compiler", "signature": "static int graph_to_compiler(struct cvm_node *out, int cap)"}, {"doc": "Pre-compile pass: repair every open data input with a const 0 fallback (an open PrStr prints an empty line), so Compile always writes a module instead of refusing. Repairs are loud (rep), and *bad selects the first touched node. Only unrepairable problems (herr: bad type, dangling wire, * sink used as a source, PrStr wired to a non-string) still refuse.", "kind": "function", "line": 176, "name": "repair_graph", "signature": "static int repair_graph(char *rep, size_t repcap, char *herr, size_t herrcap,\n ..."}, {"kind": "function", "line": 183, "name": "addrep", "signature": "void addrep(const char *s)"}, {"kind": "function", "line": 193, "name": "adderr", "signature": "void adderr(const char *s)"}, {"doc": "Compile the current graph to a file. Returns 0 on success. Open inputs are auto-repaired (const 0 / empty line) and reported, so this refuses * only on unrepairable problems.", "kind": "function", "line": 283, "name": "compile_to", "signature": "static int compile_to(const char *path)"}, {"doc": "--- Headless graph text format (v2, backward compatible) ---- num a 5 str s \"hi\" add b a c add c a #5 neg n a if r c t e print p e print p e \"%d ms\\n\" prints s2 s exit x e Inputs are earlier-defined node names or #integer literals (wire or const). Forward references are rejected. A quoted \"...\" token carries * C-like escapes (\\\\ \\\" \\n \\t). The print format is an optional 4th token.", "kind": "function", "line": 339, "name": "write_quoted", "signature": "static void write_quoted(FILE *f, const char *s)"}, {"kind": "function", "line": 392, "name": "save_graph_file", "signature": "static int save_graph_file(const char *path)"}, {"kind": "function", "line": 430, "name": "parse_graph_file", "signature": "static int parse_graph_file(const char *path)"}, {"kind": "function", "line": 437, "name": "resolve", "signature": "int resolve(const char *nme, int upto)"}, {"doc": "static int parse_graph_file(const char *path) { FILE *f = fopen(path, \"r\"); if (!f) return -1; graph_clear(); static char names[MAX_NODES][16]; char line[512]; int rc = 0; int resolve(const char *nme, int upto) { for (int k = 0; k < upto; k++) if (strcmp(names[k], nme) == 0) return k; return -2; } /* Parse one input token: name, #literal, or #- (open, no literal).", "kind": "function", "line": 443, "name": "parse_input", "signature": "int parse_input(const char *tok, int idx, int k)"}, {"doc": "/* Link-drag state: click an output pin, drag to an input pin. static int linking_active; static int linking_src_node; static int linking_src_slot; /* Node geometry constants. #define NODE_W 130.0f #define TITLE_H 20.0f #define PIN_R 5 #define PIN_DIAM (PIN_R * 2 + 1) #define BEZIER_PAD 50.0f #define GRID_SIZE 32.0f /* Compute the Y positions of input and output pins for a node.", "kind": "function", "line": 522, "name": "pin_y", "signature": "static float pin_y(struct gnode *n, int slot, int is_output)"}, {"kind": "function", "line": 534, "name": "node_h", "signature": "static float node_h(struct gnode *n)"}, {"kind": "function", "line": 542, "name": "ui_inspector", "signature": "static void ui_inspector(struct nk_context *ctx)"}, {"kind": "function", "line": 622, "name": "ui_build", "signature": "static void ui_build(struct nk_context *ctx, float win_w, float win_h)"}, {"doc": "circle.y = pin_y(n, k, 0) - PIN_R + oy; circle.w = PIN_DIAM; circle.h = PIN_DIAM; nk_fill_circle(canvas, circle, n->in[k] >= 0 ? nk_rgb(80, 200, 80) : nk_rgb(100, 100, 100)); } } nk_layout_space_end(ctx); nk_end(ctx); } } /* ---- main loop ----", "kind": "function", "line": 931, "name": "gui_run", "signature": "static void gui_run(void)"}, {"kind": "function", "line": 983, "name": "main", "signature": "int main(int argc, char **argv)"}, {"kind": "macro", "line": 33, "name": "MAX_NODES", "signature": "#define MAX_NODES"}, {"kind": "macro", "line": 34, "name": "STR_MAX", "signature": "#define STR_MAX"}, {"kind": "macro", "line": 500, "name": "UI_MEMORY", "signature": "#define UI_MEMORY"}, {"kind": "macro", "line": 514, "name": "NODE_W", "signature": "#define NODE_W"}, {"kind": "macro", "line": 515, "name": "TITLE_H", "signature": "#define TITLE_H"}, {"kind": "macro", "line": 516, "name": "PIN_R", "signature": "#define PIN_R"}, {"kind": "macro", "line": 517, "name": "PIN_DIAM", "signature": "#define PIN_DIAM"}, {"kind": "macro", "line": 518, "name": "BEZIER_PAD", "signature": "#define BEZIER_PAD"}, {"kind": "macro", "line": 519, "name": "GRID_SIZE", "signature": "#define GRID_SIZE"}]}, {"doc": "nuklear_minios.c — MiniOS platform layer for Nuklear.", "id": "progs/nuklear/nuklear_minios.c", "kind": "module", "label": "nuklear_minios.c", "language": "c", "sha256": "885232b5bcb037f2", "symbol_count": 44, "symbols": [{"doc": "#include #include #include #include \"nuklear_minios.h\" /* glibc program name for the mailbox box (GNU extension). extern char *program_invocation_short_name; #include \"nk_palette.h\" #include \"wl/wl_mbox.h\" #include \"wl/wl_client.h\" /* ---- MiniOS syscalls (canonical table from minios_abi.h) ----", "kind": "function", "line": 33, "name": "nk_sys_time_ms", "signature": "long nk_sys_time_ms(void)"}, {"kind": "function", "line": 38, "name": "nk_sys_kbd", "signature": "long nk_sys_kbd(void)"}, {"kind": "function", "line": 43, "name": "nk_sys_palette", "signature": "long nk_sys_palette(const unsigned char *pal)"}, {"kind": "function", "line": 48, "name": "nk_sys_kbd_raw", "signature": "long nk_sys_kbd_raw(int on)"}, {"kind": "function", "line": 53, "name": "nk_sys_getpid", "signature": "long nk_sys_getpid(void)"}, {"kind": "function", "line": 72, "name": "nk_client_probe", "signature": "static int nk_client_probe(void)"}, {"kind": "function", "line": 114, "name": "nk_sys_vga_mode", "signature": "long nk_sys_vga_mode(int on)"}, {"kind": "function", "line": 121, "name": "nk_sys_fb_info", "signature": "long nk_sys_fb_info(int *w, int *h, int *pitch)"}, {"kind": "function", "line": 128, "name": "nk_sys_mouse", "signature": "long nk_sys_mouse(int *xybw)"}, {"kind": "function", "line": 133, "name": "nk_sys_mouse_badptr", "signature": "long nk_sys_mouse_badptr(void)"}, {"kind": "function", "line": 151, "name": "nk_client_hash", "signature": "static unsigned nk_client_hash(const unsigned char *p, unsigned n)"}, {"kind": "function", "line": 162, "name": "nk_client_publish", "signature": "static int nk_client_publish(void)"}, {"kind": "function", "line": 215, "name": "nk_sys_nk_frame", "signature": "long nk_sys_nk_frame(int *origin)"}, {"kind": "function", "line": 243, "name": "nk_mirror_box", "signature": "static void nk_mirror_box(char *dst, int cap)"}, {"kind": "function", "line": 264, "name": "nk_mirror_emit", "signature": "static int nk_mirror_emit(const char *box, unsigned seq,\n const unsigned char *msg, int mlen)"}, {"kind": "function", "line": 281, "name": "nk_mirror_tick", "signature": "static void nk_mirror_tick(void)"}, {"kind": "function", "line": 338, "name": "nk_sys_gfx_set_title", "signature": "long nk_sys_gfx_set_title(const char *t)"}, {"doc": "The desktop-exact hybrid palette lives once in progs/nk_palette.h; * this wrapper keeps the platform signature while sharing the table.", "kind": "function", "line": 347, "name": "nk_build_palette", "signature": "void nk_build_palette(unsigned char *pal768)"}, {"kind": "function", "line": 356, "name": "pal_prepare", "signature": "static void pal_prepare(void)"}, {"kind": "function", "line": 367, "name": "col_to_idx", "signature": "static int col_to_idx(struct nk_color c)"}, {"kind": "function", "line": 385, "name": "set_clip", "signature": "static void set_clip(int x, int y, int w, int h)"}, {"kind": "function", "line": 395, "name": "px", "signature": "static void px(int x, int y, int c)"}, {"kind": "function", "line": 402, "name": "fill_rect", "signature": "static void fill_rect(int x, int y, int w, int h, int c)"}, {"kind": "function", "line": 409, "name": "draw_line", "signature": "static void draw_line(int x0, int y0, int x1, int y1, int th, int c)"}, {"kind": "function", "line": 427, "name": "fill_circle", "signature": "static void fill_circle(int cx, int cy, int r, int c)"}, {"kind": "function", "line": 433, "name": "stroke_circle", "signature": "static void stroke_circle(int cx, int cy, int r, int th, int c)"}, {"doc": "draw_line(cx + x, cy - y, cx - x, cy - y, th, c); draw_line(cx - x, cy + y, cx - x, cy - y, th, c); draw_line(cx + x, cy + y, cx - x, cy - y, th, c); draw_line(cx - y, cy - x, cx - x, cy - y, th, c); draw_line(cx + y, cy - x, cx - x, cy - y, th, c); draw_line(cx - y, cy + x, cx - x, cy - y, th, c); draw_line(cx + y, cy + x, cx - x, cy - y, th, c); y++; if (err <= 0) { err += 2*y + 1; } if (err > 0) { x--; err -= 2*x + 1; } } } /* Fill a convex polygon (x[], y[]).", "kind": "function", "line": 451, "name": "fill_poly", "signature": "static void fill_poly(int *xs, int *ys, int n, int c)"}, {"kind": "function", "line": 474, "name": "stroke_poly", "signature": "static void stroke_poly(int *xs, int *ys, int n, int th, int c)"}, {"kind": "function", "line": 481, "name": "draw_text", "signature": "static void draw_text(int x, int y, const char *s, int len, int fg, int bg)"}, {"kind": "function", "line": 495, "name": "draw_arc", "signature": "static void draw_arc(int cx, int cy, int r, float a0, float a1,\n int filled, ..."}, {"kind": "function", "line": 516, "name": "nk_rasterize", "signature": "void nk_rasterize(struct nk_context *ctx)"}, {"kind": "function", "line": 520, "name": "nk_foreach", "signature": "nk_foreach(cmd, ctx)"}, {"doc": "if (c->background.a > 0) bg = col_to_idx(c->background); draw_text(c->x, c->y, c->string, c->length, fg, bg); break; } case NK_COMMAND_IMAGE: case NK_COMMAND_CUSTOM: break; default: break; } } } /* ---- Font (8x8 monospace) ----", "kind": "function", "line": 666, "name": "nk_minios_font_width", "signature": "static float nk_minios_font_width(nk_handle handle, float height,\n ..."}, {"kind": "function", "line": 672, "name": "nk_minios_font", "signature": "struct nk_user_font nk_minios_font(void)"}, {"kind": "function", "line": 707, "name": "feed_key", "signature": "static void feed_key(struct nk_context *ctx, enum nk_keys key, int down)"}, {"kind": "function", "line": 714, "name": "nk_set_scancode_hook", "signature": "void nk_set_scancode_hook(nk_scancode_cb cb, void *ud)"}, {"kind": "function", "line": 719, "name": "handle_scancode", "signature": "static void handle_scancode(struct nk_context *ctx, unsigned char sc)"}, {"doc": "Client input pump: feed the pending .ev batch when its seq advanced, else hold the last state. Never touches PS/2; the * server owns the port while the desktop runs.", "kind": "function", "line": 767, "name": "nk_client_poll", "signature": "static void nk_client_poll(struct nk_context *ctx)"}, {"kind": "function", "line": 814, "name": "nk_poll_input", "signature": "void nk_poll_input(struct nk_context *ctx)"}, {"kind": "function", "line": 853, "name": "nk_set_window_origin", "signature": "void nk_set_window_origin(int x, int y)"}, {"doc": "WM quit gesture latch: ESC or Alt+F4 pressed since the last poll. Returns 1 once per gesture, then clears. Every NK app polls this per * frame so no window depends on the tiny title-bar X to close.", "kind": "function", "line": 861, "name": "nk_quit_requested", "signature": "int nk_quit_requested(void)"}, {"kind": "function", "line": 4, "name": "list", "signature": "* abstract draw command list (nk__begin/nk__next);"}, {"doc": "wheel. All MiniOS-specific syscalls go through the Linux syscall ABI, so this compiles into a normal static ring-3 ELF. #define NK_IMPLEMENTATION #include \"nuklear.h\" #include #include #include #include \"nuklear_minios.h\" /* glibc program name for the mailbox box (GNU extension).", "kind": "variable", "line": 27, "name": "program_invocation_short_name", "signature": "extern char *program_invocation_short_name;"}, {"kind": "macro", "line": 17, "name": "NK_IMPLEMENTATION", "signature": "#define NK_IMPLEMENTATION"}]}, {"doc": "nuklear_minios.h — MiniOS platform layer for Nuklear.", "id": "progs/nuklear/nuklear_minios.h", "kind": "module", "label": "nuklear_minios.h", "language": "h", "sha256": "98fe93bf95aa514a", "symbol_count": 24, "symbols": [{"doc": "Forward declarations so this header is self-contained when included * without nuklear.h first (font8x8.c does exactly that).", "kind": "struct", "line": 20, "name": "nk_context"}, {"kind": "struct", "line": 21, "name": "nk_user_font"}, {"kind": "struct", "line": 22, "name": "nk_command_buffer"}, {"doc": "Forward declarations so this header is self-contained when included * without nuklear.h first (font8x8.c does exactly that). struct nk_context; struct nk_user_font; struct nk_command_buffer; #define NK_W MINIOS_NK_W #define NK_H MINIOS_NK_H #define NK_BACKBUF ((volatile uint8_t *)MINIOS_NK_BACKBUF_ADDR) /* MiniOS syscalls used by the platform.", "kind": "function", "line": 29, "name": "nk_sys_time_ms", "signature": "long nk_sys_time_ms(void);"}, {"kind": "function", "line": 30, "name": "nk_sys_kbd", "signature": "long nk_sys_kbd(void);"}, {"kind": "function", "line": 31, "name": "nk_sys_palette", "signature": "long nk_sys_palette(const unsigned char *pal768);"}, {"kind": "function", "line": 32, "name": "nk_sys_kbd_raw", "signature": "long nk_sys_kbd_raw(int on);"}, {"kind": "function", "line": 33, "name": "nk_sys_vga_mode", "signature": "long nk_sys_vga_mode(int on);"}, {"kind": "function", "line": 34, "name": "nk_sys_fb_info", "signature": "long nk_sys_fb_info(int *w, int *h, int *pitch);"}, {"kind": "function", "line": 35, "name": "nk_sys_mouse", "signature": "long nk_sys_mouse(int *xybw);"}, {"doc": "Call SYS_MOUSE with a pointer that is NOT in the user window; the kernel must reject it with -EFAULT. Used by --selftest to prove the pointer * validation, so a mutant that drops the bounds check is killed.", "kind": "function", "line": 39, "name": "nk_sys_mouse_badptr", "signature": "long nk_sys_mouse_badptr(void);"}, {"kind": "function", "line": 40, "name": "nk_sys_nk_frame", "signature": "long nk_sys_nk_frame(int *origin);"}, {"doc": "Call SYS_MOUSE with a pointer that is NOT in the user window; the kernel must reject it with -EFAULT. Used by --selftest to prove the pointer * validation, so a mutant that drops the bounds check is killed. long nk_sys_mouse_badptr(void); long nk_sys_nk_frame(int *origin); /* int[2]: window content origin", "kind": "function", "line": 41, "name": "nk_sys_gfx_set_title", "signature": "long nk_sys_gfx_set_title(const char *t);"}, {"doc": "Hybrid palette: indices 0-14 are the desktop colors (kept so the desktop * behind the window never recolors); 15-255 are the UI ramp.", "kind": "function", "line": 45, "name": "nk_build_palette", "signature": "void nk_build_palette(unsigned char *pal768);"}, {"doc": "Hybrid palette: indices 0-14 are the desktop colors (kept so the desktop * behind the window never recolors); 15-255 are the UI ramp. void nk_build_palette(unsigned char *pal768); /* 8x8 bitmap font (ASCII 32..127), shared with the rasterizer. extern const uint8_t nk_font8x8[96][8]; /* The nk_user_font for this backend: 8x8 monospace.", "kind": "function", "line": 51, "name": "nk_minios_font", "signature": "struct nk_user_font nk_minios_font(void);"}, {"doc": "Hybrid palette: indices 0-14 are the desktop colors (kept so the desktop * behind the window never recolors); 15-255 are the UI ramp. void nk_build_palette(unsigned char *pal768); /* 8x8 bitmap font (ASCII 32..127), shared with the rasterizer. extern const uint8_t nk_font8x8[96][8]; /* The nk_user_font for this backend: 8x8 monospace. struct nk_user_font nk_minios_font(void); /* Rasterize the Nuklear command list into the back-buffer.", "kind": "function", "line": 54, "name": "nk_rasterize", "signature": "void nk_rasterize(struct nk_context *ctx);"}, {"kind": "function", "line": 60, "name": "SYS_NK_FRAME", "signature": "* SYS_NK_FRAME (nk_set_window_origin). */ void nk_set_window_origin(int x, int y);"}, {"kind": "function", "line": 62, "name": "nk_poll_input", "signature": "void nk_poll_input(struct nk_context *ctx);"}, {"doc": "WM quit gesture: ESC or Alt+F4 since the last poll (1 once, then clears). Every NK app checks this per frame so closing never depends * on the title-bar X alone.", "kind": "function", "line": 67, "name": "nk_quit_requested", "signature": "int nk_quit_requested(void);"}, {"kind": "function", "line": 76, "name": "nk_set_scancode_hook", "signature": "void nk_set_scancode_hook(nk_scancode_cb cb, void *ud);"}, {"kind": "macro", "line": 2, "name": "NUKLEAR_MINIOS_H", "signature": "#define NUKLEAR_MINIOS_H"}, {"kind": "macro", "line": 24, "name": "NK_W", "signature": "#define NK_W"}, {"kind": "macro", "line": 25, "name": "NK_H", "signature": "#define NK_H"}, {"kind": "macro", "line": 26, "name": "NK_BACKBUF", "signature": "#define NK_BACKBUF"}]}, {"doc": "Docstring: shared Nuklear theme loader, linked by every NK app.", "id": "progs/nuklear/nuklear_theme.c", "kind": "module", "label": "nuklear_theme.c", "language": "c", "sha256": "48ea85264bffb6ae", "symbol_count": 7, "symbols": [{"kind": "struct", "line": 15, "name": "nk_theme_slot"}, {"kind": "function", "line": 37, "name": "nk_theme_name_ok", "signature": "static int nk_theme_name_ok(const char *name)"}, {"kind": "function", "line": 49, "name": "nk_theme_active", "signature": "int nk_theme_active(char *dst, int cap)"}, {"kind": "function", "line": 73, "name": "nk_theme_parse_line", "signature": "static int nk_theme_parse_line(const char *line,\n unsigned char rgb..."}, {"kind": "function", "line": 105, "name": "nk_theme_probe", "signature": "int nk_theme_probe(const char *name, unsigned char rgb[NK_THEME_KEY_COUNT][3])"}, {"kind": "function", "line": 141, "name": "nk_theme_apply", "signature": "int nk_theme_apply(struct nk_context *ctx, const char *name)"}, {"kind": "macro", "line": 21, "name": "X", "signature": "#define X(k, i)"}]}, {"doc": "Docstring: shared Nuklear theme contract for every MiniOS NK app.", "id": "progs/nuklear/nuklear_theme.h", "kind": "module", "label": "nuklear_theme.h", "language": "h", "sha256": "bc777e2584499eaa", "symbol_count": 13, "symbols": [{"kind": "struct", "line": 59, "name": "nk_context"}, {"doc": "X(scrollbar_cursor, 24) \\ X(scrollbar_cursor_hover, 25) \\ X(scrollbar_cursor_active, 26) \\ X(tab_header, 27) \\ X(knob, 28) \\ X(knob_cursor, 29) \\ X(knob_cursor_hover, 30) \\ X(knob_cursor_active, 31) #define NK_THEME_KEY_COUNT 32 struct nk_context; /** Resolve the active theme name (current file, else the default).", "kind": "function", "line": 62, "name": "nk_theme_active", "signature": "int nk_theme_active(char *dst, int cap);"}, {"doc": "X(tab_header, 27) \\ X(knob, 28) \\ X(knob_cursor, 29) \\ X(knob_cursor_hover, 30) \\ X(knob_cursor_active, 31) #define NK_THEME_KEY_COUNT 32 struct nk_context; /** Resolve the active theme name (current file, else the default). int nk_theme_active(char *dst, int cap); /** Load name (or active when 0) into rgb[32][3]; 0 ok, <0 fallback used.", "kind": "function", "line": 65, "name": "nk_theme_probe", "signature": "int nk_theme_probe(const char *name, unsigned char rgb[NK_THEME_KEY_COUNT][3]);"}, {"doc": "X(knob_cursor_hover, 30) \\ X(knob_cursor_active, 31) #define NK_THEME_KEY_COUNT 32 struct nk_context; /** Resolve the active theme name (current file, else the default). int nk_theme_active(char *dst, int cap); /** Load name (or active when 0) into rgb[32][3]; 0 ok, <0 fallback used. int nk_theme_probe(const char *name, unsigned char rgb[NK_THEME_KEY_COUNT][3]); /** Apply name (or active when 0) to ctx; 0 ok, <0 fallback applied.", "kind": "function", "line": 68, "name": "nk_theme_apply", "signature": "int nk_theme_apply(struct nk_context *ctx, const char *name);"}, {"kind": "macro", "line": 2, "name": "NUKLEAR_THEME_H", "signature": "#define NUKLEAR_THEME_H"}, {"kind": "macro", "line": 15, "name": "NK_THEME_NAME_MAX", "signature": "#define NK_THEME_NAME_MAX"}, {"kind": "macro", "line": 16, "name": "NK_THEME_KEY_MAX", "signature": "#define NK_THEME_KEY_MAX"}, {"kind": "macro", "line": 17, "name": "NK_THEME_LINE_MAX", "signature": "#define NK_THEME_LINE_MAX"}, {"kind": "macro", "line": 18, "name": "NK_THEME_PATH_DIR", "signature": "#define NK_THEME_PATH_DIR"}, {"kind": "macro", "line": 19, "name": "NK_THEME_PATH_CURRENT", "signature": "#define NK_THEME_PATH_CURRENT"}, {"kind": "macro", "line": 20, "name": "NK_THEME_DEFAULT", "signature": "#define NK_THEME_DEFAULT"}, {"kind": "macro", "line": 23, "name": "NK_THEME_KEY_LIST", "signature": "#define NK_THEME_KEY_LIST"}, {"kind": "macro", "line": 57, "name": "NK_THEME_KEY_COUNT", "signature": "#define NK_THEME_KEY_COUNT"}]}, {"doc": "Docstring: MiniOS paint program (Nuklear ring-3 app, MiniFS: paint/paint.elf).", "id": "progs/paint/paint.c", "kind": "module", "label": "paint.c", "language": "c", "sha256": "d8a4dd4694d635c5", "symbol_count": 53, "symbols": [{"doc": "static int paint_size = 0; static int paint_down = 0; static int paint_lastx; static int paint_lasty; static int paint_anchorx; static int paint_anchory; static float paint_rectx; static float paint_recty; static char paint_path[PAINT_PATH_MAX] = PAINT_DEFAULT_PATH; static char paint_status[PAINT_STATUS_MAX]; static int paint_quit; static int paint_autoload; /** Clamp v into [lo, hi].", "kind": "function", "line": 92, "name": "paint_clamp", "signature": "static int paint_clamp(int v, int lo, int hi)"}, {"doc": "static float paint_recty; static char paint_path[PAINT_PATH_MAX] = PAINT_DEFAULT_PATH; static char paint_status[PAINT_STATUS_MAX]; static int paint_quit; static int paint_autoload; /** Clamp v into [lo, hi]. static int paint_clamp(int v, int lo, int hi) { if (v < lo) return lo; if (v > hi) return hi; return v; } /** Bound-checked pixel plot, fail closed outside the canvas.", "kind": "function", "line": 99, "name": "paint_plot", "signature": "static int paint_plot(unsigned char *buf, int w, int h, int x, int y,\n unsig..."}, {"doc": "if (v > hi) return hi; return v; } /** Bound-checked pixel plot, fail closed outside the canvas. static int paint_plot(unsigned char *buf, int w, int h, int x, int y, unsigned char c) { if (!buf || w <= 0 || h <= 0) return -1; if (x < 0 || y < 0 || x >= w || y >= h) return -1; buf[y * w + x] = c; return 0; } /** Filled square dab of side s centered on (x, y).", "kind": "function", "line": 108, "name": "paint_dab", "signature": "static void paint_dab(unsigned char *buf, int w, int h, int x, int y,\n unsig..."}, {"doc": "} /** Filled square dab of side s centered on (x, y). static void paint_dab(unsigned char *buf, int w, int h, int x, int y, unsigned char c, int s) { int half = s / 2; int dx; int dy; for (dy = -half; dy < s - half; dy++) for (dx = -half; dx < s - half; dx++) paint_plot(buf, w, h, x + dx, y + dy, c); } /** Bresenham line with brush dabs, returns plotted points (not dabs).", "kind": "function", "line": 119, "name": "paint_line", "signature": "static int paint_line(unsigned char *buf, int w, int h, int x0, int y0,\n int..."}, {"doc": "paint_dab(buf, w, h, x0, y0, c, s); n++; } if (x0 == x1 && y0 == y1) break; { int e2 = 2 * err; if (e2 > -dy) { err -= dy; x0 += sx; } if (e2 < dx) { err += dx; y0 += sy; } } } return n; } /** Filled rectangle, corners normalized, returns painted pixels.", "kind": "function", "line": 144, "name": "paint_rect_fill", "signature": "static int paint_rect_fill(unsigned char *buf, int w, int h, int x0, int y0,\n ..."}, {"doc": "int xb = x0 < x1 ? x1 : x0; int ya = y0 < y1 ? y0 : y1; int yb = y0 < y1 ? y1 : y0; int x; int y; int n = 0; if (!buf || w <= 0 || h <= 0) return -1; for (y = ya; y <= yb; y++) for (x = xa; x <= xb; x++) if (paint_plot(buf, w, h, x, y, c) == 0) n++; return n; } /** Filled midpoint circle of radius r, returns painted pixels.", "kind": "function", "line": 161, "name": "paint_circle_fill", "signature": "static int paint_circle_fill(unsigned char *buf, int w, int h, int cx,\n ..."}, {"doc": "Bounded flood fill with mark-on-push: every cell is marked once, so * the explicit stack never exceeds the canvas size.", "kind": "function", "line": 179, "name": "paint_flood", "signature": "static int paint_flood(unsigned char *buf, int w, int h, int x, int y,\n uns..."}, {"doc": "} if (cy + 1 < h && buf[(cy + 1) * w + cx] == oc) { buf[(cy + 1) * w + cx] = nc; sx[top] = cx; sy[top] = cy + 1; top++; n++; } if (cy - 1 >= 0 && buf[(cy - 1) * w + cx] == oc) { buf[(cy - 1) * w + cx] = nc; sx[top] = cx; sy[top] = cy - 1; top++; n++; } } return n; } /** Nearest hybrid-palette index by squared RGB distance.", "kind": "function", "line": 223, "name": "paint_nearest", "signature": "static int paint_nearest(const unsigned char *pal, unsigned r, unsigned g,\n ..."}, {"doc": "unsigned long bd = 0xFFFFFFFFUL; unsigned k; if (!pal) return -1; for (k = 0; k < 256; k++) { long dr = (long)pal[k * 3] - (long)r; long dg = (long)pal[k * 3 + 1] - (long)g; long db = (long)pal[k * 3 + 2] - (long)b; unsigned long d = (unsigned long)(dr * dr + dg * dg + db * db); if (d < bd) { bd = d; best = k; } } return (int)best; } /** Cached hybrid palette: built once, shared by picker, save and load.", "kind": "function", "line": 240, "name": "paint_pal", "signature": "static const unsigned char *paint_pal(void)"}, {"doc": "} /** Cached hybrid palette: built once, shared by picker, save and load. static const unsigned char *paint_pal(void) { static unsigned char pal768[768]; static int ready = 0; if (!ready) { nk_build_palette(pal768); ready = 1; } return pal768; } /** Save-path gate: printable ASCII, bounded, .png suffix, no traversal.", "kind": "function", "line": 251, "name": "paint_path_ok", "signature": "static int paint_path_ok(const char *p)"}, {"kind": "function", "line": 272, "name": "paint_crc_init", "signature": "static void paint_crc_init(void)"}, {"kind": "function", "line": 285, "name": "paint_crc_update", "signature": "static unsigned long paint_crc_update(unsigned long c,\n cons..."}, {"doc": "paint_crc_ready = 1; } static unsigned long paint_crc_update(unsigned long c, const unsigned char *p, unsigned long n) { unsigned long k; paint_crc_init(); for (k = 0; k < n; k++) c = paint_crc_tab[(c ^ p[k]) & 0xFF] ^ (c >> 8); return c; } /** Adler-32 over one buffer (the zlib trailer of a single IDAT).", "kind": "function", "line": 296, "name": "paint_adler", "signature": "static unsigned long paint_adler(const unsigned char *p, unsigned long n)"}, {"doc": "/** Adler-32 over one buffer (the zlib trailer of a single IDAT). static unsigned long paint_adler(const unsigned char *p, unsigned long n) { unsigned long a = 1; unsigned long b = 0; unsigned long k; for (k = 0; k < n; k++) { a = (a + p[k]) % 65521; b = (b + a) % 65521; } return (b << 16) | a; } /** Bound-checked big-endian u32 store for the PNG writer.", "kind": "function", "line": 308, "name": "paint_put_u32", "signature": "static int paint_put_u32(unsigned char *dst, unsigned long cap,\n unsigned..."}, {"doc": "/** Bound-checked big-endian u32 store for the PNG writer. static int paint_put_u32(unsigned char *dst, unsigned long cap, unsigned long *pos, unsigned long v) { if (!dst || !pos || *pos + 4 > cap) return -1; dst[*pos] = (unsigned char)((v >> 24) & 0xFF); dst[*pos + 1] = (unsigned char)((v >> 16) & 0xFF); dst[*pos + 2] = (unsigned char)((v >> 8) & 0xFF); dst[*pos + 3] = (unsigned char)(v & 0xFF); pos += 4; return 0; } /** Bound-checked raw copy for the PNG writer.", "kind": "function", "line": 320, "name": "paint_put_bytes", "signature": "static int paint_put_bytes(unsigned char *dst, unsigned long cap,\n unsi..."}, {"doc": "Encode indexed pixels as 8-bit truecolor PNG (stored deflate blocks). * Returns the byte count or a negative code on any bound violation.", "kind": "function", "line": 333, "name": "paint_png_encode", "signature": "static long paint_png_encode(unsigned char *dst, unsigned long cap,\n ..."}, {"doc": "Decode a PNG file into the canvas (top-left, clamped, nearest-mapped). * Reports through the status line, never a partial silent canvas.", "kind": "function", "line": 461, "name": "paint_load_file", "signature": "static int paint_load_file(const char *path)"}, {"doc": "for (x = 0; x < cw; x++) { int v = paint_nearest(pal768, px[(y * w + x) * 3], px[(y * w + x) * 3 + 1], px[(y * w + x) * 3 + 2]); paint_px[y * PAINT_W + x] = (unsigned char)v; } snprintf(paint_status, sizeof(paint_status), \"loaded %s (%dx%d)\", path, w, h); } stbi_image_free(px); return 0; } /** Encode the canvas and write it to path, fail closed on any shortfall.", "kind": "function", "line": 514, "name": "paint_save_file", "signature": "static int paint_save_file(const char *path)"}, {"doc": "} n = fwrite(paint_png, 1, (size_t)png_n, f); fclose(f); if (n != (size_t)png_n) { snprintf(paint_status, sizeof(paint_status), \"short write %s\", path); return -1; } snprintf(paint_status, sizeof(paint_status), \"saved %s (%ld bytes)\", path, png_n); return 0; } /** Blit the canvas into the NK back-buffer after rasterize.", "kind": "function", "line": 548, "name": "paint_blit", "signature": "static void paint_blit(int ox, int oy)"}, {"doc": "static void paint_blit(int ox, int oy) { volatile uint8_t *fb = NK_BACKBUF; int x; int y; for (y = 0; y < PAINT_H; y++) for (x = 0; x < PAINT_W; x++) { int dx = ox + x; int dy = oy + y; if (dx < 0 || dx >= NK_W || dy < 0 || dy >= NK_H) continue; fb[dy * NK_W + dx] = paint_px[y * PAINT_W + x]; } } /** Current drawing color index (eraser paints the canvas background).", "kind": "function", "line": 562, "name": "paint_ink", "signature": "static unsigned char paint_ink(void)"}, {"doc": "int dy = oy + y; if (dx < 0 || dx >= NK_W || dy < 0 || dy >= NK_H) continue; fb[dy * NK_W + dx] = paint_px[y * PAINT_W + x]; } } /** Current drawing color index (eraser paints the canvas background). static unsigned char paint_ink(void) { if (paint_tool == PAINT_TOOL_ERASER) return paint_colors[PAINT_NCOLORS - 1]; return paint_colors[paint_swatch % PAINT_NCOLORS]; } /** Drive the active stroke from the Nuklear input state.", "kind": "function", "line": 569, "name": "paint_handle_input", "signature": "static void paint_handle_input(struct nk_context *ctx)"}, {"doc": "Build the file row, the exact-size canvas beside the tool panel, and the status row. The canvas cell is PAINT_W wide so every white pixel shown is paintable; tools, colors and buttons live in the side * panel instead of above an oversized slot.", "kind": "function", "line": 628, "name": "paint_ui_build", "signature": "static void paint_ui_build(struct nk_context *ctx)"}, {"doc": "Scan the whole framebuffer for the canvas marker run (first four swatches consecutive). Position-independent: it holds whatever video mode the boot picked and wherever the compositor centered the window. No console output inside: serial prints take milliseconds and open * windows for the 25 Hz desktop tick between present and scan.", "kind": "function", "line": 712, "name": "paint_pattern_present", "signature": "static int paint_pattern_present(int fw, int fh, int fp, int *ox, int *oy)"}, {"doc": "break; } } if (hit) { ox = x; oy = y; return 1; } } } return 0; } /** Headless selftest for BDD: core vectors, PNG roundtrip, one frame.", "kind": "function", "line": 747, "name": "paint_selftest", "signature": "static int paint_selftest(void)"}, {"doc": "printf(\"paint: composite did not land (canvas %d,%d origin %d,%d)\\n\", (int)paint_rectx, (int)paint_recty, origin[0], origin[1]); return 1; } nk_free(&ctx); nk_sys_kbd_raw(0); nk_sys_vga_mode(0); printf(\"paint: frame ok (%dx%d)\\n\", NK_W, NK_H); return 0; } static unsigned char paint_ui_memory[PAINT_UI_MEMORY]; /** Interactive GUI loop: toolbar, canvas strokes, blit, present.", "kind": "function", "line": 934, "name": "paint_gui_run", "signature": "static void paint_gui_run(void)"}, {"kind": "function", "line": 984, "name": "main", "signature": "int main(int argc, char **argv)"}, {"kind": "macro", "line": 26, "name": "STB_IMAGE_IMPLEMENTATION", "signature": "#define STB_IMAGE_IMPLEMENTATION"}, {"kind": "macro", "line": 27, "name": "STBI_ONLY_PNG", "signature": "#define STBI_ONLY_PNG"}, {"kind": "macro", "line": 28, "name": "STBI_NO_STDIO", "signature": "#define STBI_NO_STDIO"}, {"kind": "macro", "line": 32, "name": "PAINT_W", "signature": "#define PAINT_W"}, {"kind": "macro", "line": 33, "name": "PAINT_H", "signature": "#define PAINT_H"}, {"kind": "macro", "line": 34, "name": "PAINT_N", "signature": "#define PAINT_N"}, {"kind": "macro", "line": 35, "name": "PAINT_PATH_MAX", "signature": "#define PAINT_PATH_MAX"}, {"kind": "macro", "line": 36, "name": "PAINT_FILE_MAX", "signature": "#define PAINT_FILE_MAX"}, {"kind": "macro", "line": 37, "name": "PAINT_STATUS_MAX", "signature": "#define PAINT_STATUS_MAX"}, {"kind": "macro", "line": 38, "name": "PAINT_UI_MEMORY", "signature": "#define PAINT_UI_MEMORY"}, {"kind": "macro", "line": 39, "name": "PAINT_PNG_MAX", "signature": "#define PAINT_PNG_MAX"}, {"kind": "macro", "line": 40, "name": "PAINT_PNG_MAX_DIM", "signature": "#define PAINT_PNG_MAX_DIM"}, {"kind": "macro", "line": 41, "name": "PAINT_TITLE", "signature": "#define PAINT_TITLE"}, {"kind": "macro", "line": 42, "name": "PAINT_DEFAULT_PATH", "signature": "#define PAINT_DEFAULT_PATH"}, {"kind": "macro", "line": 43, "name": "PAINT_PANEL_TITLE", "signature": "#define PAINT_PANEL_TITLE"}, {"kind": "macro", "line": 44, "name": "PAINT_FILE_BTN_W", "signature": "#define PAINT_FILE_BTN_W"}, {"kind": "macro", "line": 45, "name": "PAINT_FRAME_MS", "signature": "#define PAINT_FRAME_MS"}, {"kind": "macro", "line": 46, "name": "PAINT_FRAME_ATTEMPTS", "signature": "#define PAINT_FRAME_ATTEMPTS"}, {"kind": "macro", "line": 47, "name": "PAINT_NCOLORS", "signature": "#define PAINT_NCOLORS"}, {"kind": "macro", "line": 48, "name": "PAINT_NSIZES", "signature": "#define PAINT_NSIZES"}, {"kind": "macro", "line": 49, "name": "PAINT_NTOOLS", "signature": "#define PAINT_NTOOLS"}, {"kind": "macro", "line": 52, "name": "PAINT_TOOL_BRUSH", "signature": "#define PAINT_TOOL_BRUSH"}, {"kind": "macro", "line": 53, "name": "PAINT_TOOL_LINE", "signature": "#define PAINT_TOOL_LINE"}, {"kind": "macro", "line": 54, "name": "PAINT_TOOL_RECT", "signature": "#define PAINT_TOOL_RECT"}, {"kind": "macro", "line": 55, "name": "PAINT_TOOL_CIRCLE", "signature": "#define PAINT_TOOL_CIRCLE"}, {"kind": "macro", "line": 56, "name": "PAINT_TOOL_FILL", "signature": "#define PAINT_TOOL_FILL"}, {"kind": "macro", "line": 57, "name": "PAINT_TOOL_ERASER", "signature": "#define PAINT_TOOL_ERASER"}]}, {"doc": "piano.c — a Nuklear piano that plays FM sound through the SB16 driver.", "id": "progs/piano/piano.c", "kind": "module", "label": "piano.c", "language": "c", "sha256": "c4ff32840465413d", "symbol_count": 60, "symbols": [{"kind": "function", "line": 78, "name": "sys_pcm_open", "signature": "static long sys_pcm_open(long on)"}, {"kind": "function", "line": 81, "name": "sys_pcm_submit", "signature": "static long sys_pcm_submit(const void *buf, long len)"}, {"kind": "function", "line": 84, "name": "sys_pcm_pump", "signature": "static long sys_pcm_pump(void)"}, {"kind": "function", "line": 87, "name": "sys_yield", "signature": "static void sys_yield(void)"}, {"kind": "function", "line": 102, "name": "o3_op", "signature": "static int o3_op(int ch, int is_car)"}, {"kind": "function", "line": 106, "name": "o3_opreg", "signature": "static void o3_opreg(int ch, int is_car, int regbase, int val)"}, {"kind": "function", "line": 110, "name": "o3_chreg", "signature": "static void o3_chreg(int ch, int regbase, int val)"}, {"kind": "function", "line": 148, "name": "o3_note", "signature": "static void o3_note(int ch, int midi, int on)"}, {"kind": "function", "line": 186, "name": "midi_to_key", "signature": "static int midi_to_key(int midi)"}, {"kind": "function", "line": 209, "name": "clamp_midi", "signature": "static int clamp_midi(int m)"}, {"doc": "pressed scancode owns its channel until release. Indexed by 7-bit code. static int sc_chan[128]; static int sustain_pedal; static int octave; /* -2..+2, note shifted by 12*octave static int volume; /* 0..100 master, applied on the mix static int clamp_midi(int m) { if (m < 0) m = 0; if (m > 127) m = 127; return m; } /* Release every voice the pedal is holding (pedal lifted).", "kind": "function", "line": 216, "name": "pedal_set", "signature": "static void pedal_set(int on)"}, {"kind": "function", "line": 230, "name": "voice_alloc", "signature": "static int voice_alloc(void)"}, {"kind": "function", "line": 243, "name": "note_off_key", "signature": "static void note_off_key(int key)"}, {"kind": "function", "line": 256, "name": "note_on_key", "signature": "static void note_on_key(int key, int midi, int vel)"}, {"doc": "── PC-keyboard MIDI map (Fruity Loops style) ───────────────────────── PS/2 set-1 scancodes (7-bit code, E0 clear) to semitone offsets from the UI base: A-row whites, Q-row blacks between them, Z-row bass whites, digits aliasing the upper blacks. Comma/period are octave down/up and * are handled in the hook, not here. Returns -100 for \"not a note\". define KBD_NO_NOTE (-100)", "kind": "function", "line": 273, "name": "kbd_semitone", "signature": "static int kbd_semitone(int code)"}, {"kind": "function", "line": 308, "name": "kbd_all_off", "signature": "static void kbd_all_off(void)"}, {"kind": "function", "line": 314, "name": "note_on_sc", "signature": "static void note_on_sc(int code, int vel)"}, {"kind": "function", "line": 328, "name": "note_off_sc", "signature": "static void note_off_sc(int code)"}, {"doc": "Raw scancode hook (registered with nk_set_scancode_hook): note on/off * plus comma/period octave shift. Extended (E0) keys are ignored.", "kind": "function", "line": 344, "name": "piano_scancode", "signature": "static void piano_scancode(int code, int make, int e0, void *ud)"}, {"doc": "#define FX_DELAY_CAP (RATE) /* 1 s of delay at 22050 Hz #define FX_DELAY_MAX_MS 800 #define FX_FEEDBACK 0.35f #define FX_WET 0.55f #define FX_TREM_FREQ 5.0f static float fx_delay_buf[FX_DELAY_CAP]; static int fx_delay_len; /* samples, 0 = echo off static int fx_delay_pos; static int fx_tremolo_pct; /* 0..100, 0 = tremolo off static float fx_trem_phase; static int fx_softclip; /* (Re)configure every FX stage; also used by the selftest.", "kind": "function", "line": 396, "name": "fx_configure", "signature": "static void fx_configure(int delay_ms, int tremolo_pct, int clip, int vol)"}, {"kind": "function", "line": 415, "name": "fx_process", "signature": "static float fx_process(float x)"}, {"doc": "Flush a fully-filled buffer to the kernel audio ring. When the ring is full the submit is refused; the buffer is kept in place (fill stays at PCM_BUF) so the next frame retries it, and a drop is counted only when a new submit is blocked by a still-pending buffer, never silently. After a successful submit we call sys_pcm_pump to eagerly drain the kernel ring * into DMA slots, reducing playback latency on the fast path.", "kind": "function", "line": 445, "name": "sb_flush", "signature": "static void sb_flush(void)"}, {"kind": "function", "line": 455, "name": "render_audio", "signature": "static void render_audio(long ms)"}, {"kind": "function", "line": 481, "name": "key_rect", "signature": "static void key_rect(int key, int *x, int *y, int *w, int *h)"}, {"kind": "function", "line": 488, "name": "hit_key", "signature": "static int hit_key(int mx, int my)"}, {"doc": "Velocity 1..100 from the click's vertical position inside a key: the very * top is soft, the bottom is loud.", "kind": "function", "line": 505, "name": "hit_velocity", "signature": "static int hit_velocity(int key, int my)"}, {"kind": "function", "line": 533, "name": "ctrl_hit", "signature": "static int ctrl_hit(int id, int mx, int my)"}, {"kind": "function", "line": 537, "name": "ctrl_active", "signature": "static int ctrl_active(int id)"}, {"kind": "function", "line": 547, "name": "ctrl_press", "signature": "static void ctrl_press(int id)"}, {"doc": "case 1: if (octave < 2) octave++; break; case 2: if (volume > 0) volume -= 5; break; case 3: if (volume < 100) volume += 5; break; case 4: pedal_set(sustain_pedal ? 0 : 1); break; case 5: fx_configure(fx_delay_len > 0 ? 0 : 220, fx_tremolo_pct, fx_softclip, volume); break; case 6: fx_configure(fx_delay_len > 0 ? fx_delay_len * 1000 / (int)RATE : 0, fx_tremolo_pct > 0 ? 0 : 70, fx_softclip, volume); break; case 7: fx_configure(fx_delay_len > 0 ? fx_delay_len * 1000 / (int)RATE : 0, fx_tremolo_pct, fx_softclip ? 0 : 1, volume); break; default: break; } } /* ── UI ───────────────────────────────────────────────────────────────", "kind": "function", "line": 564, "name": "ui_run", "signature": "static void ui_run(int bench_ms)"}, {"doc": "Yield instead of busy-spinning: the old 8 ms pause loop burned CPU every frame and delayed input polling; a yield hands the * machine back so the mouse/ISR state stays fresh. sys_yield(); } nk_set_scancode_hook(0, 0); nk_free(&ctx); nk_sys_kbd_raw(0); nk_sys_vga_mode(0); sys_pcm_open(0); } /* ── Headless selftest (BDD hook) ─────────────────────────────────────", "kind": "function", "line": 738, "name": "run_selftest", "signature": "static int run_selftest(void)"}, {"kind": "function", "line": 905, "name": "main", "signature": "int main(int argc, char **argv)"}, {"kind": "macro", "line": 55, "name": "UI_MEMORY", "signature": "#define UI_MEMORY"}, {"kind": "macro", "line": 58, "name": "SYS_SB16_OPEN", "signature": "#define SYS_SB16_OPEN"}, {"kind": "macro", "line": 59, "name": "SYS_SB16_SUBMIT", "signature": "#define SYS_SB16_SUBMIT"}, {"kind": "macro", "line": 60, "name": "SYS_SB16_PUMP", "signature": "#define SYS_SB16_PUMP"}, {"kind": "macro", "line": 62, "name": "RATE", "signature": "#define RATE"}, {"kind": "macro", "line": 63, "name": "PCM_BUF", "signature": "#define PCM_BUF"}, {"kind": "macro", "line": 68, "name": "MAX_AUDIO_MS", "signature": "#define MAX_AUDIO_MS"}, {"kind": "macro", "line": 76, "name": "PIANO_FRAME_MS", "signature": "#define PIANO_FRAME_MS"}, {"kind": "macro", "line": 165, "name": "KEY_W", "signature": "#define KEY_W"}, {"kind": "macro", "line": 166, "name": "KEY_H", "signature": "#define KEY_H"}, {"kind": "macro", "line": 167, "name": "BK_W", "signature": "#define BK_W"}, {"kind": "macro", "line": 168, "name": "BK_H", "signature": "#define BK_H"}, {"kind": "macro", "line": 169, "name": "KEY_Y", "signature": "#define KEY_Y"}, {"kind": "macro", "line": 170, "name": "PIANO_BASE_MIDI", "signature": "#define PIANO_BASE_MIDI"}, {"kind": "macro", "line": 171, "name": "PIANO_OCTAVES", "signature": "#define PIANO_OCTAVES"}, {"kind": "macro", "line": 184, "name": "NKEYS", "signature": "#define NKEYS"}, {"kind": "macro", "line": 196, "name": "MAX_VOICES", "signature": "#define MAX_VOICES"}, {"kind": "macro", "line": 272, "name": "KBD_NO_NOTE", "signature": "#define KBD_NO_NOTE"}, {"kind": "macro", "line": 382, "name": "FX_DELAY_CAP", "signature": "#define FX_DELAY_CAP"}, {"kind": "macro", "line": 383, "name": "FX_DELAY_MAX_MS", "signature": "#define FX_DELAY_MAX_MS"}, {"kind": "macro", "line": 384, "name": "FX_FEEDBACK", "signature": "#define FX_FEEDBACK"}, {"kind": "macro", "line": 385, "name": "FX_WET", "signature": "#define FX_WET"}, {"kind": "macro", "line": 386, "name": "FX_TREM_FREQ", "signature": "#define FX_TREM_FREQ"}, {"kind": "macro", "line": 515, "name": "CTRL_Y", "signature": "#define CTRL_Y"}, {"kind": "macro", "line": 516, "name": "CTRL_H", "signature": "#define CTRL_H"}, {"kind": "macro", "line": 517, "name": "BTN_W", "signature": "#define BTN_W"}, {"kind": "macro", "line": 518, "name": "BTN_GAP", "signature": "#define BTN_GAP"}, {"kind": "macro", "line": 531, "name": "NCTRLS", "signature": "#define NCTRLS"}]}, {"doc": "fetch.sh - clone the gb-recompiled tool into progs/pokemon/upstream. The upstream project ships the recompiler + runtime, but no ROMs and no pre-generated game code (see its README). You generate a project from a ROM you legally own, then point the MiniOS build at it. See README.md. Usage: ./fetch.sh (safe to re-run; never touches an existing checkout)", "id": "progs/pokemon/fetch.sh", "kind": "module", "label": "fetch.sh", "language": "sh", "sha256": "f799a72d603f6a93", "symbol_count": 0, "symbols": []}, {"doc": "SDL.h stub for MiniOS cross-compilation", "id": "progs/pokemon/minios_stubs/SDL.h", "kind": "module", "label": "SDL.h", "language": "h", "sha256": "4c7da4b5dca34653", "symbol_count": 10, "symbols": [{"doc": "/* SDL.h stub for MiniOS cross-compilation ifndef SDL_H_STUB_MINIOS define SDL_H_STUB_MINIOS include ", "kind": "type_alias", "line": 5, "name": "Uint64", "signature": "typedef uint64_t Uint64;"}, {"kind": "type_alias", "line": 6, "name": "Uint32", "signature": "typedef uint32_t Uint32;"}, {"kind": "type_alias", "line": 7, "name": "Sint32", "signature": "typedef int32_t Sint32;"}, {"kind": "type_alias", "line": 8, "name": "Sint16", "signature": "typedef int16_t Sint16;"}, {"kind": "type_alias", "line": 9, "name": "Uint8", "signature": "typedef uint8_t Uint8;"}, {"kind": "function", "line": 11, "name": "SDL_GetPerformanceCounter", "signature": "static inline Uint64 SDL_GetPerformanceCounter(void)"}, {"kind": "function", "line": 12, "name": "SDL_GetPerformanceFrequency", "signature": "static inline Uint64 SDL_GetPerformanceFrequency(void)"}, {"kind": "function", "line": 13, "name": "SDL_GetTicks", "signature": "static inline Uint32 SDL_GetTicks(void)"}, {"kind": "function", "line": 14, "name": "SDL_Delay", "signature": "static inline void SDL_Delay(Uint32 ms)"}, {"kind": "macro", "line": 3, "name": "SDL_H_STUB_MINIOS", "signature": "#define SDL_H_STUB_MINIOS"}]}, {"id": "progs/pokemon/platform_minios.c", "kind": "module", "label": "platform_minios.c", "language": "c", "sha256": "5cc72caca85078d3", "symbol_count": 105, "symbols": [{"kind": "struct", "line": 237, "name": "gb_voice_t"}, {"kind": "function", "line": 32, "name": "audible", "signature": "* audible (noise SFX, sweep zaps), the raw mix estimate is played.\n *\n * Debug: heartbeat to stde..."}, {"kind": "function", "line": 71, "name": "sys_kbd", "signature": "static long sys_kbd(void)"}, {"kind": "function", "line": 77, "name": "sys_nk_frame", "signature": "static long sys_nk_frame(int *origin)"}, {"kind": "function", "line": 83, "name": "sys_mouse", "signature": "static long sys_mouse(int *xybw)"}, {"kind": "function", "line": 89, "name": "sys_vga_mode", "signature": "static long sys_vga_mode(int on)"}, {"kind": "function", "line": 95, "name": "sys_kbd_raw", "signature": "static long sys_kbd_raw(int on)"}, {"kind": "function", "line": 101, "name": "sys_palette", "signature": "static long sys_palette(const unsigned char *pal)"}, {"kind": "function", "line": 107, "name": "sys_gfx_title", "signature": "static long sys_gfx_title(const char *t)"}, {"kind": "function", "line": 113, "name": "sys_tone", "signature": "static long sys_tone(unsigned f)"}, {"kind": "function", "line": 153, "name": "gb_platform_set_debug", "signature": "void gb_platform_set_debug(bool enabled)"}, {"kind": "function", "line": 160, "name": "_dl_argv", "signature": "* usable _dl_argv (it bound to unrelated storage and strcmp faulted).\n * DO NOT reintroduce argv ..."}, {"kind": "function", "line": 211, "name": "minios_audio_sample", "signature": "static void minios_audio_sample(GBContext *ctx, int16_t left, int16_t right)"}, {"kind": "function", "line": 242, "name": "gb_voice_in_range", "signature": "static bool gb_voice_in_range(unsigned f)"}, {"kind": "function", "line": 246, "name": "sample_apu_voices", "signature": "static void sample_apu_voices(gb_voice_t *v)"}, {"kind": "function", "line": 266, "name": "hold_tone", "signature": "static void hold_tone(unsigned freq, unsigned ms)"}, {"kind": "function", "line": 274, "name": "minios_audio_play", "signature": "static void minios_audio_play(const gb_voice_t *v, bool pcm_audible,\n ..."}, {"doc": "} if (m2) { mel[nmel++] = v[1].freq; } if (bass) { hold_tone(v[2].freq, MINIOS_ARP_BASS_MS); } if (nmel > 0) { hold_tone(mel[g_arp_index % (unsigned)nmel], MINIOS_ARP_MEL_MS); g_arp_index++; } } /* Called once per rendered frame: a handful of syscalls, max.", "kind": "function", "line": 309, "name": "minios_audio_frame", "signature": "static void minios_audio_frame(void)"}, {"kind": "function", "line": 337, "name": "rebuild_joypad", "signature": "static void rebuild_joypad(void)"}, {"kind": "function", "line": 351, "name": "poll_keyboard", "signature": "static void poll_keyboard(void)"}, {"doc": "3-3-2 RGB palette ramp, pushed ONCE at init (not per frame). * Pixel index = (R & 0xE0) | ((G & 0xE0) >> 3) | ((B & 0xC0) >> 6).", "kind": "function", "line": 390, "name": "push_332_palette", "signature": "static void push_332_palette(void)"}, {"kind": "function", "line": 546, "name": "menu_fill", "signature": "static void menu_fill(int x0, int y0, int w, int h, uint8_t idx)"}, {"kind": "function", "line": 559, "name": "menu_text", "signature": "static void menu_text(int x, int y, const char *s, uint8_t fg)"}, {"kind": "function", "line": 578, "name": "menu_osd", "signature": "static void menu_osd(const char *s)"}, {"kind": "function", "line": 584, "name": "menu_draw", "signature": "static void menu_draw(void)"}, {"kind": "function", "line": 614, "name": "menu_item_at", "signature": "static int menu_item_at(int lx, int ly)"}, {"kind": "function", "line": 621, "name": "menu_do_save", "signature": "static void menu_do_save(void)"}, {"kind": "function", "line": 637, "name": "menu_do_load", "signature": "static void menu_do_load(void)"}, {"kind": "function", "line": 656, "name": "menu_activate", "signature": "static void menu_activate(int it)"}, {"doc": "Esc toggles, Up/Down move, Enter activates; the mouse is a bonus. * PS/2 Set 1: Esc = 0x01, Up = 0x48, Down = 0x50, Enter = 0x1C.", "kind": "function", "line": 690, "name": "poll_menu", "signature": "static void poll_menu(void)"}, {"kind": "function", "line": 758, "name": "pokemon_art_load_one", "signature": "static int pokemon_art_load_one(const char *path, unsigned char **rgb,\n ..."}, {"kind": "function", "line": 783, "name": "pokemon_art_load", "signature": "static void pokemon_art_load(void)"}, {"kind": "function", "line": 801, "name": "pokemon_art_draw_one", "signature": "static void pokemon_art_draw_one(const unsigned char *rgb, int sw, int sh,\n ..."}, {"kind": "function", "line": 839, "name": "pokemon_art_draw", "signature": "static void pokemon_art_draw(void)"}, {"doc": "} } static void pokemon_art_draw(void) { int side_w = GB_DST_X0; int side_y = MENU_BAR_H; int side_h = FB_H - MENU_BAR_H; pokemon_art_draw_one(g_art_left_rgb, g_art_left_w, g_art_left_h, 0, side_y, side_w, side_h); pokemon_art_draw_one(g_art_right_rgb, g_art_right_w, g_art_right_h, GB_DST_X0 + GB_DST_W, side_y, side_w, side_h); } /* Scale and upload frame to backbuffer (nearest neighbor, exact 2x).", "kind": "function", "line": 850, "name": "upload_frame", "signature": "static void upload_frame(const uint32_t *framebuffer)"}, {"kind": "function", "line": 919, "name": "gb_platform_init", "signature": "bool gb_platform_init(int scale)"}, {"kind": "function", "line": 950, "name": "minios_persist_path", "signature": "static void minios_persist_path(char *out, size_t n, const GBContext *ctx,\n ..."}, {"doc": "Legacy ramdisk path (pre-MiniFS fix wrote bin/.* onto volatile ramdisk). Loads still probe it as a fallback so a checkpoint saved * in the same session before an upgrade is not invisible.", "kind": "function", "line": 959, "name": "minios_legacy_path", "signature": "static void minios_legacy_path(char *out, size_t n, const GBContext *ctx,\n ..."}, {"kind": "function", "line": 965, "name": "minios_load_helper", "signature": "static bool minios_load_helper(const char *path, void *data, size_t size,\n ..."}, {"kind": "function", "line": 983, "name": "minios_save_helper", "signature": "static bool minios_save_helper(const char *path, const void *data, size_t size)"}, {"kind": "function", "line": 994, "name": "minios_load_battery_ram", "signature": "static bool minios_load_battery_ram(GBContext *ctx, const char *rom_name,\n ..."}, {"kind": "function", "line": 1009, "name": "minios_save_battery_ram", "signature": "static bool minios_save_battery_ram(GBContext *ctx, const char *rom_name,\n ..."}, {"kind": "function", "line": 1019, "name": "minios_load_rtc_data", "signature": "static bool minios_load_rtc_data(GBContext *ctx, const char *rom_name,\n ..."}, {"kind": "function", "line": 1032, "name": "minios_save_rtc_data", "signature": "static bool minios_save_rtc_data(GBContext *ctx, const char *rom_name,\n ..."}, {"kind": "function", "line": 1070, "name": "minios_fast_forward", "signature": "static inline bool minios_fast_forward(void)"}, {"kind": "function", "line": 1074, "name": "minios_state_path", "signature": "static void minios_state_path(char *out, size_t n, const GBContext *ctx)"}, {"kind": "function", "line": 1079, "name": "minios_legacy_state_path", "signature": "static void minios_legacy_state_path(char *out, size_t n, const GBContext *ctx)"}, {"kind": "function", "line": 1084, "name": "minios_autosave", "signature": "static void minios_autosave(uint32_t now)"}, {"doc": "PS/2 Set 1: F5 = 0x3F, F8 = 0x42, Ctrl = 0x1D, S = 0x1F, L = 0x26, SPACE = 0x39, Shift = 0x2A/0x36. SPACE held is momentary turbo; * Ctrl+Space latches it (sticky), Ctrl+Shift+Space releases it.", "kind": "function", "line": 1098, "name": "poll_hotkeys", "signature": "static void poll_hotkeys(void)"}, {"kind": "function", "line": 1150, "name": "gb_platform_register_context", "signature": "void gb_platform_register_context(GBContext *ctx)"}, {"kind": "function", "line": 1166, "name": "gb_platform_shutdown", "signature": "void gb_platform_shutdown(void)"}, {"kind": "function", "line": 1173, "name": "gb_platform_poll_events", "signature": "bool gb_platform_poll_events(GBContext *ctx)"}, {"kind": "function", "line": 1182, "name": "gb_platform_render_frame", "signature": "void gb_platform_render_frame(const uint32_t *framebuffer)"}, {"kind": "function", "line": 1240, "name": "gb_platform_present_framebuffer", "signature": "void gb_platform_present_framebuffer(const uint32_t *framebuffer)"}, {"kind": "function", "line": 1246, "name": "gb_platform_render_lcd_off_frame", "signature": "void gb_platform_render_lcd_off_frame(void)"}, {"kind": "function", "line": 1263, "name": "gb_platform_vsync", "signature": "void gb_platform_vsync(uint32_t frame_cycles)"}, {"kind": "function", "line": 1284, "name": "gb_platform_set_benchmark_mode", "signature": "void gb_platform_set_benchmark_mode(bool enabled)"}, {"kind": "function", "line": 1288, "name": "gb_platform_set_input_script", "signature": "bool gb_platform_set_input_script(const char *script)"}, {"kind": "function", "line": 1294, "name": "gb_platform_set_input_record_file", "signature": "void gb_platform_set_input_record_file(const char *path)"}, {"kind": "function", "line": 1299, "name": "gb_platform_set_persistence_dir", "signature": "bool gb_platform_set_persistence_dir(const char *path)"}, {"kind": "function", "line": 1308, "name": "gb_platform_set_dump_frames", "signature": "void gb_platform_set_dump_frames(const char *frames)"}, {"kind": "function", "line": 1330, "name": "gb_platform_set_dump_present_frames", "signature": "void gb_platform_set_dump_present_frames(const char *frames)"}, {"kind": "function", "line": 1351, "name": "gb_platform_set_screenshot_prefix", "signature": "void gb_platform_set_screenshot_prefix(const char *prefix)"}, {"kind": "function", "line": 1357, "name": "gb_platform_get_timing_info", "signature": "void gb_platform_get_timing_info(GBPlatformTimingInfo *out)"}, {"kind": "function", "line": 1364, "name": "gb_platform_get_joypad", "signature": "uint8_t gb_platform_get_joypad(void)"}, {"kind": "function", "line": 1368, "name": "gb_platform_set_title", "signature": "void gb_platform_set_title(const char *title)"}, {"kind": "function", "line": 1374, "name": "gb_platform_get_smooth_lcd_transitions", "signature": "bool gb_platform_get_smooth_lcd_transitions(void)"}, {"kind": "function", "line": 1378, "name": "gb_platform_set_smooth_lcd_transitions", "signature": "void gb_platform_set_smooth_lcd_transitions(bool enabled)"}, {"kind": "function", "line": 1382, "name": "gb_platform_set_launcher_return_enabled", "signature": "void gb_platform_set_launcher_return_enabled(bool enabled)"}, {"kind": "function", "line": 1386, "name": "gb_platform_get_exit_action", "signature": "GBPlatformExitAction gb_platform_get_exit_action(void)"}, {"kind": "function", "line": 1390, "name": "gb_platform_submit_port_frame", "signature": "void gb_platform_submit_port_frame(void *user, const GBPortFrame *frame)"}, {"doc": "void gb_platform_set_launcher_return_enabled(bool enabled) { (void)enabled; } GBPlatformExitAction gb_platform_get_exit_action(void) { return g_exit_action; } void gb_platform_submit_port_frame(void *user, const GBPortFrame *frame) { (void)user; (void)frame; } /* Test-hook stubs (no-ops on MiniOS)", "kind": "function", "line": 1396, "name": "gb_platform_test_audio_concurrency", "signature": "bool gb_platform_test_audio_concurrency(uint32_t frames,\n ..."}, {"kind": "function", "line": 1405, "name": "gb_platform_test_inject_persistence_fault", "signature": "void gb_platform_test_inject_persistence_fault(\n GBPersistenceTestTarget target,\n GBPersist..."}, {"kind": "function", "line": 181, "name": "audio", "signature": "* PC speaker audio (DOOM-style: sparse syscalls from poll points) * * Per rendered frame, live voice frequencies come from gb_audio_voice() * (runtime accessor over internal channel state: enabled, DA"}, {"kind": "function", "line": 506, "name": "menu", "signature": "* FILE menu (no Nuklear on purpose) * * A 16 px menu bar lives in the top margin the 2x GB image never touches * (it starts at GB_DST_Y0 = 36). Clicking FILE (or pressing Esc) drops a * 5-item menu: S"}, {"kind": "macro", "line": 56, "name": "STB_IMAGE_IMPLEMENTATION", "signature": "#define STB_IMAGE_IMPLEMENTATION"}, {"kind": "macro", "line": 57, "name": "STBI_ONLY_PNG", "signature": "#define STBI_ONLY_PNG"}, {"kind": "macro", "line": 58, "name": "STBI_NO_STDIO", "signature": "#define STBI_NO_STDIO"}, {"kind": "macro", "line": 123, "name": "FB_ADDR", "signature": "#define FB_ADDR"}, {"kind": "macro", "line": 124, "name": "FB_W", "signature": "#define FB_W"}, {"kind": "macro", "line": 125, "name": "FB_H", "signature": "#define FB_H"}, {"kind": "macro", "line": 127, "name": "GB_SCALE", "signature": "#define GB_SCALE"}, {"kind": "macro", "line": 128, "name": "GB_DST_W", "signature": "#define GB_DST_W"}, {"kind": "macro", "line": 129, "name": "GB_DST_H", "signature": "#define GB_DST_H"}, {"kind": "macro", "line": 130, "name": "GB_DST_X0", "signature": "#define GB_DST_X0"}, {"kind": "macro", "line": 131, "name": "GB_DST_Y0", "signature": "#define GB_DST_Y0"}, {"kind": "macro", "line": 196, "name": "MINIOS_AUDIO_RATE", "signature": "#define MINIOS_AUDIO_RATE"}, {"kind": "macro", "line": 197, "name": "MINIOS_AUDIO_SILENCE_E", "signature": "#define MINIOS_AUDIO_SILENCE_E"}, {"kind": "macro", "line": 198, "name": "MINIOS_AUDIO_MIN_HZ", "signature": "#define MINIOS_AUDIO_MIN_HZ"}, {"kind": "macro", "line": 199, "name": "MINIOS_AUDIO_MAX_HZ", "signature": "#define MINIOS_AUDIO_MAX_HZ"}, {"kind": "macro", "line": 200, "name": "MINIOS_ARP_BASS_MS", "signature": "#define MINIOS_ARP_BASS_MS"}, {"kind": "macro", "line": 201, "name": "MINIOS_ARP_MEL_MS", "signature": "#define MINIOS_ARP_MEL_MS"}, {"kind": "macro", "line": 521, "name": "MENU_BAR_H", "signature": "#define MENU_BAR_H"}, {"kind": "macro", "line": 522, "name": "MENU_FILE_X0", "signature": "#define MENU_FILE_X0"}, {"kind": "macro", "line": 523, "name": "MENU_FILE_X1", "signature": "#define MENU_FILE_X1"}, {"kind": "macro", "line": 524, "name": "MENU_DROP_X0", "signature": "#define MENU_DROP_X0"}, {"kind": "macro", "line": 525, "name": "MENU_DROP_W", "signature": "#define MENU_DROP_W"}, {"kind": "macro", "line": 526, "name": "MENU_ITEM_H", "signature": "#define MENU_ITEM_H"}, {"kind": "macro", "line": 527, "name": "MENU_NITEMS", "signature": "#define MENU_NITEMS"}, {"kind": "macro", "line": 530, "name": "MENU_BG", "signature": "#define MENU_BG"}, {"kind": "macro", "line": 531, "name": "MENU_FG", "signature": "#define MENU_FG"}, {"kind": "macro", "line": 532, "name": "MENU_HOVER", "signature": "#define MENU_HOVER"}, {"kind": "macro", "line": 533, "name": "MENU_OSD_BG", "signature": "#define MENU_OSD_BG"}, {"kind": "macro", "line": 1055, "name": "MINIOS_AUTOSAVE_MS", "signature": "#define MINIOS_AUTOSAVE_MS"}, {"kind": "macro", "line": 1067, "name": "MINIOS_FF_FRAMESKIP", "signature": "#define MINIOS_FF_FRAMESKIP"}]}, {"doc": "q2generic_minios.c - MiniOS platform layer for quake2generic.", "id": "progs/quake2generic/q2generic_minios.c", "kind": "module", "label": "q2generic_minios.c", "language": "c", "sha256": "4d275760aa0a8f73", "symbol_count": 30, "symbols": [{"kind": "function", "line": 5, "name": "MINIOS_GFX_BUF_GAME", "signature": "* MINIOS_SYS_GFX_PRESENT with MINIOS_GFX_BUF_GAME (211 stays as a kernel\n * compat alias) and the..."}, {"kind": "function", "line": 30, "name": "sys_kbd", "signature": "static long sys_kbd(void)"}, {"kind": "function", "line": 36, "name": "sys_palette", "signature": "static long sys_palette(const unsigned char *pal)"}, {"kind": "function", "line": 42, "name": "sys_kbd_raw", "signature": "static long sys_kbd_raw(int on)"}, {"kind": "function", "line": 48, "name": "sys_vga_mode", "signature": "static long sys_vga_mode(int on)"}, {"kind": "function", "line": 54, "name": "sys_doom_frame", "signature": "static long sys_doom_frame(void)"}, {"kind": "function", "line": 60, "name": "sys_mouse", "signature": "static long sys_mouse(int *buf)"}, {"kind": "function", "line": 66, "name": "sys_set_title", "signature": "static long sys_set_title(const char *t)"}, {"kind": "function", "line": 88, "name": "q2g_parse_autoframes", "signature": "static void q2g_parse_autoframes(int argc, char **argv)"}, {"kind": "function", "line": 103, "name": "QG_GetMouseDiff", "signature": "void QG_GetMouseDiff(int *dx, int *dy)"}, {"kind": "function", "line": 114, "name": "QG_CaptureMouse", "signature": "void QG_CaptureMouse(void)"}, {"kind": "function", "line": 118, "name": "QG_ReleaseMouse", "signature": "void QG_ReleaseMouse(void)"}, {"kind": "function", "line": 121, "name": "QG_Mkdir", "signature": "void QG_Mkdir(const char *path)"}, {"kind": "function", "line": 125, "name": "scancode_to_q2key", "signature": "static unsigned char scancode_to_q2key(unsigned char raw)"}, {"kind": "function", "line": 208, "name": "extended_to_q2key", "signature": "static unsigned char extended_to_q2key(unsigned char sc)"}, {"kind": "function", "line": 226, "name": "kbd_poll", "signature": "static void kbd_poll(void)"}, {"kind": "function", "line": 256, "name": "SWimp_SetPalette", "signature": "void SWimp_SetPalette(const unsigned char *palette)"}, {"kind": "function", "line": 266, "name": "SWimp_SetMode", "signature": "rserr_t SWimp_SetMode(int *pwidth, int *pheight, int mode, qboolean fullscreen)"}, {"kind": "function", "line": 283, "name": "SWimp_Init", "signature": "int SWimp_Init(void *hInstance, void *wndProc)"}, {"kind": "function", "line": 289, "name": "SWimp_Shutdown", "signature": "void SWimp_Shutdown(void)"}, {"kind": "function", "line": 292, "name": "SWimp_BeginFrame", "signature": "void SWimp_BeginFrame(float camera_separation)"}, {"kind": "function", "line": 295, "name": "SWimp_EndFrame", "signature": "void SWimp_EndFrame(void)"}, {"kind": "function", "line": 314, "name": "SWimp_AppActivate", "signature": "void SWimp_AppActivate(qboolean active)"}, {"kind": "function", "line": 318, "name": "QG_Milliseconds", "signature": "int QG_Milliseconds(void)"}, {"kind": "function", "line": 322, "name": "main", "signature": "int main(int argc, char **argv)"}, {"kind": "function", "line": 4, "name": "MINIOS_DOOM_BACKBUF_ADDR", "signature": "* MINIOS_DOOM_BACKBUF_ADDR (minios_abi.h);"}, {"doc": "Sys_Quit lives in the engine's system driver (other/q_system.c); not pulled * in through quake2.h, so declare it here for the autoquit hook below.", "kind": "function", "line": 76, "name": "Sys_Quit", "signature": "extern void Sys_Quit(void);"}, {"kind": "macro", "line": 21, "name": "Q2G_FB_W", "signature": "#define Q2G_FB_W"}, {"kind": "macro", "line": 22, "name": "Q2G_FB_H", "signature": "#define Q2G_FB_H"}, {"kind": "macro", "line": 72, "name": "Q2G_BACKBUF", "signature": "#define Q2G_BACKBUF"}]}, {"doc": "aes.c - command path AES-256-CTR encryption tools: aes and unaes.", "id": "progs/src/aes.c", "kind": "module", "label": "aes.c", "language": "c", "sha256": "29b864f193679ecc", "symbol_count": 54, "symbols": [{"kind": "function", "line": 69, "name": "aes_read_all", "signature": "static char *aes_read_all(const char *name, int *len)"}, {"kind": "function", "line": 86, "name": "aes_write_all", "signature": "static int aes_write_all(const char *name, char *data, int len)"}, {"kind": "function", "line": 96, "name": "aes_has", "signature": "static int aes_has(const char *s, const char *needle)"}, {"kind": "function", "line": 110, "name": "hex_val", "signature": "static int hex_val(int c)"}, {"kind": "function", "line": 117, "name": "aes_parse_hex", "signature": "static int aes_parse_hex(const char *s, int want, int *out)"}, {"doc": "static int aes_parse_hex(const char *s, int want, int *out) { int i, hi, lo; if ((int)strlen(s) != want) return 0; for (i = 0; i < want; i += 2) { hi = hex_val(s[i]); lo = hex_val(s[i + 1]); if (hi < 0 || lo < 0) return 0; out[i / 2] = hi * 16 + lo; } return 1; } /* Multiply in GF(2^8) modulo the AES polynomial; both operands are 0..255.", "kind": "function", "line": 130, "name": "aes_gf_mul", "signature": "static int aes_gf_mul(int a, int b)"}, {"kind": "function", "line": 142, "name": "aes_xtime", "signature": "static int aes_xtime(int x)"}, {"kind": "function", "line": 148, "name": "aes_rotl8", "signature": "static int aes_rotl8(int x, int n)"}, {"doc": "Build the S-box from first principles: multiplicative inverse in GF(2^8) composed with the FIPS-197 affine transform. Zero maps straight to the * affine constant because 0 has no inverse.", "kind": "function", "line": 155, "name": "aes_init_tables", "signature": "static void aes_init_tables(void)"}, {"doc": "Expand the 32-byte key into AES_RK_LEN round-key bytes (FIPS-197 for Nk=8, Nr=14: RotWord plus SubWord every Nk words, an extra SubWord pass * every Nk/2 words).", "kind": "function", "line": 174, "name": "aes_key_expand", "signature": "static void aes_key_expand(const int *key)"}, {"kind": "function", "line": 209, "name": "aes_add_round_key", "signature": "static void aes_add_round_key(int round)"}, {"kind": "function", "line": 215, "name": "aes_sub_bytes", "signature": "static void aes_sub_bytes(void)"}, {"kind": "function", "line": 220, "name": "aes_shift_rows", "signature": "static void aes_shift_rows(void)"}, {"kind": "function", "line": 228, "name": "aes_mix_columns", "signature": "static void aes_mix_columns(void)"}, {"kind": "function", "line": 248, "name": "aes_cipher", "signature": "static void aes_cipher(void)"}, {"doc": "int r; aes_add_round_key(0); for (r = 1; r < AES_ROUNDS; r++) { aes_sub_bytes(); aes_shift_rows(); aes_mix_columns(); aes_add_round_key(r); } aes_sub_bytes(); aes_shift_rows(); aes_add_round_key(AES_ROUNDS); } /* Big-endian increment of the whole counter block (SP 800-38A CTR).", "kind": "function", "line": 263, "name": "aes_iv_increment", "signature": "static void aes_iv_increment(void)"}, {"doc": "aes_add_round_key(AES_ROUNDS); } /* Big-endian increment of the whole counter block (SP 800-38A CTR). static void aes_iv_increment(void) { int b; for (b = AES_BLOCK - 1; b >= 0; b--) { aes_iv[b] = aes_iv[b] + 1; if (aes_iv[b] <= 255) break; aes_iv[b] = 0; } } /* XOR data in place with the keystream Cipher(nonce), Cipher(nonce+1)...", "kind": "function", "line": 273, "name": "aes_ctr_crypt", "signature": "static void aes_ctr_crypt(char *data, int len)"}, {"kind": "function", "line": 288, "name": "aes_hdr_put", "signature": "static void aes_hdr_put(char *h, int size)"}, {"kind": "function", "line": 299, "name": "aes_hdr_get", "signature": "static int aes_hdr_get(char *h)"}, {"kind": "function", "line": 307, "name": "aes_tool_name", "signature": "static const char *aes_tool_name(int decode)"}, {"kind": "function", "line": 312, "name": "aes_run", "signature": "static int aes_run(int decode, const char *keyhex, const char *noncehex,\n const..."}, {"kind": "function", "line": 384, "name": "main", "signature": "int main(int argc, char **argv)"}, {"kind": "function", "line": 8, "name": "GF", "signature": "* generated procedurally from the GF(2^8) multiplicative inverse plus the * FIPS-197 affine transform, so the file carries no magic tables. The mode * is CTR (NIST SP 800-38A): no padding, encrypt and"}, {"kind": "function", "line": 25, "name": "putchar", "signature": "int putchar();"}, {"kind": "function", "line": 26, "name": "strcmp", "signature": "int strcmp();"}, {"kind": "function", "line": 27, "name": "strlen", "signature": "int strlen();"}, {"kind": "function", "line": 28, "name": "fopen", "signature": "void *fopen();"}, {"kind": "function", "line": 29, "name": "fclose", "signature": "int fclose();"}, {"kind": "function", "line": 30, "name": "fread", "signature": "int fread();"}, {"kind": "function", "line": 31, "name": "fwrite", "signature": "int fwrite();"}, {"kind": "function", "line": 32, "name": "fseek", "signature": "int fseek();"}, {"kind": "function", "line": 33, "name": "ftell", "signature": "int ftell();"}, {"kind": "function", "line": 34, "name": "rewind", "signature": "void rewind();"}, {"kind": "function", "line": 35, "name": "malloc", "signature": "void *malloc();"}, {"kind": "function", "line": 36, "name": "free", "signature": "void free();"}, {"kind": "macro", "line": 38, "name": "AES_MAGIC0", "signature": "#define AES_MAGIC0"}, {"kind": "macro", "line": 39, "name": "AES_MAGIC1", "signature": "#define AES_MAGIC1"}, {"kind": "macro", "line": 40, "name": "AES_MAGIC2", "signature": "#define AES_MAGIC2"}, {"kind": "macro", "line": 41, "name": "AES_MAGIC3", "signature": "#define AES_MAGIC3"}, {"kind": "macro", "line": 42, "name": "AES_HDR_SIZE", "signature": "#define AES_HDR_SIZE"}, {"kind": "macro", "line": 44, "name": "AES_BLOCK", "signature": "#define AES_BLOCK"}, {"kind": "macro", "line": 45, "name": "AES_KEY_BYTES", "signature": "#define AES_KEY_BYTES"}, {"kind": "macro", "line": 46, "name": "AES_NONCE_BYTES", "signature": "#define AES_NONCE_BYTES"}, {"kind": "macro", "line": 47, "name": "AES_ROUNDS", "signature": "#define AES_ROUNDS"}, {"kind": "macro", "line": 48, "name": "AES_RK_LEN", "signature": "#define AES_RK_LEN"}, {"kind": "macro", "line": 49, "name": "AES_SBOX_SIZE", "signature": "#define AES_SBOX_SIZE"}, {"kind": "macro", "line": 50, "name": "AES_RCON_SIZE", "signature": "#define AES_RCON_SIZE"}, {"kind": "macro", "line": 52, "name": "AES_POLY", "signature": "#define AES_POLY"}, {"kind": "macro", "line": 53, "name": "AES_AFFINE_C", "signature": "#define AES_AFFINE_C"}, {"kind": "macro", "line": 54, "name": "AES_RCON_PAD", "signature": "#define AES_RCON_PAD"}, {"kind": "macro", "line": 56, "name": "HEX_KEY_LEN", "signature": "#define HEX_KEY_LEN"}, {"kind": "macro", "line": 57, "name": "HEX_NONCE_LEN", "signature": "#define HEX_NONCE_LEN"}, {"kind": "macro", "line": 59, "name": "AES_SEEK_END", "signature": "#define AES_SEEK_END"}, {"kind": "macro", "line": 61, "name": "AES_EXIT_FAIL", "signature": "#define AES_EXIT_FAIL"}]}, {"id": "progs/src/audio.c", "kind": "module", "label": "audio.c", "language": "c", "sha256": "ecb75e055301ddd8", "symbol_count": 17, "symbols": [{"kind": "function", "line": 3, "name": "syscall1", "signature": "static long syscall1(long n, long a1)"}, {"kind": "function", "line": 9, "name": "syscall2", "signature": "static long syscall2(long n, long a1, long a2)"}, {"kind": "function", "line": 15, "name": "syscall3", "signature": "static long syscall3(long n, long a1, long a2, long a3)"}, {"kind": "function", "line": 21, "name": "syscall0", "signature": "static long syscall0(long n)"}, {"kind": "function", "line": 27, "name": "audio_init", "signature": "int audio_init(void)"}, {"kind": "function", "line": 31, "name": "audio_tone", "signature": "void audio_tone(unsigned freq)"}, {"kind": "function", "line": 35, "name": "audio_pcm_open", "signature": "int audio_pcm_open(unsigned rate, unsigned channels, unsigned format)"}, {"kind": "function", "line": 40, "name": "audio_pcm_submit", "signature": "int audio_pcm_submit(const void *buf, unsigned len)"}, {"kind": "function", "line": 44, "name": "audio_pcm_pump", "signature": "void audio_pcm_pump(void)"}, {"kind": "function", "line": 48, "name": "audio_pcm_close", "signature": "void audio_pcm_close(void)"}, {"kind": "function", "line": 52, "name": "audio_set_volume", "signature": "void audio_set_volume(unsigned volume)"}, {"kind": "function", "line": 56, "name": "audio_get_volume", "signature": "unsigned audio_get_volume(void)"}, {"kind": "function", "line": 60, "name": "audio_sb16_present", "signature": "int audio_sb16_present(void)"}, {"kind": "function", "line": 64, "name": "audio_stream_open", "signature": "int audio_stream_open(void)"}, {"kind": "function", "line": 68, "name": "audio_stream_close", "signature": "void audio_stream_close(int id)"}, {"kind": "function", "line": 72, "name": "audio_stream_submit", "signature": "int audio_stream_submit(int id, const void *buf, unsigned len)"}, {"kind": "function", "line": 76, "name": "audio_stream_volume", "signature": "void audio_stream_volume(int id, unsigned char vol)"}]}, {"id": "progs/src/cp.c", "kind": "module", "label": "cp.c", "language": "c", "sha256": "acc13c6f9b324af7", "symbol_count": 8, "symbols": [{"kind": "function", "line": 10, "name": "main", "signature": "int main(int argc, char **argv)"}, {"kind": "function", "line": 1, "name": "printf", "signature": "int printf();"}, {"kind": "function", "line": 2, "name": "fopen", "signature": "void *fopen();"}, {"kind": "function", "line": 3, "name": "fclose", "signature": "int fclose();"}, {"kind": "function", "line": 4, "name": "fread", "signature": "int fread();"}, {"kind": "function", "line": 5, "name": "fwrite", "signature": "int fwrite();"}, {"kind": "macro", "line": 7, "name": "CP_BUF_SIZE", "signature": "#define CP_BUF_SIZE"}, {"kind": "macro", "line": 8, "name": "CP_EXIT_FAIL", "signature": "#define CP_EXIT_FAIL"}]}, {"doc": "Ring-3 privilege probe. Reads the CS selector at runtime and exits with", "id": "progs/src/cpl.c", "kind": "module", "label": "cpl.c", "language": "c", "sha256": "9790692541f70cba", "symbol_count": 3, "symbols": [{"doc": "Ring-3 privilege probe. Reads the CS selector at runtime and exits with the CPL it is executing at. Under the isolation contract a Linux ELF runs at ring 3, so CS is the user code selector (0x23) and the exit code is 3; a regression to ring-0 execution would report 0. Built as a * static Linux ELF like lxhello.elf and run through the syscall ABI.", "kind": "function", "line": 6, "name": "read_cpl", "signature": "static long read_cpl(void)"}, {"kind": "function", "line": 12, "name": "exit_now", "signature": "static void exit_now(long code)"}, {"kind": "function", "line": 16, "name": "_start", "signature": "void _start(void)"}]}, {"id": "progs/src/fib.c", "kind": "module", "label": "fib.c", "language": "c", "sha256": "6d8b63c30e4febf7", "symbol_count": 2, "symbols": [{"kind": "function", "line": 1, "name": "fib", "signature": "int fib(int n)"}, {"kind": "function", "line": 6, "name": "main", "signature": "int main(void)"}]}, {"doc": "fptest.c -- FPU/SSE context-switch probe (Phase 0.1, ADR-0014).", "id": "progs/src/fptest.c", "kind": "module", "label": "fptest.c", "language": "c", "sha256": "856a67729b21e6e0", "symbol_count": 9, "symbols": [{"kind": "struct", "line": 56, "name": "fp_slot_t"}, {"kind": "function", "line": 42, "name": "read_mxcsr", "signature": "static unsigned int read_mxcsr(void)"}, {"kind": "function", "line": 48, "name": "raw_gettid", "signature": "static long raw_gettid(void)"}, {"kind": "function", "line": 52, "name": "raw_getrandom", "signature": "static long raw_getrandom(void *buf, unsigned long n)"}, {"doc": "Stack-alignment canary: an aligned SSE store to a stack slot faults with #GP unless the thread entry stack satisfies SysV (rsp%16==8 at entry, 16-aligned after the call prologue). Compiler spills would only sometimes touch the misaligned area; this faults deterministically. A fault kills the worker with -14, which the join * reports instead of a silent wrong answer.", "kind": "function", "line": 78, "name": "stack_align_canary", "signature": "static void stack_align_canary(void)"}, {"kind": "function", "line": 84, "name": "worker", "signature": "static void *worker(void *p)"}, {"kind": "function", "line": 148, "name": "main", "signature": "int main(void)"}, {"kind": "function", "line": 21, "name": "gettid", "signature": "* * The same run smokes gettid (Phase 0.4: the two workers must observe * distinct tids, never the constant 1) and getrandom (Phase 0.5: it * must fill the buffer and report the count, never EFAULT). "}, {"kind": "macro", "line": 38, "name": "FP_ITERS", "signature": "#define FP_ITERS"}]}, {"doc": "freedom - a headless text browser for MiniOS.", "id": "progs/src/freedom.c", "kind": "module", "label": "freedom.c", "language": "c", "sha256": "41a89b821464e203", "symbol_count": 61, "symbols": [{"doc": "Session-aware close (frees the TLS session for fd, no-op when none): every fetch path must use this, never raw close(), or the next fetch reuses the recycled fd number onto a live slot and its handshake fails with \"session already exists\" (redirects and linked stylesheets * hit this on their second fetch). void tls_close(int fd); #else int socket(int domain, int type, int proto); int connect(int fd, void *addr, int addrlen); int sendto(int fd, char *buf, int len, int flags, void *to, int tolen); int recvfrom(int fd, char *buf, int len, int flags, void *from, int *fromlen); int close(int fd); /* miniGCC twin: no TLS engine linked, so no session can exist.", "kind": "function", "line": 58, "name": "tls_close", "signature": "static int tls_close(int fd)"}, {"doc": "static char f_dom[FREEDOM_DOM_BUF]; static int f_domlen; static char f_css[FREEDOM_CSS_BUF]; static int f_csslen; static char f_linkhost[FREEDOM_CSS_MAX][64]; static char f_linkpath[FREEDOM_CSS_MAX][128]; static int f_linkn; static int f_cstage; static int f_csize; static int f_crem; static int f_bdone; /* Decimal string to int (the ld stub set has no atol).", "kind": "function", "line": 151, "name": "atoi", "signature": "static int atoi(char *s)"}, {"doc": "Append src to dst at pos; returns the new length or -1 when it does not fit. A negative pos (a previous append in the chain failed) stays -1 without touching dst, so chained callers like classify_tag cannot * walk to dst-1.", "kind": "function", "line": 166, "name": "append", "signature": "static int append(char *dst, int pos, char *src, int cap)"}, {"kind": "function", "line": 176, "name": "ci_lower", "signature": "static int ci_lower(int c)"}, {"doc": "if (pos < 0) return -1; n = strlen(src); if (pos + n >= cap) return -1; memcpy(dst + pos, src, n); dst[pos + n] = 0; return pos + n; } static int ci_lower(int c) { if (c >= 'A' && c <= 'Z') return c + ('a' - 'A'); return c; } /* Case-insensitive starts-with.", "kind": "function", "line": 182, "name": "ci_starts", "signature": "static int ci_starts(char *s, char *pre)"}, {"doc": "} /* Case-insensitive starts-with. static int ci_starts(char *s, char *pre) { while (*pre) { if (!*s) return 0; if (ci_lower(*s) != ci_lower(*pre)) return 0; s++; pre++; } return 1; } /* Case-insensitive equality.", "kind": "function", "line": 193, "name": "ci_eq", "signature": "static int ci_eq(char *a, char *b)"}, {"doc": "return 1; } /* Case-insensitive equality. static int ci_eq(char *a, char *b) { while (*a && *b) { if (ci_lower(*a) != ci_lower(*b)) return 0; a++; b++; } return *a == 0 && *b == 0; } /* Case-insensitive index of needle in haystack, or -1.", "kind": "function", "line": 203, "name": "ci_index", "signature": "static int ci_index(char *s, char *needle)"}, {"doc": "} return *a == 0 && *b == 0; } /* Case-insensitive index of needle in haystack, or -1. static int ci_index(char *s, char *needle) { int i; for (i = 0; s[i]; i++) { if (ci_starts(s + i, needle)) return i; } return -1; } /* Does the input look like an URL (no spaces, contains a dot)?", "kind": "function", "line": 212, "name": "looks_like_url", "signature": "static int looks_like_url(char *s)"}, {"doc": "Does s begin with \":\" per RFC 3986 (ALPHA *(ALPHA/DIGIT/+/-/.) \":\")? Any such prefix makes the string a scheme, * and the omnibox policy is: only http:// and https:// are executed.", "kind": "function", "line": 226, "name": "has_scheme", "signature": "static int has_scheme(char *s)"}, {"doc": "char c; c = s[0]; if (!((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z'))) return 0; for (i = 1; s[i]; i++) { c = s[i]; if (c == ':') return 1; if (!((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || (c >= '0' && c <= '9') || c == '+' || c == '-' || c == '.')) return 0; } return 0; } /* Encode a query for the DuckDuckGo HTML endpoint (no-JS).", "kind": "function", "line": 242, "name": "make_search", "signature": "static void make_search(char *out, char *query, int cap)"}, {"doc": "Split an http:// or https:// URL into f_host, f_path, f_port and f_secure. Returns 0 on failure. The input buffer is never modified: the parse is index-only, so it stays valid when the compiler widens * dereferenced stores.", "kind": "function", "line": 266, "name": "split_url", "signature": "static int split_url(char *url)"}, {"doc": "Recompute f_host/f_path/f_port/f_secure from the last Location value. Returns 1 when the chase may continue, 0 when it must stop * (diagnostic already printed).", "kind": "function", "line": 313, "name": "resolve_redirect", "signature": "static int resolve_redirect(void)"}, {"kind": "function", "line": 366, "name": "put_ws", "signature": "static void put_ws(void)"}, {"doc": "Print one text byte through the UTF-8 gate. Remote pages are hostile data: bytes outside a valid UTF-8 sequence (overlong, surrogate, out of range) are replaced with '?' (FreeDom policy). * Sequence state is kept in f_utbuf/f_utlen/f_utrem.", "kind": "function", "line": 377, "name": "put_utf", "signature": "static void put_utf(int c)"}, {"doc": "Print one text byte: whitespace collapses, everything else goes * through the UTF-8 gate. Dump modes suppress the page text.", "kind": "function", "line": 427, "name": "put_text", "signature": "static void put_text(int c)"}, {"kind": "function", "line": 483, "name": "css_append", "signature": "static void css_append(char *s, int n)"}, {"kind": "function", "line": 489, "name": "css_line", "signature": "static void css_line(char *s)"}, {"kind": "function", "line": 494, "name": "dom_append", "signature": "static void dom_append(char *s, int n)"}, {"kind": "function", "line": 500, "name": "dom_space", "signature": "static void dom_space(void)"}, {"kind": "function", "line": 504, "name": "dom_nl", "signature": "static void dom_nl(void)"}, {"doc": "int i; for (i = 0; i < n && f_domlen < FREEDOM_DOM_BUF - 1; i++) f_dom[f_domlen++] = s[i]; } static void dom_space(void) { if (f_domlen < FREEDOM_DOM_BUF - 1) f_dom[f_domlen++] = ' '; } static void dom_nl(void) { if (f_domlen < FREEDOM_DOM_BUF - 1) f_dom[f_domlen++] = '\\n'; } /* Record the finished attribute in its place.", "kind": "function", "line": 509, "name": "record_attr", "signature": "static void record_attr(void)"}, {"doc": "f_hreflen = f_vallen < 127 ? f_vallen : 127; memcpy(f_href, f_val, f_hreflen); f_href[f_hreflen] = 0; } else if (ci_eq(f_attr, \"style\")) { f_stylelen = f_vallen < (FREEDOM_ATTR_MAX - 1) ? f_vallen : (FREEDOM_ATTR_MAX - 1); memcpy(f_styleattr, f_val, f_stylelen); f_styleattr[f_stylelen] = 0; } else if (ci_eq(f_attr, \"rel\")) { f_rel_ss = ci_index(f_val, \"stylesheet\") >= 0; } } /* Is tagname a void element (no closing tag, no children)?", "kind": "function", "line": 534, "name": "is_void_tag", "signature": "static int is_void_tag(void)"}, {"doc": "A tag was fully collected into f_tagn (+ attributes). Decide what it * does to the stream and the dumps.", "kind": "function", "line": 546, "name": "classify_tag", "signature": "static void classify_tag(void)"}, {"doc": "} dom_nl(); if (!is_void_tag()) f_depth++; } if (ci_eq(f_tagn, \"br\") || ci_eq(f_tagn, \"p\") || ci_eq(f_tagn, \"div\") || ci_eq(f_tagn, \"h1\") || ci_eq(f_tagn, \"h2\") || ci_eq(f_tagn, \"h3\") || ci_eq(f_tagn, \"h4\") || ci_eq(f_tagn, \"h5\") || ci_eq(f_tagn, \"h6\") || ci_eq(f_tagn, \"li\") || ci_eq(f_tagn, \"tr\")) { if (f_mode == 0) putchar('\\n'); f_ws = 1; } } /* Feed one body byte into the filter.", "kind": "function", "line": 631, "name": "body_byte", "signature": "static void body_byte(int c)"}, {"doc": "f_rel_ss = 0; return; } if (c == '&') { f_entlen = 1; f_ent[0] = 0; return; } put_text(c); } /* --- HTTP ---------------------------------------------------------- /* Classify one header line (NUL-terminated).", "kind": "function", "line": 796, "name": "head_line", "signature": "static void head_line(char *line)"}, {"doc": "Parse the collected header block f_hdr[0..f_hlen-1] (the last four * bytes are the terminating CRLF CRLF).", "kind": "function", "line": 821, "name": "parse_head", "signature": "static void parse_head(void)"}, {"doc": "f_hdr[lend] = 0; if (i == 0) { char *sp; sp = strchr(f_hdr, ' '); if (sp) f_status = atoi(sp + 1); } else if (lend > i) { head_line(f_hdr + i); } f_hdr[lend] = '\\r'; i = lend + 2; } } /* Receive body bytes: TLS for f_secure, plain TCP otherwise.", "kind": "function", "line": 843, "name": "recv_body", "signature": "static int recv_body(int fd, char *buf, int len)"}, {"doc": "head_line(f_hdr + i); } f_hdr[lend] = '\\r'; i = lend + 2; } } /* Receive body bytes: TLS for f_secure, plain TCP otherwise. static int recv_body(int fd, char *buf, int len) { if (f_secure) return tls_recv(fd, buf, len); return recvfrom(fd, buf, len, 0, 0, 0); } /* Send the whole request: TLS for f_secure, plain TCP otherwise.", "kind": "function", "line": 849, "name": "send_all", "signature": "static int send_all(int fd, char *buf, int len)"}, {"doc": "Send one HTTP request and process the response body. Returns the status code, or 0 on transport failure. Sets f_redir when a * Location header was seen.", "kind": "function", "line": 860, "name": "fetch", "signature": "static int fetch(char *host, char *path, int port)"}, {"doc": "Fetch a linked stylesheet and print its raw body (through the UTF-8 * gate). No redirect chasing: the bound is one request.", "kind": "function", "line": 1031, "name": "fetch_css", "signature": "static void fetch_css(char *host, char *path)"}, {"doc": "} continue; } f_ws = 0; put_utf(c); got++; } } tls_close(fd); putchar('\\n'); printf(\"freedom: %s (%d bytes)\\n\", host, got); } /* Print the collected CSS dump.", "kind": "function", "line": 1113, "name": "print_css_dump", "signature": "static void print_css_dump(void)"}, {"doc": "putchar('\\n'); printf(\"freedom: %s (%d bytes)\\n\", host, got); } /* Print the collected CSS dump. static void print_css_dump(void) { int i; puts(\"=== freedom css ===\"); for (i = 0; i < f_csslen; i++) put_utf(f_css[i]); if (f_csslen == 0) puts(\"(no css)\"); if (f_linkn > 0) putchar('\\n'); } /* Print the collected DOM outline.", "kind": "function", "line": 1122, "name": "print_dom_dump", "signature": "static void print_dom_dump(void)"}, {"kind": "function", "line": 1129, "name": "main", "signature": "int main(int argc, char **argv)"}, {"kind": "function", "line": 4, "name": "curlfree", "signature": "* spirit of curlfree (http.c + htmlfilter.c): a bounded header phase, * Content-Length or EOF body reading, Transfer-Encoding: chunked * decoding, redirect chasing with a hop bound, and a filter that "}, {"doc": "Ring-3 TLS build (phase 2 of docs/TLS_MIGRATION.md): host libc for sockets/stdio/strings (identical ABI numbers inside the guest); net_dns_resolve and tls_* link from the shared ring-3 TLS objects (progs/tls_u) instead of trapping kernel syscalls 200-203. stdlib.h * is deliberately absent: this file defines its own static atoi. include include include include ", "kind": "function", "line": 41, "name": "net_dns_resolve", "signature": "int net_dns_resolve(const char *host);"}, {"kind": "function", "line": 42, "name": "tls_handshake", "signature": "int tls_handshake(int fd, char *host);"}, {"kind": "function", "line": 43, "name": "tls_send", "signature": "int tls_send(int fd, char *buf, int len);"}, {"kind": "function", "line": 44, "name": "tls_recv", "signature": "int tls_recv(int fd, char *buf, int len);"}, {"doc": "else", "kind": "function", "line": 52, "name": "socket", "signature": "int socket(int domain, int type, int proto);"}, {"kind": "function", "line": 53, "name": "connect", "signature": "int connect(int fd, void *addr, int addrlen);"}, {"kind": "function", "line": 54, "name": "sendto", "signature": "int sendto(int fd, char *buf, int len, int flags, void *to, int tolen);"}, {"kind": "function", "line": 55, "name": "recvfrom", "signature": "int recvfrom(int fd, char *buf, int len, int flags, void *from, int *fromlen);"}, {"kind": "function", "line": 56, "name": "close", "signature": "int close(int fd);"}, {"kind": "function", "line": 63, "name": "printf", "signature": "int printf(char *fmt, ...);"}, {"kind": "function", "line": 64, "name": "puts", "signature": "int puts(char *s);"}, {"kind": "function", "line": 65, "name": "strlen", "signature": "int strlen(char *s);"}, {"kind": "function", "line": 66, "name": "strchr", "signature": "char *strchr(char *s, int c);"}, {"kind": "function", "line": 67, "name": "strcmp", "signature": "int strcmp(char *a, char *b);"}, {"kind": "function", "line": 68, "name": "strncmp", "signature": "int strncmp(char *a, char *b, int n);"}, {"kind": "function", "line": 69, "name": "memcpy", "signature": "int memcpy(char *dst, char *src, int n);"}, {"kind": "function", "line": 70, "name": "memset", "signature": "int memset(char *dst, int c, int n);"}, {"kind": "function", "line": 71, "name": "putchar", "signature": "int putchar(int c);"}, {"kind": "macro", "line": 74, "name": "FREEDOM_HOPS_MAX", "signature": "#define FREEDOM_HOPS_MAX"}, {"kind": "macro", "line": 75, "name": "FREEDOM_HDR_MAX", "signature": "#define FREEDOM_HDR_MAX"}, {"kind": "macro", "line": 76, "name": "FREEDOM_BUF", "signature": "#define FREEDOM_BUF"}, {"kind": "macro", "line": 77, "name": "FREEDOM_CHUNK_MAX", "signature": "#define FREEDOM_CHUNK_MAX"}, {"kind": "macro", "line": 78, "name": "FREEDOM_CSS_MAX", "signature": "#define FREEDOM_CSS_MAX"}, {"kind": "macro", "line": 79, "name": "FREEDOM_CSS_BUF", "signature": "#define FREEDOM_CSS_BUF"}, {"kind": "macro", "line": 80, "name": "FREEDOM_DOM_BUF", "signature": "#define FREEDOM_DOM_BUF"}, {"kind": "macro", "line": 81, "name": "FREEDOM_ATTR_MAX", "signature": "#define FREEDOM_ATTR_MAX"}, {"kind": "macro", "line": 82, "name": "FREEDOM_LINE_MAX", "signature": "#define FREEDOM_LINE_MAX"}]}, {"doc": "freedom_wl - Wayland to MiniOS intermediate layer for FreeDom.", "id": "progs/src/freedom_wl.c", "kind": "module", "label": "freedom_wl.c", "language": "c", "sha256": "c0e8f3a4a7d9e919", "symbol_count": 62, "symbols": [{"doc": "#define WL_FONT_W 8L #define WL_FONT_H 8L #define WL_TAG_MAX 16L #define WL_ENT_MAX 10L /** Shared 8x8 bitmap font, one copy in progs/nuklear/font8x8.c. extern const uint8_t nk_font8x8[96][8]; /** Well-known network endpoints. static const char WL_SEARCH_HOST[] = \"html.duckduckgo.com\"; static const char WL_SEARCH_PREFIX[] = \"/html/?q=\"; static const char WL_USER_AGENT[] = \"freedom_wl/1.0 (MiniOS)\"; /** Centralized configuration for the Wayland to MiniOS mapping.", "kind": "struct", "line": 76, "name": "FreedomWlConfig"}, {"doc": "#define WL_FONT_W 8L #define WL_FONT_H 8L #define WL_TAG_MAX 16L #define WL_ENT_MAX 10L /** Shared 8x8 bitmap font, one copy in progs/nuklear/font8x8.c. extern const uint8_t nk_font8x8[96][8]; /** Well-known network endpoints. static const char WL_SEARCH_HOST[] = \"html.duckduckgo.com\"; static const char WL_SEARCH_PREFIX[] = \"/html/?q=\"; static const char WL_USER_AGENT[] = \"freedom_wl/1.0 (MiniOS)\"; /** Centralized configuration for the Wayland to MiniOS mapping.", "kind": "type_alias", "line": 76, "name": "present_buf", "signature": "typedef struct FreedomWlConfig { long present_buf;"}, {"doc": "Logical Wayland-mini surface id for this client (ADR-0024). The present path still uses GFX_PRESENT BUF_NK; the id names the * client side of the wlcomp mapping and is bounds-checked.", "kind": "function", "line": 114, "name": "freedom_wl_surface_id", "signature": "static long freedom_wl_surface_id(void)"}, {"doc": "Attach this client to the wlcomp mapping: encode an attach message for the first pool and a commit for our surface, decode both back and require the roundtrip. The present path is unchanged; this call * proves the client speaks the wire before it ever draws.", "kind": "function", "line": 129, "name": "freedom_wl_surface_attach", "signature": "static long freedom_wl_surface_attach(FreedomWlConfig *c)"}, {"doc": "if (pool != WL_ID_POOL_BASE || w != (int)c->surface_w || h != (int)c->surface_h) return -1L; n = wl_commit_encode(msg, WL_MAX_MSG, (unsigned int)c->wl_surface); if (n != WL_COMMIT_SZ) return -1L; if (wl_commit_decode(msg, n, &id) != WL_ERR_OK) return -1L; if (id != (unsigned int)c->wl_surface) return -1L; return 0L; } /** Default configuration derived from the ABI header.", "kind": "function", "line": 158, "name": "freedom_wl_default", "signature": "static FreedomWlConfig freedom_wl_default(void)"}, {"doc": "c.hops_max = WL_HOPS_MAX; c.font_w = WL_FONT_W; c.font_h = WL_FONT_H; c.port_http = 80L; c.port_https = 443L; c.ink_bg = (long)COL_TERMINAL; c.ink_fg = (long)COL_TERM_TXT; c.bar_bg = (long)COL_TITLEBAR; c.bar_fg = (long)COL_TITLE_TXT; c.wl_surface = freedom_wl_surface_id(); return c; } /** Clamp a dirty rect into the surface bounds.", "kind": "function", "line": 196, "name": "freedom_wl_clip_rect", "signature": "static long freedom_wl_clip_rect(FreedomWlConfig *c, long *x, long *y, long *w, long *h)"}, {"doc": "} if (*x + *w > c->surface_w) { w = c->surface_w - *x; } if (*y + *h > c->surface_h) { h = c->surface_h - *y; } if (*w <= 0L || *h <= 0L) { return -1L; } return 0L; } /** Expected byte size of the shared-memory frame for given geometry.", "kind": "function", "line": 227, "name": "freedom_wl_frame_bytes", "signature": "static long freedom_wl_frame_bytes(FreedomWlConfig *c, long w, long h)"}, {"doc": "if (w <= 0L || h <= 0L) { return -1L; } if (w > c->surface_w || h > c->surface_h) { return -1L; } bytes_per_pixel = 1L; if (w > 0x7FFFFFFFL / (h * bytes_per_pixel)) { return -1L; } return w * h * bytes_per_pixel; } /** Translate a PS/2 Set 1 scancode base into a keysym.", "kind": "function", "line": 246, "name": "freedom_wl_keysym", "signature": "static long freedom_wl_keysym(FreedomWlConfig *c, long sc)"}, {"doc": "} if (make == 0x39L) { return 32L; } if (make == 0x0EL) { return 8L; } if (make == 0x0FL) { return 9L; } return -1L; } /** Rewrite a buffer in place to well-formed UTF-8.", "kind": "function", "line": 286, "name": "freedom_wl_sanitize_utf8", "signature": "static long freedom_wl_sanitize_utf8(char *s, long cap)"}, {"doc": "i++; } if (o >= cap - 1L) { break; } } if (o >= cap) { return -1L; } s[o] = 0; return o; } /** Validate a window title against the kernel title bound.", "kind": "function", "line": 359, "name": "freedom_wl_title_ok", "signature": "static long freedom_wl_title_ok(FreedomWlConfig *c, char *t, long n)"}, {"doc": "} /** Validate a window title against the kernel title bound. static long freedom_wl_title_ok(FreedomWlConfig *c, char *t, long n) { if (!c || !t) { return -1L; } if (n < 0L || n > c->title_max) { return -1L; } return 0L; } /** Bounded string copy with NUL termination.", "kind": "function", "line": 370, "name": "wl_copy", "signature": "static long wl_copy(char *dst, char *src, long cap)"}, {"doc": "} i = 0L; while (src[i] != 0) { if (i + 1L >= cap) { return -1L; } dst[i] = src[i]; i++; } dst[i] = 0; return 0L; } /** Bounded string length.", "kind": "function", "line": 388, "name": "wl_strlen", "signature": "static long wl_strlen(char *s, long cap)"}, {"doc": "if (!s || cap <= 0L) { return -1L; } i = 0L; while (i < cap && s[i] != 0) { i++; } if (i >= cap) { return -1L; } return i; } /** Bounded append of src at dst[pos].", "kind": "function", "line": 404, "name": "wl_append", "signature": "static long wl_append(char *dst, long pos, char *src, long cap)"}, {"doc": "} if (pos + n >= cap) { return -1L; } i = 0L; while (i < n) { dst[pos + i] = src[i]; i++; } dst[pos + n] = 0; return pos + n; } /** ASCII lowercase fold.", "kind": "function", "line": 427, "name": "wl_ci_lower", "signature": "static long wl_ci_lower(long ch)"}, {"doc": "} dst[pos + n] = 0; return pos + n; } /** ASCII lowercase fold. static long wl_ci_lower(long ch) { if (ch >= 'A' && ch <= 'Z') { return ch + ('a' - 'A'); } return ch; } /** Case-insensitive prefix match.", "kind": "function", "line": 435, "name": "wl_ci_starts", "signature": "static long wl_ci_starts(char *s, char *pre)"}, {"doc": "while (*pre) { if (*s == 0) { return 0L; } if (wl_ci_lower(*s) != wl_ci_lower(*pre)) { return 0L; } s++; pre++; } return 1L; } /** Case-insensitive substring search.", "kind": "function", "line": 453, "name": "wl_ci_contains", "signature": "static long wl_ci_contains(char *s, char *needle)"}, {"doc": "static long wl_ci_contains(char *s, char *needle) { if (!s || !needle) { return 0L; } while (*s) { if (wl_ci_starts(s, needle)) { return 1L; } s++; } return 0L; } /** RFC 3986 scheme probe: ALPHA *(ALPHA/DIGIT/+/-/.) then colon.", "kind": "function", "line": 467, "name": "wl_has_scheme", "signature": "static long wl_has_scheme(char *s)"}, {"doc": "ch = s[i]; if (ch == ':') { return 1L; } if (!((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z') || (ch >= '0' && ch <= '9') || ch == '+' || ch == '-' || ch == '.')) { return 0L; } i++; } return 0L; } /** Omnibox URL probe: no spaces and at least one dot.", "kind": "function", "line": 493, "name": "wl_looks_like_url", "signature": "static long wl_looks_like_url(char *s)"}, {"doc": "dot = 0L; while (*s) { if (*s == ' ' || *s == '\\t') { return 0L; } if (*s == '.') { dot = 1L; } s++; } return dot; } /** Encode a query for the no-JS search endpoint.", "kind": "function", "line": 512, "name": "wl_make_search", "signature": "static long wl_make_search(char *out, char *query, long cap)"}, {"doc": "} else { out[pos] = *query; pos++; out[pos] = 0; } if (pos < 0L) { return -1L; } query++; } return pos; } /** Split an http(s) URL into host, path, port and secure flag.", "kind": "function", "line": 544, "name": "wl_split_url", "signature": "static long wl_split_url(FreedomWlConfig *c, char *url, char *host, char *path, long *port, long ..."}, {"doc": "if (plen < 0L) { return 0L; } if (wl_copy(path, p + hl, c->path_max) < 0L) { return 0L; } } else { path[0] = '/'; path[1] = 0; } return 1L; } /** Recompute host/path/port/secure from a Location value.", "kind": "function", "line": 609, "name": "wl_resolve_redirect", "signature": "static long wl_resolve_redirect(FreedomWlConfig *c, char *loc, long secure, char *host, char *pat..."}, {"doc": "if (last + 1L + l >= c->path_max) { return 0L; } i = 0L; while (i < l) { path[last + 1L + i] = loc[i]; i++; } path[last + 1L + l] = 0; } return 1L; } /** Clamp a scroll offset into the page range.", "kind": "function", "line": 689, "name": "wl_scroll_clamp", "signature": "static long wl_scroll_clamp(FreedomWlConfig *c, long off, long nlines)"}, {"doc": "if (nlines <= c->text_rows) { return 0L; } maxoff = nlines - c->text_rows; if (off < 0L) { return 0L; } if (off > maxoff) { return maxoff; } return off; } /** HTML to wrapped text lines over a flat line array.", "kind": "function", "line": 708, "name": "wl_filter_wrap", "signature": "static long wl_filter_wrap(FreedomWlConfig *c, char *body, long n, char *lines, long maxlines, lo..."}, {"doc": "lines[li * linelen + co] = (char)ch; co++; lines[li * linelen + co] = 0; } if (co > 0L) { return li + 1L; } if (li == 0L) { return 1L; } return li; } /** Compose the status bar line for the bottom row.", "kind": "function", "line": 951, "name": "wl_status_text", "signature": "static long wl_status_text(FreedomWlConfig *c, char *host, long nbytes, long off, long nlines, ch..."}, {"doc": "Shared hybrid palette, one table for every NK-window app (progs/nk_palette.h); this wrapper keeps the historic name and * fail-closed contract the host suite pins.", "kind": "function", "line": 1039, "name": "freedom_wl_build_palette", "signature": "static long freedom_wl_build_palette(unsigned char *pal, long cap)"}, {"doc": "static char w_host[WL_HOST_MAX]; static char w_path[WL_PATH_MAX]; static char w_loc[WL_URL_MAX]; static char w_hdr[WL_HDR_MAX]; static char w_body[WL_BODY_CAP]; static char w_lines[WL_LINES_MAX][WL_LINE_LEN]; static long w_nlines; static long w_nbytes; static long w_secure; static long w_port; static long w_status; static long w_truncated; /** Present syscall wrapper for the NK buffer path.", "kind": "function", "line": 1062, "name": "freedom_wl_sys_present", "signature": "static long freedom_wl_sys_present(long buf, long origin)"}, {"doc": "static long w_nbytes; static long w_secure; static long w_port; static long w_status; static long w_truncated; /** Present syscall wrapper for the NK buffer path. static long freedom_wl_sys_present(long buf, long origin) { long ret; __asm__ volatile(\"syscall\" : \"=a\"(ret) : \"a\"(MINIOS_SYS_GFX_PRESENT), \"D\"(buf), \"S\"(origin) : \"rcx\", \"r11\", \"memory\"); return ret; } /** Set window title through the generic title syscall.", "kind": "function", "line": 1069, "name": "freedom_wl_sys_title", "signature": "static long freedom_wl_sys_title(char *t)"}, {"doc": "static long freedom_wl_sys_present(long buf, long origin) { long ret; __asm__ volatile(\"syscall\" : \"=a\"(ret) : \"a\"(MINIOS_SYS_GFX_PRESENT), \"D\"(buf), \"S\"(origin) : \"rcx\", \"r11\", \"memory\"); return ret; } /** Set window title through the generic title syscall. static long freedom_wl_sys_title(char *t) { long ret; __asm__ volatile(\"syscall\" : \"=a\"(ret) : \"a\"(MINIOS_SYS_GFX_SET_TITLE), \"D\"(t) : \"rcx\", \"r11\", \"memory\"); return ret; } /** Upload the 768-byte graphics palette before presenting indexed pixels.", "kind": "function", "line": 1076, "name": "freedom_wl_sys_palette", "signature": "static long freedom_wl_sys_palette(unsigned char *pal)"}, {"doc": "static long freedom_wl_sys_title(char *t) { long ret; __asm__ volatile(\"syscall\" : \"=a\"(ret) : \"a\"(MINIOS_SYS_GFX_SET_TITLE), \"D\"(t) : \"rcx\", \"r11\", \"memory\"); return ret; } /** Upload the 768-byte graphics palette before presenting indexed pixels. static long freedom_wl_sys_palette(unsigned char *pal) { long ret; __asm__ volatile(\"syscall\" : \"=a\"(ret) : \"a\"(MINIOS_SYS_PALETTE), \"D\"(pal) : \"rcx\", \"r11\", \"memory\"); return ret; } /** Read desktop mouse state into a four word buffer.", "kind": "function", "line": 1083, "name": "freedom_wl_sys_mouse", "signature": "static long freedom_wl_sys_mouse(long *m)"}, {"doc": "static long freedom_wl_sys_palette(unsigned char *pal) { long ret; __asm__ volatile(\"syscall\" : \"=a\"(ret) : \"a\"(MINIOS_SYS_PALETTE), \"D\"(pal) : \"rcx\", \"r11\", \"memory\"); return ret; } /** Read desktop mouse state into a four word buffer. static long freedom_wl_sys_mouse(long *m) { long ret; __asm__ volatile(\"syscall\" : \"=a\"(ret) : \"a\"(MINIOS_SYS_MOUSE), \"D\"(m) : \"rcx\", \"r11\", \"memory\"); return ret; } /** Poll one raw keyboard scancode, negative when idle.", "kind": "function", "line": 1090, "name": "freedom_wl_sys_kbd", "signature": "static long freedom_wl_sys_kbd(void)"}, {"doc": "static long freedom_wl_sys_mouse(long *m) { long ret; __asm__ volatile(\"syscall\" : \"=a\"(ret) : \"a\"(MINIOS_SYS_MOUSE), \"D\"(m) : \"rcx\", \"r11\", \"memory\"); return ret; } /** Poll one raw keyboard scancode, negative when idle. static long freedom_wl_sys_kbd(void) { long ret; __asm__ volatile(\"syscall\" : \"=a\"(ret) : \"a\"(MINIOS_SYS_KBD), \"D\"(0) : \"rcx\", \"r11\", \"memory\"); return ret; } /** Tell the kernel a graphics program owns the display.", "kind": "function", "line": 1097, "name": "freedom_wl_sys_vga_mode", "signature": "static long freedom_wl_sys_vga_mode(long on)"}, {"doc": "static long freedom_wl_sys_kbd(void) { long ret; __asm__ volatile(\"syscall\" : \"=a\"(ret) : \"a\"(MINIOS_SYS_KBD), \"D\"(0) : \"rcx\", \"r11\", \"memory\"); return ret; } /** Tell the kernel a graphics program owns the display. static long freedom_wl_sys_vga_mode(long on) { long ret; __asm__ volatile(\"syscall\" : \"=a\"(ret) : \"a\"(MINIOS_SYS_VGA_MODE), \"D\"(on) : \"rcx\", \"r11\", \"memory\"); return ret; } /** Switch the console into raw scancode mode.", "kind": "function", "line": 1104, "name": "freedom_wl_sys_kbd_raw", "signature": "static long freedom_wl_sys_kbd_raw(long on)"}, {"doc": "static long freedom_wl_sys_vga_mode(long on) { long ret; __asm__ volatile(\"syscall\" : \"=a\"(ret) : \"a\"(MINIOS_SYS_VGA_MODE), \"D\"(on) : \"rcx\", \"r11\", \"memory\"); return ret; } /** Switch the console into raw scancode mode. static long freedom_wl_sys_kbd_raw(long on) { long ret; __asm__ volatile(\"syscall\" : \"=a\"(ret) : \"a\"(MINIOS_SYS_KBD_RAW), \"D\"(on) : \"rcx\", \"r11\", \"memory\"); return ret; } /** Voluntary yield to the scheduler.", "kind": "function", "line": 1111, "name": "freedom_wl_sys_yield", "signature": "static long freedom_wl_sys_yield(void)"}, {"doc": "static long freedom_wl_sys_kbd_raw(long on) { long ret; __asm__ volatile(\"syscall\" : \"=a\"(ret) : \"a\"(MINIOS_SYS_KBD_RAW), \"D\"(on) : \"rcx\", \"r11\", \"memory\"); return ret; } /** Voluntary yield to the scheduler. static long freedom_wl_sys_yield(void) { long ret; __asm__ volatile(\"syscall\" : \"=a\"(ret) : \"a\"(MINIOS_SYS_SCHED_YIELD), \"D\"(0) : \"rcx\", \"r11\", \"memory\"); return ret; } /** Parse response headers into status, length, encoding and routing.", "kind": "function", "line": 1118, "name": "wl_parse_headers", "signature": "static long wl_parse_headers(FreedomWlConfig *c, char *hdr, long *status, long *clen, long *hascl..."}, {"doc": "if (!wl_ci_starts(hdr + k, \"text\")) { istext = 0L; } } } line++; while (hdr[i] == '\\r' || hdr[i] == '\\n') { i++; } } return 0L; } /** Fetch one response body into the page buffer.", "kind": "function", "line": 1210, "name": "wl_fetch_raw", "signature": "static long wl_fetch_raw(FreedomWlConfig *c, char *host, char *path, long port, long secure)"}, {"doc": "if (got < c->body_cap) { w_body[got] = (char)ch; got++; } else { w_truncated = 1L; } } } } tls_close((int)fd); return got; } /** Render the page window at the given scroll offset.", "kind": "function", "line": 1445, "name": "wl_render", "signature": "static long wl_render(FreedomWlConfig *c, long off)"}, {"doc": "long ink; if (bits & (0x80 >> px)) { ink = c->bar_fg; } else { ink = c->bar_bg; } fb[(c->text_rows * c->font_h + row) * c->surface_w + col * c->font_w + px] = (unsigned char)ink; } } } return freedom_wl_sys_present(c->present_buf, 0L); } /** Interactive scroll loop until q or ESC quits.", "kind": "function", "line": 1532, "name": "wl_browse", "signature": "static long wl_browse(FreedomWlConfig *c)"}, {"doc": "off = off + (long)m[3] * c->scroll_step; changed = 1L; } if (changed) { off = wl_scroll_clamp(c, off, w_nlines); if (wl_render(c, off) < 0L) { return 1L; } } freedom_wl_sys_yield(); } } /** Guest selftest entry mirroring the Nuklear frame contract.", "kind": "function", "line": 1613, "name": "freedom_wl_selftest", "signature": "static long freedom_wl_selftest(void)"}, {"doc": "return 1L; } if (freedom_wl_sys_kbd() > 0x7FFFFFFFL) { printf(\"freedom_wl: kbd out of range\\n\"); return 1L; } freedom_wl_sys_title(\"FreeDom\"); printf(\"freedom_wl: frame ok (%ldx%ld)\\n\", c.surface_w, c.surface_h); return 0L; } #endif #ifdef FREEDOM_WL_HOST_TEST /** Host harness entry for the pure mapping logic.", "kind": "function", "line": 1696, "name": "freedom_wl_host_probe", "signature": "int freedom_wl_host_probe(FreedomWlConfig *c)"}, {"doc": "} buf[0] = 'h'; buf[1] = 'i'; buf[2] = 0; if (freedom_wl_sanitize_utf8(buf, 16L) != 2L) { return 1; } if (freedom_wl_surface_attach(c) != 0L) { return 1; } return 0; } #else /** Guest entry point shared by the MiniFS binary.", "kind": "function", "line": 1731, "name": "main", "signature": "int main(int argc, char **argv)"}, {"kind": "function", "line": 42, "name": "net_dns_resolve", "signature": "int net_dns_resolve(const char *host);"}, {"kind": "function", "line": 43, "name": "tls_handshake", "signature": "int tls_handshake(int fd, char *host);"}, {"kind": "function", "line": 44, "name": "tls_send", "signature": "int tls_send(int fd, char *buf, int len);"}, {"kind": "function", "line": 45, "name": "tls_recv", "signature": "int tls_recv(int fd, char *buf, int len);"}, {"kind": "function", "line": 46, "name": "tls_close", "signature": "void tls_close(int fd);"}, {"kind": "macro", "line": 49, "name": "WL_COLS", "signature": "#define WL_COLS"}, {"kind": "macro", "line": 50, "name": "WL_ROWS", "signature": "#define WL_ROWS"}, {"kind": "macro", "line": 51, "name": "WL_TEXT_ROWS", "signature": "#define WL_TEXT_ROWS"}, {"kind": "macro", "line": 52, "name": "WL_LINES_MAX", "signature": "#define WL_LINES_MAX"}, {"kind": "macro", "line": 53, "name": "WL_LINE_LEN", "signature": "#define WL_LINE_LEN"}, {"kind": "macro", "line": 54, "name": "WL_BODY_CAP", "signature": "#define WL_BODY_CAP"}, {"kind": "macro", "line": 55, "name": "WL_HDR_MAX", "signature": "#define WL_HDR_MAX"}, {"kind": "macro", "line": 56, "name": "WL_NET_BUF", "signature": "#define WL_NET_BUF"}, {"kind": "macro", "line": 57, "name": "WL_REQ_MAX", "signature": "#define WL_REQ_MAX"}, {"kind": "macro", "line": 58, "name": "WL_HOST_MAX", "signature": "#define WL_HOST_MAX"}, {"kind": "macro", "line": 59, "name": "WL_PATH_MAX", "signature": "#define WL_PATH_MAX"}, {"kind": "macro", "line": 60, "name": "WL_URL_MAX", "signature": "#define WL_URL_MAX"}, {"kind": "macro", "line": 61, "name": "WL_HOPS_MAX", "signature": "#define WL_HOPS_MAX"}, {"kind": "macro", "line": 62, "name": "WL_FONT_W", "signature": "#define WL_FONT_W"}, {"kind": "macro", "line": 63, "name": "WL_FONT_H", "signature": "#define WL_FONT_H"}, {"kind": "macro", "line": 64, "name": "WL_TAG_MAX", "signature": "#define WL_TAG_MAX"}, {"kind": "macro", "line": 65, "name": "WL_ENT_MAX", "signature": "#define WL_ENT_MAX"}]}, {"doc": "Exercises the kernel libc surface used by loaded .o programs: fprintf to stdout/stderr, snprintf into a buffer, and exit().", "id": "progs/src/ftest.c", "kind": "module", "label": "ftest.c", "language": "c", "sha256": "ecd86d1b08e9a7d4", "symbol_count": 7, "symbols": [{"kind": "function", "line": 10, "name": "main", "signature": "int main(int argc, char **argv)"}, {"doc": "Exercises the kernel libc surface used by loaded .o programs: * fprintf to stdout/stderr, snprintf into a buffer, and exit().", "kind": "function", "line": 3, "name": "fprintf", "signature": "extern int fprintf(void *stream, const char *fmt, ...);"}, {"kind": "function", "line": 4, "name": "snprintf", "signature": "extern int snprintf(char *buf, unsigned long size, const char *fmt, ...);"}, {"kind": "function", "line": 5, "name": "printf", "signature": "extern int printf(const char *fmt, ...);"}, {"kind": "function", "line": 6, "name": "exit", "signature": "extern void exit(int code);"}, {"kind": "variable", "line": 7, "name": "stdout", "signature": "extern void *stdout;"}, {"kind": "variable", "line": 8, "name": "stderr", "signature": "extern void *stderr;"}]}, {"doc": "MiniOS test program — compiled as relocatable .o, loaded by kernel ELF loader", "id": "progs/src/hello.c", "kind": "module", "label": "hello.c", "language": "c", "sha256": "6da45bdffa720e50", "symbol_count": 2, "symbols": [{"kind": "function", "line": 4, "name": "main", "signature": "int main(int argc, char **argv)"}, {"doc": "/* MiniOS test program — compiled as relocatable .o, loaded by kernel ELF loader", "kind": "function", "line": 2, "name": "printf", "signature": "extern int printf(const char *fmt, ...);"}]}, {"id": "progs/src/hello.py", "kind": "module", "label": "hello.py", "language": "py", "sha256": "72135c0623db3173", "symbol_count": 0, "symbols": []}, {"doc": "Minimal HTTP/1.0 GET through the Linux socket syscalls.", "id": "progs/src/http.c", "kind": "module", "label": "http.c", "language": "c", "sha256": "6e5f7e894d0d33ba", "symbol_count": 13, "symbols": [{"doc": "int socket(int domain, int type, int proto); int connect(int fd, void *addr, int addrlen); int sendto(int fd, char *buf, int len, int flags, void *to, int tolen); int recvfrom(int fd, char *buf, int len, int flags, void *from, int *fromlen); int shutdown(int fd, int how); int close(int fd); int net_dns_resolve(const char *host); int puts(char *s); int printf(char *fmt, ...); int strlen(char *s); int putchar(int c); /* Decimal string to int (the ld stub set has no atol).", "kind": "function", "line": 18, "name": "atoi", "signature": "int atoi(char *s)"}, {"kind": "function", "line": 29, "name": "main", "signature": "int main(int argc, char **argv)"}, {"kind": "function", "line": 3, "name": "kernel", "signature": "* Hostnames are resolved by the kernel (net_dns_resolve syscall). */ int socket(int domain, int type, int proto);"}, {"kind": "function", "line": 6, "name": "connect", "signature": "int connect(int fd, void *addr, int addrlen);"}, {"kind": "function", "line": 7, "name": "sendto", "signature": "int sendto(int fd, char *buf, int len, int flags, void *to, int tolen);"}, {"kind": "function", "line": 8, "name": "recvfrom", "signature": "int recvfrom(int fd, char *buf, int len, int flags, void *from, int *fromlen);"}, {"kind": "function", "line": 9, "name": "shutdown", "signature": "int shutdown(int fd, int how);"}, {"kind": "function", "line": 10, "name": "close", "signature": "int close(int fd);"}, {"kind": "function", "line": 11, "name": "net_dns_resolve", "signature": "int net_dns_resolve(const char *host);"}, {"kind": "function", "line": 12, "name": "puts", "signature": "int puts(char *s);"}, {"kind": "function", "line": 13, "name": "printf", "signature": "int printf(char *fmt, ...);"}, {"kind": "function", "line": 14, "name": "strlen", "signature": "int strlen(char *s);"}, {"kind": "function", "line": 15, "name": "putchar", "signature": "int putchar(int c);"}]}, {"doc": "json.c - command path JSON tool: validate, pretty-print and query.", "id": "progs/src/json.c", "kind": "module", "label": "json.c", "language": "c", "sha256": "00207670a4b467f6", "symbol_count": 41, "symbols": [{"kind": "function", "line": 58, "name": "js_read_all", "signature": "static char *js_read_all(const char *name, int *len)"}, {"kind": "function", "line": 76, "name": "js_new", "signature": "static int js_new(void)"}, {"kind": "function", "line": 81, "name": "js_skip_ws", "signature": "static void js_skip_ws(void)"}, {"kind": "function", "line": 89, "name": "js_peek", "signature": "static int js_peek(void)"}, {"kind": "function", "line": 97, "name": "js_parse_string", "signature": "static int js_parse_string(void)"}, {"kind": "function", "line": 133, "name": "js_parse_number", "signature": "static int js_parse_number(void)"}, {"kind": "function", "line": 143, "name": "js_key_match", "signature": "static int js_key_match(int child, const char *key)"}, {"kind": "function", "line": 147, "name": "js_parse_object", "signature": "static int js_parse_object(void)"}, {"kind": "function", "line": 182, "name": "js_parse_array", "signature": "static int js_parse_array(void)"}, {"kind": "function", "line": 211, "name": "js_parse_value", "signature": "static int js_parse_value(void)"}, {"kind": "function", "line": 281, "name": "js_indent", "signature": "static void js_indent(int n)"}, {"kind": "function", "line": 286, "name": "js_print_str", "signature": "static void js_print_str(const char *s)"}, {"kind": "function", "line": 303, "name": "js_print_value", "signature": "static void js_print_value(int node, int depth)"}, {"kind": "function", "line": 347, "name": "js_find_member", "signature": "static int js_find_member(int obj, const char *key)"}, {"kind": "function", "line": 357, "name": "js_array_at", "signature": "static int js_array_at(int arr, int idx)"}, {"kind": "function", "line": 369, "name": "js_query", "signature": "static int js_query(int root, const char *path)"}, {"kind": "function", "line": 401, "name": "main", "signature": "int main(int argc, char **argv)"}, {"kind": "function", "line": 5, "name": "js_str", "signature": "* members keep their key in js_str (the member value node) and their value * in the node itself, and object members / array elements are chained with * js_next. * * Usage: json validate and pre"}, {"kind": "function", "line": 14, "name": "free", "signature": "void free();"}, {"kind": "function", "line": 15, "name": "printf", "signature": "int printf();"}, {"kind": "function", "line": 16, "name": "putchar", "signature": "int putchar();"}, {"kind": "function", "line": 17, "name": "puts", "signature": "int puts();"}, {"kind": "function", "line": 18, "name": "strlen", "signature": "int strlen();"}, {"kind": "function", "line": 19, "name": "strcmp", "signature": "int strcmp();"}, {"kind": "function", "line": 20, "name": "fopen", "signature": "void *fopen();"}, {"kind": "function", "line": 21, "name": "fclose", "signature": "int fclose();"}, {"kind": "function", "line": 22, "name": "fread", "signature": "int fread();"}, {"kind": "function", "line": 23, "name": "fseek", "signature": "int fseek();"}, {"kind": "function", "line": 24, "name": "ftell", "signature": "int ftell();"}, {"kind": "function", "line": 25, "name": "rewind", "signature": "void rewind();"}, {"kind": "macro", "line": 27, "name": "JS_MAX_NODES", "signature": "#define JS_MAX_NODES"}, {"kind": "macro", "line": 28, "name": "JS_POOL", "signature": "#define JS_POOL"}, {"kind": "macro", "line": 30, "name": "JS_NULL", "signature": "#define JS_NULL"}, {"kind": "macro", "line": 31, "name": "JS_BOOL", "signature": "#define JS_BOOL"}, {"kind": "macro", "line": 32, "name": "JS_NUM", "signature": "#define JS_NUM"}, {"kind": "macro", "line": 33, "name": "JS_STR", "signature": "#define JS_STR"}, {"kind": "macro", "line": 34, "name": "JS_OBJ", "signature": "#define JS_OBJ"}, {"kind": "macro", "line": 35, "name": "JS_ARR", "signature": "#define JS_ARR"}, {"kind": "macro", "line": 37, "name": "JS_SEEK_END", "signature": "#define JS_SEEK_END"}, {"kind": "macro", "line": 38, "name": "JS_EXIT_OK", "signature": "#define JS_EXIT_OK"}, {"kind": "macro", "line": 39, "name": "JS_EXIT_FAIL", "signature": "#define JS_EXIT_FAIL"}]}, {"doc": "Kernel-pointer rejection probe. Passes a supervisor-only address", "id": "progs/src/kmem.c", "kind": "module", "label": "kmem.c", "language": "c", "sha256": "3965ee5e6a1dde8f", "symbol_count": 3, "symbols": [{"doc": "Kernel-pointer rejection probe. Passes a supervisor-only address (0x0C100000, inside the kernel heap at 0x0C000000) to write(2). The hardened syscall boundary must reject it with -EFAULT; the program exits 0 when the write was refused and 1 when the kernel wrongly dereferenced a kernel pointer on its behalf. Built as a static Linux * ELF like lxhello.elf.", "kind": "function", "line": 7, "name": "syscall3", "signature": "static long syscall3(long n, long a1, long a2, long a3)"}, {"kind": "function", "line": 14, "name": "exit_now", "signature": "static void exit_now(long code)"}, {"kind": "function", "line": 18, "name": "_start", "signature": "void _start(void)"}]}, {"id": "progs/src/ldhello.c", "kind": "module", "label": "ldhello.c", "language": "c", "sha256": "e91d56eec84e6fa5", "symbol_count": 1, "symbols": [{"kind": "function", "line": 1, "name": "main", "signature": "int main(void)"}]}, {"id": "progs/src/lxhello.c", "kind": "module", "label": "lxhello.c", "language": "c", "sha256": "690645d50101aafa", "symbol_count": 7, "symbols": [{"kind": "function", "line": 11, "name": "lx_syscall3", "signature": "static long lx_syscall3(long n, long a1, long a2, long a3)"}, {"kind": "function", "line": 23, "name": "lx_strlen", "signature": "static unsigned long lx_strlen(const char *s)"}, {"kind": "function", "line": 29, "name": "lx_write", "signature": "static void lx_write(const char *s)"}, {"kind": "function", "line": 33, "name": "lx_write_int", "signature": "static void lx_write_int(long v)"}, {"doc": "static void lx_write_int(long v) { char buf[24]; int i = (int)sizeof(buf); int neg = 0; buf[--i] = 0; if (v < 0) { neg = 1; v = -v; } if (v == 0) buf[--i] = '0'; while (v > 0 && i > 0) { buf[--i] = (char)('0' + v % 10); v /= 10; } if (neg && i > 0) buf[--i] = '-'; lx_write(&buf[i]); } /* Entry called by _start with the real argc/argv pulled off the stack.", "kind": "function", "line": 46, "name": "lmain", "signature": "int lmain(long argc, char **argv)"}, {"kind": "macro", "line": 20, "name": "SYS_write", "signature": "#define SYS_write"}, {"kind": "macro", "line": 21, "name": "SYS_exit", "signature": "#define SYS_exit"}]}, {"doc": "lz4.c - command path LZ4 (de)compression tools: lz4 and unlz4.", "id": "progs/src/lz4.c", "kind": "module", "label": "lz4.c", "language": "c", "sha256": "42f602d559c33103", "symbol_count": 26, "symbols": [{"kind": "function", "line": 39, "name": "lz4_has", "signature": "static int lz4_has(const char *s, const char *needle)"}, {"kind": "function", "line": 53, "name": "lz4_read_all", "signature": "static char *lz4_read_all(const char *name, int *len)"}, {"kind": "function", "line": 70, "name": "lz4_write_all", "signature": "static int lz4_write_all(const char *name, char *data, int len)"}, {"kind": "function", "line": 80, "name": "lz4_compress_file", "signature": "static int lz4_compress_file(const char *src, const char *dst)"}, {"kind": "function", "line": 117, "name": "lz4_decompress_file", "signature": "static int lz4_decompress_file(const char *src, const char *dst)"}, {"kind": "function", "line": 164, "name": "main", "signature": "int main(int argc, char **argv)"}, {"kind": "function", "line": 6, "name": "kernel", "signature": "* * The codec lives in the kernel (lz4_kernel.c, the same one MiniFS uses), so * these tools are thin front-ends over the two MiniOS syscalls 216 * (lz4_compress) and 217 (lz4_decompress), which mirro"}, {"kind": "function", "line": 15, "name": "free", "signature": "void free();"}, {"kind": "function", "line": 16, "name": "printf", "signature": "int printf();"}, {"kind": "function", "line": 17, "name": "strcmp", "signature": "int strcmp();"}, {"kind": "function", "line": 18, "name": "strlen", "signature": "int strlen();"}, {"kind": "function", "line": 19, "name": "fopen", "signature": "void *fopen();"}, {"kind": "function", "line": 20, "name": "fclose", "signature": "int fclose();"}, {"kind": "function", "line": 21, "name": "fread", "signature": "int fread();"}, {"kind": "function", "line": 22, "name": "fwrite", "signature": "int fwrite();"}, {"kind": "function", "line": 23, "name": "fseek", "signature": "int fseek();"}, {"kind": "function", "line": 24, "name": "ftell", "signature": "int ftell();"}, {"kind": "function", "line": 25, "name": "rewind", "signature": "void rewind();"}, {"kind": "function", "line": 27, "name": "lz4_compress", "signature": "int lz4_compress(char *src, int srclen, char *dst, int dstcap);"}, {"kind": "function", "line": 28, "name": "lz4_decompress", "signature": "int lz4_decompress(char *src, int srclen, char *dst, int dstcap);"}, {"kind": "macro", "line": 30, "name": "LZ4_HDR_SIZE", "signature": "#define LZ4_HDR_SIZE"}, {"kind": "macro", "line": 31, "name": "LZ4_BOUND_DEN", "signature": "#define LZ4_BOUND_DEN"}, {"kind": "macro", "line": 32, "name": "LZ4_BOUND_SLACK", "signature": "#define LZ4_BOUND_SLACK"}, {"kind": "macro", "line": 33, "name": "LZ4_MAX_BLOCK", "signature": "#define LZ4_MAX_BLOCK"}, {"kind": "macro", "line": 35, "name": "LZ4_SEEK_END", "signature": "#define LZ4_SEEK_END"}, {"kind": "macro", "line": 37, "name": "LZ4_EXIT_FAIL", "signature": "#define LZ4_EXIT_FAIL"}]}, {"doc": "lzss.c - command path LZSS (de)compression tools: lzss and unlzss.", "id": "progs/src/lzss.c", "kind": "module", "label": "lzss.c", "language": "c", "sha256": "58aef6feee125a0f", "symbol_count": 48, "symbols": [{"kind": "function", "line": 64, "name": "lz_in_getc", "signature": "static int lz_in_getc(void)"}, {"kind": "function", "line": 69, "name": "lz_out_put", "signature": "static void lz_out_put(int c)"}, {"kind": "function", "line": 74, "name": "lz_putbit1", "signature": "static void lz_putbit1(void)"}, {"kind": "function", "line": 84, "name": "lz_putbit0", "signature": "static void lz_putbit0(void)"}, {"kind": "function", "line": 93, "name": "lz_flush_bits", "signature": "static void lz_flush_bits(void)"}, {"kind": "function", "line": 97, "name": "lz_out_literal", "signature": "static void lz_out_literal(int c)"}, {"kind": "function", "line": 105, "name": "lz_out_pair", "signature": "static void lz_out_pair(int x, int y)"}, {"kind": "function", "line": 118, "name": "lz_encode", "signature": "static int lz_encode(void)"}, {"kind": "function", "line": 173, "name": "lz_getbit", "signature": "static int lz_getbit(int n)"}, {"kind": "function", "line": 189, "name": "lz_decode", "signature": "static int lz_decode(void)"}, {"kind": "function", "line": 218, "name": "lz_hdr_put", "signature": "static void lz_hdr_put(char *h, int size)"}, {"kind": "function", "line": 229, "name": "lz_hdr_get", "signature": "static int lz_hdr_get(char *h)"}, {"kind": "function", "line": 237, "name": "lz_has", "signature": "static int lz_has(const char *s, const char *needle)"}, {"kind": "function", "line": 251, "name": "lz_read_all", "signature": "static char *lz_read_all(const char *name, int *len)"}, {"kind": "function", "line": 268, "name": "lz_write_all", "signature": "static int lz_write_all(const char *name, char *data, int len)"}, {"kind": "function", "line": 278, "name": "lz_compress", "signature": "static int lz_compress(const char *src, const char *dst)"}, {"kind": "function", "line": 325, "name": "lz_decompress", "signature": "static int lz_decompress(const char *src, const char *dst)"}, {"kind": "function", "line": 397, "name": "main", "signature": "int main(int argc, char **argv)"}, {"kind": "function", "line": 13, "name": "malloc", "signature": "void *malloc();"}, {"kind": "function", "line": 14, "name": "free", "signature": "void free();"}, {"kind": "function", "line": 15, "name": "printf", "signature": "int printf();"}, {"kind": "function", "line": 16, "name": "strcmp", "signature": "int strcmp();"}, {"kind": "function", "line": 17, "name": "strlen", "signature": "int strlen();"}, {"kind": "function", "line": 18, "name": "fopen", "signature": "void *fopen();"}, {"kind": "function", "line": 19, "name": "fclose", "signature": "int fclose();"}, {"kind": "function", "line": 20, "name": "fread", "signature": "int fread();"}, {"kind": "function", "line": 21, "name": "fwrite", "signature": "int fwrite();"}, {"kind": "function", "line": 22, "name": "fseek", "signature": "int fseek();"}, {"kind": "function", "line": 23, "name": "ftell", "signature": "int ftell();"}, {"kind": "function", "line": 24, "name": "rewind", "signature": "void rewind();"}, {"kind": "macro", "line": 26, "name": "LZSS_EI", "signature": "#define LZSS_EI"}, {"kind": "macro", "line": 27, "name": "LZSS_EJ", "signature": "#define LZSS_EJ"}, {"kind": "macro", "line": 28, "name": "LZSS_P", "signature": "#define LZSS_P"}, {"kind": "macro", "line": 29, "name": "LZSS_N", "signature": "#define LZSS_N"}, {"kind": "macro", "line": 30, "name": "LZSS_F", "signature": "#define LZSS_F"}, {"kind": "macro", "line": 31, "name": "LZSS_WIN", "signature": "#define LZSS_WIN"}, {"kind": "macro", "line": 33, "name": "LZSS_MAGIC0", "signature": "#define LZSS_MAGIC0"}, {"kind": "macro", "line": 34, "name": "LZSS_MAGIC1", "signature": "#define LZSS_MAGIC1"}, {"kind": "macro", "line": 35, "name": "LZSS_MAGIC2", "signature": "#define LZSS_MAGIC2"}, {"kind": "macro", "line": 36, "name": "LZSS_MAGIC3", "signature": "#define LZSS_MAGIC3"}, {"kind": "macro", "line": 37, "name": "LZSS_HDR_SIZE", "signature": "#define LZSS_HDR_SIZE"}, {"kind": "macro", "line": 39, "name": "LZSS_ENC_SLACK", "signature": "#define LZSS_ENC_SLACK"}, {"kind": "macro", "line": 40, "name": "LZSS_EXPAND_NUM", "signature": "#define LZSS_EXPAND_NUM"}, {"kind": "macro", "line": 41, "name": "LZSS_EXPAND_DEN", "signature": "#define LZSS_EXPAND_DEN"}, {"kind": "macro", "line": 43, "name": "LZSS_SEEK_END", "signature": "#define LZSS_SEEK_END"}, {"kind": "macro", "line": 45, "name": "LZSS_ERR_NONE", "signature": "#define LZSS_ERR_NONE"}, {"kind": "macro", "line": 46, "name": "LZSS_ERR_OVERFLOW", "signature": "#define LZSS_ERR_OVERFLOW"}, {"kind": "macro", "line": 48, "name": "LZSS_EXIT_FAIL", "signature": "#define LZSS_EXIT_FAIL"}]}, {"doc": "mmap/munmap reclaim stress test. Repeatedly maps and unmaps a large", "id": "progs/src/mmreuse.c", "kind": "module", "label": "mmreuse.c", "language": "c", "sha256": "7c52f82deab187c2", "symbol_count": 5, "symbols": [{"doc": "mmap/munmap reclaim stress test. Repeatedly maps and unmaps a large region. On a kernel whose munmap never returns address space, the downward mmap cursor drains until a map fails with ENOMEM (-12); with reclaim the freed region is reused and no map ever fails. Exit code 0 = pass, 1 = a map failed (the leak it guards against). Built as a static * Linux ELF like cpl.elf and run through the raw syscall ABI.", "kind": "function", "line": 7, "name": "mmap_anon", "signature": "static long mmap_anon(long len)"}, {"kind": "function", "line": 21, "name": "munmap", "signature": "static long munmap(long addr, long len)"}, {"kind": "function", "line": 31, "name": "exit_now", "signature": "static void exit_now(long code)"}, {"kind": "function", "line": 35, "name": "_start", "signature": "void _start(void)"}, {"kind": "function", "line": 3, "name": "ENOMEM", "signature": "* downward mmap cursor drains until a map fails with ENOMEM (-12);"}]}, {"doc": "mthreads.h -- Minimal pthread-like threads for MiniOS ELFs (roadmap", "id": "progs/src/mthreads.h", "kind": "module", "label": "mthreads.h", "language": "h", "sha256": "0d9b08d315778ccd", "symbol_count": 20, "symbols": [{"kind": "struct", "line": 38, "name": "mmutex_t"}, {"kind": "struct", "line": 42, "name": "mthread_slot_t"}, {"doc": "define MMUTEX_FREE 0 define MMUTEX_HELD 1 define MMUTEX_CONTENDED 2 define MMUTEX_SPINS 100", "kind": "type_alias", "line": 35, "name": "mthread_t", "signature": "typedef int mthread_t;"}, {"kind": "function", "line": 50, "name": "m_syscall6", "signature": "static inline long m_syscall6(long n, long a, long b, long c)"}, {"kind": "function", "line": 59, "name": "myield", "signature": "static inline void myield(void)"}, {"kind": "function", "line": 63, "name": "mfutex_wait", "signature": "static inline long mfutex_wait(volatile int *addr, int val)"}, {"kind": "function", "line": 67, "name": "mfutex_wake", "signature": "static inline long mfutex_wake(volatile int *addr, int n)"}, {"kind": "function", "line": 71, "name": "mmutex_init", "signature": "static inline void mmutex_init(mmutex_t *m)"}, {"kind": "function", "line": 75, "name": "mmutex_lock", "signature": "static inline void mmutex_lock(mmutex_t *m)"}, {"kind": "function", "line": 90, "name": "mmutex_unlock", "signature": "static inline void mmutex_unlock(mmutex_t *m)"}, {"doc": "Thread entry trampoline: runs fn(arg), stores the return, exits 0. * The exit code is always 0; join reads retval from the shared slot.", "kind": "function", "line": 98, "name": "mthread_entry", "signature": "static void mthread_entry(void *p)"}, {"kind": "function", "line": 117, "name": "mthread_create", "signature": "static int mthread_create(mthread_t *t, void *(*fn)(void *), void *arg)"}, {"kind": "function", "line": 140, "name": "mthread_join", "signature": "static int mthread_join(mthread_t t, void **retval)"}, {"kind": "macro", "line": 24, "name": "MTHREADS_H", "signature": "#define MTHREADS_H"}, {"kind": "macro", "line": 28, "name": "MTHREAD_STACK_SZ", "signature": "#define MTHREAD_STACK_SZ"}, {"kind": "macro", "line": 29, "name": "MTHREAD_MAX", "signature": "#define MTHREAD_MAX"}, {"kind": "macro", "line": 31, "name": "MMUTEX_FREE", "signature": "#define MMUTEX_FREE"}, {"kind": "macro", "line": 32, "name": "MMUTEX_HELD", "signature": "#define MMUTEX_HELD"}, {"kind": "macro", "line": 33, "name": "MMUTEX_CONTENDED", "signature": "#define MMUTEX_CONTENDED"}, {"kind": "macro", "line": 34, "name": "MMUTEX_SPINS", "signature": "#define MMUTEX_SPINS"}]}, {"doc": "NX probe. Under the isolation contract every user page starts", "id": "progs/src/nx.c", "kind": "module", "label": "nx.c", "language": "c", "sha256": "4efcbe9a0124639d", "symbol_count": 3, "symbols": [{"kind": "function", "line": 11, "name": "write_str", "signature": "static long write_str(const char *s, long n)"}, {"kind": "function", "line": 19, "name": "exit_now", "signature": "static void exit_now(long code)"}, {"kind": "function", "line": 23, "name": "_start", "signature": "void _start(void)"}]}, {"id": "progs/src/opl3.c", "kind": "module", "label": "opl3.c", "language": "c", "sha256": "40d232923b81ad7e", "symbol_count": 18, "symbols": [{"kind": "struct", "line": 102, "name": "note_t"}, {"kind": "function", "line": 36, "name": "sys_time", "signature": "static long sys_time(void)"}, {"kind": "function", "line": 39, "name": "sys_open", "signature": "static long sys_open(long on)"}, {"kind": "function", "line": 42, "name": "sys_submit", "signature": "static long sys_submit(const void *buf, long len)"}, {"kind": "function", "line": 46, "name": "busy_ms", "signature": "static void busy_ms(long ms)"}, {"doc": "} static long sys_open(long on) { long r; __asm__ volatile(\"syscall\":\"=a\"(r):\"a\"(SYS_SB16_OPEN),\"D\"(on):\"rcx\",\"r11\",\"memory\"); return r; } static long sys_submit(const void *buf, long len) { long r; __asm__ volatile(\"syscall\":\"=a\"(r):\"a\"(SYS_SB16_SUBMIT),\"D\"((long)buf),\"S\"(len):\"rcx\",\"r11\",\"memory\"); return r; } static void busy_ms(long ms) { long t0 = sys_time(); while (sys_time() - t0 < ms) __asm__ volatile(\"pause\"); } /* 2-op FM instrument, channel 0 (modulator op0, carrier op1).", "kind": "function", "line": 52, "name": "opl3_set_instrument", "signature": "static void opl3_set_instrument(opl3_chip *chip)"}, {"kind": "function", "line": 69, "name": "opl3_note", "signature": "static void opl3_note(opl3_chip *chip, unsigned block, unsigned fnum, int on)"}, {"doc": "Render `ms` of the current note and stream it to the SB16. Each submit is one DMA buffer of MONO_BYTES; submissions are paced to real-time audio * (BUF_MS each) so the kernel ring stays full without overflowing.", "kind": "function", "line": 77, "name": "render", "signature": "static void render(opl3_chip *chip, long ms, long *fail)"}, {"kind": "function", "line": 107, "name": "main", "signature": "int main(void)"}, {"kind": "macro", "line": 21, "name": "SYS_TIME", "signature": "#define SYS_TIME"}, {"kind": "macro", "line": 22, "name": "SYS_SB16_OPEN", "signature": "#define SYS_SB16_OPEN"}, {"kind": "macro", "line": 23, "name": "SYS_SB16_SUBMIT", "signature": "#define SYS_SB16_SUBMIT"}, {"kind": "macro", "line": 24, "name": "SYS_WRITE", "signature": "#define SYS_WRITE"}, {"kind": "macro", "line": 28, "name": "SAMPLE_RATE", "signature": "#define SAMPLE_RATE"}, {"kind": "macro", "line": 29, "name": "STEREO_FRAMES", "signature": "#define STEREO_FRAMES"}, {"kind": "macro", "line": 30, "name": "MONO_BYTES", "signature": "#define MONO_BYTES"}, {"kind": "macro", "line": 32, "name": "BUF_MS", "signature": "#define BUF_MS"}, {"kind": "macro", "line": 34, "name": "F_NUM_FACTOR", "signature": "#define F_NUM_FACTOR"}]}, {"id": "progs/src/pollready.c", "kind": "module", "label": "pollready.c", "language": "c", "sha256": "3082e54fbb94f31b", "symbol_count": 6, "symbols": [{"kind": "function", "line": 26, "name": "p_write", "signature": "static long p_write(long fd, const char *s, long n)"}, {"kind": "function", "line": 30, "name": "p_strlen", "signature": "static unsigned long p_strlen(const char *s)"}, {"kind": "function", "line": 36, "name": "p_puts", "signature": "static void p_puts(long fd, const char *s)"}, {"kind": "function", "line": 40, "name": "p_atoi", "signature": "static int p_atoi(const char *s)"}, {"kind": "function", "line": 46, "name": "p_parse_ip", "signature": "static int p_parse_ip(const char *s, unsigned char out[4])"}, {"doc": "int v = 0; int digits = 0; while (*s >= '0' && *s <= '9') { v = v * 10 + (*s - '0'); s++; digits++; } if (!digits || v > 255) return -1; out[i] = (unsigned char)v; if (i < 3) { if (*s != '.') return -1; s++; } } return *s ? -1 : 0; } /* Entry called by _start with argc/argv off the initial stack.", "kind": "function", "line": 63, "name": "lmain", "signature": "int lmain(long argc, char **argv)"}]}, {"doc": "sbtone.c — headless SB16 diagnostic (ring-3, no GUI).", "id": "progs/src/sbtone.c", "kind": "module", "label": "sbtone.c", "language": "c", "sha256": "1176355ec8699a34", "symbol_count": 8, "symbols": [{"kind": "function", "line": 14, "name": "buffers", "signature": "*\n * Exit code is the number of submitted buffers (0 on failure to open).\n */\n\n#include ..."}, {"kind": "function", "line": 36, "name": "main", "signature": "int main(void)"}, {"kind": "macro", "line": 21, "name": "SYS_SB16_OPEN", "signature": "#define SYS_SB16_OPEN"}, {"kind": "macro", "line": 22, "name": "SYS_SB16_SUBMIT", "signature": "#define SYS_SB16_SUBMIT"}, {"kind": "macro", "line": 23, "name": "SYS_TIME", "signature": "#define SYS_TIME"}, {"kind": "macro", "line": 25, "name": "RATE", "signature": "#define RATE"}, {"kind": "macro", "line": 26, "name": "BUF", "signature": "#define BUF"}, {"kind": "macro", "line": 27, "name": "WINDOW_MS", "signature": "#define WINDOW_MS"}]}, {"doc": "shell.py -- pybash: a Python shell layer on top of MiniOS's C shell. The C shell is untouched. This is an additional capability layer that gives MiniOS pipelines, variables and control flow in Python, so new behaviour no longer requires recompiling kernel.c. The core primitive is minios.run(), which invokes any ramdisk program through SYS_SPAWN while preserving the interpreter, and minios.run(..., redirect=file) to capture a program's console output for composition. Usage (inside MiniOS): micropython src/shell.py", "id": "progs/src/shell.py", "kind": "module", "label": "shell.py", "language": "py", "sha256": "6efe8d3c7a270710", "symbol_count": 3, "symbols": [{"kind": "function", "line": 20, "name": "run_capture", "signature": "def run_capture(cmd, args)"}, {"kind": "function", "line": 30, "name": "expand", "signature": "def expand(line, env)"}, {"kind": "function", "line": 36, "name": "main", "signature": "def main()"}]}, {"id": "progs/src/spin.c", "kind": "module", "label": "spin.c", "language": "c", "sha256": "4c8f1ba61166963f", "symbol_count": 19, "symbols": [{"kind": "function", "line": 11, "name": "lx_syscall3", "signature": "static long lx_syscall3(long n, long a1, long a2, long a3)"}, {"kind": "function", "line": 20, "name": "lx_strlen", "signature": "static unsigned long lx_strlen(const char *s)"}, {"kind": "function", "line": 26, "name": "lx_write", "signature": "static void lx_write(const char *s)"}, {"kind": "function", "line": 30, "name": "lx_write_int", "signature": "static void lx_write_int(long v)"}, {"kind": "function", "line": 42, "name": "lx_atoi", "signature": "static long lx_atoi(const char *s)"}, {"kind": "function", "line": 66, "name": "spin_u32", "signature": "static void spin_u32(unsigned char *d, unsigned long v)"}, {"kind": "function", "line": 73, "name": "spin_hdr", "signature": "static void spin_hdr(unsigned char *d, unsigned long id, unsigned long op,\n unsigned long ..."}, {"kind": "function", "line": 82, "name": "spin_box_ok", "signature": "static int spin_box_ok(const char *box)"}, {"kind": "function", "line": 95, "name": "spin_hex8", "signature": "static void spin_hex8(unsigned int v, char *dst)"}, {"kind": "function", "line": 104, "name": "spin_write_all", "signature": "static long spin_write_all(long fd, const unsigned char *buf, long len)"}, {"kind": "function", "line": 114, "name": "spin_emit", "signature": "static int spin_emit(const char *box, unsigned int seq,\n const unsigned char *msg, long mlen)"}, {"kind": "function", "line": 145, "name": "spin_raw_file", "signature": "static int spin_raw_file(const char *box)"}, {"kind": "function", "line": 169, "name": "spin_pixels", "signature": "static void spin_pixels(long off)"}, {"kind": "function", "line": 181, "name": "spin_wl", "signature": "static int spin_wl(const char *box, const char *narg)"}, {"kind": "function", "line": 225, "name": "lmain", "signature": "int lmain(long argc, char **argv)"}, {"kind": "macro", "line": 56, "name": "SPIN_WLW", "signature": "#define SPIN_WLW"}, {"kind": "macro", "line": 57, "name": "SPIN_WLH", "signature": "#define SPIN_WLH"}, {"kind": "macro", "line": 58, "name": "SPIN_WLA", "signature": "#define SPIN_WLA"}, {"kind": "macro", "line": 59, "name": "SPIN_WLB", "signature": "#define SPIN_WLB"}]}, {"id": "progs/src/test.c", "kind": "module", "label": "test.c", "language": "c", "sha256": "6884c669dd0f450d", "symbol_count": 2, "symbols": [{"kind": "function", "line": 1, "name": "add", "signature": "int add(int a, int b)"}, {"kind": "function", "line": 2, "name": "main", "signature": "int main(void)"}]}, {"id": "progs/src/test.lua", "kind": "module", "label": "test.lua", "language": "lua", "sha256": "8cbb472b6e359f60", "symbol_count": 20, "symbols": [{"kind": "function", "line": 12, "name": "check"}, {"kind": "function", "line": 22, "name": "write_file"}, {"kind": "function", "line": 30, "name": "read_file"}, {"kind": "function", "line": 40, "name": "test_module_bindings"}, {"kind": "function", "line": 53, "name": "test_filesystem"}, {"kind": "function", "line": 70, "name": "test_xxhash"}, {"kind": "function", "line": 75, "name": "test_stb"}, {"kind": "function", "line": 80, "name": "test_dlmalloc"}, {"kind": "function", "line": 85, "name": "test_hello"}, {"kind": "function", "line": 90, "name": "test_ftest"}, {"kind": "function", "line": 95, "name": "test_minigcc"}, {"kind": "function", "line": 100, "name": "test_ld"}, {"kind": "function", "line": 112, "name": "test_toolchain_roundtrip"}, {"kind": "function", "line": 122, "name": "test_spawn_preserves_interpreter"}, {"kind": "function", "line": 135, "name": "test_bin_cp"}, {"kind": "function", "line": 141, "name": "test_bin_lz4"}, {"kind": "function", "line": 158, "name": "test_bin_lzss"}, {"kind": "function", "line": 175, "name": "test_bin_aes"}, {"kind": "function", "line": 194, "name": "test_bin_json"}, {"kind": "function", "line": 205, "name": "test_bin_freedom"}]}, {"doc": "test.py -- in-OS test suite for MiniOS, driven by MicroPython. Tests every available binary sorted by size (smallest first). Graphical programs excluded: DOOM, Quake2, Nuklear, Piano, TopoGPT. Usage (inside MiniOS): micropython src/test.py", "id": "progs/src/test.py", "kind": "module", "label": "test.py", "language": "py", "sha256": "c742ae87c3744001", "symbol_count": 20, "symbols": [{"kind": "function", "line": 15, "name": "check", "signature": "def check(name, cond, detail)"}, {"kind": "function", "line": 25, "name": "safe_run", "signature": "def safe_run()"}, {"kind": "function", "line": 38, "name": "test_module_bindings", "signature": "def test_module_bindings()"}, {"kind": "function", "line": 56, "name": "test_filesystem", "signature": "def test_filesystem()"}, {"kind": "function", "line": 72, "name": "test_xxhash", "signature": "def test_xxhash()"}, {"kind": "function", "line": 77, "name": "test_stb", "signature": "def test_stb()"}, {"kind": "function", "line": 82, "name": "test_dlmalloc", "signature": "def test_dlmalloc()"}, {"kind": "function", "line": 87, "name": "test_hello", "signature": "def test_hello()"}, {"kind": "function", "line": 92, "name": "test_ftest", "signature": "def test_ftest()"}, {"kind": "function", "line": 97, "name": "test_minigcc", "signature": "def test_minigcc()"}, {"kind": "function", "line": 102, "name": "test_ld", "signature": "def test_ld()"}, {"kind": "function", "line": 119, "name": "test_toolchain_roundtrip", "signature": "def test_toolchain_roundtrip()"}, {"kind": "function", "line": 134, "name": "test_spawn_preserves_interpreter", "signature": "def test_spawn_preserves_interpreter()"}, {"kind": "function", "line": 148, "name": "test_bin_cp", "signature": "def test_bin_cp()"}, {"kind": "function", "line": 153, "name": "test_bin_lz4", "signature": "def test_bin_lz4()"}, {"kind": "function", "line": 181, "name": "test_bin_lzss", "signature": "def test_bin_lzss()"}, {"kind": "function", "line": 209, "name": "test_bin_aes", "signature": "def test_bin_aes()"}, {"kind": "function", "line": 239, "name": "test_bin_json", "signature": "def test_bin_json()"}, {"kind": "function", "line": 253, "name": "test_bin_freedom", "signature": "def test_bin_freedom()"}, {"kind": "function", "line": 261, "name": "main", "signature": "def main()"}]}, {"doc": "test_all.sh -- comprehensive non-interactive test suite for MiniOS. Run with: sh src/test_all.sh Every test prints a PASS: or FAIL: marker. The host-side runner greps the QEMU serial log for these markers. No interactive commands, no external server dependencies. === HELP & CLEAR ===", "id": "progs/src/test_all.sh", "kind": "module", "label": "test_all.sh", "language": "sh", "sha256": "2949ea79a98379d5", "symbol_count": 0, "symbols": []}, {"doc": "thdemo.c -- Producer-consumer over mthreads (roadmap Phase 1, M1).", "id": "progs/src/thdemo.c", "kind": "module", "label": "thdemo.c", "language": "c", "sha256": "5f2cea41fb81c62c", "symbol_count": 10, "symbols": [{"kind": "function", "line": 36, "name": "producer", "signature": "static void *producer(void *p)"}, {"kind": "function", "line": 57, "name": "consumer", "signature": "static void *consumer(void *p)"}, {"kind": "function", "line": 82, "name": "main", "signature": "int main(void)"}, {"kind": "function", "line": 3, "name": "threads", "signature": "* * Ten threads (1 main + 5 producers + 4 consumers) share one address * space through thread_spawn (MiniOS syscall 225): a bounded buffer, * a spin mutex and Mesa-style spin-waits. Workers never touc"}, {"kind": "macro", "line": 21, "name": "NPROD", "signature": "#define NPROD"}, {"kind": "macro", "line": 22, "name": "NCONS", "signature": "#define NCONS"}, {"kind": "macro", "line": 23, "name": "PER_PROD", "signature": "#define PER_PROD"}, {"kind": "macro", "line": 24, "name": "BUFSZ", "signature": "#define BUFSZ"}, {"kind": "macro", "line": 26, "name": "EXPECTED_N", "signature": "#define EXPECTED_N"}, {"kind": "macro", "line": 27, "name": "EXPECTED_SUM", "signature": "#define EXPECTED_SUM"}]}, {"id": "progs/src/w1.c", "kind": "module", "label": "w1.c", "language": "c", "sha256": "af9c29beb3c5456a", "symbol_count": 2, "symbols": [{"kind": "function", "line": 3, "name": "main", "signature": "int main(void)"}, {"kind": "function", "line": 1, "name": "write", "signature": "int write(int fd, char *buf, int n);"}]}, {"doc": "tlsget - minimal HTTPS GET over the ring-3 TLS stack.", "id": "progs/tls_u/tls_u_main.c", "kind": "module", "label": "tls_u_main.c", "language": "c", "sha256": "d07870e40b8a0e32", "symbol_count": 5, "symbols": [{"kind": "function", "line": 10, "name": "syscall", "signature": "* the MiniOS DNS syscall (200, sig 0: error-check only, sends nothing).\n * The kernel keeps servi..."}, {"doc": "Strict port parser (clang-tidy cert-err34-c: atoi reports no errors, so \"abc\" and overflow both become 0 and fail open into the * default 443). All digits, at least one, value 1..65535, else -1.", "kind": "function", "line": 47, "name": "parse_port", "signature": "static int parse_port(const char *s)"}, {"kind": "function", "line": 61, "name": "main", "signature": "int main(int argc, char **argv)"}, {"kind": "macro", "line": 14, "name": "_POSIX_C_SOURCE", "signature": "#define _POSIX_C_SOURCE"}, {"kind": "macro", "line": 15, "name": "_DEFAULT_SOURCE", "signature": "#define _DEFAULT_SOURCE"}]}, {"doc": "tls_u_port.c - ring-3 transport for the shared TLS stack (TLS_RING3).", "id": "progs/tls_u/tls_u_port.c", "kind": "module", "label": "tls_u_port.c", "language": "c", "sha256": "ad57ddd860cbcf0c", "symbol_count": 15, "symbols": [{"kind": "function", "line": 5, "name": "sockets", "signature": "* sockets: on the host they are host sockets (used by the\n * openssl-s_server interop test), insi..."}, {"kind": "function", "line": 39, "name": "tls_u_recv", "signature": "int tls_u_recv(int fd, char *buf, int len)"}, {"kind": "function", "line": 44, "name": "tls_u_recv_timeout", "signature": "int tls_u_recv_timeout(int fd, char *buf, int len, unsigned long ms)"}, {"kind": "function", "line": 55, "name": "tls_u_close", "signature": "void tls_u_close(int fd)"}, {"doc": "Session-aware close for multi-fetch processes (freedom follows redirects and linked stylesheets, reusing the lowest free fd number every time). The engine keys sessions by raw fd and only clears the slot on handshake error; a successful session lives until someone frees it, so plain close() leaks the slot and the next handshake on the recycled fd number fails with \"session already exists\". Freeing * an fd with no session is a safe no-op. void tls_free_fd(int fd); /* session table owner: net/tls.c", "kind": "function", "line": 67, "name": "tls_close", "signature": "void tls_close(int fd)"}, {"kind": "function", "line": 72, "name": "tls_now_days", "signature": "long tls_now_days(void)"}, {"kind": "function", "line": 78, "name": "tls_random", "signature": "void tls_random(unsigned char *out, unsigned len)"}, {"kind": "function", "line": 99, "name": "u_raw_syscall3", "signature": "static long u_raw_syscall3(long n, long a1, long a2, long a3)"}, {"doc": "Strict dotted-quad parser (clang-tidy cert-err34-c: sscanf %u has undefined overflow and accepts whitespace/sign, so \"9999999999.1.1.1\" is UB before the <256 check ever runs). Digits and dots only, four * octets 0..255, full-string consumption, else -1.", "kind": "function", "line": 122, "name": "parse_quad", "signature": "static int parse_quad(const char *s, unsigned *ip_out)"}, {"kind": "function", "line": 147, "name": "tls_u_resolve", "signature": "int tls_u_resolve(const char *host, unsigned *ip_out)"}, {"doc": "freedom's resolver name: kernel DNS value semantics (u32 host order, * -1 on failure).", "kind": "function", "line": 183, "name": "net_dns_resolve", "signature": "int net_dns_resolve(const char *host)"}, {"doc": "Session-aware close for multi-fetch processes (freedom follows redirects and linked stylesheets, reusing the lowest free fd number every time). The engine keys sessions by raw fd and only clears the slot on handshake error; a successful session lives until someone frees it, so plain close() leaks the slot and the next handshake on the recycled fd number fails with \"session already exists\". Freeing * an fd with no session is a safe no-op.", "kind": "function", "line": 66, "name": "tls_free_fd", "signature": "void tls_free_fd(int fd);"}, {"kind": "function", "line": 163, "name": "answer", "signature": "* answer (some resolvers go IPv6-only on the first query). */ memset(&hints, 0, sizeof(hints));"}, {"kind": "macro", "line": 12, "name": "_POSIX_C_SOURCE", "signature": "#define _POSIX_C_SOURCE"}, {"kind": "macro", "line": 13, "name": "_DEFAULT_SOURCE", "signature": "#define _DEFAULT_SOURCE"}]}, {"id": "progs/topogpt3/topogpt3.c", "kind": "module", "label": "topogpt3.c", "language": "c", "sha256": "2486bd152479c356", "symbol_count": 128, "symbols": [{"doc": "topogpt3 -p \"prompt\" [-n N] [-t T] Headless mode topogpt3 -i Interactive mode topogpt3 -f file.txt Read prompt from file #pragma GCC diagnostic ignored \"-Wunused-function\" #ifdef __has_include #if __has_include() #include #include #include #else /* MiniOS standalone: declare stdio from ld stubs", "kind": "struct", "line": 24, "name": "FILE"}, {"kind": "struct", "line": 176, "name": "LayerWeights"}, {"kind": "struct", "line": 224, "name": "ModelWeights"}, {"kind": "function", "line": 114, "name": "tg_exp", "signature": "static float tg_exp(float x)"}, {"kind": "function", "line": 128, "name": "tg_tanh", "signature": "static float tg_tanh(float x)"}, {"kind": "function", "line": 135, "name": "tg_sin", "signature": "static float tg_sin(float x)"}, {"kind": "function", "line": 144, "name": "tg_cos", "signature": "static float tg_cos(float x)"}, {"kind": "function", "line": 148, "name": "tg_fabs", "signature": "static float tg_fabs(float x)"}, {"kind": "function", "line": 152, "name": "tg_log", "signature": "static float tg_log(float x)"}, {"kind": "function", "line": 164, "name": "tg_fmax", "signature": "static float tg_fmax(float a, float b)"}, {"kind": "function", "line": 168, "name": "tg_fmin", "signature": "static float tg_fmin(float a, float b)"}, {"kind": "function", "line": 255, "name": "load_vocab", "signature": "static void load_vocab(const char *path)"}, {"kind": "function", "line": 296, "name": "build_torus_graph", "signature": "static void build_torus_graph(void)"}, {"kind": "function", "line": 327, "name": "precompute_rope", "signature": "static void precompute_rope(void)"}, {"kind": "function", "line": 359, "name": "matvec", "signature": "static void matvec(const float *W, const float *x, float *y, int rows, int cols)"}, {"kind": "function", "line": 370, "name": "matvec_bias", "signature": "static void matvec_bias(const float *W, const float *b, const float *x, float *y,\n ..."}, {"kind": "function", "line": 382, "name": "rmsnorm", "signature": "static void rmsnorm(const float *x, const float *w, float *y, int d)"}, {"kind": "function", "line": 391, "name": "softmax", "signature": "static void softmax(float *x, int n)"}, {"kind": "function", "line": 400, "name": "gelu", "signature": "static void gelu(float *x, int n)"}, {"kind": "function", "line": 410, "name": "silu", "signature": "static void silu(float *x, int n)"}, {"kind": "function", "line": 418, "name": "swiglu", "signature": "static void swiglu(const float *gate_w, const float *up_w, const float *down_w,\n ..."}, {"kind": "function", "line": 435, "name": "quat_normalize", "signature": "static void quat_normalize(float *q)"}, {"kind": "function", "line": 440, "name": "quat_hamilton", "signature": "static void quat_hamilton(const float *a, const float *b, float *c)"}, {"doc": "static void quat_normalize(float *q) { float n = tg_sqrt(q[0]*q[0] + q[1]*q[1] + q[2]*q[2] + q[3]*q[3]); if (n > 1e-8f) { q[0]/=n; q[1]/=n; q[2]/=n; q[3]/=n; } } static void quat_hamilton(const float *a, const float *b, float *c) { c[0] = a[0]*b[0] - a[1]*b[1] - a[2]*b[2] - a[3]*b[3]; c[1] = a[0]*b[1] + a[1]*b[0] + a[2]*b[3] - a[3]*b[2]; c[2] = a[0]*b[2] - a[1]*b[3] + a[2]*b[0] + a[3]*b[1]; c[3] = a[0]*b[3] + a[1]*b[2] - a[2]*b[1] + a[3]*b[0]; } /* QuaternionLinear: x[w,x,y,z] -> y[w,x,y,z]", "kind": "function", "line": 448, "name": "quat_linear", "signature": "static void quat_linear(const float *Ww, const float *Wx, const float *Wy, const float *Wz,\n ..."}, {"kind": "function", "line": 505, "name": "ifft_radix2", "signature": "static void ifft_radix2(float *real, float *imag, int n)"}, {"doc": "cur_r = nr; } } } } static void ifft_radix2(float *real, float *imag, int n) { int i; for (i = 0; i < n; i++) imag[i] = -imag[i]; fft_radix2(real, imag, n); for (i = 0; i < n; i++) { real[i] /= (float)n; imag[i] = -imag[i] / (float)n; } } /* Real FFT: x[n] -> X[n/2+1] complex", "kind": "function", "line": 513, "name": "rfft", "signature": "static void rfft(const float *x, float *Xr, float *Xi, int n)"}, {"doc": "fft_radix2(real, imag, n); for (i = 0; i < n; i++) { real[i] /= (float)n; imag[i] = -imag[i] / (float)n; } } /* Real FFT: x[n] -> X[n/2+1] complex static void rfft(const float *x, float *Xr, float *Xi, int n) { float re[n], im[n]; int i; for (i = 0; i < n; i++) { re[i] = x[i]; im[i] = 0.0f; } fft_radix2(re, im, n); for (i = 0; i <= n/2; i++) { Xr[i] = re[i]; Xi[i] = im[i]; } } /* Inverse real FFT: X[n/2+1] complex -> x[n]", "kind": "function", "line": 522, "name": "irfft", "signature": "static void irfft(const float *Xr, const float *Xi, float *x, int n)"}, {"kind": "function", "line": 537, "name": "filter1d", "signature": "static void filter1d(const float *x, const float *kr, const float *ki,\n floa..."}, {"kind": "function", "line": 580, "name": "ifft2d", "signature": "static void ifft2d(float *data_r, float *data_i, int h, int w)"}, {"doc": "ifft_radix2(row_re, row_im, w); for (c = 0; c < w; c++) { re[r*w+c] = row_re[c]; im[r*w+c] = row_im[c]; } } /* IFFT columns float col_re[h], col_im[h]; for (c = 0; c < w; c++) { for (r = 0; r < h; r++) { col_re[r] = re[r*w+c]; col_im[r] = im[r*w+c]; } ifft_radix2(col_re, col_im, h); for (r = 0; r < h; r++) { re[r*w+c] = col_re[r]; im[r*w+c] = col_im[r]; } } for (i = 0; i < h * w; i++) { data_r[i] = re[i]; data_i[i] = im[i]; } } /* RFFT2: 2D real FFT, output is [h][w/2+1] complex", "kind": "function", "line": 602, "name": "rfft2d_real", "signature": "static void rfft2d_real(const float *data, float *out_r, float *out_i,\n i..."}, {"doc": "for (r = 0; r < h; r++) { col_re[r] = re[r*w+c]; col_im[r] = im[r*w+c]; } fft_radix2(col_re, col_im, h); for (r = 0; r < h; r++) { re[r*w+c] = col_re[r]; im[r*w+c] = col_im[r]; } } int fw = w / 2 + 1; for (r = 0; r < h; r++) { for (c = 0; c < fw; c++) { out_r[r * fw + c] = re[r * w + c]; out_i[r * fw + c] = im[r * w + c]; } } } /* IRFFT2: inverse of rfft2d_real", "kind": "function", "line": 629, "name": "irfft2d", "signature": "static void irfft2d(const float *in_r, const float *in_i, float *out,\n int h,..."}, {"doc": "====================================================================== SECTION 11: QUATERNION SPECTRAL LAYER 2D * ====================================================================== /* Complex multiply: (ar+bi)(cr+di) = (ac-bd)+(ad+bc)i", "kind": "function", "line": 664, "name": "cmul", "signature": "static void cmul(float ar, float ai, float cr, float di, float *rr, float *ri)"}, {"doc": "====================================================================== SECTION 11: QUATERNION SPECTRAL LAYER 2D * ====================================================================== /* Complex multiply: (ar+bi)(cr+di) = (ac-bd)+(ad+bc)i static void cmul(float ar, float ai, float cr, float di, float *rr, float *ri) { rr = ar*cr - ai*di; ri = ar*di + ai*cr; } /* Contract: Y[o,h,w] = sum_i W[i,o,h,w] * X[b,i,h,w] (complex)", "kind": "function", "line": 670, "name": "spectral_contract", "signature": "static void spectral_contract(const float *Wr, const float *Wi,\n co..."}, {"kind": "function", "line": 695, "name": "quat_spectral_layer_2d", "signature": "static void quat_spectral_layer_2d(\n const float *x, float *y,\n const float *kr_w, const fl..."}, {"kind": "function", "line": 785, "name": "spectral_ae_encode", "signature": "static void spectral_ae_encode(const float *x, float *z, const LayerWeights *lw)"}, {"kind": "function", "line": 793, "name": "spectral_ae_decode", "signature": "static void spectral_ae_decode(const float *z, float *x, const LayerWeights *lw)"}, {"kind": "function", "line": 800, "name": "process_torus_grid", "signature": "static void process_torus_grid(const float *grid, float *out, const LayerWeights *lw)"}, {"kind": "function", "line": 821, "name": "torus_soft_assign", "signature": "static void torus_soft_assign(const float *phi1, const float *phi2,\n ..."}, {"kind": "function", "line": 843, "name": "message_passing", "signature": "static void message_passing(const float *node_feat, float *out,\n cons..."}, {"kind": "function", "line": 888, "name": "torus_brain_forward", "signature": "static void torus_brain_forward(const float *x, float *out, float *recon_loss,\n ..."}, {"kind": "function", "line": 978, "name": "attention_forward", "signature": "static void attention_forward(const float *x, float *out, int layer_idx, int pos, int total_kv_co..."}, {"kind": "function", "line": 1078, "name": "moe_forward", "signature": "static void moe_forward(const float *x, float *out, const LayerWeights *lw)"}, {"kind": "function", "line": 1128, "name": "forward", "signature": "static void forward(const int *token_ids, int seq_len, float *logits_out)"}, {"kind": "function", "line": 1195, "name": "tokenize_string", "signature": "static int tokenize_string(const char *text, int *tokens, int max_tokens)"}, {"kind": "function", "line": 1210, "name": "apply_temperature", "signature": "static void apply_temperature(float *logits, int n, float temp)"}, {"kind": "function", "line": 1216, "name": "apply_repetition_penalty", "signature": "static void apply_repetition_penalty(float *logits, int n, const int *tokens,\n ..."}, {"kind": "function", "line": 1229, "name": "apply_top_k", "signature": "static void apply_top_k(float *logits, int n, int k)"}, {"kind": "function", "line": 1248, "name": "sample", "signature": "static int sample(const float *logits, int n)"}, {"kind": "function", "line": 1282, "name": "load_weights", "signature": "static int load_weights(const char *path)"}, {"kind": "function", "line": 1452, "name": "load_weights_fp16", "signature": "static int load_weights_fp16(const char *path)"}, {"doc": "printf(\" Layer %d loaded\\n\", i); } READ_TENSOR16(W.final_norm, D_MODEL); #undef SKIP_TENSOR16 #undef READ_TENSOR16 fclose(f); printf(\"Weights loaded successfully (fp16).\\n\"); return 0; } /* Auto-detect format and load weights", "kind": "function", "line": 1583, "name": "load_weights_auto", "signature": "static int load_weights_auto(const char *path)"}, {"doc": "====================================================================== SECTION 20: TIMING * ====================================================================== /* Portable wall-clock timer using rdtsc where available, else microseconds", "kind": "function", "line": 1600, "name": "time_now_ms", "signature": "static double time_now_ms(void)"}, {"kind": "function", "line": 1614, "name": "decode_token", "signature": "static void decode_token(int tid)"}, {"doc": "if (tid < 256) { /* Map GPT-2 byte-level encoding back to original byte int n = tid; if (n < 94) n += 33; else if (n < 163) n += 161 - 94; else n += 173 - 163; putchar(n); } else { /* Multi-byte token: output placeholder or skip putchar('?'); } } /* Load pre-tokenized binary file (format: \"TKID\" + uint32 count + int32 ids[])", "kind": "function", "line": 1629, "name": "load_token_file", "signature": "static int load_token_file(const char *path, int *out_ids, int max_ids)"}, {"doc": "if (fread(&n, 4, 1, f) != 1) { fclose(f); return 0; } if (n > (unsigned)max_ids) n = max_ids; int count = (int)n; int i; for (i = 0; i < count; i++) { int id; if (fread(&id, 4, 1, f) != 1) break; out_ids[i] = id; } fclose(f); return count; } /* Decode token ID using loaded vocabulary", "kind": "function", "line": 1652, "name": "decode_token_tiktoken", "signature": "static void decode_token_tiktoken(int tid)"}, {"kind": "function", "line": 1661, "name": "generate_tokens", "signature": "static void generate_tokens(int *prompt_tokens, int n_prompt, int max_new_tokens,\n ..."}, {"kind": "function", "line": 1725, "name": "generate", "signature": "static void generate(const char *prompt, int max_new_tokens, float temperature,\n ..."}, {"kind": "function", "line": 1736, "name": "interactive_mode", "signature": "static void interactive_mode(void)"}, {"kind": "function", "line": 1850, "name": "print_help", "signature": "static void print_help(void)"}, {"kind": "function", "line": 1885, "name": "main", "signature": "int main(int argc, char **argv)"}, {"kind": "function", "line": 28, "name": "printf", "signature": "extern int printf(const char *, ...);"}, {"kind": "function", "line": 29, "name": "fprintf", "signature": "extern int fprintf(FILE *, const char *, ...);"}, {"kind": "function", "line": 30, "name": "sprintf", "signature": "extern int sprintf(char *, const char *, ...);"}, {"kind": "function", "line": 31, "name": "snprintf", "signature": "extern int snprintf(char *, unsigned long, const char *, ...);"}, {"kind": "function", "line": 32, "name": "puts", "signature": "extern int puts(const char *);"}, {"kind": "function", "line": 33, "name": "putchar", "signature": "extern int putchar(int);"}, {"kind": "function", "line": 34, "name": "fputc", "signature": "extern int fputc(int, FILE *);"}, {"kind": "function", "line": 35, "name": "fputs", "signature": "extern int fputs(const char *, FILE *);"}, {"kind": "function", "line": 36, "name": "fopen", "signature": "extern FILE *fopen(const char *, const char *);"}, {"kind": "function", "line": 37, "name": "fclose", "signature": "extern int fclose(FILE *);"}, {"kind": "function", "line": 38, "name": "fread", "signature": "extern unsigned long fread(void *, unsigned long, unsigned long, FILE *);"}, {"kind": "function", "line": 39, "name": "fwrite", "signature": "extern unsigned long fwrite(const void *, unsigned long, unsigned long, FILE *);"}, {"kind": "function", "line": 40, "name": "fseek", "signature": "extern int fseek(FILE *, long, int);"}, {"kind": "function", "line": 41, "name": "ftell", "signature": "extern long ftell(FILE *);"}, {"kind": "function", "line": 42, "name": "fflush", "signature": "extern int fflush(FILE *);"}, {"doc": "define NULL ((void*)0) define SEEK_SET 0 define SEEK_CUR 1 define SEEK_END 2", "kind": "function", "line": 47, "name": "malloc", "signature": "extern void *malloc(unsigned long);"}, {"kind": "function", "line": 48, "name": "free", "signature": "extern void free(void *);"}, {"kind": "function", "line": 49, "name": "memcpy", "signature": "extern void *memcpy(void *, const void *, unsigned long);"}, {"kind": "function", "line": 50, "name": "memset", "signature": "extern void *memset(void *, int, unsigned long);"}, {"kind": "function", "line": 51, "name": "strcmp", "signature": "extern int strcmp(const char *, const char *);"}, {"kind": "function", "line": 52, "name": "strncmp", "signature": "extern int strncmp(const char *, const char *, unsigned long);"}, {"kind": "function", "line": 53, "name": "strlen", "signature": "extern unsigned long strlen(const char *);"}, {"kind": "function", "line": 54, "name": "strstr", "signature": "extern char *strstr(const char *, const char *);"}, {"kind": "variable", "line": 25, "name": "stdin", "signature": "extern FILE *stdin;"}, {"kind": "variable", "line": 26, "name": "stdout", "signature": "extern FILE *stdout;"}, {"kind": "variable", "line": 27, "name": "stderr", "signature": "extern FILE *stderr;"}, {"kind": "macro", "line": 43, "name": "NULL", "signature": "#define NULL"}, {"kind": "macro", "line": 44, "name": "SEEK_SET", "signature": "#define SEEK_SET"}, {"kind": "macro", "line": 45, "name": "SEEK_CUR", "signature": "#define SEEK_CUR"}, {"kind": "macro", "line": 46, "name": "SEEK_END", "signature": "#define SEEK_END"}, {"kind": "macro", "line": 65, "name": "VOCAB_SIZE", "signature": "#define VOCAB_SIZE"}, {"kind": "macro", "line": 66, "name": "D_MODEL", "signature": "#define D_MODEL"}, {"kind": "macro", "line": 67, "name": "N_HEADS", "signature": "#define N_HEADS"}, {"kind": "macro", "line": 68, "name": "N_KV_HEADS", "signature": "#define N_KV_HEADS"}, {"kind": "macro", "line": 69, "name": "GQA_GROUPS", "signature": "#define GQA_GROUPS"}, {"kind": "macro", "line": 70, "name": "D_HEAD", "signature": "#define D_HEAD"}, {"kind": "macro", "line": 71, "name": "D_QUAT", "signature": "#define D_QUAT"}, {"kind": "macro", "line": 72, "name": "N_LAYERS", "signature": "#define N_LAYERS"}, {"kind": "macro", "line": 73, "name": "MAX_SEQ_LEN", "signature": "#define MAX_SEQ_LEN"}, {"kind": "macro", "line": 74, "name": "N_EXPERTS", "signature": "#define N_EXPERTS"}, {"kind": "macro", "line": 75, "name": "MOE_TOP_K", "signature": "#define MOE_TOP_K"}, {"kind": "macro", "line": 76, "name": "N_NODES", "signature": "#define N_NODES"}, {"kind": "macro", "line": 77, "name": "N_RADIAL", "signature": "#define N_RADIAL"}, {"kind": "macro", "line": 78, "name": "N_ANGULAR", "signature": "#define N_ANGULAR"}, {"kind": "macro", "line": 79, "name": "N_EDGE_TYPES", "signature": "#define N_EDGE_TYPES"}, {"kind": "macro", "line": 80, "name": "N_EDGES", "signature": "#define N_EDGES"}, {"kind": "macro", "line": 81, "name": "SPECTRAL_LATENT_DIM", "signature": "#define SPECTRAL_LATENT_DIM"}, {"kind": "macro", "line": 82, "name": "D_LAT_Q", "signature": "#define D_LAT_Q"}, {"kind": "macro", "line": 83, "name": "TORUS_GRID_H", "signature": "#define TORUS_GRID_H"}, {"kind": "macro", "line": 84, "name": "TORUS_GRID_W", "signature": "#define TORUS_GRID_W"}, {"kind": "macro", "line": 85, "name": "FREQ_W", "signature": "#define FREQ_W"}, {"kind": "macro", "line": 86, "name": "N_SPECTRAL_LAYERS", "signature": "#define N_SPECTRAL_LAYERS"}, {"kind": "macro", "line": 87, "name": "EXPERT_INNER", "signature": "#define EXPERT_INNER"}, {"kind": "macro", "line": 88, "name": "READOUT_INNER", "signature": "#define READOUT_INNER"}, {"kind": "macro", "line": 89, "name": "EOS_TOKEN", "signature": "#define EOS_TOKEN"}, {"kind": "macro", "line": 90, "name": "EMBED_INNER", "signature": "#define EMBED_INNER"}, {"kind": "macro", "line": 91, "name": "PI", "signature": "#define PI"}, {"kind": "macro", "line": 92, "name": "EPS_RMS", "signature": "#define EPS_RMS"}, {"kind": "macro", "line": 93, "name": "TORUS_TEMP", "signature": "#define TORUS_TEMP"}, {"kind": "macro", "line": 94, "name": "MAX_TOKENS", "signature": "#define MAX_TOKENS"}, {"kind": "macro", "line": 95, "name": "MAX_PROMPT_LEN", "signature": "#define MAX_PROMPT_LEN"}, {"kind": "macro", "line": 96, "name": "MAX_LINE", "signature": "#define MAX_LINE"}, {"kind": "macro", "line": 97, "name": "TOK_TAB_SIZE", "signature": "#define TOK_TAB_SIZE"}, {"kind": "macro", "line": 98, "name": "TOK_VOCAB_SIZE", "signature": "#define TOK_VOCAB_SIZE"}, {"kind": "macro", "line": 1300, "name": "SKIP_TENSOR", "signature": "#define SKIP_TENSOR()"}, {"kind": "macro", "line": 1310, "name": "READ_TENSOR", "signature": "#define READ_TENSOR(dest, count)"}, {"kind": "macro", "line": 1470, "name": "SKIP_TENSOR16", "signature": "#define SKIP_TENSOR16()"}, {"kind": "macro", "line": 1480, "name": "READ_TENSOR16", "signature": "#define READ_TENSOR16(dest, count)"}]}, {"doc": "vedit IDE build and run contract.", "id": "progs/vedit/vedit.c", "kind": "module", "label": "vedit.c", "language": "c", "sha256": "9fdfc60513b765a6", "symbol_count": 128, "symbols": [{"doc": "the graphics mode first so the desktop terminal stays ordered and the toolchain output lands on the console, then the IDE resumes. Untitled buffers highlight as C until a name with an extension is given. #include #include #include #include #include \"nuklear.h\" #include \"nuklear_minios.h\" #include \"nuklear_theme.h\" /** Platform syscalls vedit needs beyond the platform layer.", "kind": "function", "line": 22, "name": "vedit_getc_raw", "signature": "static long vedit_getc_raw(long blocking)"}, {"doc": "#include \"nuklear.h\" #include \"nuklear_minios.h\" #include \"nuklear_theme.h\" /** Platform syscalls vedit needs beyond the platform layer. static long vedit_getc_raw(long blocking) { long ret; __asm__ volatile(\"syscall\" : \"=a\"(ret) : \"a\"(MINIOS_SYS_GETC_RAW), \"D\"(blocking) : \"rcx\", \"r11\", \"memory\"); return ret; } /** Set the graphics window title.", "kind": "function", "line": 31, "name": "vedit_set_title", "signature": "static long vedit_set_title(const char *t)"}, {"doc": ": \"rcx\", \"r11\", \"memory\"); return ret; } /** Set the graphics window title. static long vedit_set_title(const char *t) { long ret; __asm__ volatile(\"syscall\" : \"=a\"(ret) : \"a\"(MINIOS_SYS_GFX_SET_TITLE), \"D\"(t) : \"rcx\", \"r11\", \"memory\"); return ret; } /** Run a program through SYS_SPAWN, preserving the IDE across the child.", "kind": "function", "line": 40, "name": "vedit_spawn", "signature": "static long vedit_spawn(const char *path, const char *redir, int argc,\n co..."}, {"doc": "/** Run a program through SYS_SPAWN, preserving the IDE across the child. static long vedit_spawn(const char *path, const char *redir, int argc, const char **argv) { long ret; register long r10 __asm__(\"r10\") = (long)argv; __asm__ volatile(\"syscall\" : \"=a\"(ret) : \"a\"(MINIOS_SYS_SPAWN), \"D\"(path), \"S\"(redir), \"d\"((long)argc), \"r\"(r10) : \"rcx\", \"r11\", \"memory\"); return ret; } /** Release or reclaim the display so toolchain output stays on the terminal.", "kind": "function", "line": 52, "name": "vedit_vga", "signature": "static long vedit_vga(int on)"}, {"doc": "Force cooked keyboard mode: GETC_RAW (this editor's only key source) starves while raw mode diverts PS/2 bytes to the raw queue, so vedit asserts its requirement at startup instead of inheriting the * launcher's mode (a file-browser spawn left raw on and all keys died).", "kind": "function", "line": 64, "name": "vedit_kbd_raw", "signature": "static long vedit_kbd_raw(int on)"}, {"doc": "Force cooked keyboard mode: GETC_RAW (this editor's only key source) starves while raw mode diverts PS/2 bytes to the raw queue, so vedit asserts its requirement at startup instead of inheriting the * launcher's mode (a file-browser spawn left raw on and all keys died). static long vedit_kbd_raw(int on) { long ret; __asm__ volatile(\"syscall\" : \"=a\"(ret) : \"a\"(MINIOS_SYS_KBD_RAW), \"D\"((long)on) : \"rcx\", \"r11\", \"memory\"); return ret; } /** Wall-clock milliseconds for the cross-frame ESC-sequence timeout.", "kind": "function", "line": 73, "name": "vedit_time_ms", "signature": "static unsigned long vedit_time_ms(void)"}, {"doc": "/* ---- Decoded keys above any byte ---- #define VEDIT_KEY_UP 1000 #define VEDIT_KEY_DOWN 1001 #define VEDIT_KEY_LEFT 1002 #define VEDIT_KEY_RIGHT 1003 #define VEDIT_KEY_HOME 1004 #define VEDIT_KEY_END 1005 #define VEDIT_KEY_PGUP 1006 #define VEDIT_KEY_PGDN 1007 #define VEDIT_KEY_DEL 1008 #define VEDIT_KEY_ESC 1009 /* ---- Theme: every ink named once, used everywhere ----", "kind": "function", "line": 147, "name": "vedit_c_bg", "signature": "static struct nk_color vedit_c_bg(void)"}, {"kind": "function", "line": 148, "name": "vedit_c_gutter", "signature": "static struct nk_color vedit_c_gutter(void)"}, {"kind": "function", "line": 149, "name": "vedit_c_default", "signature": "static struct nk_color vedit_c_default(void)"}, {"kind": "function", "line": 150, "name": "vedit_c_keyword", "signature": "static struct nk_color vedit_c_keyword(void)"}, {"kind": "function", "line": 151, "name": "vedit_c_string", "signature": "static struct nk_color vedit_c_string(void)"}, {"kind": "function", "line": 152, "name": "vedit_c_comment", "signature": "static struct nk_color vedit_c_comment(void)"}, {"kind": "function", "line": 153, "name": "vedit_c_number", "signature": "static struct nk_color vedit_c_number(void)"}, {"kind": "function", "line": 154, "name": "vedit_c_preproc", "signature": "static struct nk_color vedit_c_preproc(void)"}, {"kind": "function", "line": 155, "name": "vedit_c_header", "signature": "static struct nk_color vedit_c_header(void)"}, {"kind": "function", "line": 156, "name": "vedit_c_headtxt", "signature": "static struct nk_color vedit_c_headtxt(void)"}, {"kind": "function", "line": 157, "name": "vedit_c_status", "signature": "static struct nk_color vedit_c_status(void)"}, {"kind": "function", "line": 158, "name": "vedit_c_cursor", "signature": "static struct nk_color vedit_c_cursor(void)"}, {"kind": "function", "line": 160, "name": "vedit_ink", "signature": "static struct nk_color vedit_ink(int col)"}, {"kind": "function", "line": 230, "name": "vedit_set_msg", "signature": "static void vedit_set_msg(const char *s)"}, {"kind": "function", "line": 237, "name": "vedit_is_alpha", "signature": "static int vedit_is_alpha(int c)"}, {"kind": "function", "line": 241, "name": "vedit_is_digit", "signature": "static int vedit_is_digit(int c)"}, {"kind": "function", "line": 245, "name": "vedit_is_wordc", "signature": "static int vedit_is_wordc(int c)"}, {"kind": "function", "line": 249, "name": "vedit_is_kw", "signature": "static int vedit_is_kw(const char *table, const char *word, int wlen)"}, {"kind": "function", "line": 272, "name": "separators", "signature": "* allow_quote exists because C digit separators (1'000'000) are not\n * valid in Python/Lua number..."}, {"kind": "function", "line": 295, "name": "vedit_parse_number", "signature": "static int vedit_parse_number(const char *t, int len, int i, int allow_quote)"}, {"kind": "function", "line": 310, "name": "vedit_parse_keyword", "signature": "static int vedit_parse_keyword(const char *t, int len, int i,\n cons..."}, {"doc": "int wl = 0; int j = i; int k; while (j < len && vedit_is_wordc((unsigned char)t[j])) { if (wl < VEDIT_WORD_MAX - 1) w[wl++] = t[j]; j++; } if (vedit_is_kw(kw_table, w, wl)) { for (k = i; k < j; k++) vedit_cell[k] = VEDIT_COL_KEYWORD; } return j; } /** Map a file name to its highlight language.", "kind": "function", "line": 327, "name": "vedit_lang_of", "signature": "static int vedit_lang_of(const char *fname)"}, {"kind": "function", "line": 345, "name": "vedit_lang_name", "signature": "static const char *vedit_lang_name(int lang)"}, {"doc": "return VEDIT_LANG_C; } /** Name a highlight language for the status row. static const char *vedit_lang_name(int lang) { if (lang == VEDIT_LANG_C) return \"C\"; if (lang == VEDIT_LANG_PY) return \"Python\"; if (lang == VEDIT_LANG_LUA) return \"Lua\"; if (lang == VEDIT_LANG_ASM) return \"Asm\"; return \"text\"; } /* Paint one line into vedit_cell; returns the state for the next line.", "kind": "function", "line": 354, "name": "vedit_scan_line", "signature": "static int vedit_scan_line(const char *t, int len, int st)"}, {"doc": "} else if (c == '\"' || c == '\\'') { i = vedit_parse_string(t, len, i); } else if (vedit_is_digit(c)) { i = vedit_parse_number(t, len, i, 0); } else if (vedit_is_alpha(c)) { i = vedit_parse_keyword(t, len, i, vedit_kw_lua); } else { i++; } } return 0; } /* Multi-line state at the start of a row: replay earlier lines.", "kind": "function", "line": 607, "name": "vedit_state_at", "signature": "static int vedit_state_at(int row)"}, {"kind": "function", "line": 616, "name": "vedit_row_ptr", "signature": "static char *vedit_row_ptr(int idx)"}, {"kind": "function", "line": 620, "name": "vedit_clamp", "signature": "static void vedit_clamp(void)"}, {"kind": "function", "line": 632, "name": "vedit_follow", "signature": "static void vedit_follow(void)"}, {"kind": "function", "line": 645, "name": "vedit_insert_char", "signature": "static void vedit_insert_char(int c)"}, {"kind": "function", "line": 671, "name": "vedit_delete_line_at", "signature": "static void vedit_delete_line_at(int idx)"}, {"kind": "function", "line": 682, "name": "vedit_backspace", "signature": "static void vedit_backspace(void)"}, {"kind": "function", "line": 713, "name": "vedit_delete_char", "signature": "static void vedit_delete_char(void)"}, {"kind": "function", "line": 741, "name": "vedit_split", "signature": "static void vedit_split(void)"}, {"kind": "function", "line": 789, "name": "vedit_tab", "signature": "static void vedit_tab(void)"}, {"kind": "function", "line": 816, "name": "vedit_find", "signature": "static void vedit_find(const char *needle)"}, {"kind": "function", "line": 866, "name": "vedit_save", "signature": "static int vedit_save(void)"}, {"kind": "function", "line": 909, "name": "vedit_load", "signature": "static int vedit_load(void)"}, {"doc": "vedit_trunc = 1; } } } if (used > 0 && idx < VEDIT_MAX_LINES) { vedit_used[idx] = used; idx++; } vedit_count = idx; fclose(f); return 1; } /** Report whether a file name ends with the given extension.", "kind": "function", "line": 966, "name": "vedit_has_ext", "signature": "static int vedit_has_ext(const char *fname, const char *ext)"}, {"doc": "/** Report whether a file name ends with the given extension. static int vedit_has_ext(const char *fname, const char *ext) { size_t n = strlen(fname); size_t e = strlen(ext); size_t k; if (e == 0 || e > n) return 0; for (k = 0; k < e; k++) { if (fname[n - e + k] != ext[k]) return 0; } return 1; } /** Copy the base name without directories or extension into dst.", "kind": "function", "line": 978, "name": "vedit_base_of", "signature": "static int vedit_base_of(const char *fname, char *dst, size_t cap)"}, {"doc": "if (fname[k] == '/') s = k + 1; } for (k = s; k < n; k++) { if (fname[k] == '.') e = k; } if (e <= s) e = n; len = e - s; if (len == 0 || len + 1 > cap || len >= VEDIT_BASE_MAX) return -1; for (k = 0; k < len; k++) dst[k] = fname[s + k]; dst[len] = 0; return 0; } /** Join dir + base + ext into dst with bounds checking.", "kind": "function", "line": 999, "name": "vedit_join", "signature": "static int vedit_join(const char *dir, const char *base, const char *ext,\n c..."}, {"doc": "size_t b = strlen(base); size_t e = strlen(ext); size_t k = 0; size_t i; if (d + b + e + 1 > cap) return -1; if (d + b + e + 1 > VEDIT_PATH_MAX) return -1; for (i = 0; i < d; i++) dst[k++] = dir[i]; for (i = 0; i < b; i++) dst[k++] = base[i]; for (i = 0; i < e; i++) dst[k++] = ext[i]; dst[k] = 0; return 0; } /** Accept only the two linker formats, rejecting anything else.", "kind": "function", "line": 1016, "name": "vedit_link_fmt", "signature": "static int vedit_link_fmt(const char *s)"}, {"doc": "/** Accept only the two linker formats, rejecting anything else. static int vedit_link_fmt(const char *s) { size_t k = 0; const char *e = VEDIT_LINK_ELF; const char *c = VEDIT_LINK_CVM; while (e[k] && s[k] == e[k]) k++; if (e[k] == 0 && s[k] == 0) return 1; k = 0; while (c[k] && s[k] == c[k]) k++; if (c[k] == 0 && s[k] == 0) return 2; return 0; } /** Print a captured toolchain log to the console in bounded chunks.", "kind": "function", "line": 1029, "name": "vedit_print_log", "signature": "static void vedit_print_log(const char *path)"}, {"doc": "size_t n; if (!f) { printf(\"vedit: no output captured (%s missing)\\n\", path); return; } while ((n = fread(buf, 1, sizeof(buf), f)) > 0) { size_t k; for (k = 0; k < n; k++) putchar(buf[k]); } fclose(f); fflush(stdout); } /** Drop the display, run one child, echo its log, then resume the IDE.", "kind": "function", "line": 1046, "name": "vedit_spawn_visible", "signature": "static long vedit_spawn_visible(const char *tool, const char *redir, int argc,\n ..."}, {"doc": "if (rc < 0) { snprintf(nb, sizeof(nb), \"%s failed (%ld)\", label, rc); vedit_set_msg(nb); } else if (rc != 0) { snprintf(nb, sizeof(nb), \"%s exit %ld\", label, rc); vedit_set_msg(nb); } else { snprintf(nb, sizeof(nb), \"%s ok\", label); vedit_set_msg(nb); } return rc; } /** Run a freshly linked artifact so its output lands on the console.", "kind": "function", "line": 1075, "name": "vedit_cmd_exec", "signature": "static void vedit_cmd_exec(const char *out, int kind)"}, {"doc": "/** Run a freshly linked artifact so its output lands on the console. static void vedit_cmd_exec(const char *out, int kind) { const char *args[2]; char label[VEDIT_MSG_MAX]; snprintf(label, sizeof(label), \"run %s\", out); args[0] = out; args[1] = 0; if (kind == 1) vedit_spawn_visible(out, 0, 1, args, label); else vedit_spawn_visible(VEDIT_TOOL_CVM, 0, 1, args, label); } /** Decide the ^R tool for a file: 1=minigcc, 2=lua, 3=python, 4=ld.", "kind": "function", "line": 1088, "name": "vedit_run_kind", "signature": "static int vedit_run_kind(const char *fname)"}, {"doc": "else vedit_spawn_visible(VEDIT_TOOL_CVM, 0, 1, args, label); } /** Decide the ^R tool for a file: 1=minigcc, 2=lua, 3=python, 4=ld. static int vedit_run_kind(const char *fname) { if (vedit_has_ext(fname, \".c\") || vedit_has_ext(fname, \".h\")) return 1; if (vedit_has_ext(fname, \".lua\")) return 2; if (vedit_has_ext(fname, \".py\")) return 3; if (vedit_has_ext(fname, \".s\")) return 4; return 0; } /** Save, then compile or run the current buffer by extension.", "kind": "function", "line": 1097, "name": "vedit_cmd_run", "signature": "static void vedit_cmd_run(void)"}, {"doc": "vedit_set_msg(\"usage: save as .c, .s, .lua or .py first\"); return; } args[0] = tool; args[1] = vedit_fname; args[2] = 0; for (k = 0; k < sizeof(label) - 1 && vedit_fname[k]; k++) label[k] = vedit_fname[k]; label[k] = 0; redir = VEDIT_BUILD_LOG; vedit_spawn_visible(tool, redir, 2, args, label); } /** Save, then link asm/.s into bin/.elf or cvm/.cvm.", "kind": "function", "line": 1173, "name": "vedit_cmd_link", "signature": "static void vedit_cmd_link(const char *fmt)"}, {"doc": "Headless build contract check: no display, no syscalls, exit status only. Mirror contract with tests/test_vedit_build.c: any vector added here * must gain a host CHECK there too, so spec drift fails the build.", "kind": "function", "line": 1224, "name": "vedit_selftest_build", "signature": "static int vedit_selftest_build(void)"}, {"kind": "function", "line": 1313, "name": "vedit_read_key_poll", "signature": "static int vedit_read_key_poll(void)"}, {"doc": "vedit_esc_state = 3; vedit_esc_t0 = now; return -1; } return VEDIT_KEY_ESC; } vedit_esc_state = 0; if (c != '~') return VEDIT_KEY_ESC; if (vedit_esc_p1 == '3') return VEDIT_KEY_DEL; if (vedit_esc_p1 == '5') return VEDIT_KEY_PGUP; return VEDIT_KEY_PGDN; } /** Serial ANSI mirror: the UI itself is pixels.", "kind": "function", "line": 1364, "name": "vedit_ansi_for", "signature": "static void vedit_ansi_for(int col)"}, {"kind": "function", "line": 1372, "name": "vedit_console_dump", "signature": "static void vedit_console_dump(void)"}, {"kind": "function", "line": 1412, "name": "vedit_prompt_open", "signature": "static void vedit_prompt_open(const char *label, int mode)"}, {"kind": "function", "line": 1423, "name": "vedit_prompt_find", "signature": "static void vedit_prompt_find(void)"}, {"kind": "function", "line": 1427, "name": "vedit_prompt_saveas", "signature": "static void vedit_prompt_saveas(void)"}, {"kind": "function", "line": 1437, "name": "vedit_draw_row", "signature": "static void vedit_draw_row(struct nk_command_buffer *canvas,\n struct nk..."}, {"doc": "nk_fill_rect(canvas, nk_rect((float)ccx, (float)y, (float)vedit_cw, (float)vedit_ch), 0, vedit_c_cursor()); if (vedit_cx < len) { nk_draw_text(canvas, nk_rect((float)ccx, (float)y, (float)vedit_cw, (float)vedit_ch), l + vedit_cx, 1, font, vedit_c_cursor(), vedit_c_bg()); } } } /** Draw the IDE window: menu buttons, code rows, status and help.", "kind": "function", "line": 1516, "name": "vedit_draw_ui", "signature": "static void vedit_draw_ui(struct nk_context *ctx, struct nk_user_font *font,\n ..."}, {"doc": "vedit_cw), (float)(vedit_status_y + 2), (float)vedit_cw, (float)vedit_ch), 0, vedit_c_cursor()); } nk_draw_text(canvas, nk_rect((float)vedit_cw, (float)vedit_help_y, (float)(NK_W - 2 * vedit_cw), (float)vedit_ch), help, (int)strlen(help), font, vedit_c_bg(), vedit_c_gutter()); nk_end(ctx); } /** Route one decoded key while a prompt is open.", "kind": "function", "line": 1647, "name": "vedit_prompt_key", "signature": "static void vedit_prompt_key(int key)"}, {"doc": "if (key == '\\b' || key == 127) { if (vedit_prompt_pos > 0) { vedit_prompt_pos--; vedit_prompt_buf[vedit_prompt_pos] = 0; } return; } if (key >= 32 && key < 127 && vedit_prompt_pos < VEDIT_LINE_MAX - 1) { vedit_prompt_buf[vedit_prompt_pos++] = (char)key; vedit_prompt_buf[vedit_prompt_pos] = 0; } } /** Route one decoded key when no prompt is open.", "kind": "function", "line": 1706, "name": "vedit_key", "signature": "static void vedit_key(int key, int *quit, int *save_and_quit)"}, {"kind": "function", "line": 1786, "name": "vedit_sync_title", "signature": "static void vedit_sync_title(void)"}, {"kind": "function", "line": 1796, "name": "vedit_gui_run", "signature": "static void vedit_gui_run(void)"}, {"kind": "function", "line": 1875, "name": "vedit_selftest", "signature": "static int vedit_selftest(void)"}, {"kind": "function", "line": 1942, "name": "main", "signature": "int main(int argc, char **argv)"}, {"kind": "macro", "line": 81, "name": "VEDIT_MAX_LINES", "signature": "#define VEDIT_MAX_LINES"}, {"kind": "macro", "line": 82, "name": "VEDIT_LINE_MAX", "signature": "#define VEDIT_LINE_MAX"}, {"kind": "macro", "line": 83, "name": "VEDIT_LINE_USED", "signature": "#define VEDIT_LINE_USED"}, {"kind": "macro", "line": 84, "name": "VEDIT_FILE_MAX", "signature": "#define VEDIT_FILE_MAX"}, {"kind": "macro", "line": 85, "name": "VEDIT_FNAME_MAX", "signature": "#define VEDIT_FNAME_MAX"}, {"kind": "macro", "line": 86, "name": "VEDIT_DEFAULT_FILE", "signature": "#define VEDIT_DEFAULT_FILE"}, {"kind": "macro", "line": 87, "name": "VEDIT_MSG_MAX", "signature": "#define VEDIT_MSG_MAX"}, {"kind": "macro", "line": 88, "name": "VEDIT_WORD_MAX", "signature": "#define VEDIT_WORD_MAX"}, {"kind": "macro", "line": 89, "name": "VEDIT_TAB_W", "signature": "#define VEDIT_TAB_W"}, {"kind": "macro", "line": 90, "name": "VEDIT_ESC_MS", "signature": "#define VEDIT_ESC_MS"}, {"kind": "macro", "line": 91, "name": "VEDIT_FRAME_MS", "signature": "#define VEDIT_FRAME_MS"}, {"kind": "macro", "line": 92, "name": "VEDIT_UI_MEMORY", "signature": "#define VEDIT_UI_MEMORY"}, {"kind": "macro", "line": 93, "name": "VEDIT_KEY_RUN", "signature": "#define VEDIT_KEY_RUN"}, {"kind": "macro", "line": 94, "name": "VEDIT_KEY_LINK", "signature": "#define VEDIT_KEY_LINK"}, {"kind": "macro", "line": 95, "name": "VEDIT_KEY_DUMP", "signature": "#define VEDIT_KEY_DUMP"}, {"kind": "macro", "line": 96, "name": "VEDIT_TOOL_MINIGCC", "signature": "#define VEDIT_TOOL_MINIGCC"}, {"kind": "macro", "line": 97, "name": "VEDIT_TOOL_LD", "signature": "#define VEDIT_TOOL_LD"}, {"kind": "macro", "line": 98, "name": "VEDIT_TOOL_CVM", "signature": "#define VEDIT_TOOL_CVM"}, {"kind": "macro", "line": 99, "name": "VEDIT_TOOL_LUA", "signature": "#define VEDIT_TOOL_LUA"}, {"kind": "macro", "line": 100, "name": "VEDIT_TOOL_PY", "signature": "#define VEDIT_TOOL_PY"}, {"kind": "macro", "line": 101, "name": "VEDIT_DIR_ASM", "signature": "#define VEDIT_DIR_ASM"}, {"kind": "macro", "line": 102, "name": "VEDIT_DIR_BIN", "signature": "#define VEDIT_DIR_BIN"}, {"kind": "macro", "line": 103, "name": "VEDIT_DIR_CVM", "signature": "#define VEDIT_DIR_CVM"}, {"kind": "macro", "line": 104, "name": "VEDIT_BUILD_LOG", "signature": "#define VEDIT_BUILD_LOG"}, {"kind": "macro", "line": 105, "name": "VEDIT_LINK_ELF", "signature": "#define VEDIT_LINK_ELF"}, {"kind": "macro", "line": 106, "name": "VEDIT_LINK_CVM", "signature": "#define VEDIT_LINK_CVM"}, {"kind": "macro", "line": 107, "name": "VEDIT_STATUS_MAX", "signature": "#define VEDIT_STATUS_MAX"}, {"kind": "macro", "line": 108, "name": "VEDIT_BASE_MAX", "signature": "#define VEDIT_BASE_MAX"}, {"kind": "macro", "line": 109, "name": "VEDIT_PATH_MAX", "signature": "#define VEDIT_PATH_MAX"}, {"kind": "macro", "line": 110, "name": "VEDIT_LOG_TAIL", "signature": "#define VEDIT_LOG_TAIL"}, {"kind": "macro", "line": 113, "name": "VEDIT_LANG_TEXT", "signature": "#define VEDIT_LANG_TEXT"}, {"kind": "macro", "line": 114, "name": "VEDIT_LANG_C", "signature": "#define VEDIT_LANG_C"}, {"kind": "macro", "line": 115, "name": "VEDIT_LANG_PY", "signature": "#define VEDIT_LANG_PY"}, {"kind": "macro", "line": 116, "name": "VEDIT_LANG_LUA", "signature": "#define VEDIT_LANG_LUA"}, {"kind": "macro", "line": 117, "name": "VEDIT_LANG_ASM", "signature": "#define VEDIT_LANG_ASM"}, {"kind": "macro", "line": 120, "name": "VEDIT_COL_DEFAULT", "signature": "#define VEDIT_COL_DEFAULT"}, {"kind": "macro", "line": 121, "name": "VEDIT_COL_KEYWORD", "signature": "#define VEDIT_COL_KEYWORD"}, {"kind": "macro", "line": 122, "name": "VEDIT_COL_STRING", "signature": "#define VEDIT_COL_STRING"}, {"kind": "macro", "line": 123, "name": "VEDIT_COL_COMMENT", "signature": "#define VEDIT_COL_COMMENT"}, {"kind": "macro", "line": 124, "name": "VEDIT_COL_NUMBER", "signature": "#define VEDIT_COL_NUMBER"}, {"kind": "macro", "line": 125, "name": "VEDIT_COL_PREPROC", "signature": "#define VEDIT_COL_PREPROC"}, {"kind": "macro", "line": 128, "name": "VEDIT_ST_BLOCK", "signature": "#define VEDIT_ST_BLOCK"}, {"kind": "macro", "line": 129, "name": "VEDIT_ST_PY3S", "signature": "#define VEDIT_ST_PY3S"}, {"kind": "macro", "line": 130, "name": "VEDIT_ST_PY3D", "signature": "#define VEDIT_ST_PY3D"}, {"kind": "macro", "line": 131, "name": "VEDIT_ST_LUABLK", "signature": "#define VEDIT_ST_LUABLK"}, {"kind": "macro", "line": 132, "name": "VEDIT_ST_LUASTR", "signature": "#define VEDIT_ST_LUASTR"}, {"kind": "macro", "line": 135, "name": "VEDIT_KEY_UP", "signature": "#define VEDIT_KEY_UP"}, {"kind": "macro", "line": 136, "name": "VEDIT_KEY_DOWN", "signature": "#define VEDIT_KEY_DOWN"}, {"kind": "macro", "line": 137, "name": "VEDIT_KEY_LEFT", "signature": "#define VEDIT_KEY_LEFT"}, {"kind": "macro", "line": 138, "name": "VEDIT_KEY_RIGHT", "signature": "#define VEDIT_KEY_RIGHT"}, {"kind": "macro", "line": 139, "name": "VEDIT_KEY_HOME", "signature": "#define VEDIT_KEY_HOME"}, {"kind": "macro", "line": 140, "name": "VEDIT_KEY_END", "signature": "#define VEDIT_KEY_END"}, {"kind": "macro", "line": 141, "name": "VEDIT_KEY_PGUP", "signature": "#define VEDIT_KEY_PGUP"}, {"kind": "macro", "line": 142, "name": "VEDIT_KEY_PGDN", "signature": "#define VEDIT_KEY_PGDN"}, {"kind": "macro", "line": 143, "name": "VEDIT_KEY_DEL", "signature": "#define VEDIT_KEY_DEL"}, {"kind": "macro", "line": 144, "name": "VEDIT_KEY_ESC", "signature": "#define VEDIT_KEY_ESC"}, {"kind": "macro", "line": 1406, "name": "VEDIT_PROMPT_FIND", "signature": "#define VEDIT_PROMPT_FIND"}, {"kind": "macro", "line": 1407, "name": "VEDIT_PROMPT_GOTO", "signature": "#define VEDIT_PROMPT_GOTO"}, {"kind": "macro", "line": 1408, "name": "VEDIT_PROMPT_NAME", "signature": "#define VEDIT_PROMPT_NAME"}, {"kind": "macro", "line": 1409, "name": "VEDIT_PROMPT_LINK", "signature": "#define VEDIT_PROMPT_LINK"}]}, {"doc": "wl_client.h - Thin mailbox client for Wayland-mini (ADR-0026).", "id": "progs/wl/wl_client.h", "kind": "module", "label": "wl_client.h", "language": "h", "sha256": "d808777ea7878f5d", "symbol_count": 5, "symbols": [{"doc": "N tiled windows with real multitasking under the existing preemptive scheduler. File bytes stay here (stdio); names, frames and wire encoding stay in wl_mbox.h and wl_mini.h. Every bound fails closed, never truncates. #ifndef WL_CLIENT_H #define WL_CLIENT_H #include \"wl/wl_mbox.h\" #define WL_CLIENT_MSGS 6 /** Write one framed session message as its own mailbox file.", "kind": "function", "line": 21, "name": "wl_client_emit_file", "signature": "static inline int wl_client_emit_file(const char *box, unsigned int seq,\n const unsigned c..."}, {"doc": "Write the pixel blob the next attach sizes. Pixels first so the * server never attaches a surface whose raw file is missing.", "kind": "function", "line": 48, "name": "wl_client_raw_file", "signature": "static inline int wl_client_raw_file(const char *box,\n const unsigned char *px, int w, int h)"}, {"doc": "Attach one surface: pixels first, then display, bind, create, pool, attach and commit, each sequenced from seq0. Returns * WL_ERR_OK when all six messages landed.", "kind": "function", "line": 75, "name": "wl_client_attach", "signature": "static inline int wl_client_attach(const char *box, unsigned int seq0,\n const unsigned cha..."}, {"kind": "macro", "line": 14, "name": "WL_CLIENT_H", "signature": "#define WL_CLIENT_H"}, {"kind": "macro", "line": 18, "name": "WL_CLIENT_MSGS", "signature": "#define WL_CLIENT_MSGS"}]}, {"doc": "wl_mbox.h - Mailbox file transport for Wayland-mini (ADR-0026).", "id": "progs/wl/wl_mbox.h", "kind": "module", "label": "wl_mbox.h", "language": "h", "sha256": "eed9d1775f0ff923", "symbol_count": 26, "symbols": [{"kind": "struct", "line": 30, "name": "wl_mbox_box_t"}, {"kind": "function", "line": 36, "name": "wl_mbox_init", "signature": "static inline void wl_mbox_init(wl_mbox_box_t *boxes)"}, {"doc": "Box names are lowercase alphanumerics so they can never escape the * directory through dot or slash tricks.", "kind": "function", "line": 51, "name": "wl_mbox_box_ok", "signature": "static inline int wl_mbox_box_ok(const char *box)"}, {"doc": "if (ch >= '0' && ch <= '9') ok = 1; if (!ok) return WL_ERR_STR; n++; if (n >= WL_MBOX_BOX_MAX) return WL_ERR_STR; } if (n == 0) return WL_ERR_STR; return WL_ERR_OK; } /** Sequence as fixed 8 lowercase hex so names sort chronologically.", "kind": "function", "line": 74, "name": "wl_mbox_hex", "signature": "static inline int wl_mbox_hex(unsigned int v, char *dst)"}, {"kind": "function", "line": 87, "name": "wl_mbox_unhex", "signature": "static inline int wl_mbox_unhex(char ch, unsigned int *v)"}, {"doc": "Build WL_MBOX_DIR/box-seq.msg. Returns the length, never a prefix * of it, so a short buffer reads as an error and not a stray file.", "kind": "function", "line": 103, "name": "wl_mbox_name", "signature": "static inline int wl_mbox_name(char *dst, int cap, const char *box,\n unsigned int seq)"}, {"doc": "Parse a mailbox path back into box plus sequence. Only exact * matches pass; a renamed stray or a foreign suffix never dispatches.", "kind": "function", "line": 147, "name": "wl_mbox_parse", "signature": "static inline int wl_mbox_parse(const char *path, char *box, int boxcap,\n unsigned int *seq)"}, {"doc": "path += WL_MBOX_SEQ_HEX; i = 0; while (suf[i] != '\\0') { if (path[i] != suf[i]) return WL_ERR_STR; i++; } if (path[i] != '\\0') return WL_ERR_STR; seq = v; return WL_ERR_OK; } /** Raw pixel path beside the mailbox, sized w*h by the last attach.", "kind": "function", "line": 194, "name": "wl_mbox_raw_name", "signature": "static inline int wl_mbox_raw_name(char *dst, int cap, const char *box)"}, {"doc": "return WL_ERR_BOUND; dst[di++] = box[i++]; } i = 0; while (suf[i] != '\\0') { if (di >= cap - 1) return WL_ERR_BOUND; dst[di++] = suf[i++]; } dst[di] = '\\0'; return di; } /** Event path beside the mailbox, one fixed frame per focused box.", "kind": "function", "line": 225, "name": "wl_mbox_ev_name", "signature": "static inline int wl_mbox_ev_name(char *dst, int cap, const char *box)"}, {"doc": "Client box name: lowercase alnum program plus decimal pid, so two * instances of one app never share a mailbox. Pure, host-tested.", "kind": "function", "line": 257, "name": "wl_client_box", "signature": "static inline int wl_client_box(const char *prog, long pid, char *dst,\n int cap)"}, {"doc": "Frame one wire message: magic plus sequence plus the raw message. The reader refuses anything short, anything foreign and anything * with trailing bytes, so a torn write waits for the next poll.", "kind": "function", "line": 310, "name": "wl_mbox_frame_encode", "signature": "static inline int wl_mbox_frame_encode(unsigned char *dst, int cap,\n unsigned int seq, con..."}, {"kind": "function", "line": 332, "name": "wl_mbox_frame_decode", "signature": "static inline int wl_mbox_frame_decode(const unsigned char *src, int len,\n unsigned int *s..."}, {"doc": "Claim the slot a box owns, stable across polls, fail-closed when * the server is full or the name is wild.", "kind": "function", "line": 358, "name": "wl_mbox_assign", "signature": "static inline int wl_mbox_assign(wl_mbox_box_t *boxes, const char *box)"}, {"doc": "Freshness of an arriving sequence: a repeat of the last accepted one is a duplicate the server already consumed, anything else is * new work. Fail-closed on wild slots.", "kind": "function", "line": 394, "name": "wl_mbox_fresh", "signature": "static inline int wl_mbox_fresh(const wl_mbox_box_t *boxes, int slot,\n unsigned int seq)"}, {"doc": "Route one mailbox message to the compositor state. The box owns its slot, so a client id is only checked for range, never for global meaning: each connection speaks its own id space exactly like a real Wayland client, and the slot is the server resource. Attach reports w/h for the pixel load, commit reports -1 for no * change, anything else that validates reports the slot too.", "kind": "function", "line": 409, "name": "wl_mbox_route", "signature": "static inline int wl_mbox_route(wl_comp_t *c, wl_mbox_box_t *boxes,\n const char *box, unsi..."}, {"kind": "macro", "line": 15, "name": "WL_MBOX_H", "signature": "#define WL_MBOX_H"}, {"kind": "macro", "line": 19, "name": "WL_MBOX_DIR", "signature": "#define WL_MBOX_DIR"}, {"kind": "macro", "line": 20, "name": "WL_MBOX_SUFFIX", "signature": "#define WL_MBOX_SUFFIX"}, {"kind": "macro", "line": 21, "name": "WL_MBOX_RAW_SUFFIX", "signature": "#define WL_MBOX_RAW_SUFFIX"}, {"kind": "macro", "line": 22, "name": "WL_MBOX_EV_SUFFIX", "signature": "#define WL_MBOX_EV_SUFFIX"}, {"kind": "macro", "line": 23, "name": "WL_MBOX_BOX_MAX", "signature": "#define WL_MBOX_BOX_MAX"}, {"kind": "macro", "line": 24, "name": "WL_MBOX_NAME_MAX", "signature": "#define WL_MBOX_NAME_MAX"}, {"kind": "macro", "line": 25, "name": "WL_MBOX_MAGIC", "signature": "#define WL_MBOX_MAGIC"}, {"kind": "macro", "line": 26, "name": "WL_MBOX_FRAME_HEAD", "signature": "#define WL_MBOX_FRAME_HEAD"}, {"kind": "macro", "line": 27, "name": "WL_MBOX_POLL_MAX", "signature": "#define WL_MBOX_POLL_MAX"}, {"kind": "macro", "line": 28, "name": "WL_MBOX_SEQ_HEX", "signature": "#define WL_MBOX_SEQ_HEX"}]}, {"doc": "wl_mini.h - Wayland-mini subset contract (header-only, ADR-0024).", "id": "progs/wl/wl_mini.h", "kind": "module", "label": "wl_mini.h", "language": "h", "sha256": "7d07ea0fab275ae2", "symbol_count": 104, "symbols": [{"kind": "struct", "line": 57, "name": "wl_hdr_t"}, {"kind": "struct", "line": 63, "name": "wl_cfg_t"}, {"kind": "struct", "line": 251, "name": "wl_surface_t"}, {"kind": "struct", "line": 264, "name": "wl_comp_t"}, {"kind": "struct", "line": 860, "name": "wl_ev_t"}, {"kind": "struct", "line": 978, "name": "wl_client_t"}, {"kind": "struct", "line": 1016, "name": "wl_stream_t"}, {"doc": "Interface descriptor table, the hand-written wl_interface subset. request and event counts name what wl_dispatch answers, nothing * more; a scanner earns its place only if the subset grows.", "kind": "struct", "line": 1071, "name": "wl_iface_t"}, {"kind": "function", "line": 71, "name": "wl_hdr_encode", "signature": "static inline int wl_hdr_encode(unsigned char *dst, int cap,\n unsigned int id, unsigned in..."}, {"kind": "function", "line": 99, "name": "wl_hdr_decode", "signature": "static inline int wl_hdr_decode(const unsigned char *src, int len,\n wl_hdr_t *out)"}, {"kind": "function", "line": 128, "name": "wl_u32_encode", "signature": "static inline int wl_u32_encode(unsigned char *dst, int cap, int off,\n unsigned int v)"}, {"kind": "function", "line": 139, "name": "wl_u32_decode", "signature": "static inline int wl_u32_decode(const unsigned char *src, int len, int off,\n unsigned int *v)"}, {"kind": "function", "line": 150, "name": "wl_strlen_bounded", "signature": "static inline int wl_strlen_bounded(const char *s)"}, {"doc": "static inline int wl_strlen_bounded(const char *s) { int n = 0; if (!s) return WL_ERR_STR; while (s[n] != '\\0') { n++; if (n >= WL_MAX_STR) return WL_ERR_STR; } return n; } /* String arg: u32 len (incl. NUL) + bytes + pad to 4. Returns total or err.", "kind": "function", "line": 163, "name": "wl_str_encode", "signature": "static inline int wl_str_encode(unsigned char *dst, int cap, int off,\n const char *s)"}, {"kind": "function", "line": 188, "name": "wl_str_decode", "signature": "static inline int wl_str_decode(const unsigned char *src, int len, int off,\n char *dst, in..."}, {"kind": "function", "line": 214, "name": "wl_surface_id_valid", "signature": "static inline int wl_surface_id_valid(unsigned int id)"}, {"kind": "function", "line": 219, "name": "wl_pool_id_valid", "signature": "static inline int wl_pool_id_valid(unsigned int id)"}, {"kind": "function", "line": 223, "name": "wl_pool_fit", "signature": "static inline int wl_pool_fit(int w, int h)"}, {"kind": "function", "line": 271, "name": "wl_comp_init", "signature": "static inline void wl_comp_init(wl_comp_t *c)"}, {"doc": "Refresh the active flag from z-order: only the top-most mapped, non-minimized surface reads active. Single place so focus, add and * remove can never disagree on which title paints bright.", "kind": "function", "line": 289, "name": "wl_comp_refresh_active", "signature": "static inline void wl_comp_refresh_active(wl_comp_t *c)"}, {"kind": "function", "line": 309, "name": "wl_comp_add", "signature": "static inline int wl_comp_add(wl_comp_t *c, unsigned int id, int w, int h)"}, {"kind": "function", "line": 345, "name": "wl_comp_remove", "signature": "static inline int wl_comp_remove(wl_comp_t *c, unsigned int id)"}, {"kind": "function", "line": 372, "name": "wl_comp_focus", "signature": "static inline int wl_comp_focus(wl_comp_t *c, unsigned int id)"}, {"kind": "function", "line": 397, "name": "wl_comp_hit", "signature": "static inline int wl_comp_hit(const wl_comp_t *c, int x, int y)"}, {"doc": "Classify a point inside one surface: close button first, then title drag strip, then the resize rim, else body. Points outside fail closed with HIT_NONE. Geometry mirrors wlcomp_blit_chrome so * clicks and pixels can never disagree.", "kind": "function", "line": 415, "name": "wl_surface_hit_zone", "signature": "static inline int wl_surface_hit_zone(const wl_surface_t *s, int x, int y)"}, {"doc": "Minimize/restore one surface. Minimized surfaces keep their slot and geometry but skip hit testing, tiling and compositing until * restored.", "kind": "function", "line": 441, "name": "wl_comp_set_minimized", "signature": "static inline int wl_comp_set_minimized(wl_comp_t *c, unsigned int id,\n int minimized)"}, {"kind": "function", "line": 456, "name": "wl_comp_set_color", "signature": "static inline int wl_comp_set_color(wl_comp_t *c, unsigned int id, int color)"}, {"kind": "function", "line": 481, "name": "wlcomp_render", "signature": "static inline int wlcomp_render(const wl_comp_t *c, unsigned char *fb,\n int fb_w, int fb_h)"}, {"doc": "Move and resize a mapped surface. Geometry validates through wl_pool_fit; positions allow a one-screen negative margin so a drag * can park a surface partly offscreen, anything beyond fails closed.", "kind": "function", "line": 519, "name": "wl_comp_set_rect", "signature": "static inline int wl_comp_set_rect(wl_comp_t *c, unsigned int id,\n int x, int y, int w, in..."}, {"doc": "Tile every mapped surface over the frame in z-order. One surface fills the frame, two split it vertically, three or more form a rows-by-columns grid with the last row and column absorbing the integer remainder. Returns the tiled count, fail-closed when there * is nothing mapped or the frame is degenerate.", "kind": "function", "line": 546, "name": "wl_comp_layout_tile", "signature": "static inline int wl_comp_layout_tile(wl_comp_t *c, int fb_w, int fb_h)"}, {"doc": "Composite the surface stack with real client pixels. px, pw and ph are slot-indexed tables over items[]; a null slot entry renders the surface solid color exactly like wlcomp_render, which keeps single color clients working. A present pixel table whose dimensions differ * from the surface fails closed. Null table means all solid.", "kind": "function", "line": 606, "name": "wlcomp_blit", "signature": "static inline int wlcomp_blit(const wl_comp_t *c, unsigned char *fb,\n int fb_w, int fb_h, ..."}, {"doc": "Composite with window chrome: a title strip inside the frame paints active vs inactive, with a close box at its right end, and client pixels fill only below it. Small surfaces render exactly like wlcomp_blit so the legacy selftest vectors never move. Pure * function, same fail-closed bounds as wlcomp_blit, same slot tables.", "kind": "function", "line": 669, "name": "wlcomp_blit_chrome", "signature": "static inline int wlcomp_blit_chrome(const wl_comp_t *c, unsigned char *fb,\n int fb_w, int..."}, {"doc": "Nearest-neighbour scale of an indexed frame, the compositor side of a client buffer meeting a layout cell of another size. A real compositor scales or clips; refusing would unmap every client the moment it tiles, so the resample stays exact and bounded instead. Fail-closed on null or degenerate geometry and on arithmetic the * frame cannot hold.", "kind": "function", "line": 744, "name": "wl_scale_nearest", "signature": "static inline int wl_scale_nearest(unsigned char *dst, int dw, int dh,\n const unsigned cha..."}, {"doc": "Attach payload: u32 pool id, u32 width, u32 height. The client speaks it over the mailbox transport; the compositor decodes it before touching any pixel, so a wild pool or an oversized frame never * reaches layout.", "kind": "function", "line": 774, "name": "wl_attach_encode", "signature": "static inline int wl_attach_encode(unsigned char *dst, int cap,\n unsigned int pool, int w,..."}, {"kind": "function", "line": 793, "name": "wl_attach_decode", "signature": "static inline int wl_attach_decode(const unsigned char *src, int len,\n unsigned int *pool,..."}, {"doc": "Commit payload: u32 surface id naming the surface whose attached * buffer becomes visible. Wild ids fail closed, never focus a stranger.", "kind": "function", "line": 821, "name": "wl_commit_encode", "signature": "static inline int wl_commit_encode(unsigned char *dst, int cap,\n unsigned int id)"}, {"kind": "function", "line": 834, "name": "wl_commit_decode", "signature": "static inline int wl_commit_decode(const unsigned char *src, int len,\n unsigned int *id)"}, {"kind": "function", "line": 870, "name": "wl_ev_encode", "signature": "static inline int wl_ev_encode(unsigned char *dst, int cap,\n const wl_ev_t *ev)"}, {"kind": "function", "line": 900, "name": "wl_ev_decode", "signature": "static inline int wl_ev_decode(const unsigned char *src, int len,\n wl_ev_t *ev)"}, {"doc": "Map a frame point into a client's raw buffer coords. The content area starts below the 1px border plus the title bar; the scale covers layout cells differing from attach dims. Outside maps to * (-1,-1) with 0, never a clamped edge that would warp clicks.", "kind": "function", "line": 943, "name": "wl_ev_map", "signature": "static inline int wl_ev_map(int fx, int fy, int sx, int sy, int sw,\n int sh, int rw, int r..."}, {"kind": "function", "line": 984, "name": "wl_client_init", "signature": "static inline void wl_client_init(wl_client_t *cl)"}, {"kind": "function", "line": 992, "name": "wl_client_surface", "signature": "static inline int wl_client_surface(wl_client_t *cl, unsigned int *id)"}, {"kind": "function", "line": 1001, "name": "wl_client_pool", "signature": "static inline int wl_client_pool(wl_client_t *cl, unsigned int *id)"}, {"kind": "function", "line": 1021, "name": "wl_stream_init", "signature": "static inline void wl_stream_init(wl_stream_t *s)"}, {"kind": "function", "line": 1027, "name": "wl_stream_feed", "signature": "static inline int wl_stream_feed(wl_stream_t *s, const unsigned char *src,\n int n)"}, {"kind": "function", "line": 1042, "name": "wl_stream_next", "signature": "static inline int wl_stream_next(wl_stream_t *s, int *size)"}, {"kind": "function", "line": 1058, "name": "wl_stream_consume", "signature": "static inline int wl_stream_consume(wl_stream_t *s, int n)"}, {"kind": "function", "line": 1079, "name": "wl_iface_find", "signature": "static inline int wl_iface_find(const char *name)"}, {"doc": "Bind an attached buffer to a surface, keeping its position. The pool id stands in for the passed fd miniOS cannot carry, validated * here before any pixel is ever addressed through it.", "kind": "function", "line": 1110, "name": "wl_comp_attach_buf", "signature": "static inline int wl_comp_attach_buf(wl_comp_t *c, unsigned int id,\n unsigned int pool, in..."}, {"doc": "Route one framed request to the compositor state, the protocol.c plus server.c shape collapsed into one pure function. Unknown ids name strangers, unknown opcodes name unimplemented verbs, short * payloads never reach the surface they address.", "kind": "function", "line": 1137, "name": "wl_dispatch", "signature": "static inline int wl_dispatch(wl_comp_t *c, wl_client_t *cl,\n unsigned int id, unsigned in..."}, {"kind": "function", "line": 851, "name": "coords", "signature": "* coords (mapped by wl_ev_map, -1 when outside), wheel is a * monotonic total the client diffs, scancodes are raw Set-1 bytes * (E0 prefixes included) the client's own translator consumes. * A slow cl"}, {"kind": "macro", "line": 18, "name": "WL_MINI_H", "signature": "#define WL_MINI_H"}, {"kind": "macro", "line": 20, "name": "WL_MAX_MSG", "signature": "#define WL_MAX_MSG"}, {"kind": "macro", "line": 21, "name": "WL_MAX_STR", "signature": "#define WL_MAX_STR"}, {"kind": "macro", "line": 22, "name": "WL_MAX_SURFACES", "signature": "#define WL_MAX_SURFACES"}, {"kind": "macro", "line": 23, "name": "WL_MAX_POOLS", "signature": "#define WL_MAX_POOLS"}, {"kind": "macro", "line": 24, "name": "WL_SURF_MAX_W", "signature": "#define WL_SURF_MAX_W"}, {"kind": "macro", "line": 25, "name": "WL_SURF_MAX_H", "signature": "#define WL_SURF_MAX_H"}, {"kind": "macro", "line": 26, "name": "WL_POOL_MAX", "signature": "#define WL_POOL_MAX"}, {"kind": "macro", "line": 27, "name": "WL_HDR_SZ", "signature": "#define WL_HDR_SZ"}, {"kind": "macro", "line": 28, "name": "WL_ATTACH_SZ", "signature": "#define WL_ATTACH_SZ"}, {"kind": "macro", "line": 29, "name": "WL_COMMIT_SZ", "signature": "#define WL_COMMIT_SZ"}, {"kind": "macro", "line": 31, "name": "WL_ERR_OK", "signature": "#define WL_ERR_OK"}, {"kind": "macro", "line": 32, "name": "WL_ERR_BOUND", "signature": "#define WL_ERR_BOUND"}, {"kind": "macro", "line": 33, "name": "WL_ERR_TRUNC", "signature": "#define WL_ERR_TRUNC"}, {"kind": "macro", "line": 34, "name": "WL_ERR_SIZE", "signature": "#define WL_ERR_SIZE"}, {"kind": "macro", "line": 35, "name": "WL_ERR_ID", "signature": "#define WL_ERR_ID"}, {"kind": "macro", "line": 36, "name": "WL_ERR_STR", "signature": "#define WL_ERR_STR"}, {"kind": "macro", "line": 37, "name": "WL_ERR_MORE", "signature": "#define WL_ERR_MORE"}, {"kind": "macro", "line": 39, "name": "WL_ID_DISPLAY", "signature": "#define WL_ID_DISPLAY"}, {"kind": "macro", "line": 40, "name": "WL_ID_REGISTRY", "signature": "#define WL_ID_REGISTRY"}, {"kind": "macro", "line": 41, "name": "WL_ID_COMPOSITOR", "signature": "#define WL_ID_COMPOSITOR"}, {"kind": "macro", "line": 42, "name": "WL_ID_SHM", "signature": "#define WL_ID_SHM"}, {"kind": "macro", "line": 43, "name": "WL_ID_XDG_BASE", "signature": "#define WL_ID_XDG_BASE"}, {"kind": "macro", "line": 44, "name": "WL_ID_SURFACE_BASE", "signature": "#define WL_ID_SURFACE_BASE"}, {"kind": "macro", "line": 45, "name": "WL_ID_POOL_BASE", "signature": "#define WL_ID_POOL_BASE"}, {"kind": "macro", "line": 46, "name": "WL_ID_BUFFER_BASE", "signature": "#define WL_ID_BUFFER_BASE"}, {"kind": "macro", "line": 48, "name": "WL_OP_DISPLAY_GET_REGISTRY", "signature": "#define WL_OP_DISPLAY_GET_REGISTRY"}, {"kind": "macro", "line": 49, "name": "WL_OP_REGISTRY_BIND", "signature": "#define WL_OP_REGISTRY_BIND"}, {"kind": "macro", "line": 50, "name": "WL_OP_COMPOSITOR_CREATE_SURFACE", "signature": "#define WL_OP_COMPOSITOR_CREATE_SURFACE"}, {"kind": "macro", "line": 51, "name": "WL_OP_SHM_CREATE_POOL", "signature": "#define WL_OP_SHM_CREATE_POOL"}, {"kind": "macro", "line": 52, "name": "WL_OP_POOL_CREATE_BUFFER", "signature": "#define WL_OP_POOL_CREATE_BUFFER"}, {"kind": "macro", "line": 53, "name": "WL_OP_SURFACE_ATTACH", "signature": "#define WL_OP_SURFACE_ATTACH"}, {"kind": "macro", "line": 54, "name": "WL_OP_SURFACE_COMMIT", "signature": "#define WL_OP_SURFACE_COMMIT"}, {"kind": "macro", "line": 55, "name": "WL_OP_XDG_GET_TOPLEVEL", "signature": "#define WL_OP_XDG_GET_TOPLEVEL"}, {"kind": "macro", "line": 69, "name": "WL_CFG_DEFAULT", "signature": "#define WL_CFG_DEFAULT"}, {"kind": "macro", "line": 238, "name": "WL_TITLE_H", "signature": "#define WL_TITLE_H"}, {"kind": "macro", "line": 239, "name": "WL_CLOSE_W", "signature": "#define WL_CLOSE_W"}, {"kind": "macro", "line": 240, "name": "WL_RESIZE_EDGE", "signature": "#define WL_RESIZE_EDGE"}, {"kind": "macro", "line": 241, "name": "WL_TITLE_ACTIVE", "signature": "#define WL_TITLE_ACTIVE"}, {"kind": "macro", "line": 242, "name": "WL_TITLE_INACTIVE", "signature": "#define WL_TITLE_INACTIVE"}, {"kind": "macro", "line": 243, "name": "WL_CLOSE_INK", "signature": "#define WL_CLOSE_INK"}, {"kind": "macro", "line": 245, "name": "WL_HIT_NONE", "signature": "#define WL_HIT_NONE"}, {"kind": "macro", "line": 246, "name": "WL_HIT_BODY", "signature": "#define WL_HIT_BODY"}, {"kind": "macro", "line": 247, "name": "WL_HIT_TITLE", "signature": "#define WL_HIT_TITLE"}, {"kind": "macro", "line": 248, "name": "WL_HIT_CLOSE", "signature": "#define WL_HIT_CLOSE"}, {"kind": "macro", "line": 249, "name": "WL_HIT_RESIZE", "signature": "#define WL_HIT_RESIZE"}, {"kind": "macro", "line": 478, "name": "WLCOMP_BG", "signature": "#define WLCOMP_BG"}, {"kind": "macro", "line": 479, "name": "WLCOMP_BORDER", "signature": "#define WLCOMP_BORDER"}, {"kind": "macro", "line": 856, "name": "WL_EV_MAGIC", "signature": "#define WL_EV_MAGIC"}, {"kind": "macro", "line": 857, "name": "WL_EV_SC_MAX", "signature": "#define WL_EV_SC_MAX"}, {"kind": "macro", "line": 858, "name": "WL_EV_SZ", "signature": "#define WL_EV_SZ"}, {"kind": "macro", "line": 1014, "name": "WL_STREAM_CAP", "signature": "#define WL_STREAM_CAP"}, {"kind": "macro", "line": 1077, "name": "WL_IFACE_COUNT", "signature": "#define WL_IFACE_COUNT"}]}, {"doc": "Docstring: heap pixel store for the Wayland-mini server.", "id": "progs/wl/wl_pixbuf.h", "kind": "module", "label": "wl_pixbuf.h", "language": "h", "sha256": "49a04e307d807e83", "symbol_count": 18, "symbols": [{"doc": "#ifndef WPIX_MAX_H #define WPIX_MAX_H WL_SURF_MAX_H #endif #ifndef WPIX_SLOT_MAX #define WPIX_SLOT_MAX WL_POOL_MAX #endif #ifndef WPIX_BUDGET_MAX #define WPIX_BUDGET_MAX (WL_MAX_SURFACES * WL_POOL_MAX) #endif /** Docstring: one slot cache, empty when p is null or w*h is zero.", "kind": "struct", "line": 48, "name": "wpix_slot"}, {"doc": "#endif #ifndef WPIX_BUDGET_MAX #define WPIX_BUDGET_MAX (WL_MAX_SURFACES * WL_POOL_MAX) #endif /** Docstring: one slot cache, empty when p is null or w*h is zero. struct wpix_slot { unsigned char *p; int w; int h; }; /** Docstring: slot caches plus one reusable raw/decode scratch pair.", "kind": "struct", "line": 55, "name": "wpix_store"}, {"doc": "unsigned char *p; int w; int h; }; /** Docstring: slot caches plus one reusable raw/decode scratch pair. struct wpix_store { struct wpix_slot slots[WPIX_MAX_SLOTS]; unsigned char *tmp_raw; unsigned char *tmp_dst; size_t tmp_cap; }; /** Docstring: zero init every slot and scratch pointer.", "kind": "function", "line": 63, "name": "wpix_init", "signature": "static int wpix_init(struct wpix_store *s)"}, {"doc": "size_t k = 0; if (s == NULL) return -1; for (k = 0; k < (size_t)WPIX_MAX_SLOTS; k++) { s->slots[k].p = NULL; s->slots[k].w = 0; s->slots[k].h = 0; } s->tmp_raw = NULL; s->tmp_dst = NULL; s->tmp_cap = 0; return 0; } /** Docstring: release every slot and scratch buffer, back to zero init.", "kind": "function", "line": 78, "name": "wpix_free", "signature": "static void wpix_free(struct wpix_store *s)"}, {"doc": "for (k = 0; k < (size_t)WPIX_MAX_SLOTS; k++) { free(s->slots[k].p); s->slots[k].p = NULL; s->slots[k].w = 0; s->slots[k].h = 0; } free(s->tmp_raw); free(s->tmp_dst); s->tmp_raw = NULL; s->tmp_dst = NULL; s->tmp_cap = 0; } /** Docstring: live pixel bytes held across all slots.", "kind": "function", "line": 95, "name": "wpix_used", "signature": "static size_t wpix_used(const struct wpix_store *s)"}, {"doc": "/** Docstring: live pixel bytes held across all slots. static size_t wpix_used(const struct wpix_store *s) { size_t k = 0; size_t n = 0; if (s == NULL) return 0; for (k = 0; k < (size_t)WPIX_MAX_SLOTS; k++) { if (s->slots[k].p != NULL && s->slots[k].w > 0 && s->slots[k].h > 0) n += (size_t)s->slots[k].w * (size_t)s->slots[k].h; } return n; } /** Docstring: readable pixels for slot idx, null when empty or wild.", "kind": "function", "line": 107, "name": "wpix_ptr", "signature": "static unsigned char *wpix_ptr(struct wpix_store *s, int idx)"}, {"doc": "n += (size_t)s->slots[k].w * (size_t)s->slots[k].h; } return n; } /** Docstring: readable pixels for slot idx, null when empty or wild. static unsigned char *wpix_ptr(struct wpix_store *s, int idx) { if (s == NULL || idx < 0 || idx >= WPIX_MAX_SLOTS) return NULL; if (s->slots[idx].p == NULL || s->slots[idx].w <= 0 || s->slots[idx].h <= 0) return NULL; return s->slots[idx].p; } /** Docstring: raw scratch for mailbox file reads, null below capacity.", "kind": "function", "line": 115, "name": "wpix_raw", "signature": "static unsigned char *wpix_raw(struct wpix_store *s)"}, {"doc": "static unsigned char *wpix_ptr(struct wpix_store *s, int idx) { if (s == NULL || idx < 0 || idx >= WPIX_MAX_SLOTS) return NULL; if (s->slots[idx].p == NULL || s->slots[idx].w <= 0 || s->slots[idx].h <= 0) return NULL; return s->slots[idx].p; } /** Docstring: raw scratch for mailbox file reads, null below capacity. static unsigned char *wpix_raw(struct wpix_store *s) { if (s == NULL) return NULL; return s->tmp_raw; } /** Docstring: decode scratch for resampled cells, null below capacity.", "kind": "function", "line": 121, "name": "wpix_dst", "signature": "static unsigned char *wpix_dst(struct wpix_store *s)"}, {"doc": "/** Docstring: raw scratch for mailbox file reads, null below capacity. static unsigned char *wpix_raw(struct wpix_store *s) { if (s == NULL) return NULL; return s->tmp_raw; } /** Docstring: decode scratch for resampled cells, null below capacity. static unsigned char *wpix_dst(struct wpix_store *s) { if (s == NULL) return NULL; return s->tmp_dst; } /** Docstring: drop slot pixels and release its memory to the budget.", "kind": "function", "line": 127, "name": "wpix_drop", "signature": "static void wpix_drop(struct wpix_store *s, int idx)"}, {"doc": "if (s == NULL) return NULL; return s->tmp_dst; } /** Docstring: drop slot pixels and release its memory to the budget. static void wpix_drop(struct wpix_store *s, int idx) { if (s == NULL || idx < 0 || idx >= WPIX_MAX_SLOTS) return; free(s->slots[idx].p); s->slots[idx].p = NULL; s->slots[idx].w = 0; s->slots[idx].h = 0; } /** Docstring: grow both scratch buffers to need bytes, old kept on failure.", "kind": "function", "line": 136, "name": "wpix_tmp", "signature": "static int wpix_tmp(struct wpix_store *s, size_t need)"}, {"doc": "if (s == NULL) return -1; if (need == 0 || need > (size_t)WPIX_SLOT_MAX) return -1; if (s->tmp_cap >= need) return 0; nr = (unsigned char *)realloc(s->tmp_raw, need); if (nr == NULL) return -1; s->tmp_raw = nr; nd = (unsigned char *)realloc(s->tmp_dst, need); if (nd == NULL) return -1; s->tmp_dst = nd; s->tmp_cap = need; return 0; } /** Docstring: size slot idx for w*h cells inside bounds and budget.", "kind": "function", "line": 153, "name": "wpix_ensure", "signature": "static int wpix_ensure(struct wpix_store *s, int idx, int w, int h)"}, {"doc": "if (s->slots[idx].p != NULL && s->slots[idx].w == w && s->slots[idx].h == h) return 0; if (s->slots[idx].p != NULL && s->slots[idx].w > 0 && s->slots[idx].h > 0) old = (size_t)s->slots[idx].w * (size_t)s->slots[idx].h; if (wpix_used(s) - old + cells > (size_t)WPIX_BUDGET_MAX) return -1; np = (unsigned char *)realloc(s->slots[idx].p, cells); if (np == NULL) return -1; s->slots[idx].p = np; s->slots[idx].w = w; s->slots[idx].h = h; return 0; } /** Docstring: copy cells into a matching slot, fail closed on mismatch.", "kind": "function", "line": 175, "name": "wpix_commit", "signature": "static int wpix_commit(struct wpix_store *s, int idx, const unsigned char *src, int w, int h)"}, {"kind": "macro", "line": 17, "name": "MINIOS_WL_PIXBUF_H", "signature": "#define MINIOS_WL_PIXBUF_H"}, {"kind": "macro", "line": 28, "name": "WPIX_MAX_SLOTS", "signature": "#define WPIX_MAX_SLOTS"}, {"kind": "macro", "line": 32, "name": "WPIX_MAX_W", "signature": "#define WPIX_MAX_W"}, {"kind": "macro", "line": 36, "name": "WPIX_MAX_H", "signature": "#define WPIX_MAX_H"}, {"kind": "macro", "line": 40, "name": "WPIX_SLOT_MAX", "signature": "#define WPIX_SLOT_MAX"}, {"kind": "macro", "line": 44, "name": "WPIX_BUDGET_MAX", "signature": "#define WPIX_BUDGET_MAX"}]}, {"doc": "wlcomp - Wayland-mini ring-3 compositor (ADR-0024, ADR-0026).", "id": "progs/wl/wlcomp.c", "kind": "module", "label": "wlcomp.c", "language": "c", "sha256": "3993e0c82d20fb5d", "symbol_count": 43, "symbols": [{"doc": "#include #include #include \"minios_abi.h\" #include \"nk_palette.h\" #include \"wl_mini.h\" #include \"wl/wl_mbox.h\" #include \"wl/wl_client.h\" #include \"wl/wl_pixbuf.h\" #define WLCOMP_W 800 #define WLCOMP_H 360 /** Centralized compositor configuration, no magic numbers at call sites.", "kind": "struct", "line": 43, "name": "wlcomp_cfg_t"}, {"kind": "struct", "line": 397, "name": "wlserv_t"}, {"doc": "wlserv_drop(s, idx); s->rw[idx] = w; s->rh[idx] = h; } } changed = 1; p += nl + 1; } if (changed) wlserv_recolor(&s->comp); return changed; } /** Client pattern table, one row per attachable demo client.", "kind": "struct", "line": 967, "name": "wlclient_pat_t"}, {"kind": "function", "line": 55, "name": "wlcomp_sys_title", "signature": "static long wlcomp_sys_title(const char *t)"}, {"kind": "function", "line": 63, "name": "wlcomp_sys_present", "signature": "static long wlcomp_sys_present(long buf)"}, {"kind": "function", "line": 71, "name": "wlcomp_sys_present_origin", "signature": "static long wlcomp_sys_present_origin(long buf, int *origin)"}, {"kind": "function", "line": 79, "name": "wlcomp_sys_palette", "signature": "static long wlcomp_sys_palette(unsigned char *pal)"}, {"kind": "function", "line": 87, "name": "wlcomp_sys_mouse", "signature": "static long wlcomp_sys_mouse(int *m)"}, {"kind": "function", "line": 95, "name": "wlcomp_sys_kbd", "signature": "static long wlcomp_sys_kbd(void)"}, {"kind": "function", "line": 103, "name": "wlcomp_sys_kbd_raw", "signature": "static long wlcomp_sys_kbd_raw(long on)"}, {"kind": "function", "line": 111, "name": "wlcomp_sys_vga_mode", "signature": "static long wlcomp_sys_vga_mode(long on)"}, {"kind": "function", "line": 119, "name": "wlcomp_sys_yield", "signature": "static long wlcomp_sys_yield(void)"}, {"kind": "function", "line": 127, "name": "wlcomp_sys_dir_list", "signature": "static long wlcomp_sys_dir_list(const char *path, char *buf, long cap)"}, {"doc": "Upload the shared hybrid palette so indexed pixels expand through * desktop-exact colors on every VBE mode instead of the gray ramp.", "kind": "function", "line": 137, "name": "wlcomp_palette", "signature": "static int wlcomp_palette(void)"}, {"doc": "Paint a deterministic test pattern so the demo proves real pixels * travelled the blit path instead of solid fills.", "kind": "function", "line": 148, "name": "wlcomp_pattern", "signature": "static void wlcomp_pattern(unsigned char *dst, int w, int h,\n unsigned char a, unsigned ch..."}, {"kind": "function", "line": 187, "name": "wlcomp_demo", "signature": "static int wlcomp_demo(wl_comp_t *c)"}, {"doc": "if (wl_comp_add(c, s1, 320, 200) != WL_ERR_OK) return 1; if (wl_comp_set_color(c, s0, 4) != WL_ERR_OK) return 1; if (wl_comp_set_color(c, s1, 6) != WL_ERR_OK) return 1; if (wl_comp_layout_tile(c, WLCOMP_W, WLCOMP_H) != 2) return 1; if (wl_comp_focus(c, s0) != WL_ERR_OK) return 1; return 0; } /** Composite the tiled demo with real client pixels into the frame.", "kind": "function", "line": 212, "name": "wlcomp_demo_blit", "signature": "static int wlcomp_demo_blit(wl_comp_t *c, unsigned char *fb)"}, {"doc": "wlcomp_pattern(p1, w1, h1, cfg.check_a, cfg.check_b, 1); px[c->order[0]] = p0; pw[c->order[0]] = w0; ph[c->order[0]] = h0; px[c->order[1]] = p1; pw[c->order[1]] = w1; ph[c->order[1]] = h1; rc = wlcomp_blit(c, fb, WLCOMP_W, WLCOMP_H, px, pw, ph); free(p0); free(p1); return rc != WL_ERR_OK; } /** Append one header-only request to a session buffer.", "kind": "function", "line": 258, "name": "wlcomp_emit", "signature": "static int wlcomp_emit(unsigned char *s, int cap, int o, unsigned int id,\n unsigned int op..."}, {"doc": "Drive a full client session through stream plus dispatch. The byte * feed splits mid-header so reassembly is proven, not assumed.", "kind": "function", "line": 270, "name": "wlcomp_session", "signature": "static int wlcomp_session(wl_comp_t *c, wl_client_t *cl)"}, {"kind": "function", "line": 343, "name": "wlcomp_selftest", "signature": "static int wlcomp_selftest(void)"}, {"kind": "function", "line": 408, "name": "wlserv_init", "signature": "static void wlserv_init(wlserv_t *s)"}, {"doc": "wl_mbox_init(s->boxes); wpix_init(&wlserv_pix); for (i = 0; i < WL_MAX_SURFACES; i++) { s->pw[i] = 0; s->ph[i] = 0; s->rw[i] = 0; s->rh[i] = 0; } s->origin[0] = 0; s->origin[1] = 0; s->last_count = 0; } /** Items index owning a surface id, or -1 for a stranger.", "kind": "function", "line": 425, "name": "wlserv_slot", "signature": "static int wlserv_slot(const wl_comp_t *c, unsigned int id)"}, {"doc": "Paint every mapped slot a distinct desktop-exact ink so clients * without pixels still read as separate windows.", "kind": "function", "line": 438, "name": "wlserv_recolor", "signature": "static void wlserv_recolor(wl_comp_t *c)"}, {"doc": "Composite the cached pixels and present with palette uploaded, capturing the content origin for pointer translation. Chrome (title bar plus close box plus active focus) paints here so every * frame carries real window decorations.", "kind": "function", "line": 455, "name": "wlserv_present", "signature": "static int wlserv_present(wlserv_t *s)"}, {"doc": "return 1; for (i = 0; i < WL_MAX_SURFACES; i++) px[i] = s->pw[i] > 0 && s->ph[i] > 0 ? wpix_ptr(&wlserv_pix, i) : 0; if (wlcomp_blit_chrome(&s->comp, fb, WLCOMP_W, WLCOMP_H, px, s->pw, s->ph) != WL_ERR_OK) return 1; wlcomp_sys_title(\"wlcomp\"); if (wlcomp_sys_present_origin((long)MINIOS_GFX_BUF_NK, s->origin) != 0) return 1; return 0; } /** Drop one slot cache so its surface falls back to solid ink.", "kind": "function", "line": 476, "name": "wlserv_drop", "signature": "static void wlserv_drop(wlserv_t *s, int idx)"}, {"doc": "Fit every mapped surface to its laid-out size: reload the box raw file at attach dims, then resample into the live cell. Heap slots size on geometry change only, so steady frames allocate nothing; any short file or size lie drops that cache, never a neighbour, * so one hostile client cannot blank the desktop.", "kind": "function", "line": 489, "name": "wlserv_fit", "signature": "static void wlserv_fit(wlserv_t *s)"}, {"doc": "Unlink stray .msg files no client owns: names that fail the exact mailbox parse can never dispatch, so they are dead weight from a * crashed client. The mirror flag carries no suffix and is kept.", "kind": "function", "line": 578, "name": "wlserv_gc_strays", "signature": "static void wlserv_gc_strays(void)"}, {"doc": "Server-to-client input delivery (ADR-0026 live step). The server owns PS/2 while it owns the display, so it forwards raw scancodes plus mapped pointer state to the focused box through its .ev file. Queues are static (never malloc): a full queue drops the oldest * byte, a slow client loses middle batches by seq design. static unsigned char wlserv_ev_pend[WL_MAX_SURFACES][WL_EV_SC_MAX]; static unsigned wlserv_ev_npend[WL_MAX_SURFACES]; static unsigned wlserv_ev_seq[WL_MAX_SURFACES]; static unsigned wlserv_ev_wheel = 0; /** Focused box slot, or -1 when no mapped window holds input.", "kind": "function", "line": 640, "name": "wlserv_focus_box", "signature": "static int wlserv_focus_box(const wlserv_t *s)"}, {"doc": "Queue one raw byte for the focused client. Bytes nobody owns are * dropped, never buffered: input without a window is noise.", "kind": "function", "line": 658, "name": "wlserv_key", "signature": "static void wlserv_key(wlserv_t *s, unsigned char byte)"}, {"doc": "b = wlserv_focus_box(s); if (b < 0) return; n = wlserv_ev_npend[b]; if (n >= WL_EV_SC_MAX) { for (i = 0; i + 1 < WL_EV_SC_MAX; i++) wlserv_ev_pend[b][i] = wlserv_ev_pend[b][i + 1]; n = WL_EV_SC_MAX - 1; } wlserv_ev_pend[b][n] = byte; wlserv_ev_npend[b] = n + 1; } /** Drop a slot queue without serving it.", "kind": "function", "line": 678, "name": "wlserv_ev_clear", "signature": "static void wlserv_ev_clear(wlserv_t *s, int b)"}, {"doc": "Push the current input state to the focused box. Frame coords map into the client's raw buffer through wl_ev_map; outside is (-1,-1) so the client never warps a click. The queue clears after write, * which is what keeps batches from replaying.", "kind": "function", "line": 689, "name": "wlserv_push_ev", "signature": "static void wlserv_push_ev(wlserv_t *s, int fx, int fy, int buttons)"}, {"doc": "Unlink every stale .ev file so no dead input replays after a restart. Runs once at server start; live files are rewritten by * their owners from then on.", "kind": "function", "line": 737, "name": "wlserv_clean_ev", "signature": "static void wlserv_clean_ev(void)"}, {"doc": "Close one surface by id: remove it, free its box slot for the next client, drop its cache and unlink its raw pixels. Returns 1 when something closed. A live client re-attaches on its next frame, so closing a live window also wants the client's job killed from the * shell; the box name carries the client pid for exactly that.", "kind": "function", "line": 780, "name": "wlserv_close", "signature": "static int wlserv_close(wlserv_t *s, unsigned int id)"}, {"doc": "Drain at most WL_MBOX_POLL_MAX mailbox files: validate every frame before dispatch, unlink what was consumed, and leave torn writes * for the next poll. Returns 1 when pixels changed.", "kind": "function", "line": 814, "name": "wlserv_drain", "signature": "static int wlserv_drain(wlserv_t *s)"}, {"kind": "function", "line": 977, "name": "wlclient_find", "signature": "static const wlclient_pat_t *wlclient_find(const char *name)"}, {"doc": "Attach one client surface from a second process through the shared wl_client.h transport: pixels first so the server never attaches a surface whose raw file is missing, then the six-message session, each sequenced. One-shot malloc is fine here; the server * hot loop is the path that must never allocate.", "kind": "function", "line": 1006, "name": "wlcomp_client", "signature": "static int wlcomp_client(const char *box, const char *pat)"}, {"doc": "cp->w, cp->h) != WL_ATTACH_SZ) return 1; if (wl_client_emit_file(box, seq++, msg, 20) != WL_ERR_OK) return 1; if (wl_hdr_encode(msg, sizeof msg, WL_ID_SURFACE_BASE, WL_OP_SURFACE_COMMIT, 8, &h) != WL_ERR_OK) return 1; if (wl_client_emit_file(box, seq++, msg, 8) != WL_ERR_OK) return 1; printf(\"wlcomp: client %s attached (%dx%d)\\n\", box, cp->w, cp->h); return 0; } /** Unlink every mailbox file so a new session starts clean.", "kind": "function", "line": 1072, "name": "wlcomp_clean", "signature": "static int wlcomp_clean(void)"}, {"doc": "Drain once and exit so scripts prove multiprocess composition * through the gfx frames counter without an interactive loop.", "kind": "function", "line": 1111, "name": "wlcomp_once", "signature": "static int wlcomp_once(void)"}, {"doc": "Interactive desktop: click focuses, title drag moves, rim drag resizes, close box closes, Alt+T re-tiles, Alt+M minimizes, Alt+U restores, Alt+Q quits with the desktop redrawn behind it. Plain keys always reach the focused client through its .ev file; only Alt-held combos act on the server, so typing never tiles. A /shm/wl/quit flag file quits cleanly too (the `desktop stop` * path, which cannot send keystrokes to a background job).", "kind": "function", "line": 1143, "name": "wlcomp_server", "signature": "static int wlcomp_server(void)"}, {"kind": "function", "line": 1355, "name": "main", "signature": "int main(int argc, char **argv)"}, {"kind": "macro", "line": 39, "name": "WLCOMP_W", "signature": "#define WLCOMP_W"}, {"kind": "macro", "line": 40, "name": "WLCOMP_H", "signature": "#define WLCOMP_H"}, {"kind": "macro", "line": 53, "name": "WLCOMP_CFG_DEFAULT", "signature": "#define WLCOMP_CFG_DEFAULT"}]}, {"doc": "MiniOS QEMU guest agent (QGA).", "id": "qga.c", "kind": "module", "label": "qga.c", "language": "c", "sha256": "af9db4701f38a0aa", "symbol_count": 27, "symbols": [{"kind": "struct", "line": 49, "name": "qga_pair"}, {"kind": "function", "line": 27, "name": "qga_tx_ready", "signature": "static int qga_tx_ready(void)"}, {"kind": "function", "line": 28, "name": "qga_rx_ready", "signature": "static int qga_rx_ready(void)"}, {"kind": "function", "line": 30, "name": "qga_putc", "signature": "static void qga_putc(char c)"}, {"kind": "function", "line": 35, "name": "qga_init", "signature": "void qga_init(void)"}, {"kind": "function", "line": 56, "name": "qga_ws", "signature": "static int qga_ws(char c)"}, {"doc": "Parse a JSON object whose members are stored flat into out[*count..]: a nested object's members keep the parent key as a prefix (`arguments.id`). Only string/int/null/bool values are accepted; arrays and deeper nesting are rejected fail-closed. Returns 1 on success, 0 on malformed or * overflowing input.", "kind": "function", "line": 65, "name": "qga_parse_object", "signature": "static int qga_parse_object(const char **pp, struct qga_pair *out, int max,\n ..."}, {"doc": "Parse a request line into the flat pair table. Returns the number of pairs, * or -1 on malformed/overflowing input.", "kind": "function", "line": 147, "name": "qga_parse_flat", "signature": "static int qga_parse_flat(const char *s, struct qga_pair *out, int max)"}, {"kind": "function", "line": 158, "name": "qga_get_str", "signature": "static const char *qga_get_str(const struct qga_pair *pairs, int n, const char *key)"}, {"kind": "function", "line": 166, "name": "qga_get_int", "signature": "static int qga_get_int(const struct qga_pair *pairs, int n, const char *key, long *out)"}, {"kind": "function", "line": 184, "name": "qga_resp_reset", "signature": "static void qga_resp_reset(void)"}, {"kind": "function", "line": 186, "name": "qga_resp_puts", "signature": "static void qga_resp_puts(const char *s)"}, {"kind": "function", "line": 194, "name": "qga_resp_putc_enc", "signature": "static void qga_resp_putc_enc(char c)"}, {"doc": "Append the decimal form of v (a separate helper so no varargs forwarding is * needed; the kernel formatter is not re-entrant with a stored va_list).", "kind": "function", "line": 201, "name": "qga_resp_put_long", "signature": "static void qga_resp_put_long(long v)"}, {"kind": "function", "line": 210, "name": "qga_err", "signature": "static void qga_err(const char *klass, const char *desc)"}, {"kind": "function", "line": 218, "name": "qga_puts_resp", "signature": "static void qga_puts_resp(void)"}, {"kind": "function", "line": 231, "name": "qga_b64_encode", "signature": "static void qga_b64_encode(const unsigned char *in, int n)"}, {"kind": "function", "line": 281, "name": "qga_cmd_get_time", "signature": "static void qga_cmd_get_time(void)"}, {"doc": "guest-exec runs a shell command line; output goes to the console (the `>` redirect still captures it). Queued so the shell executes it at its next * loop top, which raw_blocking_getc forces by returning a newline.", "kind": "function", "line": 306, "name": "qga_cmd_exec", "signature": "static void qga_cmd_exec(const struct qga_pair *pairs, int n)"}, {"kind": "function", "line": 316, "name": "qga_cmd_shutdown", "signature": "static void qga_cmd_shutdown(const struct qga_pair *pairs, int n)"}, {"kind": "function", "line": 329, "name": "qga_file_size", "signature": "static int qga_file_size(const KFILE *f)"}, {"kind": "function", "line": 334, "name": "qga_cmd_file_open", "signature": "static void qga_cmd_file_open(const struct qga_pair *pairs, int n)"}, {"kind": "function", "line": 360, "name": "qga_cmd_file_read", "signature": "static void qga_cmd_file_read(const struct qga_pair *pairs, int n)"}, {"kind": "function", "line": 384, "name": "qga_cmd_file_close", "signature": "static void qga_cmd_file_close(const struct qga_pair *pairs, int n)"}, {"kind": "function", "line": 401, "name": "qga_dispatch", "signature": "static void qga_dispatch(struct qga_pair *pairs, int n)"}, {"doc": "Accumulate bytes until a complete line, then parse and answer it. Callers * call it once per idle spin of the shell's raw input loop.", "kind": "function", "line": 446, "name": "qga_poll", "signature": "void qga_poll(void)"}, {"kind": "function", "line": 10, "name": "channel", "signature": "* * Polled channel (no interrupt controller): qga_init sets up COM2 and * qga_poll, called from raw_blocking_getc, services one complete line per * call. Every input path is bounded and fail-closed: a"}]}, {"doc": "SMP application-processor bring-up.", "id": "smp.c", "kind": "module", "label": "smp.c", "language": "c", "sha256": "9d755c3e84083423", "symbol_count": 39, "symbols": [{"kind": "function", "line": 84, "name": "lapic_read", "signature": "static unsigned lapic_read(unsigned off)"}, {"kind": "function", "line": 87, "name": "lapic_write", "signature": "static void lapic_write(unsigned off, unsigned val)"}, {"doc": "Map the LAPIC so the BSP can program the ICR, and the APs can read their id registers. Extends stage 2's tables: PDPT slot 3 gains a new PD whose * entry covers the LAPIC's 2 MB window as uncached. Returns 1 on success.", "kind": "function", "line": 108, "name": "map_lapic", "signature": "static int map_lapic(void)"}, {"kind": "function", "line": 121, "name": "ap_delay", "signature": "static void ap_delay(void)"}, {"kind": "function", "line": 150, "name": "lapic_calibrate", "signature": "static void lapic_calibrate(void)"}, {"doc": "ifdef MINIOS_AP_TIMER", "kind": "function", "line": 184, "name": "ap_lapic_timer_start", "signature": "static void ap_lapic_timer_start(void)"}, {"doc": "endif", "kind": "function", "line": 190, "name": "ap_lapic_timer_init", "signature": "static void ap_lapic_timer_init(void)"}, {"kind": "function", "line": 305, "name": "smp_init", "signature": "void smp_init(void)"}, {"doc": "Per-AP kernel stack for the idle loop entry (the 2 KB stub stack is * too shallow for the loop's C frames plus nested IPI ISRs). static char ap_idle_kstack[MAX_CPUS][8192] __attribute__((aligned(16))); /* The syscall trampoline lives in kernel.c (declared global there).", "kind": "function", "line": 82, "name": "syscall_entry", "signature": "extern void syscall_entry(void);"}, {"kind": "function", "line": 238, "name": "BSP", "signature": "* were programmed only on the BSP (syscall_init runs in kmain), so * an AP's first sysretq loaded SS from a zeroed STAR (selector 0x08, * kernel code, as SS) and died with #SS. The values mirror * sys"}, {"kind": "function", "line": 323, "name": "INIT", "signature": "* INIT (edge-triggered): resets APs to wait-for-SIPI state. * QEMU 11 drops level-triggered INIT (delivery status never clears), * so edge-triggered is used. Two SIPIs deliver the startup vector. */ l"}, {"kind": "macro", "line": 28, "name": "LAPIC_BASE", "signature": "#define LAPIC_BASE"}, {"kind": "macro", "line": 29, "name": "LAPIC_ID_OFF", "signature": "#define LAPIC_ID_OFF"}, {"kind": "macro", "line": 30, "name": "LAPIC_SVR_OFF", "signature": "#define LAPIC_SVR_OFF"}, {"kind": "macro", "line": 31, "name": "LAPIC_ICR_HI", "signature": "#define LAPIC_ICR_HI"}, {"kind": "macro", "line": 32, "name": "LAPIC_ICR_LO", "signature": "#define LAPIC_ICR_LO"}, {"kind": "macro", "line": 33, "name": "LAPIC_LVT_TIMER", "signature": "#define LAPIC_LVT_TIMER"}, {"kind": "macro", "line": 34, "name": "LAPIC_LVT_LINT0", "signature": "#define LAPIC_LVT_LINT0"}, {"kind": "macro", "line": 35, "name": "LAPIC_LVT_LINT1", "signature": "#define LAPIC_LVT_LINT1"}, {"kind": "macro", "line": 36, "name": "LAPIC_LVT_MASKED", "signature": "#define LAPIC_LVT_MASKED"}, {"kind": "macro", "line": 37, "name": "LAPIC_LVT_EXTINT", "signature": "#define LAPIC_LVT_EXTINT"}, {"kind": "macro", "line": 38, "name": "LAPIC_EOI_OFF", "signature": "#define LAPIC_EOI_OFF"}, {"kind": "macro", "line": 39, "name": "LAPIC_TIMER_DIV", "signature": "#define LAPIC_TIMER_DIV"}, {"kind": "macro", "line": 40, "name": "LAPIC_TIMER_INIT", "signature": "#define LAPIC_TIMER_INIT"}, {"kind": "macro", "line": 41, "name": "LAPIC_TIMER_CUR", "signature": "#define LAPIC_TIMER_CUR"}, {"kind": "macro", "line": 43, "name": "LAPIC_SVR_ENABLE", "signature": "#define LAPIC_SVR_ENABLE"}, {"kind": "macro", "line": 44, "name": "LAPIC_ICR_BUSY", "signature": "#define LAPIC_ICR_BUSY"}, {"kind": "macro", "line": 45, "name": "LAPIC_ICR_INIT", "signature": "#define LAPIC_ICR_INIT"}, {"kind": "macro", "line": 46, "name": "LAPIC_ICR_SIPI", "signature": "#define LAPIC_ICR_SIPI"}, {"kind": "macro", "line": 47, "name": "LAPIC_ICR_ALL_EXC", "signature": "#define LAPIC_ICR_ALL_EXC"}, {"kind": "macro", "line": 48, "name": "LAPIC_ICR_LEVEL", "signature": "#define LAPIC_ICR_LEVEL"}, {"kind": "macro", "line": 49, "name": "LAPIC_ICR_TRIGGER", "signature": "#define LAPIC_ICR_TRIGGER"}, {"kind": "macro", "line": 51, "name": "SIPI_VECTOR", "signature": "#define SIPI_VECTOR"}, {"kind": "macro", "line": 54, "name": "PIT_HZ", "signature": "#define PIT_HZ"}, {"kind": "macro", "line": 57, "name": "LAPIC_TIMER_DIVIDE_16", "signature": "#define LAPIC_TIMER_DIVIDE_16"}, {"kind": "macro", "line": 58, "name": "LAPIC_TIMER_PERIODIC", "signature": "#define LAPIC_TIMER_PERIODIC"}, {"kind": "macro", "line": 66, "name": "LAPIC_PD_ADDR", "signature": "#define LAPIC_PD_ADDR"}, {"kind": "macro", "line": 67, "name": "LAPIC_PDPT_SLOT", "signature": "#define LAPIC_PDPT_SLOT"}, {"kind": "macro", "line": 68, "name": "LAPIC_PD_IDX", "signature": "#define LAPIC_PD_IDX"}]}, {"doc": "host_aes.sh - host-side verification for the AES-256-CTR command tools. The miniGCC-built tools are static Linux ELFs, so they run on the host. This script checks the cipher core against two independent references (NIST SP 800-38A F.5.5 CTR-AES256 and OpenSSL) plus roundtrip, dispatch, empty input and the fail-closed rejection paths. Usage: tests/host_aes.sh ", "id": "tests/host_aes.sh", "kind": "module", "label": "host_aes.sh", "language": "sh", "sha256": "87ad4bd8743741ef", "symbol_count": 3, "symbols": [{"kind": "function", "line": 23, "name": "ok"}, {"kind": "function", "line": 24, "name": "bad"}, {"kind": "function", "line": 25, "name": "rd"}]}, {"doc": "host_codecs.sh - reusable host-side verification for the in-OS codec tools. The miniGCC-compiled tools are static Linux ELFs (the kernel runs Linux binaries unmodified), so they execute on the host too. This script drives them with a host file: roundtrip, fail-closed rejection, and (for lzss) bidirectional interop against the reference Okumura codec in $LZSS_REF_SRC. LZ4 cannot interop on the host because it goes through MiniOS syscalls 216/217, so only its lzss-style roundtrip + reject paths are exercised here; the kernel LZ4 roundtrip is covered by test_lz4_kernel. Usage: host_codecs.sh the miniOS progs/ dir containing bin/lzss, bin/unlzss, ... Environment: LZSS_REF_SRC (default ../../CompressLoader/lzss.c)", "id": "tests/host_codecs.sh", "kind": "module", "label": "host_codecs.sh", "language": "sh", "sha256": "36d0a72d4d14bf42", "symbol_count": 5, "symbols": [{"kind": "function", "line": 22, "name": "ok"}, {"kind": "function", "line": 23, "name": "bad"}, {"kind": "function", "line": 27, "name": "gen_input"}, {"kind": "function", "line": 31, "name": "roundtrip"}, {"kind": "function", "line": 40, "name": "reject"}]}, {"doc": "Docstring: tests/test_abi.c -- Host test for the ABI manifest gate.", "id": "tests/test_abi.c", "kind": "module", "label": "test_abi.c", "language": "c", "sha256": "72a6124e7df57f4f", "symbol_count": 2, "symbols": [{"kind": "function", "line": 16, "name": "expect", "signature": "static void expect(const char *name, const char *manifest, int want)"}, {"kind": "function", "line": 25, "name": "main", "signature": "int main(void)"}]}, {"doc": "Docstring: Host test for kernel/batch.c (make test-batch).", "id": "tests/test_batch.c", "kind": "module", "label": "test_batch.c", "language": "c", "sha256": "986a17e3d512c0e8", "symbol_count": 3, "symbols": [{"kind": "function", "line": 24, "name": "stub_dispatch", "signature": "static long stub_dispatch(uint32_t opcode)"}, {"kind": "function", "line": 31, "name": "main", "signature": "int main(void)"}, {"kind": "macro", "line": 17, "name": "CHECK", "signature": "#define CHECK(cond, msg)"}]}, {"doc": "test_doom_pwad.py - host contract suite for tools/doom_pwad.py. Runs the grid compiler and the PWAD checker against fixed vectors: a known room builds to a pinned byte layout, the output passes the checker, and every malformed input or mutated file is refused with a diagnostic instead of a partial artifact.", "id": "tests/test_doom_pwad.py", "kind": "module", "label": "test_doom_pwad.py", "language": "py", "sha256": "78e0563418ef06c9", "symbol_count": 44, "symbols": [{"doc": "Grid parsing refuses malformed rooms before any byte is emitted.", "kind": "class", "line": 29, "name": "GridValidationTests", "signature": "class GridValidationTests(TestCase)"}, {"doc": "The emitted PWAD keeps the vanilla lump contract byte-exact.", "kind": "class", "line": 82, "name": "PwadLayoutTests", "signature": "class PwadLayoutTests(TestCase)"}, {"doc": "Single-byte and structural mutations of a good file all fail.", "kind": "class", "line": 181, "name": "PwadMutationTests", "signature": "class PwadMutationTests(TestCase)"}, {"doc": "Every palette letter compiles to its engine thing id.", "kind": "class", "line": 255, "name": "ExtendedLegendTests", "signature": "class ExtendedLegendTests(TestCase)"}, {"doc": "Slice one lump payload out of a built image by directory order.", "kind": "method", "line": 310, "name": "lump_blob", "signature": "def lump_blob(blob, idx)"}, {"doc": "Doors, dark rooms and nukage pits compile to real sectors.", "kind": "class", "line": 317, "name": "MultiSectorTests", "signature": "class MultiSectorTests(TestCase)"}, {"doc": "Broken tags, specials and sidedef pairs fail closed.", "kind": "class", "line": 388, "name": "MultiSectorMutationTests", "signature": "class MultiSectorMutationTests(TestCase)"}, {"doc": "A closed room with player and exit parses to five rows.", "kind": "method", "line": 32, "name": "test_valid_room_parses", "signature": "def test_valid_room_parses(self)"}, {"doc": "Rows of uneven length are rejected, never padded silently.", "kind": "method", "line": 36, "name": "test_ragged_rows_refused", "signature": "def test_ragged_rows_refused(self)"}, {"doc": "A room without a player start cannot build.", "kind": "method", "line": 41, "name": "test_missing_player_refused", "signature": "def test_missing_player_refused(self)"}, {"doc": "A room without an exit marker cannot build.", "kind": "method", "line": 46, "name": "test_missing_exit_refused", "signature": "def test_missing_exit_refused(self)"}, {"doc": "Characters outside the legend are rejected outright.", "kind": "method", "line": 51, "name": "test_illegal_char_refused", "signature": "def test_illegal_char_refused(self)"}, {"doc": "An exit sealed behind walls is refused instead of unplayable.", "kind": "method", "line": 56, "name": "test_unreachable_exit_refused", "signature": "def test_unreachable_exit_refused(self)"}, {"doc": "An exit marker floating mid-floor has no switch edge to mark.", "kind": "method", "line": 66, "name": "test_exit_needs_wall", "signature": "def test_exit_needs_wall(self)"}, {"doc": "A built room passes the checker with a sane lump census.", "kind": "method", "line": 85, "name": "test_roundtrip_check", "signature": "def test_roundtrip_check(self)"}, {"doc": "Magic, lump count and label lump stay pinned for the fixture.", "kind": "method", "line": 96, "name": "test_header_pin", "signature": "def test_header_pin(self)"}, {"doc": "Lumps follow the ML_LABEL..ML_BLOCKMAP order the engine walks.", "kind": "method", "line": 103, "name": "test_lump_order_pin", "signature": "def test_lump_order_pin(self)"}, {"doc": "Player and exit-adjacent layout land on expected coordinates.", "kind": "method", "line": 115, "name": "test_things_pin", "signature": "def test_things_pin(self)"}, {"doc": "Exactly one linedef carries the exit special after a build.", "kind": "method", "line": 129, "name": "test_exit_switch_pin", "signature": "def test_exit_switch_pin(self)"}, {"doc": "An exit against any of the four walls builds a closed room.", "kind": "method", "line": 141, "name": "test_exit_on_every_side", "signature": "def test_exit_on_every_side(self)"}, {"doc": "Interior wall blocks add loops without opening the boundary.", "kind": "method", "line": 154, "name": "test_pillar_room_stays_closed", "signature": "def test_pillar_room_stays_closed(self)"}, {"doc": "Retargeting one endpoint unbalances two vertexes, refused.", "kind": "method", "line": 168, "name": "test_open_boundary_dies", "signature": "def test_open_boundary_dies(self)"}, {"doc": "Build one known-good image shared by every mutation case.", "kind": "method", "line": 184, "name": "setUp", "signature": "def setUp(self)"}, {"doc": "An IWAD magic on a custom file is refused, never trusted.", "kind": "method", "line": 188, "name": "test_bad_magic_dies", "signature": "def test_bad_magic_dies(self)"}, {"doc": "A file cut mid-directory is refused instead of half-parsed.", "kind": "method", "line": 193, "name": "test_truncated_file_dies", "signature": "def test_truncated_file_dies(self)"}, {"doc": "Swapping two directory names breaks the order contract.", "kind": "method", "line": 198, "name": "test_swapped_lumps_die", "signature": "def test_swapped_lumps_die(self)"}, {"doc": "A THINGS lump with a torn record is refused, never rounded.", "kind": "method", "line": 212, "name": "test_partial_record_dies", "signature": "def test_partial_record_dies(self)"}, {"doc": "A linedef pointing past the vertex list is refused.", "kind": "method", "line": 221, "name": "test_wild_vertex_dies", "signature": "def test_wild_vertex_dies(self)"}, {"doc": "Clearing the exit special leaves a file with no way out.", "kind": "method", "line": 230, "name": "test_missing_exit_dies", "signature": "def test_missing_exit_dies(self)"}, {"doc": "A blockmap list without a terminator is refused, never scanned.", "kind": "method", "line": 243, "name": "test_unterminated_blockmap_dies", "signature": "def test_unterminated_blockmap_dies(self)"}, {"doc": "A room holding the whole palette passes the checker.", "kind": "method", "line": 273, "name": "test_every_legend_char_builds", "signature": "def test_every_legend_char_builds(self)"}, {"doc": "Each letter lands on the doomednum the engine spawns.", "kind": "method", "line": 278, "name": "test_every_thing_id_matches_engine", "signature": "def test_every_thing_id_matches_engine(self)"}, {"doc": "A door cell splits one room into two sectors with a tag.", "kind": "method", "line": 320, "name": "test_door_room_builds_two_sectors", "signature": "def test_door_room_builds_two_sectors(self)"}, {"doc": "Both door faces carry D1 open with the door sector tag.", "kind": "method", "line": 327, "name": "test_door_lines_are_tagged_openers", "signature": "def test_door_lines_are_tagged_openers(self)"}, {"doc": "Dark rooms dim the light, nukage drops the floor and stings.", "kind": "method", "line": 355, "name": "test_dark_and_nukage_sector_props", "signature": "def test_dark_and_nukage_sector_props(self)"}, {"doc": "REJECT holds exactly the bit table for the sector count.", "kind": "method", "line": 374, "name": "test_reject_scales_with_sector_count", "signature": "def test_reject_scales_with_sector_count(self)"}, {"doc": "Door, dark and nukage tiles pass the checker in one room.", "kind": "method", "line": 382, "name": "test_new_legend_chars_build", "signature": "def test_new_legend_chars_build(self)"}, {"doc": "Build one known-good door image shared by every case.", "kind": "method", "line": 391, "name": "setUp", "signature": "def setUp(self)"}, {"doc": "Return the good image with one linedef field replaced.", "kind": "method", "line": 395, "name": "mutate_line", "signature": "def mutate_line(self, idx, field, value)"}, {"doc": "Index of the first D1 door line in the fixture image.", "kind": "method", "line": 406, "name": "door_line", "signature": "def door_line(self)"}, {"doc": "A door opener without a tag is refused, never miswired.", "kind": "method", "line": 418, "name": "test_door_tag_zero_dies", "signature": "def test_door_tag_zero_dies(self)"}, {"doc": "A linedef special the writer never emits is refused.", "kind": "method", "line": 423, "name": "test_unknown_special_dies", "signature": "def test_unknown_special_dies(self)"}, {"doc": "A one-sided line smuggling a back sidedef is refused.", "kind": "method", "line": 428, "name": "test_onesided_with_back_dies", "signature": "def test_onesided_with_back_dies(self)"}, {"doc": "The exit switch must stay untagged like the writer emits it.", "kind": "method", "line": 433, "name": "test_exit_tagged_dies", "signature": "def test_exit_tagged_dies(self)"}]}, {"doc": "test_driver.c -- Host test for the Strategy-pattern device registry.", "id": "tests/test_driver.c", "kind": "module", "label": "test_driver.c", "language": "c", "sha256": "fb218a5c798c7d00", "symbol_count": 5, "symbols": [{"kind": "function", "line": 15, "name": "test_read", "signature": "static int test_read(device_t *d, unsigned lba, unsigned count, void *buf)"}, {"kind": "function", "line": 28, "name": "test_pcm_open", "signature": "static void test_pcm_open(device_t *d)"}, {"kind": "function", "line": 33, "name": "test_pcm_submit", "signature": "static int test_pcm_submit(device_t *d, const unsigned char *pcm, unsigned len)"}, {"kind": "function", "line": 39, "name": "test_tone", "signature": "static void test_tone(device_t *d, unsigned freq)"}, {"kind": "function", "line": 65, "name": "main", "signature": "int main(void)"}]}, {"doc": "test_fault.c -- fault-injection suite (boyscout gap #10).", "id": "tests/test_fault.c", "kind": "module", "label": "test_fault.c", "language": "c", "sha256": "383bce12935e0a8d", "symbol_count": 11, "symbols": [{"kind": "function", "line": 35, "name": "range_ok", "signature": "static int range_ok(unsigned long p, unsigned long len)"}, {"doc": "cannot report is itself a failure. #define CHECK(c, m) do { if (!(c)) { failures++; if (fprintf(stderr, \"FAIL: %s:%d: %s\\n\", __FILE__, __LINE__, m) < 0) failures++; } } while (0) /* ---- Mirror of kernel/syscalls.c user window ---- #define U_BASE ((unsigned long)0x00400000ul) #define U_END ((unsigned long)0x0C000000ul) static unsigned char umem[64]; static int range_ok(unsigned long p, unsigned long len) { if (p < U_BASE) return 0; if (len > U_END - p) return 0; return p + len <= U_END; } /* Mirror of user_str_ok: NUL must land inside [p, p+maxlen).", "kind": "function", "line": 41, "name": "str_ok", "signature": "static int str_ok(const unsigned char *mem, unsigned long p,\n unsigned long maxlen)"}, {"doc": "Minimal mirror of fs/vfs.c fs_resolve (cwd-relative, cap 64): * collapses \".\", pops \"..\", skips empty components.", "kind": "function", "line": 52, "name": "normalize", "signature": "static void normalize(const char *path, char *out, unsigned cap)"}, {"doc": "define TRUSTED_DIR \"objects/\" define TRUSTED_LEN 8", "kind": "function", "line": 83, "name": "path_trusted", "signature": "static int path_trusted(const char *full)"}, {"kind": "function", "line": 94, "name": "main", "signature": "int main(void)"}, {"kind": "function", "line": 10, "name": "against", "signature": "* after bounding against (END-BASE)/elemsz, so the product cannot * wrap past the range check);"}, {"kind": "macro", "line": 28, "name": "CHECK", "signature": "#define CHECK(c, m)"}, {"kind": "macro", "line": 31, "name": "U_BASE", "signature": "#define U_BASE"}, {"kind": "macro", "line": 32, "name": "U_END", "signature": "#define U_END"}, {"kind": "macro", "line": 81, "name": "TRUSTED_DIR", "signature": "#define TRUSTED_DIR"}, {"kind": "macro", "line": 82, "name": "TRUSTED_LEN", "signature": "#define TRUSTED_LEN"}]}, {"doc": "Docstring: host test for the file browser assoc contract (make test-file).", "id": "tests/test_file_assoc.c", "kind": "module", "label": "test_file_assoc.c", "language": "c", "sha256": "09d9fa65fe64a0cf", "symbol_count": 6, "symbols": [{"kind": "function", "line": 25, "name": "t_ext_of", "signature": "static void t_ext_of(const char *fname, char *dst, unsigned cap)"}, {"kind": "function", "line": 45, "name": "t_assoc_line", "signature": "static int t_assoc_line(const char *line, char *ext, char *prog)"}, {"kind": "function", "line": 77, "name": "main", "signature": "int main(void)"}, {"kind": "macro", "line": 15, "name": "CHECK", "signature": "#define CHECK(cond, msg)"}, {"kind": "macro", "line": 22, "name": "T_EXT_MAX", "signature": "#define T_EXT_MAX"}, {"kind": "macro", "line": 23, "name": "T_PROG_MAX", "signature": "#define T_PROG_MAX"}]}, {"doc": "test_freedom_wl - host suite for the Wayland to MiniOS mapping.", "id": "tests/test_freedom_wl.c", "kind": "module", "label": "test_freedom_wl.c", "language": "c", "sha256": "5c422d3c95ff7ca3", "symbol_count": 3, "symbols": [{"doc": "test_freedom_wl - host suite for the Wayland to MiniOS mapping. Exercises the pure logic of progs/src/freedom_wl without syscalls. Fail-closed on every bound. Exit nonzero on first failure. #include #define FREEDOM_WL_HOST_TEST 1 #include \"../progs/src/freedom_wl.c\" /** Report helper for single check lines.", "kind": "function", "line": 12, "name": "check_host", "signature": "static int check_host(int cond, const char *name)"}, {"doc": "#define FREEDOM_WL_HOST_TEST 1 #include \"../progs/src/freedom_wl.c\" /** Report helper for single check lines. static int check_host(int cond, const char *name) { if (!cond) { printf(\"FAIL: %s\\n\", name); return 1; } printf(\"PASS: %s\\n\", name); return 0; } /** Entry point running all mapping checks.", "kind": "function", "line": 22, "name": "main", "signature": "int main(void)"}, {"kind": "macro", "line": 8, "name": "FREEDOM_WL_HOST_TEST", "signature": "#define FREEDOM_WL_HOST_TEST"}]}, {"doc": "test_freedomui - host suite for the real FreeDom MiniOS backend.", "id": "tests/test_freedomui.c", "kind": "module", "label": "test_freedomui.c", "language": "c", "sha256": "cd55cb6586c7ff58", "symbol_count": 2, "symbols": [{"doc": "#define FREEDOMUI_HOST_TEST 1 #include \"../progs/freedomui/freedomui_minios.c\" /** Report helper for single check lines. static int check_ui(int cond, const char *name) { if (!cond) { printf(\"FAIL: %s\\n\", name); return 1; } printf(\"PASS: %s\\n\", name); return 0; } /** Entry point running all backend checks.", "kind": "function", "line": 24, "name": "main", "signature": "int main(void)"}, {"kind": "macro", "line": 10, "name": "FREEDOMUI_HOST_TEST", "signature": "#define FREEDOMUI_HOST_TEST"}]}, {"doc": "Docstring: Host test for kernel/futex.c (make test-futex).", "id": "tests/test_futex.c", "kind": "module", "label": "test_futex.c", "language": "c", "sha256": "528f848330b90d8b", "symbol_count": 6, "symbols": [{"kind": "function", "line": 18, "name": "proc_get", "signature": "proc_t *proc_get(int pid)"}, {"kind": "function", "line": 26, "name": "schedule", "signature": "void schedule(void)"}, {"kind": "function", "line": 39, "name": "fresh_proc", "signature": "static void fresh_proc(int pid)"}, {"kind": "function", "line": 48, "name": "fresh_all", "signature": "static void fresh_all(void)"}, {"kind": "function", "line": 60, "name": "main", "signature": "int main(void)"}, {"kind": "macro", "line": 32, "name": "CHECK", "signature": "#define CHECK(cond, msg)"}]}, {"doc": "Docstring: Host test for arch/x86/hal_io.h (make test-hal).", "id": "tests/test_hal_io.c", "kind": "module", "label": "test_hal_io.c", "language": "c", "sha256": "fbf37cabfa70a0ba", "symbol_count": 3, "symbols": [{"kind": "function", "line": 30, "name": "main", "signature": "int main(void)"}, {"kind": "macro", "line": 11, "name": "HAL_IO_HOST_TEST", "signature": "#define HAL_IO_HOST_TEST"}, {"kind": "macro", "line": 23, "name": "CHECK", "signature": "#define CHECK(cond, msg)"}]}, {"doc": "test_ktime.c -- host test for the pure conversion math in ktime.h", "id": "tests/test_ktime.c", "kind": "module", "label": "test_ktime.c", "language": "c", "sha256": "e0006c3738056072", "symbol_count": 2, "symbols": [{"kind": "function", "line": 16, "name": "main", "signature": "int main(void)"}, {"kind": "macro", "line": 14, "name": "CHECK", "signature": "#define CHECK(c, m)"}]}, {"doc": "Docstring: host test for the shared ring-3 PNG helpers (make test-png).", "id": "tests/test_minios_png.c", "kind": "module", "label": "test_minios_png.c", "language": "c", "sha256": "c3e46e7e98428372", "symbol_count": 9, "symbols": [{"doc": "#include #include \"progs/minios_png.h\" static int failures = 0; #define CHECK(cond, msg) do { \\ if (!(cond)) { \\ failures++; \\ fprintf(stderr, \"FAIL: %s (line %d)\\n\", (msg), __LINE__); \\ } \\ } while (0) /** Docstring: 3-3-2 quantize matches the manual bit packing.", "kind": "function", "line": 24, "name": "t_332", "signature": "static void t_332(void)"}, {"doc": "fprintf(stderr, \"FAIL: %s (line %d)\\n\", (msg), __LINE__); \\ } \\ } while (0) /** Docstring: 3-3-2 quantize matches the manual bit packing. static void t_332(void) { CHECK(mpng_332_idx(255, 0, 0) == 0xE0, \"332 red\"); CHECK(mpng_332_idx(0, 255, 0) == 0x1C, \"332 green\"); CHECK(mpng_332_idx(0, 0, 255) == 0x03, \"332 blue\"); CHECK(mpng_332_idx(0, 0, 0) == 0x00, \"332 black\"); CHECK(mpng_332_idx(255, 255, 255) == 0xFF, \"332 white\"); } /** Docstring: nearest search hits exact entries and rejects bad input.", "kind": "function", "line": 33, "name": "t_nearest", "signature": "static void t_nearest(void)"}, {"doc": "pal[7] = 0; pal[8] = 255; CHECK(mpng_nearest(pal, 3, 255, 0, 0) == 0, \"nearest red\"); CHECK(mpng_nearest(pal, 3, 0, 255, 0) == 1, \"nearest green\"); CHECK(mpng_nearest(pal, 3, 0, 0, 255) == 2, \"nearest blue\"); CHECK(mpng_nearest(0, 3, 0, 0, 0) < 0, \"nearest null pal\"); CHECK(mpng_nearest(pal, 0, 0, 0, 0) < 0, \"nearest empty pal\"); CHECK(mpng_nearest(pal, 9999, 0, 0, 0) < 0, \"nearest oversize pal\"); for (k = 0; k < 768; k++) pal[k] = 0; CHECK(mpng_nearest(pal, 256, 10, 20, 30) == 0, \"nearest first wins\"); } /** Docstring: center and fit-scale geometry with fail-closed edges.", "kind": "function", "line": 58, "name": "t_geom", "signature": "static void t_geom(void)"}, {"doc": "/** Docstring: center and fit-scale geometry with fail-closed edges. static void t_geom(void) { CHECK(mpng_center(800, 320) == 240, \"center 800/320\"); CHECK(mpng_center(360, 360) == 0, \"center exact\"); CHECK(mpng_center(100, 200) < 0, \"center unfit\"); CHECK(mpng_center(-1, 10) < 0, \"center negative\"); CHECK(mpng_fit_scale(32, 32, 240, 344) == 7, \"fit 32 in 240x344\"); CHECK(mpng_fit_scale(512, 512, 240, 344) == 1, \"fit large keeps 1\"); CHECK(mpng_fit_scale(0, 32, 240, 344) < 0, \"fit zero src\"); CHECK(mpng_fit_scale(32, 32, 0, 10) < 0, \"fit zero box\"); } /** Docstring: scaled conversion preserves corners and rejects bounds.", "kind": "function", "line": 70, "name": "t_scale", "signature": "static void t_scale(void)"}, {"doc": "CHECK(dst[0] == 242, \"scale corner keeps red\"); CHECK(mpng_rgb_to_332_scaled(rgb, 2, 2, dst332, 4, 4) == 0, \"scale332 ok\"); CHECK(dst332[0] == (unsigned char)mpng_332_idx(255, 0, 0), \"scale332 corner\"); CHECK(mpng_rgb_to_idx_scaled(0, 2, 2, pal, 256, dst, 4, 4) < 0, \"scale null rgb\"); CHECK(mpng_rgb_to_idx_scaled(rgb, 9999, 2, pal, 256, dst, 4, 4) < 0, \"scale oversize src\"); CHECK(mpng_rgb_to_idx_scaled(rgb, 2, 2, pal, 256, dst, 9999, 4) < 0, \"scale oversize dst\"); } /** Docstring: clipped blit lands inside and ignores outside.", "kind": "function", "line": 99, "name": "t_blit", "signature": "static void t_blit(void)"}, {"doc": "tile[0] = 1; tile[1] = 2; tile[2] = 3; tile[3] = 4; CHECK(mpng_blit_idx(fb, 4, 4, tile, 2, 2, 1, 1) == 0, \"blit ok\"); CHECK(fb[1 * 4 + 1] == 1 && fb[1 * 4 + 2] == 2, \"blit row0\"); CHECK(fb[2 * 4 + 1] == 3 && fb[2 * 4 + 2] == 4, \"blit row1\"); CHECK(fb[0] == 7, \"blit outside untouched\"); CHECK(mpng_blit_idx(0, 4, 4, tile, 2, 2, 0, 0) < 0, \"blit null fb\"); CHECK(mpng_blit_idx(fb, 4, 4, tile, 9999, 2, 0, 0) < 0, \"blit oversize tile\"); } /** Docstring: bounded load fails closed on bad paths and caps.", "kind": "function", "line": 117, "name": "t_load", "signature": "static void t_load(void)"}, {"doc": "CHECK(mpng_load_file(\"\", &out, &n, MPNG_FILE_MAX) < 0, \"load empty\"); CHECK(mpng_load_file(0, &out, &n, MPNG_FILE_MAX) < 0, \"load null\"); CHECK(mpng_load_file(\"/no/such/file.png\", 0, &n, MPNG_FILE_MAX) < 0, \"load null out\"); CHECK(mpng_load_file(\"tests/test_minios_png.c\", &out, &n, 4) < 0, \"load tiny cap\"); CHECK(mpng_load_file(\"tests/test_minios_png.c\", &out, &n, MPNG_FILE_MAX) == 0, \"load self\"); CHECK(out != 0 && n > 0, \"load content\"); if (out) free(out); } /** Docstring: side-art policy pins right pokemon and no cgoblin left.", "kind": "function", "line": 136, "name": "t_policy", "signature": "static void t_policy(void)"}, {"kind": "function", "line": 151, "name": "main", "signature": "int main(void)"}, {"kind": "macro", "line": 16, "name": "CHECK", "signature": "#define CHECK(cond, msg)"}]}, {"id": "tests/test_modifiers.c", "kind": "module", "label": "test_modifiers.c", "language": "c", "sha256": "c839ab807191ff11", "symbol_count": 2, "symbols": [{"kind": "function", "line": 16, "name": "main", "signature": "int main(void)"}, {"kind": "macro", "line": 9, "name": "CHECK", "signature": "#define CHECK(cond, msg)"}]}, {"id": "tests/test_notify.c", "kind": "module", "label": "test_notify.c", "language": "c", "sha256": "11842983c58cbf60", "symbol_count": 3, "symbols": [{"kind": "function", "line": 16, "name": "probe_handler", "signature": "static void probe_handler(const wm_notify_event_t *e)"}, {"kind": "function", "line": 22, "name": "main", "signature": "int main(void)"}, {"kind": "macro", "line": 9, "name": "CHECK", "signature": "#define CHECK(cond, msg)"}]}, {"doc": "Docstring: host test for the paint canvas/PNG contract (make test-paint).", "id": "tests/test_paint.c", "kind": "module", "label": "test_paint.c", "language": "c", "sha256": "aed54660955a5303", "symbol_count": 21, "symbols": [{"kind": "function", "line": 30, "name": "t_clamp", "signature": "static int t_clamp(int v, int lo, int hi)"}, {"kind": "function", "line": 36, "name": "t_plot", "signature": "static int t_plot(unsigned char *buf, int w, int h, int x, int y,\n unsigned char c)"}, {"kind": "function", "line": 44, "name": "t_line", "signature": "static int t_line(unsigned char *buf, int w, int h, int x0, int y0, int x1,\n int..."}, {"kind": "function", "line": 70, "name": "t_flood", "signature": "static int t_flood(unsigned char *buf, int w, int h, int x, int y,\n unsigned ch..."}, {"kind": "function", "line": 116, "name": "t_crc_init", "signature": "static void t_crc_init(void)"}, {"kind": "function", "line": 129, "name": "t_crc", "signature": "static unsigned long t_crc(const unsigned char *p, unsigned long n)"}, {"kind": "function", "line": 138, "name": "t_path_ok", "signature": "static int t_path_ok(const char *p)"}, {"kind": "function", "line": 155, "name": "t_nearest", "signature": "static int t_nearest(const unsigned char *pal, unsigned r, unsigned g,\n unsig..."}, {"kind": "function", "line": 171, "name": "test_plot", "signature": "static void test_plot(void)"}, {"kind": "function", "line": 188, "name": "test_line", "signature": "static void test_line(void)"}, {"kind": "function", "line": 207, "name": "test_flood", "signature": "static void test_flood(void)"}, {"kind": "function", "line": 228, "name": "test_png_codec", "signature": "static void test_png_codec(void)"}, {"kind": "function", "line": 259, "name": "test_png_layout", "signature": "static void test_png_layout(void)"}, {"kind": "function", "line": 273, "name": "test_path", "signature": "static void test_path(void)"}, {"kind": "function", "line": 287, "name": "test_nearest", "signature": "static void test_nearest(void)"}, {"kind": "function", "line": 300, "name": "main", "signature": "int main(void)"}, {"kind": "macro", "line": 16, "name": "CHECK", "signature": "#define CHECK(cond, msg)"}, {"kind": "macro", "line": 23, "name": "T_W", "signature": "#define T_W"}, {"kind": "macro", "line": 24, "name": "T_H", "signature": "#define T_H"}, {"kind": "macro", "line": 25, "name": "T_N", "signature": "#define T_N"}, {"kind": "macro", "line": 26, "name": "T_PATH_MAX", "signature": "#define T_PATH_MAX"}]}, {"doc": "Docstring: Host test for kernel/percpu_rq.c (make test-percpu-rq).", "id": "tests/test_percpu_rq.c", "kind": "module", "label": "test_percpu_rq.c", "language": "c", "sha256": "3b8acf4401168df0", "symbol_count": 2, "symbols": [{"kind": "function", "line": 24, "name": "main", "signature": "int main(void)"}, {"kind": "macro", "line": 17, "name": "CHECK", "signature": "#define CHECK(cond, msg)"}]}, {"doc": "test_randmix.c -- host test for the getrandom mixer in randmix.h", "id": "tests/test_randmix.c", "kind": "module", "label": "test_randmix.c", "language": "c", "sha256": "53aa4a94bd969a97", "symbol_count": 3, "symbols": [{"kind": "function", "line": 18, "name": "popcount64", "signature": "static int popcount64(unsigned long x)"}, {"kind": "function", "line": 24, "name": "main", "signature": "int main(void)"}, {"kind": "macro", "line": 16, "name": "CHECK", "signature": "#define CHECK(c, m)"}]}, {"doc": "Docstring: Host test for kernel/rcu.c (make test-rcu).", "id": "tests/test_rcu.c", "kind": "module", "label": "test_rcu.c", "language": "c", "sha256": "8ec20a6399f3842d", "symbol_count": 4, "symbols": [{"kind": "function", "line": 19, "name": "rcu_host_cpu", "signature": "cpu_t *rcu_host_cpu(void)"}, {"kind": "function", "line": 23, "name": "test_cb", "signature": "static void test_cb(void *arg)"}, {"kind": "function", "line": 37, "name": "main", "signature": "int main(void)"}, {"kind": "macro", "line": 30, "name": "CHECK", "signature": "#define CHECK(cond, msg)"}]}, {"doc": "test_rtc.c -- host test for the pure date math in drivers/rtc.c", "id": "tests/test_rtc.c", "kind": "module", "label": "test_rtc.c", "language": "c", "sha256": "356423ff924b717a", "symbol_count": 2, "symbols": [{"kind": "function", "line": 18, "name": "main", "signature": "int main(void)"}, {"kind": "macro", "line": 16, "name": "CHECK", "signature": "#define CHECK(c, m)"}]}, {"doc": "Docstring: Host test for sanitize.h (make test-sanitize).", "id": "tests/test_sanitize.c", "kind": "module", "label": "test_sanitize.c", "language": "c", "sha256": "1632610bc85d8384", "symbol_count": 9, "symbols": [{"kind": "function", "line": 20, "name": "user_range_ok", "signature": "int user_range_ok(unsigned long p, unsigned long len)"}, {"kind": "function", "line": 26, "name": "user_str_ok", "signature": "int user_str_ok(unsigned long p, unsigned long maxlen)"}, {"kind": "function", "line": 32, "name": "kmemcpy", "signature": "void *kmemcpy(void *dst, const void *src, unsigned long n)"}, {"kind": "function", "line": 48, "name": "range_probe", "signature": "static long range_probe(unsigned long p, long len)"}, {"kind": "function", "line": 54, "name": "str_probe", "signature": "static long str_probe(unsigned long p)"}, {"kind": "function", "line": 61, "name": "copy_probe", "signature": "static long copy_probe(unsigned long uptr, long count, unsigned long elemsz)"}, {"kind": "function", "line": 67, "name": "main", "signature": "int main(void)"}, {"kind": "macro", "line": 13, "name": "EFAULT", "signature": "#define EFAULT"}, {"kind": "macro", "line": 41, "name": "CHECK", "signature": "#define CHECK(cond, msg)"}]}, {"doc": "Host-side unit test for the blocking sync primitives (kernel/sync.c).", "id": "tests/test_sync.c", "kind": "module", "label": "test_sync.c", "language": "c", "sha256": "ae75c014ae606504", "symbol_count": 6, "symbols": [{"kind": "function", "line": 24, "name": "proc_get", "signature": "proc_t *proc_get(int pid)"}, {"kind": "function", "line": 30, "name": "schedule", "signature": "void schedule(void)"}, {"kind": "function", "line": 44, "name": "fresh_proc", "signature": "static void fresh_proc(int pid)"}, {"kind": "function", "line": 52, "name": "fresh_all", "signature": "static void fresh_all(void)"}, {"kind": "function", "line": 63, "name": "main", "signature": "int main(void)"}, {"kind": "macro", "line": 37, "name": "CHECK", "signature": "#define CHECK(cond, msg)"}]}, {"doc": "Docstring: host test for the shared Nuklear theme contract.", "id": "tests/test_theme.c", "kind": "module", "label": "test_theme.c", "language": "c", "sha256": "81345604d527045a", "symbol_count": 8, "symbols": [{"kind": "struct", "line": 23, "name": "tslot"}, {"kind": "function", "line": 34, "name": "t_name_ok", "signature": "static int t_name_ok(const char *name)"}, {"kind": "function", "line": 46, "name": "t_parse_line", "signature": "static int t_parse_line(const char *line, int *idx, long v[3])"}, {"kind": "function", "line": 74, "name": "cube_exact", "signature": "static int cube_exact(long v)"}, {"kind": "function", "line": 78, "name": "check_theme_file", "signature": "static void check_theme_file(const char *path)"}, {"kind": "function", "line": 107, "name": "main", "signature": "int main(void)"}, {"kind": "macro", "line": 16, "name": "CHECK", "signature": "#define CHECK(cond, msg)"}, {"kind": "macro", "line": 29, "name": "X", "signature": "#define X(k, i)"}]}, {"doc": "Docstring: Host test for kernel/tick.c (make test-tick).", "id": "tests/test_tick.c", "kind": "module", "label": "test_tick.c", "language": "c", "sha256": "f30539ff721093d0", "symbol_count": 6, "symbols": [{"kind": "function", "line": 24, "name": "rec_a", "signature": "static void rec_a(void *ctx)"}, {"kind": "function", "line": 31, "name": "rec_b", "signature": "static void rec_b(void *ctx)"}, {"kind": "function", "line": 38, "name": "rec_d", "signature": "static void rec_d(void *ctx)"}, {"kind": "function", "line": 47, "name": "dummy", "signature": "static void dummy(void *ctx)"}, {"kind": "function", "line": 52, "name": "main", "signature": "int main(void)"}, {"kind": "macro", "line": 17, "name": "CHECK", "signature": "#define CHECK(cond, msg)"}]}, {"doc": "Docstring: Host test for the vedit IDE build contract (make test-vedit).", "id": "tests/test_vedit_build.c", "kind": "module", "label": "test_vedit_build.c", "language": "c", "sha256": "636ddec715ca77e8", "symbol_count": 8, "symbols": [{"kind": "function", "line": 32, "name": "t_has_ext", "signature": "static int t_has_ext(const char *fname, const char *ext)"}, {"kind": "function", "line": 43, "name": "t_base_of", "signature": "static int t_base_of(const char *fname, char *dst, size_t cap)"}, {"kind": "function", "line": 63, "name": "t_join", "signature": "static int t_join(const char *dir, const char *base, const char *ext,\n char *dst..."}, {"kind": "function", "line": 79, "name": "t_link_fmt", "signature": "static int t_link_fmt(const char *s)"}, {"doc": "Mirror of vedit_lang_of: 1=C, 2=PY, 3=LUA, 4=ASM. Unknown defaults * to C, exactly like the guest (untitled highlights as C).", "kind": "function", "line": 93, "name": "t_lang_of", "signature": "static int t_lang_of(const char *fname)"}, {"doc": "if (fname[n - 1] == 'c') return 1; if (fname[n - 1] == 'h') return 1; if (fname[n - 1] == 's') return 4; } if (n >= 3 && fname[n - 3] == '.' && fname[n - 2] == 'p' && fname[n - 1] == 'y') return 2; if (n >= 4 && fname[n - 4] == '.' && fname[n - 3] == 'l' && fname[n - 2] == 'u' && fname[n - 1] == 'a') return 3; return 1; } /* Mirror of vedit_run_kind: 1=minigcc, 2=lua, 3=python, 4=ld, else 0.", "kind": "function", "line": 110, "name": "t_run_kind", "signature": "static int t_run_kind(const char *fname)"}, {"kind": "function", "line": 118, "name": "main", "signature": "int main(void)"}, {"kind": "macro", "line": 25, "name": "CHECK", "signature": "#define CHECK(cond, msg)"}]}, {"doc": "Host-side unit test for the VMA red-black tree (vma.c).", "id": "tests/test_vma.c", "kind": "module", "label": "test_vma.c", "language": "c", "sha256": "e9e6c50797a904a1", "symbol_count": 8, "symbols": [{"kind": "function", "line": 27, "name": "black_height", "signature": "static int black_height(const vma_node_t *n)"}, {"kind": "function", "line": 38, "name": "tree_valid", "signature": "static int tree_valid(const vma_node_t *root)"}, {"kind": "function", "line": 75, "name": "count_nodes", "signature": "static int count_nodes(const vma_node_t *root)"}, {"kind": "function", "line": 89, "name": "test_insert_find_delete", "signature": "static void test_insert_find_delete(void)"}, {"kind": "function", "line": 136, "name": "test_pool_exhaustion", "signature": "static void test_pool_exhaustion(void)"}, {"kind": "function", "line": 153, "name": "test_full_drain", "signature": "static void test_full_drain(void)"}, {"kind": "function", "line": 167, "name": "main", "signature": "int main(void)"}, {"kind": "macro", "line": 20, "name": "CHECK", "signature": "#define CHECK(cond, msg)"}]}, {"doc": "test_vma_bench.c -- RB-tree vs sorted-list benchmark (boyscout gap #9).", "id": "tests/test_vma_bench.c", "kind": "module", "label": "test_vma_bench.c", "language": "c", "sha256": "72ec9f36f0c1614c", "symbol_count": 6, "symbols": [{"kind": "function", "line": 13, "name": "now_us", "signature": "static long now_us(void)"}, {"kind": "function", "line": 23, "name": "l_insert", "signature": "static void l_insert(unsigned long b)"}, {"kind": "function", "line": 28, "name": "l_find", "signature": "static int l_find(unsigned long b)"}, {"kind": "function", "line": 34, "name": "bench", "signature": "static void bench(int n)"}, {"kind": "function", "line": 54, "name": "main", "signature": "int main(void)"}, {"kind": "macro", "line": 20, "name": "LIST_MAX", "signature": "#define LIST_MAX"}]}, {"doc": "Host test for progs/wl/wl_mini.h (make test-wl).", "id": "tests/test_wl.c", "kind": "module", "label": "test_wl.c", "language": "c", "sha256": "310ebe0ba588a46a", "symbol_count": 2, "symbols": [{"kind": "function", "line": 27, "name": "main", "signature": "int main(void)"}, {"kind": "macro", "line": 20, "name": "CHECK", "signature": "#define CHECK(cond, msg)"}]}, {"doc": "Docstring: Host test for wm_geom.h and wm_events.h (make test-wm).", "id": "tests/test_wm.c", "kind": "module", "label": "test_wm.c", "language": "c", "sha256": "fe47f478672e479b", "symbol_count": 2, "symbols": [{"kind": "function", "line": 28, "name": "main", "signature": "int main(void)"}, {"kind": "macro", "line": 21, "name": "CHECK", "signature": "#define CHECK(cond, msg)"}]}, {"doc": "tls_test.c - host-side tests for the kernel TLS stack.", "id": "tls_test.c", "kind": "module", "label": "tls_test.c", "language": "c", "sha256": "eb2b2337e54b71e2", "symbol_count": 23, "symbols": [{"kind": "function", "line": 26, "name": "tls_test_send", "signature": "int tls_test_send(int fd, const char *buf, int len)"}, {"kind": "function", "line": 36, "name": "tls_test_recv", "signature": "int tls_test_recv(int fd, char *buf, int len)"}, {"kind": "function", "line": 41, "name": "tls_test_recv_timeout", "signature": "int tls_test_recv_timeout(int fd, char *buf, int len, unsigned long ms)"}, {"kind": "function", "line": 54, "name": "tls_test_close", "signature": "void tls_test_close(int fd)"}, {"kind": "function", "line": 67, "name": "hexdigit", "signature": "static int hexdigit(int c)"}, {"kind": "function", "line": 74, "name": "unhex", "signature": "static void unhex(const char *hex, unsigned char *out, int n)"}, {"kind": "function", "line": 80, "name": "bytes_eq", "signature": "static int bytes_eq(const unsigned char *a, const unsigned char *b, int n)"}, {"kind": "function", "line": 88, "name": "test_sha256", "signature": "static void test_sha256(void)"}, {"kind": "function", "line": 103, "name": "test_sha384", "signature": "static void test_sha384(void)"}, {"kind": "function", "line": 114, "name": "test_gcm", "signature": "static void test_gcm(void)"}, {"kind": "function", "line": 154, "name": "test_p256", "signature": "static void test_p256(void)"}, {"kind": "function", "line": 200, "name": "test_rsa_ecdsa_vectors", "signature": "static void test_rsa_ecdsa_vectors(void)"}, {"kind": "function", "line": 249, "name": "tcp_connect", "signature": "static int tcp_connect(int port)"}, {"doc": "int fd = socket(AF_INET, SOCK_STREAM, 0); if (fd < 0) return -1; memset(&sa, 0, sizeof(sa)); sa.sin_family = AF_INET; sa.sin_port = htons((unsigned short)port); sa.sin_addr.s_addr = htonl(0x7f000001UL); if (connect(fd, (struct sockaddr *)&sa, sizeof(sa)) != 0) { close(fd); return -1; } return fd; } /* Full handshake + one HTTP round trip. Returns 0 on success.", "kind": "function", "line": 265, "name": "http_over_tls", "signature": "static int http_over_tls(int port, const char *host)"}, {"kind": "function", "line": 290, "name": "scenario_good", "signature": "static int scenario_good(int port)"}, {"doc": "total += n; printed = 1; } tls_free_fd(fd); close(fd); if (!printed) return -1; return 0; } static int scenario_good(int port) { return http_over_tls(port, \"localhost\") == 0 ? 0 : -1; } /* \"*.example.com\" matches exactly one label.", "kind": "function", "line": 295, "name": "scenario_wild_good", "signature": "static int scenario_wild_good(int port)"}, {"kind": "function", "line": 299, "name": "scenario_wild_root", "signature": "static int scenario_wild_root(int port)"}, {"kind": "function", "line": 309, "name": "scenario_wild_deep", "signature": "static int scenario_wild_deep(int port)"}, {"kind": "function", "line": 319, "name": "scenario_bad_host", "signature": "static int scenario_bad_host(int port)"}, {"kind": "function", "line": 329, "name": "scenario_bad_ca", "signature": "static int scenario_bad_ca(int port)"}, {"kind": "function", "line": 339, "name": "scenario_expired", "signature": "static int scenario_expired(int port)"}, {"kind": "function", "line": 349, "name": "main", "signature": "int main(int argc, char **argv)"}, {"kind": "macro", "line": 62, "name": "CHECK", "signature": "#define CHECK(name, cond)"}]}, {"doc": "Docstring: tools/abi_stamp.c -- Build-time ABI manifest generator.", "id": "tools/abi_stamp.c", "kind": "module", "label": "abi_stamp.c", "language": "c", "sha256": "4960d0db78ada604", "symbol_count": 1, "symbols": [{"kind": "function", "line": 14, "name": "main", "signature": "int main(void)"}]}, {"doc": "boot_run.sh -- boot the MiniOS image in QEMU and drive the shell over the serial console with a list of commands, capturing the full transcript. This is the reusable harness behind the one-shot manual checks (lua in-OS suite, DOOM/Quake 2 autoquit render tests, toolchain compile/link/run) so a future run does not hand-roll a QEMU launch. The guest powers itself off through the ACPI port; the timeout is only a safety net for hangs. Usage: tools/boot_run.sh \"cmd1\" \"cmd2\" ... [--timeout N] [--log FILE] - every non-option argument is a shell command sent to the guest in order - --timeout N per-run timeout in seconds (default 200) - --log FILE write the console transcript to FILE (default ./boot_run.log) Examples: tools/boot_run.sh \"lua src/test.lua\" tools/boot_run.sh \"gfx frames\" \"run doomgeneric.elf mini_autoframes 150\" \\ \"gfx frames\" --timeout 200 tools/boot_run.sh \"gfx frames\" \\ \"run bin/quake2generic.elf +set basedir . +set minios_autoframes 400\" \\ \"gfx frames\" --timeout 300", "id": "tools/boot_run.sh", "kind": "module", "label": "boot_run.sh", "language": "sh", "sha256": "baec5c17565afd1b", "symbol_count": 0, "symbols": []}, {"doc": "boot_wl.py - boot the miniOS Wayland-mini desktop in one step. Builds nothing; `make wl` owns the build. Boots os.img, waits for the shell prompt over a pty serial console, types the desktop setup (mailbox clean, mirror flag, three real app frames via their selftests run strictly sequentially, one terminal-pattern client, server in background) with paced bytes and an echo backstop, then either proxies the user terminal to the guest for interactive use or, with WL_HEADLESS=1, screendumps the framebuffer over QMP, powers off and reports the shot path. Setup steps never overlap: each program runs alone and exits before the next starts, which is the reliable configuration while concurrent heavyweights are under diagnosis (see the honest-limits note in CLAUDE.md). Usage: python3 tools/boot_wl.py WL_HEADLESS=1 WL_SHOT=/tmp/wl.png python3 tools/boot_wl.py Every tunable lives in WlBootConfig; no host assumption beyond the QEMU binary name, which WL_QEMU overrides. Failure paths report and release the child; a stuck prompt fails after WL_BOOT_TIMEOUT instead of hanging the make run.", "id": "tools/boot_wl.py", "kind": "module", "label": "boot_wl.py", "language": "py", "sha256": "735b76f77da7b127", "symbol_count": 14, "symbols": [{"kind": "class", "line": 39, "name": "WlBootConfig", "signature": "class WlBootConfig"}, {"kind": "class", "line": 66, "name": "WlBoot", "signature": "class WlBoot"}, {"kind": "method", "line": 216, "name": "main", "signature": "def main()"}, {"kind": "method", "line": 67, "name": "__init__", "signature": "def __init__(self, cfg)"}, {"kind": "method", "line": 74, "name": "fail", "signature": "def fail(self, msg)"}, {"kind": "method", "line": 79, "name": "close", "signature": "def close(self)"}, {"kind": "method", "line": 90, "name": "boot", "signature": "def boot(self)"}, {"kind": "method", "line": 106, "name": "snapshot", "signature": "def snapshot(self, timeout)"}, {"kind": "method", "line": 123, "name": "wait_prompt", "signature": "def wait_prompt(self)"}, {"kind": "method", "line": 134, "name": "send", "signature": "def send(self, line)"}, {"kind": "method", "line": 145, "name": "setup", "signature": "def setup(self)"}, {"kind": "method", "line": 155, "name": "qmp", "signature": "def qmp(self, obj)"}, {"kind": "method", "line": 172, "name": "headless", "signature": "def headless(self)"}, {"kind": "method", "line": 185, "name": "proxy", "signature": "def proxy(self)"}]}, {"doc": "check_abi_numbers.py -- MiniOS syscall numbers vs Linux x86-64 truth. Phase 0.6 of the FreeDom readiness plan: a browser is the first program that depends on syscalls telling the truth, and several MiniOS numbers drifted from the Linux table (the class that bit us at [74] = flock while Linux x86-64 74 = fsync, 73 = flock). A static host-compiled ELF traps the Linux number and gets whatever MiniOS registered there. Ground truth is Linux arch/x86/entry/syscalls/syscall_64.tbl (x86-64 common range), frozen here so the gate needs no kernel headers. Two checks, both fail-closed (exit 1) on undocumented drift: Rule A -- compat claims in progs/minios_abi.h: a MINIOS_SYS_FOO whose normalized name exists in the Linux table and whose value is < 200 must equal the Linux number exactly. Rule B -- MiniOS-wins shadows: a MiniOS number that collides with a *different* Linux syscall must be listed in DEVIATIONS with the ADR that justifies it (fix or documented deviation, never silence). Rule C -- dispatch site in kernel/syscalls.c: every `[N] = { fn, \"name\" }` entry of linux_syscall_table and every `case N:` fall-through in ksyscall_dispatch must resolve N to the Linux number for \"name\". Usage: python3 tools/check_abi_numbers.py [--abi PATH] [--syscalls PATH] Exits 0 printing \"abi: ok\" when every number is either exact or listed.", "id": "tools/check_abi_numbers.py", "kind": "module", "label": "check_abi_numbers.py", "language": "py", "sha256": "91284ae3a2cedd90", "symbol_count": 4, "symbols": [{"kind": "function", "line": 127, "name": "normalize", "signature": "def normalize(minios_name)"}, {"kind": "function", "line": 131, "name": "parse_abi", "signature": "def parse_abi(path)"}, {"kind": "function", "line": 142, "name": "parse_dispatch", "signature": "def parse_dispatch(path)"}, {"kind": "function", "line": 155, "name": "main", "signature": "def main()"}]}, {"doc": "check_addons.py -- validate the MiniOS addon marketplace index. Loads every addons/*.yaml through the strict stdlib-only parser in mcp/minios_addons.py (no PyYAML) and reports each addon's kind. Any unparseable file, failed validation or installer refusal for a guest addon fails closed with a diagnostic and a nonzero exit, so the index can never drift from the dialect the MCP server speaks. Usage: python3 tools/check_addons.py [--addons-dir DIR] Exit status: 0 when every file validates, 1 otherwise.", "id": "tools/check_addons.py", "kind": "module", "label": "check_addons.py", "language": "py", "sha256": "93379f4c2cd698b5", "symbol_count": 2, "symbols": [{"kind": "function", "line": 22, "name": "load_parser", "signature": "def load_parser()"}, {"kind": "function", "line": 31, "name": "main", "signature": "def main()"}]}, {"doc": "check_cohesion.py -- Architectural cohesion gate for MiniOS CI. Parses the CPG JSON-LD output from readmenator and fails the build if any root community's cohesion drops below the configured threshold. Usage: python3 tools/check_cohesion.py [cpg.jsonld] [--threshold 0.25] Exit codes: 0 -- all communities above threshold 1 -- cohesion regression detected 2 -- input file missing or malformed", "id": "tools/check_cohesion.py", "kind": "module", "label": "check_cohesion.py", "language": "py", "sha256": "b12a28a7077255df", "symbol_count": 4, "symbols": [{"doc": "Load and parse the CPG JSON-LD file.", "kind": "function", "line": 23, "name": "load_cpg", "signature": "def load_cpg(path)"}, {"doc": "Compute cohesion as internal_edges / max_possible_edges.", "kind": "function", "line": 31, "name": "compute_cohesion", "signature": "def compute_cohesion(community_nodes, community_edges)"}, {"doc": "Extract communities and their internal edges from CPG.", "kind": "function", "line": 42, "name": "extract_communities", "signature": "def extract_communities(cpg)"}, {"kind": "function", "line": 58, "name": "main", "signature": "def main()"}]}, {"doc": "check_complexity.py -- Kernel complexity gate for MiniOS CI. Validates that kernel.c does not exceed the configured symbol count threshold without explicit approval in ARCH_POLICY.yaml. Usage: python3 tools/check_complexity.py [--threshold 350] [--policy ARCH_POLICY.yaml] Exit codes: 0 -- within threshold or explicitly approved 1 -- complexity exceeded without approval 2 -- input files missing", "id": "tools/check_complexity.py", "kind": "module", "label": "check_complexity.py", "language": "py", "sha256": "5f47be84232f031d", "symbol_count": 3, "symbols": [{"doc": "Count top-level function and global variable definitions.", "kind": "function", "line": 24, "name": "count_symbols", "signature": "def count_symbols(filepath)"}, {"doc": "Load explicit complexity approval from ARCH_POLICY.yaml.", "kind": "function", "line": 46, "name": "load_approval", "signature": "def load_approval(policy_path)"}, {"kind": "function", "line": 61, "name": "main", "signature": "def main()"}]}, {"doc": "Fail-closed stub gate for unimplemented process syscalls. fork, vfork and execve have no implementation in this kernel. A stub that answers success lets userland believe a child exists when none does, so all three must answer Linux ENOSYS. The check scans the handler definitions and fails on any success return.", "id": "tools/check_fork_stubs.py", "kind": "module", "label": "check_fork_stubs.py", "language": "py", "sha256": "046d3bd2af0c1e47", "symbol_count": 4, "symbols": [{"doc": "Centralized tunable values for the stub gate.", "kind": "class", "line": 13, "name": "Config", "signature": "class Config"}, {"doc": "Return the body of the named handler or empty string when absent.", "kind": "method", "line": 22, "name": "handler_body", "signature": "def handler_body(text, name)"}, {"doc": "Collect failure strings for stubs that do not fail closed.", "kind": "method", "line": 32, "name": "check_stubs", "signature": "def check_stubs(text, cfg)"}, {"doc": "Entry point used by lint and CI.", "kind": "method", "line": 47, "name": "main", "signature": "def main()"}]}, {"doc": "check_kb_sync.py -- Verify KNOWLEDGE_BASE.md is in sync with code. Runs readmenator to regenerate the knowledge base, then checks if the output differs from the committed version. Used in CI to prevent drift. Usage: python3 tools/check_kb_sync.py [--kb KNOWLEDGE_BASE.md] [--regenerate] Exit codes: 0 -- KB is in sync 1 -- KB is out of sync 2 -- readmenator not available", "id": "tools/check_kb_sync.py", "kind": "module", "label": "check_kb_sync.py", "language": "py", "sha256": "5e2ba708097f369f", "symbol_count": 2, "symbols": [{"doc": "Attempt to regenerate KNOWLEDGE_BASE.md using readmenator.", "kind": "function", "line": 24, "name": "regenerate_kb", "signature": "def regenerate_kb()"}, {"kind": "function", "line": 43, "name": "main", "signature": "def main()"}]}, {"doc": "Verify every mutate.sh mutant anchor matches its target file. A mutant whose sed expression matches nothing is reported BROKEN by mutate.sh instead of killed, so a stale anchor silently weakens the mutation gate. Ground truth is sed itself: each expression is applied to a scratch copy of its target and a no-change result is breakage. Usage: python3 tools/check_mutant_anchors.py", "id": "tools/check_mutant_anchors.py", "kind": "module", "label": "check_mutant_anchors.py", "language": "py", "sha256": "ca8e3435194fd0ab", "symbol_count": 5, "symbols": [{"doc": "Central configuration for the anchor check.", "kind": "class", "line": 17, "name": "Config", "signature": "class Config"}, {"doc": "Collapse the escapes bash applies inside the MUTATIONS string.", "kind": "method", "line": 26, "name": "bash_unquote", "signature": "def bash_unquote(expr)"}, {"doc": "Extract (name, expression, target) triples from the MUTATIONS block.\n\nBounds derive from the block markers, never from line numbers, so\nadding a mutant cannot silently push rows out of the checked range.", "kind": "method", "line": 41, "name": "parse_mutations", "signature": "def parse_mutations(text)"}, {"doc": "Apply the sed expression to a scratch copy; True when it changes it.", "kind": "method", "line": 67, "name": "anchor_matches", "signature": "def anchor_matches(repo, target, expr)"}, {"doc": "Entry point: report anchors that change nothing and exit nonzero.", "kind": "method", "line": 86, "name": "main", "signature": "def main()"}]}, {"doc": "check_surprising.py -- Detect surprising architectural connections. Parses the CPG JSON-LD output from readmenator and flags new connections of N or more hops between distinct communities. These represent coupling debt that should be visible and prioritizable. Usage: python3 tools/check_surprising.py [cpg.jsonld] [--min-hops 5] Exit codes: 0 -- no surprising connections 1 -- new surprising connections detected 2 -- input file missing or malformed", "id": "tools/check_surprising.py", "kind": "module", "label": "check_surprising.py", "language": "py", "sha256": "1549709fae6152f1", "symbol_count": 5, "symbols": [{"doc": "Load and parse the CPG JSON-LD file.", "kind": "function", "line": 25, "name": "load_cpg", "signature": "def load_cpg(path)"}, {"doc": "Build adjacency list from CPG nodes and edges.", "kind": "function", "line": 33, "name": "build_graph", "signature": "def build_graph(cpg)"}, {"doc": "BFS from source to any node in target_community, returning hop count.", "kind": "function", "line": 56, "name": "bfs_min_hops", "signature": "def bfs_min_hops(nodes, edges, source, target_community, max_hops)"}, {"doc": "Find connections of min_hops or more between distinct communities.", "kind": "function", "line": 87, "name": "find_surprising_connections", "signature": "def find_surprising_connections(nodes, edges, min_hops)"}, {"kind": "function", "line": 118, "name": "main", "signature": "def main()"}]}, {"doc": "Scoped audit gate for syscall user-pointer sanitization. Every ring-3 pointer that reaches a syscall handler as a1..a6 must pass a SANITIZE_* macro or user_range_ok/user_str_ok check before its first dereference. The discipline allows one delegation shape: an unchecked pointer may flow only into a callee that sanitizes internally (Config.delegated_callees); anything else is a fail-closed violation. The analysis is textual and conservative: it over-reports, and Config records each triaged outcome, so a new unsanitized dereference fails the build instead of shipping silently.", "id": "tools/check_syscall_sanitize.py", "kind": "module", "label": "check_syscall_sanitize.py", "language": "py", "sha256": "785efd528312dede", "symbol_count": 8, "symbols": [{"doc": "Centralized tunable values for the sanitize audit.", "kind": "class", "line": 18, "name": "Config", "signature": "class Config"}, {"doc": "Yield (name, start, body_lines) triples using brace depth.", "kind": "method", "line": 69, "name": "split_functions", "signature": "def split_functions(lines)"}, {"doc": "Return identifiers named inside sanitizer checks in a body.", "kind": "method", "line": 112, "name": "checked_names", "signature": "def checked_names(body)"}, {"doc": "Decide whether an alias flows only into sanitizing callees.", "kind": "method", "line": 122, "name": "delegated_only", "signature": "def delegated_only(body, alias)"}, {"doc": "Split a call argument list on top-level commas only.", "kind": "method", "line": 143, "name": "split_top_args", "signature": "def split_top_args(argtext)"}, {"doc": "Return violation strings for one function body.", "kind": "method", "line": 162, "name": "audit_body", "signature": "def audit_body(name, body)"}, {"doc": "Audit every handler in one file, return violation strings.", "kind": "method", "line": 217, "name": "audit_file", "signature": "def audit_file(path)"}, {"doc": "Entry point used by lint and CI.", "kind": "method", "line": 228, "name": "main", "signature": "def main()"}]}, {"doc": "doom_pwad.py - grid map to vanilla Doom PWAD writer and checker. Converts a text grid map into a single-level PWAD that replaces E1M1 in the shareware IWAD, and validates PWAD files produced by any tool. The generated level is multi-sector: each same-style floor region and each door block is its own sector, so rooms can differ in light, floor height and flats, and doors genuinely open. The BSP stays trivially correct: every linedef becomes one seg, all segs form one subsector, and the root node points at that same subsector on both children. One subsector needs no ordering, so no external node builder is required; sight, collision and clipping all work off the line/sector lists. Usage: doom_pwad.py build doom_pwad.py check doom_pwad.py info Grid legend: '#' wall, '.' floor, 'P' player 1 start, 'E' exit switch marker, '+' door cell, ',' dark floor, '~' nukage pit, enemies 'i' imp, 'd' demon, 'z' zombieman, 'g' shotgun guy, 'v' spectre, 'b' baron, weapons 's' shotgun, 'h' chaingun, 'r' rocket launcher, 'w' chainsaw, ammo 'a' shells, 'u' clip, 'o' bullet box, 'k' rockets, 'x' rocket box, 'T' shell box, health 'm' medikit, 'q' stimpack, 'y' soulsphere, 'n' health bonus, armor 'f' armor bonus, 'G' green armor, 'U' blue armor, keys '1' blue, '2' red, '3' yellow, powerups 'V' invisibility, 'R' radiation suit, 'C' computer map, 'L' light amp, gear 'D' backpack, 'B' barrel, decor '0' pillar. A '+' cell is its own door sector (low ceiling, tagged) whose edges to neighbouring rooms are two-sided D1 open-door lines, usable from either side. A ',' region is the same room at low light; a '~' region is a", "id": "tools/doom_pwad.py", "kind": "module", "label": "doom_pwad.py", "language": "py", "sha256": "cc7dc16e438f1123", "symbol_count": 25, "symbols": [{"doc": "Centralized tunables for the grid compiler and the PWAD checker.", "kind": "class", "line": 52, "name": "DoomPwadConfig", "signature": "class DoomPwadConfig"}, {"doc": "Fail-closed diagnostic raised for any invalid grid or PWAD.", "kind": "class", "line": 161, "name": "PwadError", "signature": "class PwadError(Exception)"}, {"doc": "Return a texture or flat name padded to its 8-byte field.", "kind": "method", "line": 165, "name": "pad_tex", "signature": "def pad_tex(raw)"}, {"doc": "Parse grid text into rows, refusing empty or ragged input.", "kind": "method", "line": 172, "name": "parse_grid", "signature": "def parse_grid(text)"}, {"doc": "Return coordinate bounds of the lattice in map units.", "kind": "method", "line": 195, "name": "grid_extents", "signature": "def grid_extents(rows)"}, {"doc": "Treat out-of-bounds cells as solid wall so maps stay closed.", "kind": "method", "line": 203, "name": "is_wall", "signature": "def is_wall(rows, row, col)"}, {"doc": "Return the walkable set reachable from the player start tile.", "kind": "method", "line": 210, "name": "flood_reachable", "signature": "def flood_reachable(rows)"}, {"doc": "Enforce single player, single exit, and full reachability.", "kind": "method", "line": 240, "name": "validate_grid", "signature": "def validate_grid(rows)"}, {"doc": "Return cell corners as (x0, x1, y_top, y_bottom) in map units.", "kind": "method", "line": 269, "name": "cell_corners", "signature": "def cell_corners(row, col)"}, {"doc": "Classify a walkable cell: doors stand alone, styles never merge.", "kind": "method", "line": 279, "name": "cell_class", "signature": "def cell_class(cell)"}, {"doc": "Flood same-class walkable cells into region ids; walls stay -1.", "kind": "method", "line": 291, "name": "label_regions", "signature": "def label_regions(rows)"}, {"doc": "Map a labelled region to its sector record fields and wall skin.", "kind": "method", "line": 326, "name": "region_sector", "signature": "def region_sector(region, door_tag)"}, {"doc": "Compile edges into vertexes, two-sided rooms and tagged doors.\n\nReturns vertexes, linedefs as (v1, v2, flags, special, tag, s0, s1),\nsidedefs as (xoff, yoff, upper, lower, mid, sector) and the exit edge.\nEdges against walls are one-sided; room-to-room and room-to-door\nedges are two-sided with the front on the cell being compiled.", "kind": "method", "line": 371, "name": "compile_geometry", "signature": "def compile_geometry(rows, exit_pos, wall_side)"}, {"doc": "Compile thing stamps into mapthing records in scan order.", "kind": "method", "line": 485, "name": "compile_things", "signature": "def compile_things(rows)"}, {"doc": "Return the stored short angle for a seg direction vector.", "kind": "method", "line": 506, "name": "seg_angle", "signature": "def seg_angle(dx, dy)"}, {"doc": "Compile a validated grid into the eleven E1M1 lump payloads.", "kind": "method", "line": 516, "name": "build_lumps", "signature": "def build_lumps(rows)"}, {"doc": "Assemble lump payloads into a complete PWAD byte string.", "kind": "method", "line": 597, "name": "build_pwad", "signature": "def build_pwad(rows)"}, {"doc": "Split PWAD bytes into header fields and an ordered lump table.", "kind": "method", "line": 616, "name": "read_pwad", "signature": "def read_pwad(data)"}, {"doc": "Validate lump order, record sizes and cross-lump references.", "kind": "method", "line": 639, "name": "check_pwad", "signature": "def check_pwad(data)"}, {"doc": "Build a PWAD from a grid file, refusing to write on any error.", "kind": "method", "line": 816, "name": "cmd_build", "signature": "def cmd_build(grid_path, out_path)"}, {"doc": "Validate a PWAD file and report its lump census on success.", "kind": "method", "line": 826, "name": "cmd_check", "signature": "def cmd_check(path)"}, {"doc": "Dispatch the build, check and info verbs with host-safe errors.", "kind": "method", "line": 834, "name": "main", "signature": "def main(argv)"}, {"doc": "Deduplicate lattice points shared by adjacent edges.", "kind": "method", "line": 386, "name": "vertex", "signature": "def vertex(x, y)"}, {"doc": "Slice one lump payload out of the file image.", "kind": "method", "line": 650, "name": "payload", "signature": "def payload(name)"}, {"doc": "Require the lump length to hold whole records only.", "kind": "method", "line": 655, "name": "check_multiple", "signature": "def check_multiple(name, fmt)"}]}, {"doc": "tools/extract_shell.py -- Plan for Phase 6.1 shell extraction. This script documents the shell extraction plan. The actual extraction requires careful handling of cross-dependencies between shell code and kernel internals. DEPENDENCIES (shell -> kernel): VFS: kfopen, kfclose, kfread, kfwrite, kfgets, kfputs, kfseek, kftell FS: fs_resolve, fs_dir_exists, fs_is_dir Ramdisk: ramdisk_open, ramdisk_read, ramdisk_list, ramdisk_create MiniFS: minifs_resolve_path, minifs_stat, minifs_read, minifs_mkdir_p, minifs_create, minifs_write, minifs_sync, minifs_is_mounted, minifs_list Process: k_exec_user, k_run_rel, k_spawn, k_register_program, k_register_process, k_register_symbol, elf_load, load_exec_elf Audio: pcspk_tone, pcspk_set_volume, pcspk_get_volume Graphics: vga_fb_* functions (desktop, WM, GFX_SET_TITLE syscall) Hashing: xxh64_* functions Network: net_*, tls_* functions Compress: lzss_*, lz4_*, zip_* functions Crypto: aes_* functions Editor: edit_* functions Other: kprintf, kmemset, kmemcpy, kstrlen, kstrcmp, kstrncmp, kstrcpy, kstrncpy, kstrchr, kstrstr, kstrncat, redirect_begin, redirect_commit, redirect_suspend, redirect_resume FUNCTIONS TO EXTRACT (38 functions, ~2070 lines): Shell core: shell_init, shell_run, shell_prompt, shell_parse, shell_exec_builtin, shell_report_exit, shell_report Line editing: shell_readline, shell_readline_buf, shell_readline_hist,", "id": "tools/extract_shell.py", "kind": "module", "label": "extract_shell.py", "language": "py", "sha256": "d28fc6bdf497f27f", "symbol_count": 0, "symbols": []}, {"doc": "gdb_repro.py — drive a graphics-program sequence under the GDB stub. Boots MiniOS with the gdb server (-s), a QMP socket for keyboard/mouse injection and a pty serial console, attaches gdb with a conditional breakpoint on the page-fault handler (isr_dispatch, vector 14), then drives a sequence of graphics programs. When a page fault fires, gdb dumps the trap frame (rip/rsp/cr2 = faulting address = FS base + offset) and exits.", "id": "tools/gdb_repro.py", "kind": "module", "label": "gdb_repro.py", "language": "py", "sha256": "58cc2eb76b8596b4", "symbol_count": 4, "symbols": [{"kind": "function", "line": 23, "name": "rs", "signature": "def rs(m, t)"}, {"kind": "function", "line": 27, "name": "main", "signature": "def main()"}, {"kind": "function", "line": 65, "name": "send", "signature": "def send(line)"}, {"kind": "function", "line": 70, "name": "quit_doom", "signature": "def quit_doom()"}]}, {"doc": "gen_desktop_pngs.py -- build MiniOS desktop art from user-supplied PNGs. Sources (images/ by default, overridable with --src-dir): paint.png paint icon source cgoblin.png wallpaper source (any size, RGB/RGBA) doom.png DOOM icon source doomedit.png doomedit map-editor icon source quake2.png Quake 2 icon source piano.png piano icon source nuklear.png Nuklear icon source vedit.png vedit editor icon source pokemon.png Pokemon icon source (Pikachu art, not pixel art) Outputs (under the MiniOS repo): progs/icons/doom.png, doomedit.png, quake2.png, piano.png, nuklear.png, vedit.png, pokemon.png, file.png, shell.png, paint.png, minicraft.png 32x32 RGBA progs/wall/wallpaper.png 800x600 RGB The kernel runs in an 8-bit palette mode, so it maps icon pixels to the 16-entry icon palette and wallpaper pixels to a fixed 6x6x6 colour cube at boot; these files only need the right dimensions. Icons keep alpha (the kernel treats fully transparent pixels as transparent). The wallpaper is cover-scaled (aspect-preserving fill + centre crop) so a square source like cgoblin.png never looks stretched. Fail-closed: a missing source aborts with a diagnostic and nonzero exit before anything is written; each output is written atomically (tmp + rename), never a partial file.", "id": "tools/gen_desktop_pngs.py", "kind": "module", "label": "gen_desktop_pngs.py", "language": "py", "sha256": "7a651b6dc479c706", "symbol_count": 2, "symbols": [{"kind": "function", "line": 63, "name": "write_atomic", "signature": "def write_atomic(img, path)"}, {"kind": "function", "line": 69, "name": "main", "signature": "def main()"}]}, {"doc": "gen_icons.py -- generate 32x32 RGBA PNG icon files for the MiniOS desktop. Each icon is defined as a 32-line string of hex characters (0-F), where each char maps to a colour in the icon palette. The script writes minimal valid PNG files (no zlib import needed -- raw deflate via the stored method). Usage: python3 tools/gen_icons.py progs/icons/", "id": "tools/gen_icons.py", "kind": "module", "label": "gen_icons.py", "language": "py", "sha256": "8ccde6cbc615ac9d", "symbol_count": 3, "symbols": [{"doc": "Create a minimal indexed-colour PNG from pixel indices and a palette.", "kind": "function", "line": 179, "name": "make_png", "signature": "def make_png(pixels, palette, width, height)"}, {"kind": "function", "line": 209, "name": "make_chunk", "signature": "def make_chunk(chunk_type, data)"}, {"kind": "function", "line": 214, "name": "main", "signature": "def main()"}]}, {"doc": "Generate minifs.c for MiniOS.", "id": "tools/gen_minifs.py", "kind": "module", "label": "gen_minifs.py", "language": "py", "sha256": "39e5253af1b66130", "symbol_count": 0, "symbols": []}, {"doc": "gen_zip_fixtures.py -- generate the zip test fixtures shipped on the ramdisk. Two small ZIP archives, built with the host's standard zipfile so the in-OS extractor is tested against bytes produced by a reference implementation, not just by its own writer: host.zip a well-formed archive with a directory and two files, proving the in-OS extractor interops with host-produced ZIPs. hostile.zip an archive whose entry names try to escape the extraction root: a traversal (\"../escape.txt\"), an absolute path (\"/abs.txt\") and a directory marker (\"dir/\") beside one plain file. The in-OS extractor must create only good.txt, dir/ and abs.txt (the absolute name is sanitized to relative) and must never create escape.txt. Timestamps are fixed so the build is reproducible.", "id": "tools/gen_zip_fixtures.py", "kind": "module", "label": "gen_zip_fixtures.py", "language": "py", "sha256": "d9443f8f14b7f4a9", "symbol_count": 2, "symbols": [{"doc": "entries: list of (name, data_or_None). data None marks a directory.", "kind": "function", "line": 28, "name": "write_zip", "signature": "def write_zip(path, entries)"}, {"kind": "function", "line": 42, "name": "main", "signature": "def main()"}]}, {"id": "tools/install.sh", "kind": "module", "label": "install.sh", "language": "sh", "sha256": "7aece79ca12e8871", "symbol_count": 0, "symbols": []}, {"doc": "kernel_feature_survey.py - verify which C features the MiniOS kernel needs. Scans kernel and ring-3 sources for constructs miniGCC must support before it can compile them: function pointers, extended-asm constraints, wide calls, unions, long long, bitfields, privileged mnemonics and section attributes. Every claim the SDD specs make about a gap must reproduce through this tool first, so plans never rest on hallucinated file paths. Usage: kernel_feature_survey.py [root] [--format text|md] Exit 0 always; findings print to stdout.", "id": "tools/kernel_feature_survey.py", "kind": "module", "label": "kernel_feature_survey.py", "language": "py", "sha256": "33ebce8836ed7d8e", "symbol_count": 8, "symbols": [{"doc": "Centralized tunables for the survey.", "kind": "class", "line": 18, "name": "SurveyConfig", "signature": "class SurveyConfig"}, {"doc": "Yield C source paths under root, skipping vendored and cache dirs.", "kind": "method", "line": 34, "name": "iter_sources", "signature": "def iter_sources(root)"}, {"doc": "Return line numbers declaring function pointers.", "kind": "method", "line": 43, "name": "find_fnptr_hits", "signature": "def find_fnptr_hits(path, text)"}, {"doc": "Return sorted constraint letters used in extended asm.", "kind": "method", "line": 49, "name": "find_asm_constraints", "signature": "def find_asm_constraints(path, text)"}, {"doc": "Count parameters, treating void and empty as zero.", "kind": "method", "line": 59, "name": "count_params", "signature": "def count_params(params)"}, {"doc": "Collect findings per category across all sources.", "kind": "method", "line": 67, "name": "survey", "signature": "def survey(root)"}, {"doc": "Render findings as plain text.", "kind": "method", "line": 103, "name": "render_text", "signature": "def render_text(findings)"}, {"doc": "Entry point for the survey tool.", "kind": "method", "line": 122, "name": "main", "signature": "def main(argv)"}]}, {"doc": "Docstring: Scoped Lisp validation for the MiniOS interpreter contract. Builds the ring-3 static ELF with zero warnings, runs the host suite, and asserts each scoped mutant dies. Fails closed on first gap.", "id": "tools/lisp_scoped.sh", "kind": "module", "label": "lisp_scoped.sh", "language": "sh", "sha256": "da665676531f65ab", "symbol_count": 5, "symbols": [{"kind": "function", "line": 8, "name": "say"}, {"kind": "function", "line": 9, "name": "die"}, {"kind": "function", "line": 20, "name": "mutant"}, {"kind": "function", "line": 41, "name": "lisp_mut"}, {"kind": "function", "line": 63, "name": "mut_usage"}]}, {"doc": "Build the MiniOS bootable USB image and optionally write it to a device. Wraps the Makefile targets so there is a single source of truth for the layout (os.usb.img), the distribution copy (os.iso) and the write safety checks (make usb): this script only orchestrates, it never writes bytes itself. Usage: tools/make_usb.sh [--list] [--device /dev/sdX] [--yes] [--vdi] With no arguments and a terminal on stdin, runs an interactive wizard that asks for every needed value step by step and ends with a bootable USB stick. With no arguments and no terminal (pipe, CI), builds the image, lists candidate devices and exits without writing anything. Inputs: --list print candidate target devices and exit. --device DEV write the image to DEV after building it. --yes answer the Makefile YES confirmation non-interactively. System-disk and size refusals still apply, they are never skipped. --vdi also build os.vdi for VirtualBox (hard disk attach). --help print this help and exit. USB=/dev/sdX environment fallback for --device. Outputs: os.usb.img, os.iso (and os.vdi with --vdi) in the repository root. Failure modes:", "id": "tools/make_usb.sh", "kind": "module", "label": "make_usb.sh", "language": "sh", "sha256": "efa46cf209467b3e", "symbol_count": 2, "symbols": [{"kind": "function", "line": 40, "name": "usage"}, {"kind": "function", "line": 56, "name": "wizard"}]}, {"doc": "minifs_dump.py - Dump/inspect a MiniFS filesystem image.", "id": "tools/minifs_dump.py", "kind": "module", "label": "minifs_dump.py", "language": "py", "sha256": "4348fc2550062ac6", "symbol_count": 12, "symbols": [{"kind": "function", "line": 13, "name": "u16", "signature": "def u16(d, o)"}, {"kind": "function", "line": 14, "name": "u32", "signature": "def u32(d, o)"}, {"kind": "function", "line": 16, "name": "mode_str", "signature": "def mode_str(m)"}, {"kind": "class", "line": 25, "name": "FS", "signature": "class FS"}, {"kind": "method", "line": 105, "name": "main", "signature": "def main()"}, {"kind": "method", "line": 26, "name": "__init__", "signature": "def __init__(self, fn)"}, {"kind": "method", "line": 29, "name": "blk", "signature": "def blk(self, n)"}, {"kind": "method", "line": 30, "name": "_sb", "signature": "def _sb(self)"}, {"kind": "method", "line": 38, "name": "inode", "signature": "def inode(self, i)"}, {"kind": "method", "line": 47, "name": "read", "signature": "def read(self, ino)"}, {"kind": "method", "line": 67, "name": "resolve", "signature": "def resolve(self, path)"}, {"kind": "method", "line": 86, "name": "ls", "signature": "def ls(self, ino, prefix)"}]}, {"doc": "minifs_fsck.py - Check MiniFS filesystem consistency.", "id": "tools/minifs_fsck.py", "kind": "module", "label": "minifs_fsck.py", "language": "py", "sha256": "1dbb5ecd872cd8cd", "symbol_count": 15, "symbols": [{"kind": "function", "line": 13, "name": "u16", "signature": "def u16(d, o)"}, {"kind": "function", "line": 14, "name": "u32", "signature": "def u32(d, o)"}, {"kind": "class", "line": 16, "name": "FSCK", "signature": "class FSCK"}, {"kind": "method", "line": 136, "name": "main", "signature": "def main()"}, {"kind": "method", "line": 17, "name": "__init__", "signature": "def __init__(self, fn)"}, {"kind": "method", "line": 24, "name": "_find_base", "signature": "def _find_base(self)"}, {"kind": "method", "line": 42, "name": "blk", "signature": "def blk(self, n)"}, {"kind": "method", "line": 45, "name": "_sb", "signature": "def _sb(self)"}, {"kind": "method", "line": 51, "name": "inode", "signature": "def inode(self, i)"}, {"kind": "method", "line": 58, "name": "read", "signature": "def read(self, ino)"}, {"kind": "method", "line": 73, "name": "err", "signature": "def err(self, msg)"}, {"kind": "method", "line": 75, "name": "mark_block", "signature": "def mark_block(self, n)"}, {"kind": "method", "line": 80, "name": "scan_inode", "signature": "def scan_inode(self, i)"}, {"kind": "method", "line": 89, "name": "scan_dir", "signature": "def scan_dir(self, ino)"}, {"kind": "method", "line": 121, "name": "run", "signature": "def run(self)"}]}, {"doc": "minifs_saves.py - preserve the guest's saves/ dir across image rebuilds. Regenerating minifs.bin from scratch wipes everything the guest wrote at runtime (Pokemon battery .sav/.rtc and .state savestates live in saves/ on MiniFS). Before mkfs runs, this tool extracts the live saves/ tree out of the previous os.img into a staging dir; the Makefile then passes that dir back into mkfs, so a rebuild carries the saves forward instead of wiping them. Only doom maps and Pokemon saves persist (PERSIST_SUFFIXES); minicraft chunks are skipped with a log line, never packed. Usage: minifs_saves.py backup The saves land in /saves/... (nothing is created when the image is missing or carries no saves/ dir). Guest files are written raw by minifs_write, never compressed, so extraction is byte-exact; a file found with the compressed flag set or with double-indirect blocks (both outside what the guest write path produces) aborts with a nonzero exit instead of backing up corrupt data.", "id": "tools/minifs_saves.py", "kind": "module", "label": "minifs_saves.py", "language": "py", "sha256": "0fb380610af77704", "symbol_count": 21, "symbols": [{"kind": "function", "line": 53, "name": "u16", "signature": "def u16(d, o)"}, {"kind": "function", "line": 57, "name": "u32", "signature": "def u32(d, o)"}, {"doc": "Random-access MiniFS partition inside a host file.", "kind": "class", "line": 61, "name": "Image", "signature": "class Image"}, {"kind": "class", "line": 85, "name": "FS", "signature": "class FS"}, {"kind": "method", "line": 216, "name": "valid_name", "signature": "def valid_name(nm)"}, {"kind": "method", "line": 224, "name": "strict_name", "signature": "def strict_name(nm)"}, {"doc": "Locate the MiniFS partition inside a host image file.\n\nReturns the byte offset of the partition, or None. Prefers the exact\nlayout the build produces (kernel at LBA 9, partition 2048-sector\naligned after it); falls back to a magic scan.", "kind": "method", "line": 233, "name": "find_partition_base", "signature": "def find_partition_base(fn)"}, {"kind": "method", "line": 271, "name": "cmd_backup", "signature": "def cmd_backup(img_path, stage)"}, {"kind": "method", "line": 343, "name": "main", "signature": "def main(argv)"}, {"kind": "method", "line": 64, "name": "__init__", "signature": "def __init__(self, fn, base)"}, {"kind": "method", "line": 72, "name": "close", "signature": "def close(self)"}, {"kind": "method", "line": 75, "name": "blk", "signature": "def blk(self, n)"}, {"kind": "method", "line": 86, "name": "__init__", "signature": "def __init__(self, img)"}, {"kind": "method", "line": 95, "name": "inode", "signature": "def inode(self, i)"}, {"kind": "method", "line": 110, "name": "is_dir", "signature": "def is_dir(self, st)"}, {"kind": "method", "line": 113, "name": "read_file", "signature": "def read_file(self, ino)"}, {"kind": "method", "line": 146, "name": "listdir", "signature": "def listdir(self, ino)"}, {"kind": "method", "line": 165, "name": "read_file_dir", "signature": "def read_file_dir(self, ino)"}, {"kind": "method", "line": 173, "name": "read_file_raw", "signature": "def read_file_raw(self, st)"}, {"kind": "method", "line": 197, "name": "resolve", "signature": "def resolve(self, path)"}, {"kind": "method", "line": 293, "name": "walk", "signature": "def walk(dir_ino, rel)"}]}, {"doc": "minios_cli.py — drive MiniOS through the MCP bridge, not by hand. Starts mcp/minios_mcp.py (which owns the QEMU child and the serial console) over stdio JSON-RPC and executes a sequence of actions in one session, then powers the machine off. This is the hammer the minios skill wants: never boot QEMU by hand; every shell interaction goes through the bridge. Usage: python3 tools/minios_cli.py ACTION [ARG] [ACTION [ARG] ...] Actions: boot boot the image, wait for the shell prompt status {booted, pid, log_bytes} send LINE send one shell line, wait for the next prompt, print output cat PATH print a ramdisk file snapshot print the unconsumed console tail expect MARKER wait for a marker; print matched: true/false write PATH send lines from stdin through minios_write poweroff power off and assert QEMU exit Example: python3 tools/minios_cli.py boot send \"help\" send \"ls etc/\" poweroff", "id": "tools/minios_cli.py", "kind": "module", "label": "minios_cli.py", "language": "py", "sha256": "64fd9ffb3716fbfb", "symbol_count": 6, "symbols": [{"kind": "class", "line": 38, "name": "Client", "signature": "class Client"}, {"kind": "method", "line": 100, "name": "main", "signature": "def main()"}, {"kind": "method", "line": 39, "name": "__init__", "signature": "def __init__(self)"}, {"kind": "method", "line": 56, "name": "request", "signature": "def request(self, method, params)"}, {"kind": "method", "line": 77, "name": "tool", "signature": "def tool(self, name, params)"}, {"kind": "method", "line": 87, "name": "close", "signature": "def close(self)"}]}, {"doc": "minios_gui.py — inject VGA-mode input and capture the framebuffer. Boots MiniOS with the emulated std VGA device (the linear framebuffer the kernel's desktop renders into), a QMP socket to inject PS/2 mouse motion, clicks and keyboard, and a pty serial console to drive the shell. After each action it saves the current VGA framebuffer to a PNG via QMP `screendump`, so a desktop crash, a vanished mouse cursor or a corrupted window is visible without a physical display. This is the tool for the VGA-mode bugs (mouse cursor vanishing, desktop crash after a ring-3 program): it triggers real input events in the VGA desktop and captures what the guest drew. Usage: python3 tools/minios_gui.py [actions...] Actions: send LINE send a shell line, wait for prompt mouse DX DY inject relative mouse motion click inject a left-button press+release key QCODE [up] inject a keyboard key (qemu keycode, e.g. esc, return) dump NAME screendump the VGA to $TMPDIR/gui_*/NAME.png sleep SECS pause", "id": "tools/minios_gui.py", "kind": "module", "label": "minios_gui.py", "language": "py", "sha256": "ee953c31c2a8384f", "symbol_count": 9, "symbols": [{"kind": "function", "line": 44, "name": "read_serial", "signature": "def read_serial(master, timeout)"}, {"kind": "class", "line": 60, "name": "QMP", "signature": "class QMP"}, {"kind": "method", "line": 112, "name": "main", "signature": "def main()"}, {"kind": "method", "line": 61, "name": "__init__", "signature": "def __init__(self, path)"}, {"kind": "method", "line": 73, "name": "cmd", "signature": "def cmd(self, obj)"}, {"kind": "method", "line": 77, "name": "_recv", "signature": "def _recv(self)"}, {"kind": "method", "line": 92, "name": "mouse", "signature": "def mouse(self, dx, dy, click)"}, {"kind": "method", "line": 102, "name": "key", "signature": "def key(self, qcode, up)"}, {"kind": "method", "line": 108, "name": "screendump", "signature": "def screendump(self, path)"}]}, {"doc": "minios_hyper.py -- host-side ring-minus-one debugger for MiniOS. QEMU already runs in host root mode above the guest kernel, so this tool does not implement a hypervisor. It fuses the three introspection channels QEMU exposes into one console: the serial shell, the QMP control socket and the gdb remote stub. From the host it can drive shell commands, trace syscalls, snapshot the VGA framebuffer and peek guest memory without any guest cooperation beyond the existing builtins. Purpose: debug the whole system (VGA desktop, syscalls, hangs) from the host where qemu runs, with reproducible scripted checks instead of eyeballs. Usage: python3 tools/minios_hyper.py --selftest python3 tools/minios_hyper.py --boot --check vga_idle [--check vga_cursor] [--check gfx_frames] [--check pixel_oob] [--shell \"trace verbose\"] [--hold] python3 tools/minios_hyper.py --boot --interactive Inputs: --boot runs os.img from the repository root with display none. --check names one scripted VGA/syscall probe; repeatable. --shell sends one extra guest line after boot. --selftest runs host-only unit vectors, no QEMU needed. --interactive drops into a tiny repl (help lists commands). Outputs: PASS/FAIL lines on stdout plus screendump PNGs in a mkdtemp work dir.", "id": "tools/minios_hyper.py", "kind": "module", "label": "minios_hyper.py", "language": "py", "sha256": "a9944ad2005e9451", "symbol_count": 51, "symbols": [{"doc": "Central tunable set for the host debugger, no magic numbers elsewhere.", "kind": "class", "line": 50, "name": "HyperConfig", "signature": "class HyperConfig"}, {"doc": "Encode and decode gdb remote serial protocol packets.", "kind": "class", "line": 73, "name": "RspCodec", "signature": "class RspCodec"}, {"doc": "Minimal QMP client over a unix socket.", "kind": "class", "line": 96, "name": "QmpChannel", "signature": "class QmpChannel"}, {"doc": "Tiny gdb RSP client for QEMU -s, enough to read regs and memory.", "kind": "class", "line": 152, "name": "GdbChannel", "signature": "class GdbChannel"}, {"doc": "Owns the QEMU child plus its serial, QMP and gdb channels.", "kind": "class", "line": 211, "name": "Guest", "signature": "class Guest"}, {"doc": "Host-side pixel math over QMP screendumps.", "kind": "class", "line": 339, "name": "FrameDiff", "signature": "class FrameDiff"}, {"doc": "Scripted bug-hunting probes, each returns (ok, detail).", "kind": "class", "line": 409, "name": "HyperChecks", "signature": "class HyperChecks"}, {"doc": "Host-only vectors for the packet codec and pixel math, no QEMU.", "kind": "method", "line": 491, "name": "run_selftest", "signature": "def run_selftest()"}, {"doc": "Boot the guest and run the requested scripted checks.", "kind": "method", "line": 523, "name": "run_boot", "signature": "def run_boot(checks, extra_shell, interactive)"}, {"doc": "Tiny interactive loop joining shell, QMP and gdb reads.", "kind": "method", "line": 561, "name": "repl", "signature": "def repl(guest)"}, {"doc": "Parse argv and dispatch to selftest, boot checks or repl.", "kind": "method", "line": 591, "name": "main", "signature": "def main(argv)"}, {"doc": "Wrap raw payload bytes into a $...#cs frame.", "kind": "method", "line": 77, "name": "encode", "signature": "def encode(payload)"}, {"doc": "Extract payload from a $...#cs frame, empty bytes on malformed.", "kind": "method", "line": 85, "name": "decode", "signature": "def decode(frame)"}, {"kind": "method", "line": 99, "name": "__init__", "signature": "def __init__(self, path)"}, {"kind": "method", "line": 109, "name": "_roundtrip", "signature": "def _roundtrip(self, obj)"}, {"doc": "Send one QMP object and return the raw reply bytes.", "kind": "method", "line": 117, "name": "raw", "signature": "def raw(self, obj)"}, {"doc": "Ask QEMU to write the VGA frame to path.", "kind": "method", "line": 121, "name": "screendump", "signature": "def screendump(self, path)"}, {"doc": "Inject relative mouse motion.", "kind": "method", "line": 126, "name": "rel", "signature": "def rel(self, dx, dy)"}, {"doc": "Tap one qemu keycode down and up.", "kind": "method", "line": 132, "name": "key", "signature": "def key(self, qcode)"}, {"doc": "Query the VM run state.", "kind": "method", "line": 141, "name": "status", "signature": "def status(self)"}, {"kind": "method", "line": 145, "name": "close", "signature": "def close(self)"}, {"kind": "method", "line": 155, "name": "__init__", "signature": "def __init__(self, port)"}, {"kind": "method", "line": 162, "name": "_drain", "signature": "def _drain(self)"}, {"kind": "method", "line": 168, "name": "_cmd", "signature": "def _cmd(self, payload)"}, {"doc": "Return raw g-packet bytes, empty on failure.", "kind": "method", "line": 181, "name": "regs", "signature": "def regs(self)"}, {"doc": "Read length bytes at addr, None on failure or malformed reply.", "kind": "method", "line": 185, "name": "read_mem", "signature": "def read_mem(self, addr, length)"}, {"kind": "method", "line": 195, "name": "halt", "signature": "def halt(self)"}, {"kind": "method", "line": 201, "name": "cont", "signature": "def cont(self)"}, {"kind": "method", "line": 204, "name": "close", "signature": "def close(self)"}, {"kind": "method", "line": 214, "name": "__init__", "signature": "def __init__(self, with_gdb)"}, {"kind": "method", "line": 248, "name": "_ser", "signature": "def _ser(self)"}, {"kind": "method", "line": 260, "name": "_reader", "signature": "def _reader(self)"}, {"kind": "method", "line": 276, "name": "snapshot", "signature": "def snapshot(self)"}, {"kind": "method", "line": 280, "name": "wait_for", "signature": "def wait_for(self, marker, timeout)"}, {"kind": "method", "line": 288, "name": "send", "signature": "def send(self, line, settle)"}, {"kind": "method", "line": 298, "name": "qmp_chan", "signature": "def qmp_chan(self)"}, {"kind": "method", "line": 303, "name": "gdb_chan", "signature": "def gdb_chan(self)"}, {"kind": "method", "line": 308, "name": "dump", "signature": "def dump(self, name)"}, {"kind": "method", "line": 314, "name": "stop", "signature": "def stop(self)"}, {"doc": "Mean absolute grey difference above the taskbar strip.", "kind": "method", "line": 343, "name": "mean_diff", "signature": "def mean_diff(a_path, b_path)"}, {"doc": "Clustered arrow-template hit positions, static-safe.", "kind": "method", "line": 356, "name": "cursor_positions", "signature": "def cursor_positions(shot_path)"}, {"doc": "Clustered arrow-sprite count for one frame.", "kind": "method", "line": 394, "name": "count_cursors", "signature": "def count_cursors(shot_path)"}, {"doc": "Hits in after with no neighbour in before, the live pointer.", "kind": "method", "line": 399, "name": "moved_cursors", "signature": "def moved_cursors(before_path, after_path)"}, {"kind": "method", "line": 412, "name": "__init__", "signature": "def __init__(self, guest)"}, {"doc": "Two idle frames must match, no unsolicited redraw or flicker.", "kind": "method", "line": 415, "name": "vga_idle", "signature": "def vga_idle(self)"}, {"doc": "One live pointer must move, static template hits are ignored.", "kind": "method", "line": 427, "name": "vga_cursor", "signature": "def vga_cursor(self)"}, {"doc": "The composited-frame counter must climb across a real present.", "kind": "method", "line": 439, "name": "gfx_frames", "signature": "def gfx_frames(self)"}, {"doc": "Out-of-range pixel probes must diagnose, never wrap or crash.", "kind": "method", "line": 452, "name": "pixel_oob", "signature": "def pixel_oob(self)"}, {"doc": "Verbose trace must show a named syscall for a real program.", "kind": "method", "line": 465, "name": "sys_trace", "signature": "def sys_trace(self)"}, {"kind": "method", "line": 476, "name": "_last_frames", "signature": "def _last_frames(self)"}, {"kind": "method", "line": 495, "name": "check", "signature": "def check(ok, msg)"}]}, {"doc": "mkfs.minifs.py - Create a MiniFS filesystem image for MiniOS. Usage: python3 mkfs.minifs.py [files...] python3 mkfs.minifs.py minifs.bin 32768 python3 mkfs.minifs.py minifs.bin 32768 -d files/", "id": "tools/mkfs.minifs.py", "kind": "module", "label": "mkfs.minifs.py", "language": "py", "sha256": "a2d2aa14662a6fde", "symbol_count": 20, "symbols": [{"kind": "function", "line": 22, "name": "roundup4", "signature": "def roundup4(v)"}, {"kind": "function", "line": 25, "name": "div_round_up", "signature": "def div_round_up(n, d)"}, {"kind": "function", "line": 28, "name": "crc16", "signature": "def crc16(data)"}, {"kind": "function", "line": 36, "name": "crc32", "signature": "def crc32(data)"}, {"kind": "class", "line": 44, "name": "MiniFS", "signature": "class MiniFS"}, {"kind": "method", "line": 241, "name": "main", "signature": "def main()"}, {"kind": "method", "line": 45, "name": "__init__", "signature": "def __init__(self, total_blocks)"}, {"kind": "method", "line": 67, "name": "mark_inodes_used", "signature": "def mark_inodes_used(self, start, count)"}, {"kind": "method", "line": 71, "name": "mark_blocks_used", "signature": "def mark_blocks_used(self, start, count)"}, {"kind": "method", "line": 75, "name": "alloc_inode", "signature": "def alloc_inode(self)"}, {"kind": "method", "line": 81, "name": "alloc_block", "signature": "def alloc_block(self)"}, {"kind": "method", "line": 87, "name": "create_root", "signature": "def create_root(self)"}, {"kind": "method", "line": 95, "name": "create_inode", "signature": "def create_inode(self, mode)"}, {"kind": "method", "line": 102, "name": "inode_set_size", "signature": "def inode_set_size(self, ino, size)"}, {"kind": "method", "line": 106, "name": "inode_set_block", "signature": "def inode_set_block(self, ino, logblk, phys)"}, {"kind": "method", "line": 136, "name": "add_dir_entry", "signature": "def add_dir_entry(self, dir_ino, name, child_ino, ftype)"}, {"kind": "method", "line": 174, "name": "write_file", "signature": "def write_file(self, parent_ino, name, data)"}, {"kind": "method", "line": 191, "name": "write_dir", "signature": "def write_dir(self, parent_ino, name)"}, {"kind": "method", "line": 197, "name": "serialize", "signature": "def serialize(self)"}, {"kind": "method", "line": 271, "name": "pack_tree", "signature": "def pack_tree(parent_ino, path, rel)"}]}, {"doc": "Build baseq2/pak1.pak carrying the player model. The Quake 2 shareware pak0.pak omits the player model (players/male/tris.md2, grunt.pcx, weapon.md2, grunt_i.pcx are loose files in the retail game). The q2generic client must find them in a pak, so this script packages the loose player model (from the Quake 2 install, held under progs/quake2generic/players) into a small second pak the game loads after pak0.pak. Quake 2 pak format: 4-byte \"PACK\", u32 directory offset, u32 directory length, then 64-byte directory entries (56-byte NUL-padded name, u32 filepos, u32 filelen), then the concatenated file data.", "id": "tools/mkpak1.py", "kind": "module", "label": "mkpak1.py", "language": "py", "sha256": "fab85fa41f389803", "symbol_count": 1, "symbols": [{"kind": "function", "line": 29, "name": "main", "signature": "def main()"}]}, {"doc": "Build a MiniOS ramdisk image from files in a directory tree. Each packed file is named by its path relative to the shared parent of all inputs, so progs/src/cp.c ships as src/cp.c and directories are carried as slashes inside flat names. Names longer than NAME_MAX or two inputs mapping to the same name are hard errors: a silently truncated or overwritten name would make every later lookup miss.", "id": "tools/mkramdisk.py", "kind": "module", "label": "mkramdisk.py", "language": "py", "sha256": "b1d5fe5ef5878767", "symbol_count": 2, "symbols": [{"kind": "function", "line": 20, "name": "pack_name", "signature": "def pack_name(path, common)"}, {"kind": "function", "line": 30, "name": "main", "signature": "def main()"}]}, {"doc": "mkroots.sh - regenerate tls_roots.h from the DER files in tls_roots_src/. Provenance of each root (2026 web PKI reality; everything a real site chains to is one of these): isrg_root_x1.der Let's Encrypt ISRG Root X1 (RSA, older chains) https://letsencrypt.org/certs/isrg-root-x1.pem isrg_root_x2.der Let's Encrypt ISRG Root X2 (ECDSA P-384, current) https://letsencrypt.org/certs/isrg-root-x2.pem digicert_global_root_g2.der DigiCert Global Root G2 (RSA) https://cacerts.digicert.com/DigiCertGlobalRootG2.crt globalsign_root_r3.der GlobalSign Root CA R3 (RSA) https://secure.globalsign.com/cacert/root-r3.crt gts_root_r4.der Google Trust Services Root R4 (ECDSA P-384) https://pki.goog/repo/certs/gtsr4.pem sslcom_ecc_2022.der SSL.com TLS ECC Root CA 2022 (Cloudflare ECC chains) sslcom_rsa_2022.der SSL.com TLS RSA Root CA 2022 (Cloudflare RSA chains) The two SSL.com roots have no stable public URL; they are extracted from the certificate chain example.com serves (openssl s_client -showcerts, ECDHE-ECDSA and ECDHE-RSA respectively). The build never runs this script: tls_roots.h is a committed input, regenerated only when the root set changes.", "id": "tools/mkroots.sh", "kind": "module", "label": "mkroots.sh", "language": "sh", "sha256": "8df4930446042f4c", "symbol_count": 0, "symbols": []}, {"doc": "Mutation testing for MiniOS. Each mutation is applied to the source in place, the disk image is rebuilt and the behavioural suite is run in fail-fast mode. A mutant that survives a full green suite exposes a gap that must be closed by adding a scenario, never by deleting the mutant. The sources are backed up before the first mutation and restored on every exit path, including interrupts. A mutation whose expression matches nothing is reported as broken rather than surviving: `sed -i` exits zero when it changes nothing, which would otherwise rebuild pristine sources and look like a test gap. Progress is persisted to a state file (default .mutate-state in the repo root, overridable with --state or MINIOS_MUTATE_STATE). A run therefore RESUMES where it left off: mutants already recorded are skipped, so a timed-out run can be picked up without re-running the finished ones. The state file is just a list of \"name outcome\" lines and can be edited by hand to re-target work. Usage: mutate.sh full run, resuming from the first mutant not yet recorded in the state file mutate.sh --from NAME force-run from the mutant NAME onward, ignoring recorded state for those mutants mutate.sh --match REGEX only run mutants whose name matches REGEX mutate.sh --limit N run at most N mutants this invocation mutate.sh --state FILE use FILE as the progress file mutate.sh --reset clear the state file and run the full suite", "id": "tools/mutate.sh", "kind": "module", "label": "mutate.sh", "language": "sh", "sha256": "edf358f8cbc1eea9", "symbol_count": 5, "symbols": [{"kind": "function", "line": 51, "name": "usage"}, {"kind": "function", "line": 103, "name": "restore_sources"}, {"kind": "function", "line": 110, "name": "cleanup"}, {"kind": "function", "line": 286, "name": "record"}, {"doc": "Locate a mutant by name.", "kind": "function", "line": 292, "name": "find_index"}]}, {"doc": "Docstring: VGA liveness probe during CPU-bound ring-3 compute. Boots os.img headless, runs a command, moves the PS/2 mouse through QMP mid-run and screendumps. A live guest repaints cursor and clock even while a ring-3 loop never blocks: consecutive dumps must differ. Usage: tools/probe_compute_vga.py \"\" [settle_secs]", "id": "tools/probe_compute_vga.py", "kind": "module", "label": "probe_compute_vga.py", "language": "py", "sha256": "a98d896ad55e7d2b", "symbol_count": 6, "symbols": [{"kind": "function", "line": 22, "name": "main", "signature": "def main()"}, {"kind": "function", "line": 55, "name": "send", "signature": "def send(line)"}, {"kind": "function", "line": 61, "name": "poll", "signature": "def poll(timeout)"}, {"kind": "function", "line": 88, "name": "qmp", "signature": "def qmp(obj)"}, {"kind": "function", "line": 97, "name": "rel", "signature": "def rel(dx, dy)"}, {"kind": "function", "line": 104, "name": "dump", "signature": "def dump(name)"}]}, {"doc": "probe_minicraft.py -- numeric minicraft probe without any PNG. Boots os.img headless (display none), runs minicraft in the background so the shell stays usable, and verifies rendering + movement purely through serial-observable numbers: - `gfx frames` must climb (real compositing, like DOOM autoframes) - `wm list` gives the gfx window rect; `gfx rect` over the upper and lower content halves reports histograms (sky vs ground orientation) - QMP holds `w` for 2s, then the `P` key tap makes minicraft print `minicraft: pos X Y Z ... wood N`; X must have advanced vs before No PIL, no screendump, no PNG: everything is parsed serial text. Usage: python3 tools/probe_minicraft.py [--hold SECS]", "id": "tools/probe_minicraft.py", "kind": "module", "label": "probe_minicraft.py", "language": "py", "sha256": "41810ec91b432826", "symbol_count": 6, "symbols": [{"kind": "function", "line": 34, "name": "main", "signature": "def main()"}, {"kind": "function", "line": 68, "name": "send", "signature": "def send(line)"}, {"kind": "function", "line": 74, "name": "poll", "signature": "def poll(timeout)"}, {"kind": "function", "line": 85, "name": "grab", "signature": "def grab(pat, timeout)"}, {"kind": "function", "line": 143, "name": "qkey", "signature": "def qkey(qcode, down)"}, {"kind": "function", "line": 154, "name": "pos", "signature": "def pos(tag)"}]}, {"doc": "Minimal QEMU guest agent client for MiniOS. Connects to the guest agent socket (a QEMU chardev mapped to the kernel's COM2 agent port), sends one QGA JSON request per line, and prints the JSON reply. Also drives the same protocol QEMU's own QMP guest-agent-command uses, because the framing is whitespace-delimited. Usage: qga_client.py [arguments_json] qga_client.py --sock [arguments_json] Examples: qga_client.py guest-ping qga_client.py guest-exec '{\"path\":\"echo hi > /tmp/x\"}' qga_client.py guest-file-read '{\"handle\":0,\"count\":100}' The socket path defaults to /tmp/minios-ga.sock and can be overridden with --sock or the MINIOS_GA_SOCK environment variable.", "id": "tools/qga_client.py", "kind": "module", "label": "qga_client.py", "language": "py", "sha256": "2208211af09491b5", "symbol_count": 4, "symbols": [{"kind": "function", "line": 33, "name": "send_command", "signature": "def send_command(sock, cmd, args)"}, {"doc": "Read one newline-terminated JSON object from the agent.", "kind": "function", "line": 41, "name": "read_reply", "signature": "def read_reply(sock, timeout)"}, {"kind": "function", "line": 57, "name": "connect", "signature": "def connect(path)"}, {"kind": "function", "line": 74, "name": "main", "signature": "def main(argv)"}]}, {"doc": "Quick standalone smoke test for the QEMU guest agent: boots os.img once with the agent socket chardev, waits for the shell prompt, drives qga_client.py against the socket, and asserts the replies. Exits nonzero on any failure. This is the low-cost (single boot) check used during development; the full end-to-end coverage lives as a scenario in test_bdd.sh. Env overrides: QEMU, IMAGE, MEM, TMO, MINIOS_GA_SOCK.", "id": "tools/qga_test.sh", "kind": "module", "label": "qga_test.sh", "language": "sh", "sha256": "9d23383e2e3b9f0f", "symbol_count": 3, "symbols": [{"kind": "function", "line": 25, "name": "cleanup"}, {"kind": "function", "line": 31, "name": "check"}, {"kind": "function", "line": 43, "name": "expect_in"}]}, {"doc": "repro_gui.py — reproduce the VGA/mouse state bug after ring-3 programs. Boots MiniOS with a QMP socket (to inject PS/2 mouse motion into the guest) and a pty serial console (to drive the shell), then runs a sequence of shell commands and reports the mouse_state visible through `gfx` plus any kernel EXCEPTION dump on the serial line. This is how the GUI-only bug (mouse cursor vanishing / VGA crash after DOOM, SYS_SPAWN, etc.) is observed without a physical display: the kernel desktop tick runs on the guest framebuffer, and its failures surface on serial. Usage: python3 tools/repro_gui.py send \"micropython src/test.py\" [send ...]", "id": "tools/repro_gui.py", "kind": "module", "label": "repro_gui.py", "language": "py", "sha256": "873c39d2ad7dd592", "symbol_count": 10, "symbols": [{"kind": "function", "line": 30, "name": "read_serial", "signature": "def read_serial(master, timeout)"}, {"kind": "class", "line": 46, "name": "QMP", "signature": "class QMP"}, {"kind": "method", "line": 92, "name": "main", "signature": "def main()"}, {"kind": "method", "line": 47, "name": "__init__", "signature": "def __init__(self, path)"}, {"kind": "method", "line": 59, "name": "cmd", "signature": "def cmd(self, obj)"}, {"kind": "method", "line": 63, "name": "_recv", "signature": "def _recv(self)"}, {"kind": "method", "line": 78, "name": "mouse", "signature": "def mouse(self, dx, dy, left)"}, {"kind": "method", "line": 87, "name": "key", "signature": "def key(self, qcode, down)"}, {"kind": "method", "line": 113, "name": "send", "signature": "def send(line)"}, {"kind": "method", "line": 118, "name": "mouse_state", "signature": "def mouse_state()"}]}, {"doc": "BDD suite for MiniOS: boots the disk image in QEMU and drives the shell over the serial console (COM1). Every scenario sends a script of shell commands, then asserts that the expected markers appear in the console log. The guest powers itself off through the ACPI port at the end of each scenario, which makes QEMU exit; the timeout is only a safety net for hangs. A stale-qemu guard prevents image-lock cascades between runs. Environment overrides: QEMU, TMO (per-scenario timeout), KEEP_LOG=1 to keep the console log of the last scenario for inspection.", "id": "tools/test_bdd.sh", "kind": "module", "label": "test_bdd.sh", "language": "sh", "sha256": "ad0eb5b8e501c966", "symbol_count": 11, "symbols": [{"doc": "MATCH filter: skip scenarios whose name lacks the substring (and make the following expects no-ops so a skipped boot can't fail on a stale log).", "kind": "function", "line": 35, "name": "should_run"}, {"kind": "function", "line": 43, "name": "cleanup_stale_qemu"}, {"doc": "scenario