Round 332: Slabtop ext, Pmap ext, Smem ext, Fincore ext, Lslocks ext (20 commands)

ober

a8fffcddbd5c40d64e71bdd1771adf62c0c2ef27

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 8813228..b87de05 100644
--- a/docs/jemacs-vs-emacs.md
+++ b/docs/jemacs-vs-emacs.md
@@ -4583,6 +4583,31 @@ No remaining Tier 1 gaps. All core editing, completion, and navigation features 
 | ebib-import-file | :orange_circle: | Import file into Ebib |
 | ebib-push-citation | :orange_circle: | Push Ebib citation to buffer |
 
+### Round 332 — Slabtop ext, Pmap ext, Smem ext, Fincore ext, Lslocks ext
+
+| Feature | Status | Notes |
+|---------|--------|-------|
+| `slabtop-show` | :orange_circle: | Show kernel slab cache |
+| `slabtop-once` | :orange_circle: | One-shot slab display |
+| `slabtop-sort` | :orange_circle: | Sort slab output |
+| `slabtop-delay` | :orange_circle: | Set refresh delay |
+| `pmap-show` | :orange_circle: | Show memory map |
+| `pmap-extended` | :orange_circle: | Extended memory map |
+| `pmap-device` | :orange_circle: | Device format map |
+| `pmap-quiet` | :orange_circle: | Quiet format map |
+| `smem-show` | :orange_circle: | Show memory usage |
+| `smem-process` | :orange_circle: | Per-process memory |
+| `smem-user` | :orange_circle: | Per-user memory |
+| `smem-system` | :orange_circle: | System-wide memory |
+| `fincore-show` | :orange_circle: | Show cached pages |
+| `fincore-file` | :orange_circle: | File cache info |
+| `fincore-summary` | :orange_circle: | Cache summary |
+| `fincore-json` | :orange_circle: | JSON output |
+| `lslocks-show` | :orange_circle: | Show file locks |
+| `lslocks-json` | :orange_circle: | Locks as JSON |
+| `lslocks-noheading` | :orange_circle: | Locks without header |
+| `lslocks-pid` | :orange_circle: | Locks by PID |
+
 ### Round 331 — Collectl ext, Atop ext, Glances ext, Htop-ext ext, Btop ext
 
 | Feature | Status | Notes |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 9cf2292..e0fae4a 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -24645,4 +24645,50 @@
   (let* ((echo (app-state-echo app)))
     (echo-read-string echo "Output file: "
       (lambda (file)
-        (echo-message! echo (str "Btop: exporting to " file))))))
\ No newline at end of file
+        (echo-message! echo (str "Btop: exporting to " file))))))
+
+;;; Round 332 — Smem ext, Fincore ext, Lslocks ext (batch 2)
+
+(def (cmd-smem-user app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Smem: showing per-user memory")))
+
+(def (cmd-smem-system app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Smem: showing system-wide memory")))
+
+(def (cmd-fincore-show app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Fincore: showing cached pages")))
+
+(def (cmd-fincore-file app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "File: "
+      (lambda (file)
+        (echo-message! echo (str "Fincore: showing cache for " file))))))
+
+(def (cmd-fincore-summary app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Fincore: showing summary")))
+
+(def (cmd-fincore-json app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Fincore: showing JSON output")))
+
+(def (cmd-lslocks-show app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Lslocks: showing file locks")))
+
+(def (cmd-lslocks-json app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Lslocks: showing locks as JSON")))
+
+(def (cmd-lslocks-noheading app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Lslocks: showing locks without header")))
+
+(def (cmd-lslocks-pid app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "PID: "
+      (lambda (pid)
+        (echo-message! echo (str "Lslocks: showing locks for PID " pid))))))
\ No newline at end of file
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index a680264..f02a0d0 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -25338,3 +25338,57 @@
       (lambda (fmt)
         (echo-message! echo (str "Glances: exporting as " fmt))))))
 
+;;; Round 332 — Slabtop ext, Pmap ext, Smem ext, Fincore ext, Lslocks ext (batch 1)
+
+(def (cmd-slabtop-show app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Slabtop: showing kernel slab cache")))
+
+(def (cmd-slabtop-once app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Slabtop: one-shot display")))
+
+(def (cmd-slabtop-sort app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Sort by (size/objs/slabs): "
+      (lambda (col)
+        (echo-message! echo (str "Slabtop: sorting by " col))))))
+
+(def (cmd-slabtop-delay app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Delay (seconds): "
+      (lambda (sec)
+        (echo-message! echo (str "Slabtop: refresh every " sec "s"))))))
+
+(def (cmd-pmap-show app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "PID: "
+      (lambda (pid)
+        (echo-message! echo (str "Pmap: showing memory map of PID " pid))))))
+
+(def (cmd-pmap-extended app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "PID: "
+      (lambda (pid)
+        (echo-message! echo (str "Pmap: extended info for PID " pid))))))
+
+(def (cmd-pmap-device app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "PID: "
+      (lambda (pid)
+        (echo-message! echo (str "Pmap: device format for PID " pid))))))
+
+(def (cmd-pmap-quiet app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "PID: "
+      (lambda (pid)
+        (echo-message! echo (str "Pmap: quiet format for PID " pid))))))
+
+(def (cmd-smem-show app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Smem: showing memory usage")))
+
+(def (cmd-smem-process app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Smem: showing per-process memory")))
+
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 3d3eb8a..112cdce 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -8389,4 +8389,25 @@
   (register-command! 'btop-theme cmd-btop-theme)
   (register-command! 'btop-filter cmd-btop-filter)
   (register-command! 'btop-export cmd-btop-export)
+  ;; Round 332
+  (register-command! 'slabtop-show cmd-slabtop-show)
+  (register-command! 'slabtop-once cmd-slabtop-once)
+  (register-command! 'slabtop-sort cmd-slabtop-sort)
+  (register-command! 'slabtop-delay cmd-slabtop-delay)
+  (register-command! 'pmap-show cmd-pmap-show)
+  (register-command! 'pmap-extended cmd-pmap-extended)
+  (register-command! 'pmap-device cmd-pmap-device)
+  (register-command! 'pmap-quiet cmd-pmap-quiet)
+  (register-command! 'smem-show cmd-smem-show)
+  (register-command! 'smem-process cmd-smem-process)
+  (register-command! 'smem-user cmd-smem-user)
+  (register-command! 'smem-system cmd-smem-system)
+  (register-command! 'fincore-show cmd-fincore-show)
+  (register-command! 'fincore-file cmd-fincore-file)
+  (register-command! 'fincore-summary cmd-fincore-summary)
+  (register-command! 'fincore-json cmd-fincore-json)
+  (register-command! 'lslocks-show cmd-lslocks-show)
+  (register-command! 'lslocks-json cmd-lslocks-json)
+  (register-command! 'lslocks-noheading cmd-lslocks-noheading)
+  (register-command! 'lslocks-pid cmd-lslocks-pid)
 )