add read call

This commit is contained in:
2025-12-03 04:28:09 +01:00
parent 7459a36100
commit 2c911a3c87
4 changed files with 14 additions and 6 deletions

View File

@@ -48,7 +48,7 @@ extern "C" size_t syscall_handler(size_t sysnum, size_t p1, size_t p2,
Syscall::Skeleton::write(Guard::enter().vault(), p1, (char*)p2, p3); Syscall::Skeleton::write(Guard::enter().vault(), p1, (char*)p2, p3);
break; break;
case Syscall::ID::READ: case Syscall::ID::READ:
; return Syscall::Skeleton::read(Guard::enter().vault(), 0, (void*) p2, p3);
break; break;
case Syscall::ID::SEM_INIT: case Syscall::ID::SEM_INIT:
Syscall::Skeleton::sem_init(Guard::enter().vault(), p1, p2); Syscall::Skeleton::sem_init(Guard::enter().vault(), p1, p2);

View File

@@ -34,10 +34,17 @@ size_t write(Vault &vault, uint32_t id, const void *buffer, size_t size) {
return 0; return 0;
} }
size_t read(Vault &vault, uint32_t id) { size_t read(Vault &vault, uint32_t id, void *buf, size_t len) {
(void)vault; size_t read_cnt = 0;
(void)id; while(read_cnt <= len){
return 0; Key key;
vault.keys.consume(key);
if(key.valid())
((char*)buf)[read_cnt++] = key.ascii();
else
return read_cnt;
}
return len;
} }
void sleep(Vault &vault, size_t ms) { void sleep(Vault &vault, size_t ms) {

View File

@@ -15,7 +15,7 @@ size_t test(Vault &vault, size_t p1, size_t p2, size_t p3, size_t p4,
int getpid(Vault &vault); int getpid(Vault &vault);
size_t write(Vault &vault, uint32_t id, const void *buffer, size_t size); size_t write(Vault &vault, uint32_t id, const void *buffer, size_t size);
size_t read(Vault &vault, uint32_t id); size_t read(Vault &vault, uint32_t id, void *buf, size_t len);
void sleep(Vault &vault, size_t ms); void sleep(Vault &vault, size_t ms);
bool sem_init(Vault &vault, size_t id, uint32_t value); bool sem_init(Vault &vault, size_t id, uint32_t value);
bool sem_destroy(Vault &vault, size_t id); bool sem_destroy(Vault &vault, size_t id);

View File

@@ -1,6 +1,7 @@
// vim: set noet ts=4 sw=4: // vim: set noet ts=4 sw=4:
#include "./kappl.h" #include "./kappl.h"
#include "../../syscall/stub.h"
#include "../../device/textstream.h" #include "../../device/textstream.h"
extern TextStream kout; extern TextStream kout;