Round 285: Cgroup ext, Namespace ext, Seccomp ext, Capabilities ext, Ulimit ext (20 commands)

ober

89bfaf150389302f8a90d22d51bb05eaf4a342df

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index b8c147b..80291da 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 285 — Cgroup ext, Namespace ext, Seccomp ext, Capabilities ext, Ulimit ext
+
+| Command | Status | Description |
+|---------|--------|-------------|
+| cgroup-list | :orange_circle: | List cgroups |
+| cgroup-create | :orange_circle: | Create cgroup |
+| cgroup-move | :orange_circle: | Move process to cgroup |
+| cgroup-limit | :orange_circle: | Set cgroup resource limit |
+| namespace-list | :orange_circle: | List namespaces |
+| namespace-create | :orange_circle: | Create namespace |
+| namespace-enter | :orange_circle: | Enter namespace |
+| namespace-delete | :orange_circle: | Delete namespace |
+| seccomp-status | :orange_circle: | Show seccomp status |
+| seccomp-profile | :orange_circle: | Load seccomp profile |
+| seccomp-audit | :orange_circle: | View seccomp audit log |
+| seccomp-list | :orange_circle: | List syscall filters |
+| capabilities-list | :orange_circle: | List process capabilities |
+| capabilities-add | :orange_circle: | Add capability |
+| capabilities-drop | :orange_circle: | Drop capability |
+| capabilities-show | :orange_circle: | Show PID capabilities |
+| ulimit-list | :orange_circle: | List ulimits |
+| ulimit-set | :orange_circle: | Set ulimit value |
+| ulimit-hard | :orange_circle: | Show hard limits |
+| ulimit-soft | :orange_circle: | Show soft limits |
+
 ### Round 284 — LVM ext, ZFS ext, Btrfs ext, MDADM ext, LUKS ext
 
 | Command | Status | Description |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index f78ed02..ca16cb4 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -22127,4 +22127,54 @@
   (let* ((echo (app-state-echo app)))
     (echo-read-string echo "Device: "
       (lambda (dev)
-        (echo-message! echo (str "LUKS: formatting " dev))))))
\ No newline at end of file
+        (echo-message! echo (str "LUKS: formatting " dev))))))
+
+;;; Round 285 — Seccomp ext, Capabilities ext, Ulimit ext (batch 2)
+
+(def (cmd-seccomp-audit app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Seccomp: viewing audit log")))
+
+(def (cmd-seccomp-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Seccomp: listing syscall filters")))
+
+(def (cmd-capabilities-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Capabilities: listing process caps")))
+
+(def (cmd-capabilities-add app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Capability: "
+      (lambda (cap)
+        (echo-message! echo (str "Capabilities: adding " cap))))))
+
+(def (cmd-capabilities-drop app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Capability: "
+      (lambda (cap)
+        (echo-message! echo (str "Capabilities: dropping " cap))))))
+
+(def (cmd-capabilities-show app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "PID: "
+      (lambda (pid)
+        (echo-message! echo (str "Capabilities: showing for PID " pid))))))
+
+(def (cmd-ulimit-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Ulimit: listing limits")))
+
+(def (cmd-ulimit-set app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Limit (e.g. nofile=65536): "
+      (lambda (lim)
+        (echo-message! echo (str "Ulimit: setting " lim))))))
+
+(def (cmd-ulimit-hard app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Ulimit: showing hard limits")))
+
+(def (cmd-ulimit-soft app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Ulimit: showing soft limits")))
\ 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 1fb3833..469b4b7 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -22784,3 +22784,59 @@
       (lambda (sub)
         (echo-message! echo (str "Btrfs: snapshot " sub))))))
 
+;;; Round 285 — Cgroup ext, Namespace ext, Seccomp ext (batch 1)
+
+(def (cmd-cgroup-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Cgroup: listing cgroups")))
+
+(def (cmd-cgroup-create app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Cgroup name: "
+      (lambda (name)
+        (echo-message! echo (str "Cgroup: creating " name))))))
+
+(def (cmd-cgroup-move app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "PID: "
+      (lambda (pid)
+        (echo-message! echo (str "Cgroup: moving PID " pid))))))
+
+(def (cmd-cgroup-limit app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Resource limit: "
+      (lambda (lim)
+        (echo-message! echo (str "Cgroup: setting limit " lim))))))
+
+(def (cmd-namespace-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Namespace: listing namespaces")))
+
+(def (cmd-namespace-create app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Namespace type: "
+      (lambda (typ)
+        (echo-message! echo (str "Namespace: creating " typ))))))
+
+(def (cmd-namespace-enter app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Namespace PID: "
+      (lambda (pid)
+        (echo-message! echo (str "Namespace: entering " pid))))))
+
+(def (cmd-namespace-delete app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Namespace: "
+      (lambda (ns)
+        (echo-message! echo (str "Namespace: deleting " ns))))))
+
+(def (cmd-seccomp-status app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Seccomp: showing status")))
+
+(def (cmd-seccomp-profile app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Profile path: "
+      (lambda (path)
+        (echo-message! echo (str "Seccomp: loading " path))))))
+
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 735144f..9dae046 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -7402,4 +7402,25 @@
   (register-command! 'luks-close cmd-luks-close)
   (register-command! 'luks-status cmd-luks-status)
   (register-command! 'luks-format cmd-luks-format)
+  ;; Round 285
+  (register-command! 'cgroup-list cmd-cgroup-list)
+  (register-command! 'cgroup-create cmd-cgroup-create)
+  (register-command! 'cgroup-move cmd-cgroup-move)
+  (register-command! 'cgroup-limit cmd-cgroup-limit)
+  (register-command! 'namespace-list cmd-namespace-list)
+  (register-command! 'namespace-create cmd-namespace-create)
+  (register-command! 'namespace-enter cmd-namespace-enter)
+  (register-command! 'namespace-delete cmd-namespace-delete)
+  (register-command! 'seccomp-status cmd-seccomp-status)
+  (register-command! 'seccomp-profile cmd-seccomp-profile)
+  (register-command! 'seccomp-audit cmd-seccomp-audit)
+  (register-command! 'seccomp-list cmd-seccomp-list)
+  (register-command! 'capabilities-list cmd-capabilities-list)
+  (register-command! 'capabilities-add cmd-capabilities-add)
+  (register-command! 'capabilities-drop cmd-capabilities-drop)
+  (register-command! 'capabilities-show cmd-capabilities-show)
+  (register-command! 'ulimit-list cmd-ulimit-list)
+  (register-command! 'ulimit-set cmd-ulimit-set)
+  (register-command! 'ulimit-hard cmd-ulimit-hard)
+  (register-command! 'ulimit-soft cmd-ulimit-soft)
 )