Port-arm archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Interrupt questions



> Is it legal to call uprintf() inside an interrupt handler?

I don't know.  It might work enough of the time to be useful even if
it's not promised; I've used printf() on amd64 inside interrupt
handlers often enough.  I don't know whether it's promised, but I've
found it works reliably enough to be a useful debugging tool.  I don't
recall trying it on any ARM, much less something like your board, but
it might be worth investigating.

> If not, is there another way to add traces?

Sure.  For example, I've had cases where printf introduces enough delay
to cause problems; I've dealt with them in various ways, such as by
allocating a ring buffer of logging events and putting my logs there.
You can print them from (eg) an every-tick callout or you can just
leave them there for postmortem debugging or some debugging interface
(such as an ioctl or a custom character special device)....

Depending on the details, there may be other useful things you can do.
I've occasionally used hardware things, such as toggling a GPIO pin, to
exfiltrate debugging information.

/~\ The ASCII				  Mouse
\ / Ribbon Campaign
 X  Against HTML		mouse%rodents-montreal.org@localhost
/ \ Email!	     7D C8 61 52 5D E7 2D 39  4E F1 31 3E E8 B3 27 4B


Home | Main Index | Thread Index | Old Index