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
|
# Qemu
|
||||||
Q_MEMORY = 256M
|
Q_MEMORY = 256M
|
||||||
Q_AUDIODEV = pipewire
|
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 = ' ';
|
char pad = ' ';
|
||||||
int width = 0;
|
int width = 0;
|
||||||
int prec = -1;
|
int prec = -1;
|
||||||
|
int is_long = 0;
|
||||||
|
|
||||||
if (*fmt == '-') {
|
if (*fmt == '-') {
|
||||||
left = 1;
|
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) {
|
switch (*fmt) {
|
||||||
case 'd': fmt_int(buf, n, &idx, va_arg(ap, int), 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, va_arg(ap, unsigned int), 10, 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, va_arg(ap, unsigned int), 16, 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 'f': fmt_float(buf, n, &idx, va_arg(ap, double), prec, width, pad, left); break;
|
||||||
case 's': {
|
case 's': {
|
||||||
char* s = va_arg(ap, char*);
|
char* s = va_arg(ap, char*);
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ $(MODULES):
|
|||||||
clean:
|
clean:
|
||||||
rm -f $(TARGET)
|
rm -f $(TARGET)
|
||||||
rm -fr $(SYSROOT)
|
rm -fr $(SYSROOT)
|
||||||
|
rm -f $(Q_LOGFILE)
|
||||||
for m in $(MODULES); do $(MAKE) -C $$m clean; done
|
for m in $(MODULES); do $(MAKE) -C $$m clean; done
|
||||||
|
|
||||||
qemu:
|
qemu:
|
||||||
@@ -51,5 +52,6 @@ qemu:
|
|||||||
-drive format=raw,file=$(TARGET),index=0,media=disk\
|
-drive format=raw,file=$(TARGET),index=0,media=disk\
|
||||||
-m $(Q_MEMORY) -accel tcg -monitor stdio -net none\
|
-m $(Q_MEMORY) -accel tcg -monitor stdio -net none\
|
||||||
-rtc base=localtime,clock=host,driftfix=slew\
|
-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