add read call
This commit is contained in:
@@ -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);
|
||||
break;
|
||||
case Syscall::ID::READ:
|
||||
;
|
||||
return Syscall::Skeleton::read(Guard::enter().vault(), 0, (void*) p2, p3);
|
||||
break;
|
||||
case Syscall::ID::SEM_INIT:
|
||||
Syscall::Skeleton::sem_init(Guard::enter().vault(), p1, p2);
|
||||
|
||||
@@ -34,10 +34,17 @@ size_t write(Vault &vault, uint32_t id, const void *buffer, size_t size) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
size_t read(Vault &vault, uint32_t id) {
|
||||
(void)vault;
|
||||
(void)id;
|
||||
return 0;
|
||||
size_t read(Vault &vault, uint32_t id, void *buf, size_t len) {
|
||||
size_t read_cnt = 0;
|
||||
while(read_cnt <= len){
|
||||
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) {
|
||||
|
||||
@@ -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);
|
||||
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);
|
||||
bool sem_init(Vault &vault, size_t id, uint32_t value);
|
||||
bool sem_destroy(Vault &vault, size_t id);
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
// vim: set noet ts=4 sw=4:
|
||||
|
||||
#include "./kappl.h"
|
||||
#include "../../syscall/stub.h"
|
||||
|
||||
#include "../../device/textstream.h"
|
||||
extern TextStream kout;
|
||||
|
||||
Reference in New Issue
Block a user