Jim Keniston wrote:
James Morris wrote:
quoted
On Thu, 17 Jul 2003, Jim Keniston wrote:
quoted
3. Given the above, what should the evlog.c caller do when
kernel_error_event_iov() returns -EINPROGRESS?
a. Nothing. Figure the packet will probably get logged.
b. Just to be safe, report it via printk, the same way we report dropped
packets.
We currently do (a). (b) would mean that every event logged from IRQ
context would be cc-ed to printk.
I don't think this irq detection logic should be added at all here, let
the caller reschedule its logging if running in irq context.
- James
--
James Morris
[off-list ref]
Yes, this makes sense. At the kerror.c level, just return -EDEADLK if in_irq().
Delay packet delivery (via a tasklet, as before) at the evlog.c level instead.
That way, we know at the evlog.c level (in the tasklet) whether the event packet
was delivered to anybody, and can paraphrase it to printk if it wasn't.
Is this the sort of thing you had in mind?
Jim K
I implemented the above change. Now, an event logged from an interrupt
handler when nobody's listening to our socket (e.g., during boot) is
paraphrased to printk. Here are the updated patches:
http://prdownloads.sourceforge.net/evlog/kerror-2.5.75.patch?download
http://prdownloads.sourceforge.net/evlog/evlog-2.5.75.patch?download
http://prdownloads.sourceforge.net/evlog/kerrord.tar.gz?download
Jim K