diff options
| author | Miquel Sabaté Solà <mikisabate@gmail.com> | 2024-11-22 23:00:46 +0100 |
|---|---|---|
| committer | Miquel Sabaté Solà <mikisabate@gmail.com> | 2024-11-22 23:00:46 +0100 |
| commit | 7f6b234625a53d2ceb9ec80dc0172aac1cedb358 (patch) | |
| tree | 4fe10fcbe2d5e90a0e673259dc895f48a76e06cd /kernel/printk.c | |
| parent | 224ed7b13ceadd05d27e61d3a0fdd34beb0c7745 (diff) | |
| download | fbos-7f6b234625a53d2ceb9ec80dc0172aac1cedb358.tar.gz fbos-7f6b234625a53d2ceb9ec80dc0172aac1cedb358.zip | |
Enable exception handling from user mode
This allows us to actually catch system calls and start to run user
space programs. That being said, the whole thing is still pretty
brittle, and the scheduler is not quite there yet.
Signed-off-by: Miquel Sabaté Solà <mikisabate@gmail.com>
Diffstat (limited to 'kernel/printk.c')
| -rw-r--r-- | kernel/printk.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/kernel/printk.c b/kernel/printk.c index 51c1a7a..b3c925a 100644 --- a/kernel/printk.c +++ b/kernel/printk.c @@ -12,14 +12,19 @@ void __noreturn __kernel die(const char *const message) ; } -void __kernel printk(const char *const message) +__kernel void printk(const char *const message) { size_t len = strlen(message); if (!len) { return; } - struct sbi_ret ret = sbi_ecall2(DBCN_EXT, DBCN_WRITE, len, (unsigned long)message); + write(message, len); +} + +__kernel void write(const char *const message, size_t n) +{ + struct sbi_ret ret = sbi_ecall2(DBCN_EXT, DBCN_WRITE, n, (unsigned long)message); if (ret.error != SBI_SUCCESS) { die(nullptr); } |
