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:
parent
7af579a20d
commit
e659c6b187
10 changed files with 184 additions and 25 deletions
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue