Serialize printing during panic()
authorBarret Rhoden <brho@cs.berkeley.edu>
Fri, 13 Jul 2018 21:43:50 +0000 (17:43 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Fri, 13 Jul 2018 21:56:27 +0000 (17:56 -0400)
commit93b9607ebeffcbaa83b591e61e34283ab8922eec
tree9a4c2a8e61fd81b20c3f2ca9663f5aeecb594744
parentd2d786ddcbc2dec28cc252e57020f627c2bd2df3
Serialize printing during panic()

When multiple cores panicked concurrently, their output would be garbled.
They also didn't have very useful info, and I almost always wanted a
backtrace.  Now we should get each core printing on its own, including a
backtrace.

The monitor() call needs to happen outside the lock, so we'll wait a little
till the other cores are likely done.  They just need to wait long enough
for another core to grab the lock and set 'panic_printing'.  500ms seems to
be enough, even on Qemu.

This is only lightly tested - crazy panics under insane conditions might
break a bit more than before.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/src/init.c