mirror of
https://git.rtems.org/rtems-libbsd/
synced 2025-10-14 15:20:09 +08:00
Use global stdout for kernel output and syslog()
This commit is contained in:
@@ -41,6 +41,7 @@
|
|||||||
|
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/lock.h>
|
#include <sys/lock.h>
|
||||||
|
#include <sys/reent.h>
|
||||||
#include <sys/systm.h>
|
#include <sys/systm.h>
|
||||||
#include <sys/syslog.h>
|
#include <sys/syslog.h>
|
||||||
|
|
||||||
@@ -66,13 +67,24 @@ static const char * const log_priorities[] = {
|
|||||||
static struct _Mutex_Control vprintf_mtx = _MUTEX_INITIALIZER;
|
static struct _Mutex_Control vprintf_mtx = _MUTEX_INITIALIZER;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
vprintf_putchar(int c, void *arg)
|
default_putchar(int c)
|
||||||
|
{
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Output to the global stdout FILE object and not to the thread-local
|
||||||
|
* stdout FILE object.
|
||||||
|
*/
|
||||||
|
fputc(c, &__sf[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
kvprintf_putchar(int c, void *arg)
|
||||||
{
|
{
|
||||||
int *last;
|
int *last;
|
||||||
|
|
||||||
last = arg;
|
last = arg;
|
||||||
*last = c;
|
*last = c;
|
||||||
putchar(c);
|
default_putchar(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@@ -89,19 +101,19 @@ default_vprintf_handler(int level, const char *fmt, va_list ap)
|
|||||||
p = log_priorities[LOG_PRI(level)];
|
p = log_priorities[LOG_PRI(level)];
|
||||||
|
|
||||||
while (*p != '\0') {
|
while (*p != '\0') {
|
||||||
putchar(*p);
|
default_putchar(*p);
|
||||||
++p;
|
++p;
|
||||||
}
|
}
|
||||||
|
|
||||||
putchar(':');
|
default_putchar(':');
|
||||||
putchar(' ');
|
default_putchar(' ');
|
||||||
}
|
}
|
||||||
|
|
||||||
last = -1;
|
last = -1;
|
||||||
n = kvprintf(fmt, vprintf_putchar, &last, 10, ap);
|
n = kvprintf(fmt, kvprintf_putchar, &last, 10, ap);
|
||||||
|
|
||||||
if (level != LOG_PRINTF && last != '\n') {
|
if (level != LOG_PRINTF && last != '\n') {
|
||||||
putchar('\n');
|
default_putchar('\n');
|
||||||
}
|
}
|
||||||
|
|
||||||
VPRINTF_UNLOCK();
|
VPRINTF_UNLOCK();
|
||||||
|
Reference in New Issue
Block a user