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);
|
return Skeleton::receive(Guard::enter().vault(), (void*)(p1), p2);
|
||||||
case Syscall::ID::REPLY:
|
case Syscall::ID::REPLY:
|
||||||
return Skeleton::reply(Guard::enter().vault(), (void*)(p1), p2);
|
return Skeleton::reply(Guard::enter().vault(), (void*)(p1), p2);
|
||||||
// case Syscall::ID::FORK:
|
case Syscall::ID::FORK:
|
||||||
// return Skeleton::fork(v, user);
|
return Skeleton::fork(Guard::enter().vault(), user);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -392,7 +392,9 @@ bool reply(Vault& v, const void* buffer, size_t size) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int fork(Vault &vault, InterruptContext *user_context) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
} // namespace Skeleton
|
} // namespace Skeleton
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
#include "arch/idt.h"
|
||||||
|
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
#include "../memory/pagetable.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);
|
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);
|
int receive(Vault &vault, void* buffer, size_t size);
|
||||||
bool reply(Vault &vaul, const 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
|
} // namespace Skeleton
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ namespace Syscall {
|
|||||||
SEND = 13,
|
SEND = 13,
|
||||||
RECEIVE = 14,
|
RECEIVE = 14,
|
||||||
REPLY = 15,
|
REPLY = 15,
|
||||||
// FORK = 16
|
FORK = 16
|
||||||
};
|
};
|
||||||
} // namespace Syscall
|
} // 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) {
|
[[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);
|
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