basic fork foo, function itself is empty
This commit is contained in:
@@ -80,8 +80,8 @@ extern "C" size_t syscall_handler(size_t sysnum, size_t p1, size_t p2,
|
||||
return Skeleton::receive(Guard::enter().vault(), (void*)(p1), p2);
|
||||
case Syscall::ID::REPLY:
|
||||
return Skeleton::reply(Guard::enter().vault(), (void*)(p1), p2);
|
||||
// case Syscall::ID::FORK:
|
||||
// return Skeleton::fork(v, user);
|
||||
case Syscall::ID::FORK:
|
||||
return Skeleton::fork(Guard::enter().vault(), user);
|
||||
break;
|
||||
|
||||
|
||||
|
||||
@@ -392,7 +392,9 @@ bool reply(Vault& v, const void* buffer, size_t size) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
int fork(Vault &vault, InterruptContext *user_context) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
} // namespace Skeleton
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#pragma once
|
||||
#include "arch/idt.h"
|
||||
|
||||
#include "types.h"
|
||||
#include "../memory/pagetable.h"
|
||||
@@ -29,7 +30,7 @@ void invlpg(uintptr_t virt_addr);
|
||||
bool send(Vault &vault, int pid, const void* sbuffer, size_t ssize, void* rbuffer, size_t rsize);
|
||||
int receive(Vault &vault, void* buffer, size_t size);
|
||||
bool reply(Vault &vaul, const void* buffer, size_t size);
|
||||
//int fork(Vault &vault, InterruptContext *user);
|
||||
int fork(Vault &vault, InterruptContext *user);
|
||||
|
||||
|
||||
} // namespace Skeleton
|
||||
|
||||
@@ -22,7 +22,7 @@ namespace Syscall {
|
||||
SEND = 13,
|
||||
RECEIVE = 14,
|
||||
REPLY = 15,
|
||||
// FORK = 16
|
||||
FORK = 16
|
||||
};
|
||||
} // namespace Syscall
|
||||
|
||||
@@ -97,3 +97,8 @@ extern "C" ssize_t sys_safe_call(Syscall::ID id, size_t p1, size_t p2,
|
||||
[[gnu::always_inline]] static inline bool reply(const void* buffer, size_t size) {
|
||||
return sys_call(Syscall::ID::REPLY, (size_t)buffer, size,0,0,0);
|
||||
}
|
||||
|
||||
|
||||
[[gnu::always_inline]] static inline int fork() {
|
||||
return sys_call(Syscall::ID::FORK,0,0,0,0,0);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user