On Fri, Apr 29, 2011 at 02:09:54PM +0200, Gerd Hoffmann wrote: > On 04/28/11 10:29, Alon Levy wrote: > >With this you can output the command log and/or the guest debug (driver) > >output to a chardev instead of stderr: > > > >-global qxl-vga.cmdlog_chardev=qxl_cmdlog_chardev > >-global qxl-vga.debug_chardev=qxl_debug_chardev > > > >useful for debugging. if no chardev is specified prints to stderr like the > >old > >code. > > Hmm. That is a bit too much ad-hoc debug hacking IMHO. Also I'm > not sure I like the idea to send debug stuff through chardev instead > of just writing them to stderr or some logfile. > > I do see why you are doing that though. Unfortunaly qemu has no > sane debug logging infrastructure. This is long overdue IMHO, so we > don't need hacks like this one and also don't reinvent stuff over > and over.
The bigger hack called "qxl_terse" I didn't even send :) ok, so now I get to either keep this in my closet or think of how to do a minimal acceptable qemu logging infrastructure that would let me register a logging handle and use that to redirect to a chardev (they would all default to being muxed over stdio?) QemuLogger *qemu_create_logger(const char *logger_id); - logger_id is used to match to the chardev given on the command line - need to prevent collision, so probably easier to have a logger_id be an int and have that looked up to a string in an automatically generated table? struct QemuLogger { CharDriverState *chr; }; And command line would be: -chardev bla,id=myid -debug qxl,myid qxl->logger = qemu_create_logger("qxl"); qemu_chr_write(qxl->logger->chr, ..) logger creation would have to happen before command line parsing, so in the device initialization. Sounds right? > > cheers, > Gerd >