Improve syscall definitions

- Allow constant id specification
- Define function signature in SYSCALL macro
- Move implementation into src/kernel/syscalls/*.cpp
This commit is contained in:
Justin C. Miller
2019-04-02 23:14:52 -07:00
parent 11a53e792f
commit 8375870af6
13 changed files with 173 additions and 97 deletions

View File

@@ -6,12 +6,20 @@ struct cpu_state;
enum class syscall : uint64_t
{
#define SYSCALL(name, nargs) name ,
#define SYSCALL(id, name, result, ...) name = id,
#include "syscalls.inc"
#undef SYSCALL
COUNT
// Maximum syscall id. If you change this, also change
// MAX_SYSCALLS in syscall.s
MAX = 64
};
void syscall_enable();
extern "C" void syscall_invalid(uint64_t call);
namespace syscalls
{
#define SYSCALL(id, name, result, ...) result name (__VA_ARGS__);
#include "syscalls.inc"
#undef SYSCALL
}