bug pass: whole console lines, a quiet SCI, an honest reserve warning

- schinit, schinitd and vgpud build every message from pieces, one
  write() each, so a job starting on another CPU landed mid-line:
  "schinitd: starting vgpud: os.schos.resolvconfno virtio-gpu on this
  machine". They now collect a line and write it at the newline;
  resolvconf's verbose line is one write with its prefix.
- The ACPI SCI registers IRQ_QUIET. A desktop's SCI never fires, and the
  poller took two seconds of silence for a misrouted line ("irq 9:
  nothing has arrived on it") and called the handler every tick. A line
  is only exempt while every handler on it is quiet.
- The loader claims each segment from where the last one's claim ended,
  so two segments sharing a page no longer ask for it twice. When a
  claim is still refused, it names the memory-map entries in the way.
- Stale divesymlink() declaration gone; the kernel.md struct table
  re-measured (inode, buf and file pools grow from slabs now).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S1giNvrHTrPMPw7V6x1kQ4
This commit is contained in:
Nexoniarz 2026-10-23 16:03:33 +02:00
commit e659c6b187
10 changed files with 184 additions and 25 deletions

View file

@ -181,9 +181,15 @@ main(int argc, char *argv[])
// Worth one line under -v, because it is the moment names start working
// and somebody watching a verbose boot may be waiting to know it.
// One write(), prefix and all: two would let another job's line land
// between them, which a verbose boot on real hardware showed as
// "os.schos.keymapnameserver 192.168.1.1".
if (verbose_boot) {
puts_("resolvconf: ");
write(1, buf, n);
static char line[sizeof("resolvconf: ") + sizeof(buf)];
int k = 0;
for (const char *p = "resolvconf: "; *p; p++) line[k++] = *p;
for (int j = 0; j < n; j++) line[k++] = buf[j];
write(1, line, k);
}
return 0;
}