Fix logm for stackdump and interrupt status 38/110938/2
authorAhreum Jeong <ahreum.jeong@samsung.com>
Thu, 19 Jan 2017 01:12:54 +0000 (10:12 +0900)
committerJuitem JoonWoo Kim <jw1772.kim@samsung.com>
Thu, 19 Jan 2017 02:14:05 +0000 (18:14 -0800)
Stackdump messages are not shown on assertion
Because logm's print buffer can't be flushed after assert.
These messages should be delivered with low output directly.

Change-Id: Ifaca4b60bed8999307672d8905e4c53cbafa2072

os/logm/logm.c

index 9cc3428..85db778 100644 (file)
@@ -39,7 +39,7 @@ int logm_internal(int priority, const char *fmt, va_list ap)
        int ret = 0;
        buffer_state_t op;
 
-       if (g_logm_isready) {
+       if (g_logm_isready && !up_interrupt_context()) {
                flags = irqsave();
 
                if (g_logm_count < LOGM_RSVBUF_COUNT) {
@@ -76,7 +76,7 @@ int logm_internal(int priority, const char *fmt, va_list ap)
 
                irqrestore(flags);
        } else {
-               /* Low Output: Sytem is not yet completely ready  */
+               /* Low Output: Sytem is not yet completely ready or this is called from interrupt handler */
 #ifdef CONFIG_ARCH_LOWPUTC
                struct lib_outstream_s strm;
                lib_lowoutstream(&strm);