print syscall: add pid and tid

This commit is contained in:
Matheus
2025-10-30 00:40:31 -03:00
parent f92c2d1771
commit 2d8a1b57dc
+25 -9
View File
@@ -2,24 +2,40 @@
#include <printf.h> #include <printf.h>
#include <arch/e9.h> #include <arch/e9.h>
#include <mutex.h> #include <mutex.h>
#include <util.h>
#include <arch/cpu.h>
syscallret_t syscall_print(context_t *context, char *message) { syscallret_t syscall_print(context_t *context, char *message) {
syscallret_t ret = { syscallret_t ret = {
.ret = 0, .ret = -1
.errno = 0
}; };
static mutex_t mutex; static MUTEX_DEFINE(mutex);
static bool initialized = false;
if (initialized == false) { size_t len;
MUTEX_INIT(&mutex); ret.errno = usercopy_strlen(message, &len);
initialized = true; if (ret.errno)
} return ret;
len = min(len, 1023);
char msg[1024];
ret.errno = usercopy_fromuser(msg, message, len);
if (ret.errno)
return ret;
msg[len] = '\0';
char prefix[100];
snprintf(prefix, 100, "pid %d tid %d: ", current_thread()->proc->pid, current_thread()->tid);
MUTEX_ACQUIRE(&mutex); MUTEX_ACQUIRE(&mutex);
arch_e9_puts(message); arch_e9_puts(prefix);
arch_e9_puts(msg);
arch_e9_putc('\n'); arch_e9_putc('\n');
MUTEX_RELEASE(&mutex); MUTEX_RELEASE(&mutex);
ret.errno = 0;
ret.ret = 0;
return ret; return ret;
} }