mirror of
https://github.com/Tom-on64/kern.git
synced 2026-11-03 18:22:22 +00:00
Added logging, %lu and %p format specifiers to vnsprintf()
This commit is contained in:
@@ -33,4 +33,6 @@ IMG_SIZE = 256 # 256MB
|
||||
# Qemu
|
||||
Q_MEMORY = 256M
|
||||
Q_AUDIODEV = pipewire
|
||||
Q_LOGGING = int,cpu_reset
|
||||
Q_LOGFILE = qemu.log
|
||||
|
||||
|
||||
+16
-3
@@ -124,6 +124,7 @@ int vsnprintf(char* buf, size_t n, char* fmt, va_list ap) {
|
||||
char pad = ' ';
|
||||
int width = 0;
|
||||
int prec = -1;
|
||||
int is_long = 0;
|
||||
|
||||
if (*fmt == '-') {
|
||||
left = 1;
|
||||
@@ -149,10 +150,22 @@ int vsnprintf(char* buf, size_t n, char* fmt, va_list ap) {
|
||||
}
|
||||
}
|
||||
|
||||
if (*fmt == 'l') {
|
||||
is_long = 1;
|
||||
fmt++;
|
||||
if (*fmt == 'l') { // handle ll
|
||||
fmt++;
|
||||
}
|
||||
}
|
||||
|
||||
switch (*fmt) {
|
||||
case 'd': fmt_int(buf, n, &idx, va_arg(ap, int), width, pad, left); break;
|
||||
case 'u': fmt_uint(buf, n, &idx, va_arg(ap, unsigned int), 10, width, pad, left); break;
|
||||
case 'x': fmt_uint(buf, n, &idx, va_arg(ap, unsigned int), 16, width, pad, left); break;
|
||||
case 'd': fmt_int(buf, n, &idx, is_long ? va_arg(ap, int64_t) : va_arg(ap, int32_t), width, pad, left); break;
|
||||
case 'u': fmt_uint(buf, n, &idx, is_long ? va_arg(ap, uint64_t) : va_arg(ap, uint32_t), 10, width, pad, left); break;
|
||||
case 'x': fmt_uint(buf, n, &idx, is_long ? va_arg(ap, uint64_t) : va_arg(ap, uint32_t), 16, width, pad, left); break;
|
||||
case 'p':
|
||||
fmt_string(buf, n, &idx, "0x", 2, 0, ' ', 0);
|
||||
fmt_uint(buf, n, &idx, va_arg(ap, uintptr_t), 16, 16, '0', 0);
|
||||
break;
|
||||
case 'f': fmt_float(buf, n, &idx, va_arg(ap, double), prec, width, pad, left); break;
|
||||
case 's': {
|
||||
char* s = va_arg(ap, char*);
|
||||
|
||||
@@ -44,6 +44,7 @@ $(MODULES):
|
||||
clean:
|
||||
rm -f $(TARGET)
|
||||
rm -fr $(SYSROOT)
|
||||
rm -f $(Q_LOGFILE)
|
||||
for m in $(MODULES); do $(MAKE) -C $$m clean; done
|
||||
|
||||
qemu:
|
||||
@@ -51,5 +52,6 @@ qemu:
|
||||
-drive format=raw,file=$(TARGET),index=0,media=disk\
|
||||
-m $(Q_MEMORY) -accel tcg -monitor stdio -net none\
|
||||
-rtc base=localtime,clock=host,driftfix=slew\
|
||||
-audiodev $(Q_AUDIODEV),id=audio0 -machine pcspk-audiodev=audio0
|
||||
-audiodev $(Q_AUDIODEV),id=audio0 -machine pcspk-audiodev=audio0\
|
||||
-d $(Q_LOGGING) -D $(Q_LOGFILE)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user