summaryrefslogtreecommitdiff
path: root/sys/kern/printf.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/kern/printf.c')
-rw-r--r--sys/kern/printf.c101
1 files changed, 0 insertions, 101 deletions
diff --git a/sys/kern/printf.c b/sys/kern/printf.c
deleted file mode 100644
index 89add9e..0000000
--- a/sys/kern/printf.c
+++ /dev/null
@@ -1,101 +0,0 @@
-#include <printf.h>
-#include <stdint.h>
-#include <spinlock.h>
-#include <sbi.h>
-#include <stdarg.h>
-
-static char digits[] = "0123456789abcdef";
-
-struct spinlock mutex;
-int locked = 0;
-
-int
-puts(const char *str)
-{
- do {
- sbi_console_putchar(*str);
- } while (*(str++) != '\0');
-}
-
-#define PUTCHAR(c) sbi_console_putchar(c)
-
-static void
-printint(int xx, int base, int sign)
-{
- char buf[16];
- int i;
- unsigned int x;
-
- if (sign && (sign = xx < 0))
- x = -xx;
- else
- x = xx;
-
- i = 0;
- do {
- buf[i++] = digits[x % base];
- } while ((x /= base) != 0);
-
- if (sign)
- buf[i++] = '-';
- while (--i >= 0)
- PUTCHAR(buf[i]);
-
-}
-
-static void
-printptr(uint64_t x)
-{
- int i;
- puts("0x");
- for (i = 0; i < (sizeof(uint64_t) * 2); i++, x <<= 4)
- PUTCHAR(digits[x >> (sizeof(int64_t) * 8 - 4)]);
-}
-
-void
-printf(const char *fmt, ...)
-{
- va_list ap;
- int i, c, _locked;
- char *s;
-
- _locked = locked;
- if (_locked)
- acquire(&mutex);
-
- va_start(ap, fmt);
-
- for (i = 0; (c = fmt[i] & 0xff) != 0; i++) {
- if (c != '%') {
- PUTCHAR(c);
- continue;
- }
- c = fmt[++i] & 0xff;
- if (!c)
- break;
-
- switch (c) {
- case 'd':
- case 'i':
- printint(va_arg(ap, int), 10, 1);
- break;
- case 'x':
- printint(va_arg(ap, int), 16, 1);
- break;
- case 'p':
- printptr(va_arg(ap, uint64_t));
- break;
- case '%':
- PUTCHAR('%');
- break;
- }
- }
- if (_locked)
- release(&mutex);
-}
-
-void printf_init(void)
-{
- initlock(&mutex);
- locked = 1;
-}