Add helper to run a function as a routine kmsg
[akaros.git] / kern / include / stdio.h
index aa880e6..fd9cbaf 100644 (file)
 #endif
 
 #define printk(args...) cprintf(args)
-#define I_AM_HERE printk("Core %d is in %s() at %s:%d\n", core_id(), \
-                         __FUNCTION__, __FILE__, __LINE__);
+#define __I_AM_HERE_GUTS "Core %d is in %s() at %s:%d\n", core_id(), \
+                         __func__, __FILE__, __LINE__
+
+#define I_AM_HERE printk(__I_AM_HERE_GUTS)
+#define I_AM_HERE_x printx(__I_AM_HERE_GUTS)
+#define I_AM_HERE_t trace_printk(__I_AM_HERE_GUTS)
+#define I_AM_HERE_tx trace_printx(__I_AM_HERE_GUTS)
 
 // lib/stdio.c
 void   cputchar(int c);
@@ -30,12 +35,21 @@ void        printfmt(void (*putch)(int, void**), void **putdat, const char *fmt, ...);
 void   vprintfmt(void (*putch)(int, void**), void **putdat, const char *fmt, va_list);
 
 // lib/printf.c
+void print_lock(void);
+void print_unlock(void);
+void print_unlock_force(void);
 int    ( cprintf)(const char *fmt, ...);
 int    vcprintf(const char *fmt, va_list);
 
 // lib/sprintf.c
-int    snprintf(char *str, int size, const char *fmt, ...);
-int    vsnprintf(char *str, int size, const char *fmt, va_list);
+
+static inline bool snprintf_error(int ret, size_t buf_len)
+{
+       return ret < 0 || ret >= buf_len;
+}
+
+int snprintf(char *str, size_t size, const char *fmt, ...);
+int vsnprintf(char *str, size_t size, const char *fmt, va_list);
 
 // lib/fprintf.c
 int    printf(const char *fmt, ...);