Allow ev_qs to not have INDIR throttling (XCC)
[akaros.git] / kern / src / printf.c
index 651790c..b858a0b 100644 (file)
@@ -12,7 +12,7 @@
 #include <stdio.h>
 #include <stdarg.h>
 
-spinlock_t output_lock = 0;
+spinlock_t output_lock = SPINLOCK_INITIALIZER;
 
 void putch(int ch, int **cnt)
 {
@@ -49,7 +49,7 @@ int vcprintf(const char *fmt, va_list ap)
        volatile int i;
 
        // lock all output.  this will catch any printfs at line granularity
-//     spin_lock_irqsave(&output_lock);
+       spin_lock_irqsave(&output_lock);
 
        // do the buffered printf
        #ifdef __DEPUTY__
@@ -61,7 +61,7 @@ int vcprintf(const char *fmt, va_list ap)
        // write out remaining chars in the buffer
        buffered_putch(-1,&cntp);
 
-//     spin_unlock_irqsave(&output_lock);
+       spin_unlock_irqsave(&output_lock);
 
        return cnt;
 }
@@ -71,6 +71,9 @@ int cprintf(const char *fmt, ...)
        va_list ap;
        int cnt;
 
+       if (!fmt)
+               return 0;
+
        va_start(ap, fmt);
        cnt = vcprintf(fmt, ap);
        va_end(ap);