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);
|
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);
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user