write
This commit is contained in:
@@ -39,19 +39,14 @@ namespace Syscall {
|
||||
extern "C" size_t syscall_handler(size_t sysnum, size_t p1, size_t p2,
|
||||
size_t p3, size_t p4, size_t p5,
|
||||
InterruptContext *user) {
|
||||
(void)p1;
|
||||
(void)p2;
|
||||
(void)p3;
|
||||
(void)p4;
|
||||
(void)p5;
|
||||
(void)sysnum;
|
||||
(void)user;
|
||||
|
||||
switch ((Syscall::ID)sysnum) {
|
||||
case Syscall::ID::TEST:
|
||||
Syscall::Skeleton::test(Guard::enter().vault(), p1, p2, p3, p4, p5);
|
||||
break;
|
||||
case Syscall::ID::WRITE:
|
||||
Guarded g = Guard::enter();
|
||||
g.vault().kout.setPos((int)p4, (int)p5);
|
||||
Syscall::Skeleton::write(g.vault(), p1, (char*)p2, p3);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
#include "syscall/skeleton.h"
|
||||
#include "../syscall/skeleton.h"
|
||||
|
||||
#include "debug/kernelpanic.h"
|
||||
#include "debug/output.h"
|
||||
#include "device/textstream.h"
|
||||
#include "interrupt/guard.h"
|
||||
#include "sync/semaphore.h"
|
||||
#include "thread/scheduler.h"
|
||||
#include "../debug/kernelpanic.h"
|
||||
#include "../debug/output.h"
|
||||
#include "../device/textstream.h"
|
||||
#include "../interrupt/guard.h"
|
||||
#include "../sync/semaphore.h"
|
||||
#include "../thread/scheduler.h"
|
||||
|
||||
void *operator new(size_t, void *);
|
||||
|
||||
@@ -25,11 +25,13 @@ int getpid(Vault &vault) {
|
||||
}
|
||||
|
||||
size_t write(Vault &vault, uint32_t id, const void *buffer, size_t size) {
|
||||
(void)vault;
|
||||
(void)id;
|
||||
(void)buffer;
|
||||
(void)size;
|
||||
return 0;
|
||||
(void)id;
|
||||
|
||||
for(size_t i = 0; i<size; i++)
|
||||
vault.kout << ((char*)buffer)[i];
|
||||
vault.kout.flush();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
size_t read(Vault &vault, uint32_t id) {
|
||||
|
||||
@@ -23,3 +23,7 @@ extern "C" ssize_t sys_safe_call(Syscall::ID id, size_t p1, size_t p2,
|
||||
size_t p5) {
|
||||
return sys_call(Syscall::ID::TEST, p1, p2, p3, p4, p5);
|
||||
}
|
||||
|
||||
[[gnu::always_inline]] static inline int write(int fd, const void *buf, size_t len, int x = -1, int y = -1) {
|
||||
return sys_call(Syscall::ID::WRITE, fd, (size_t)buf, len, x, y);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user