yeah
This commit is contained in:
@@ -1,46 +0,0 @@
|
||||
#include <zinnia/alloc.h>
|
||||
#include <zinnia/clock.h>
|
||||
#include <zinnia/console.h>
|
||||
#include <zinnia/errno.h>
|
||||
#include <zinnia/syscalls.h>
|
||||
#include <zinnia/usercopy.h>
|
||||
|
||||
errno_t syscall_log(struct arch_context* ctx) {
|
||||
__user const char* msg = (__user const char*)ctx->ARCH_CTX_A0;
|
||||
size_t len = ctx->ARCH_CTX_A1;
|
||||
|
||||
char* buf = mem_alloc(len, ALLOC_NOZERO);
|
||||
if (!buf) {
|
||||
return ENOMEM;
|
||||
}
|
||||
|
||||
if (usercopy_read(buf, msg, len)) {
|
||||
console_write(buf, len);
|
||||
|
||||
mem_free(buf);
|
||||
return 0;
|
||||
}
|
||||
|
||||
mem_free(buf);
|
||||
return ZN_ERR_BAD_BUFFER;
|
||||
}
|
||||
|
||||
errno_t syscall_page_size(struct arch_context* ctx) {
|
||||
__user size_t* out = (__user size_t*)ctx->ARCH_CTX_A0;
|
||||
|
||||
size_t size = arch_mem_page_size();
|
||||
if (!usercopy_write(out, &size, sizeof(size)))
|
||||
return ZN_ERR_BAD_BUFFER;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
errno_t syscall_time(struct arch_context* ctx) {
|
||||
__user uint64_t* out = (__user uint64_t*)ctx->ARCH_CTX_A0;
|
||||
|
||||
uint64_t time = clock_get_elapsed_ns();
|
||||
if (!usercopy_write(out, &time, sizeof(time)))
|
||||
return ZN_ERR_BAD_BUFFER;
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user