implement human-unit printing
This commit is contained in:
parent
1aa7e9281a
commit
3e3df8e724
|
|
@ -17,7 +17,7 @@ void parse_stivale2(struct stivale2_struct *info) {
|
||||||
printf("Memmap (%d entries):\n", m->entries);
|
printf("Memmap (%d entries):\n", m->entries);
|
||||||
for (size_t i = 0; i < m->entries; i++) {
|
for (size_t i = 0; i < m->entries; i++) {
|
||||||
struct stivale2_mmap_entry me = m->memmap[i];
|
struct stivale2_mmap_entry me = m->memmap[i];
|
||||||
printf("\t[%x+%x] %x\n", me.base, me.length, me.type);
|
printf("\t[%x+%h] %x\n", me.base, me.length, me.type);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ void print(const char* c) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char CONVERSION_TABLE[] = "0123456789abcdef";
|
static const char CONVERSION_TABLE[] = "0123456789abcdef";
|
||||||
|
static const char UNITS[] = "bKM";
|
||||||
|
|
||||||
static void printhex(size_t num) {
|
static void printhex(size_t num) {
|
||||||
int i;
|
int i;
|
||||||
|
|
@ -56,6 +57,16 @@ static void printdec(size_t num) {
|
||||||
puts(&buf[i]);
|
puts(&buf[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void printhuman(size_t num) {
|
||||||
|
const char *unit = UNITS;
|
||||||
|
while(num >= 2048 && *(unit+1)) {
|
||||||
|
num /= 1024;
|
||||||
|
unit++;
|
||||||
|
}
|
||||||
|
printdec(num);
|
||||||
|
putchar(*unit);
|
||||||
|
}
|
||||||
|
|
||||||
void printf(const char *format, ...) {
|
void printf(const char *format, ...) {
|
||||||
va_list argp;
|
va_list argp;
|
||||||
va_start(argp, format);
|
va_start(argp, format);
|
||||||
|
|
@ -69,7 +80,9 @@ void printf(const char *format, ...) {
|
||||||
printdec(va_arg(argp, size_t));
|
printdec(va_arg(argp, size_t));
|
||||||
} else if (*format == 's') {
|
} else if (*format == 's') {
|
||||||
puts(va_arg(argp, char*));
|
puts(va_arg(argp, char*));
|
||||||
}
|
} else if (*format == 'h') {
|
||||||
|
printhuman(va_arg(argp, size_t));
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
putchar(*format);
|
putchar(*format);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue