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
|
|
@ -51,6 +51,13 @@ typedef void (*irq_handler_t)(void *arg);
|
|||
#define IRQ_LEVEL_HIGH 2
|
||||
#define IRQ_EDGE_LOW 3
|
||||
#define IRQ_IS_LEVEL(m) ((m) == IRQ_LEVEL_LOW || (m) == IRQ_LEVEL_HIGH)
|
||||
// OR'd into the mode by a handler whose line is *meant* to be silent: the
|
||||
// ACPI SCI fires for a power button or a lid, and on a desktop that is never.
|
||||
// Without it the poller below took two seconds of silence as a misrouted line
|
||||
// and called the handler every tick for the rest of the boot. A line is only
|
||||
// exempt while every handler on it says so -- a PCI device sharing the SCI's
|
||||
// pin still gets polled.
|
||||
#define IRQ_QUIET 0x10
|
||||
int irq_register(int irq, irq_handler_t fn, void *arg, const char *name,
|
||||
int level_low);
|
||||
void irq_unregister(int irq, irq_handler_t fn, void *arg);
|
||||
|
|
|
|||
Loading…
Reference in a new issue