parlib: Fix signature for trace_printf()
authorBarret Rhoden <brho@cs.berkeley.edu>
Fri, 1 Dec 2017 20:23:47 +0000 (15:23 -0500)
committerBarret Rhoden <brho@cs.berkeley.edu>
Fri, 1 Dec 2017 20:27:34 +0000 (15:27 -0500)
Commit 248d1a835700 ("Add printx to userspace (XCC)") moved the void
trace_printf() from one header to another.  But it turns out that 'void'
was wrong.  It conflicted with glibc's parlib-compat helper, which expected
an int.  The old code didn't notice since parlib/ros_debug.h wasn't
included by glibc's parlib-compat.c, but parlib/stdio.h is.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
user/parlib/debug.c
user/parlib/include/parlib/stdio.h

index 46a96d3..08c79a3 100644 (file)
@@ -96,7 +96,7 @@ static void trace_init(void *arg)
                perror("Unable to open kptrace!\n");
 }
 
-void trace_printf(const char *fmt, ...)
+int trace_printf(const char *fmt, ...)
 {
        va_list args;
        char buf[128];
@@ -105,7 +105,7 @@ void trace_printf(const char *fmt, ...)
 
        parlib_run_once(&once, trace_init, NULL);
        if (kptrace < 0)
-               return;
+               return 0;
        amt = snprintf(buf, sizeof(buf), "PID %d: ", getpid());
        /* amt could be > sizeof, if we truncated. */
        amt = MIN(amt, sizeof(buf));
@@ -113,5 +113,7 @@ void trace_printf(const char *fmt, ...)
        /* amt == sizeof is OK here */
        amt += vsnprintf(buf + amt, sizeof(buf) - amt, fmt, args);
        va_end(args);
-       write(kptrace, buf, MIN(amt, sizeof(buf)));
+       amt = MIN(amt, sizeof(buf));
+       write(kptrace, buf, amt);
+       return amt;
 }
index 7c37351..c2b6f10 100644 (file)
@@ -116,7 +116,7 @@ do {                                                                           \
                debug_fprintf(stderr, __VA_ARGS__);                                    \
 } while (0);
 
-void trace_printf(const char *fmt, ...);
+int trace_printf(const char *fmt, ...);
 
 #define trace_printx(...)                                                      \
 do {                                                                           \