On 22/10/2015 14:26, Stefan Hajnoczi wrote: > printk() - plain old printf > printk_once() - uses a static bool for once-only semantics, > modulo races between CPUs > printk_ratelimited() - time-based rate-limiting > > (And if you need to configure the ratelimit threshold, you can use the > underlying __ratelimit() function.) > > The same could work for QEMU. Existing "qemu log" stuff is mostly > printk(). Any messages that are not errors or warnings don't need > rate-limiting because they shouldn't be enabled by default (and when you > do want them for troubleshooting, then rate-limiting gets in the way).
Actually, most of the "qemu log" stuff is TCG tracing. UNIMP and GUEST_ERROR are not tracing, and could indeed go to stderr with a rate-limiter (with a "-msg ratelimit=no" option). I agree with you about DPRINTF being sometimes tracing and sometimes logging. I'm planning to integrate the stderr tracing backend with qemu log. I think this is the most pressing need, and I think I can have some patches ready for comments on Monday. It depends on whether I'll decide to play with QEMU or LEGO Digital Designer on the way to Seoul. Second, we can integrate qemu log with "-msg timestamp=yes" and add the above rate-limiting functionality. Paolo