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 <arch/e9.h>
#include <mutex.h>
#include <util.h>
#include <arch/cpu.h>
syscallret_t syscall_print(context_t *context, char *message) {
syscallret_t ret = {
.ret = 0,
.errno = 0
.ret = -1
};
static mutex_t mutex;
static bool initialized = false;
static MUTEX_DEFINE(mutex);
if (initialized == false) {
MUTEX_INIT(&mutex);
initialized = true;
}
size_t len;
ret.errno = usercopy_strlen(message, &len);
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);
arch_e9_puts(message);
arch_e9_puts(prefix);
arch_e9_puts(msg);
arch_e9_putc('\n');
MUTEX_RELEASE(&mutex);
ret.errno = 0;
ret.ret = 0;
return ret;
}