While working on other problems with *printf(9), log(9), etc.
I stumbled upon:
options PRINTF_BUFR_SIZE=128 # Prevent printf output being
interspersed.
Question 1: Am I correct in thinking that PRINTF_BUFR_SIZE is
supposed
to prevent this:
ada2: 300.000MB/s transfuhub2: 3 ports with 3 removable, self
powered
ers (SATA 2.x, UDMA6, PIO 8192bytes)
ada2: Command Queueing enabled
Question 2: Why is vprintf() the only function that does this
buffering?
As far as I can tell, the various functions that call kvprintf()
directly
without going through vprintf() do not get buffered. I'm thinking
that
kvprintf() would be a better place for the buffering. Or would this
break
something?
http://docs.freebsd.org/cgi/mid.cgi?AANLkTinPhcc8Z_BdvoEQUv-ZXlHAYOTQJwlUQDVO\
8iJ9
Thanks, Alex! That was a useful thread, I now know more about the
problem and how to fix it. I gather the answer to Q1 is yes. Given
that the word "transfers" is broken, I still think this example is
most likely due to my changes that use unbuffered kvprintf() rather
than buffered vprintf(). So question 2 remains.
BTW, I see some threads where people think this is due to SMP.
It happens on uniprocessor machines too.
_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org"