Opened 14 years ago
Closed 13 years ago
#289 closed enhancement (fixed)
klog's interrupt_received() routine is too heavy-weight
Reported by: | Martin Decky | Owned by: | Martin Decky |
---|---|---|---|
Priority: | minor | Milestone: | 0.5.0 |
Component: | helenos/app/klog | Version: | mainline |
Keywords: | Cc: | ||
Blocker for: | Depends on: | ||
See also: |
Description
The kernel notifications about klog updates are totally asynchronous (i.e. the kernel does not stop writing to the klog area while the uspace klog task is reading the data).
Thus, reading the area character by character in uspace klog and writing each character to console and file synchronously in the same loop can cause frequent data loss.
In principle, there is no way how to guarantee success in all cases (by design, since the kernel should be always free to write to the klog without any waiting or allocating additional memory for a FIFO), but a more clever design of the uspace klog can probably improve the reliability.
Change History (4)
comment:1 by , 14 years ago
Component: | unspecified → app/klog |
---|---|
Status: | new → accepted |
comment:2 by , 14 years ago
Milestone: | 0.4.3 → 0.5.0 |
---|
comment:3 by , 14 years ago
Type: | defect → enhancement |
---|
comment:4 by , 13 years ago
Resolution: | → fixed |
---|---|
Status: | accepted → closed |
Most of the issues should be mitigated as of mainline,948.
Introduced changes: Automatic kernel notification masking and on-demand unmasking in uspace klog (to avoid copying the same data multiple times); producer/consumer design of uspace klog to move heavy-weight output calls to a separate fibril.