printf in interrupt handlers

Joel Sherrill <joel@OARcorp.com> joel.sherrill at OARcorp.com
Thu Jan 20 12:39:27 UTC 2005


Jiri Gaisler wrote:
> 
> Simple question: is printf in interrupt handlers allowed?
> 
> It is not that I really want to do a printf in an interrupt
> handler, but when I tried it, RTEMS halts with
> Internal_error_Occurred(). This behaviour started on rtems-4.6,
> the earlier rtmes-4.5 could do a printf from an interrupt
> handler without problems. I am trying this on the SPARC
> (ERC32/LEON) target. The back trace after the error is:

It was always a mistake to do it and could have been disastrous
in random and unforeseen ways.  It is not explicitly checked
that you are printing.  It is a check on a flavor of mutex being
used from an ISR.  If you are priority ceiling or priority
inheritance or blocking, you can't do that from an ISR.

>     %pc          %sp
> #0   0x40002d7c   0x403ff350   _Internal_error_Occurred + 0x40
> #1   0x40007120   0x403ff3b8   rtems_semaphore_obtain + 0x11c
> #2   0x400083b4   0x403ff428   rtems_termios_write + 0x18
> #3   0x400032a8   0x403ff490   rtems_io_write + 0x4c
> #4   0x400113d8   0x403ff4f8   device_write + 0x30
> #5   0x4001ba34   0x403ff578   write + 0x90
> #6   0x40012d74   0x403ff5e0   fflush + 0x8c
> #7   0x40018068   0x403ff648   __sfvwrite + 0x350
> #8   0x40014ba0   0x403ff6b0   _vfiprintf_r + 0xe7c
> #9   0x400163c8   0x403ff718   _vfprintf_r + 0x16f8
> #10  0x40013354   0x403ff9a0   printf + 0x2c
> #11  0x4000285c   0x403ffa08   _ISR_Handler + 0x130
> #12  0x40001228   0x403f8818   Init + 0x2c
> #13  0x400129f0   0x403f8938   _Thread_Handler + 0x110
> #14  0x400128d8   0x403f89a0   memfile_check_rmnod + 0x70
> 
> A bit debugging shows that rtems_semaphore_obtain() fails for
> some reason and Internal_error_Occurred is called. It does not
> seem to be a stack problem - I have increased the interrupt stack
> to 256 kbyte as a test.
> 
> Jiri Gaisler.
> 


-- 
Joel Sherrill, Ph.D.             Director of Research & Development
joel at OARcorp.com                 On-Line Applications Research
Ask me about RTEMS: a free RTOS  Huntsville AL 35805
    Support Available             (256) 722-9985




More information about the users mailing list