diff options
Diffstat (limited to 'DDK/KernelCall.c')
| -rw-r--r-- | DDK/KernelCall.c | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/DDK/KernelCall.c b/DDK/KernelCall.c index 7dc5761c..88343abd 100644 --- a/DDK/KernelCall.c +++ b/DDK/KernelCall.c @@ -12,15 +12,25 @@ /// @brief this is an internal call, do not use it. DK_EXTERN __attribute__((naked)) void* __kernelDispatchCall(const char* name, int32_t cnt, void* data, size_t sz); -/// @brief Execute a function on the kernel. -/// @param kernelRpcName the name of the function. -/// @param cnt number of arguments. -/// @param -/// @return +/// @brief Call kernel (interrupt 0x33) +/// @param kernelRpcName +/// @param cnt number of elements in **dat** +/// @param dat data ptr +/// @param sz sz of whole data ptr. +/// @return result of call DK_EXTERN void* kernelCall(const char* kernelRpcName, int32_t cnt, void* data, size_t sz) { if (!kernelRpcName || cnt == 0) - return NIL; + return nil; return __kernelDispatchCall(kernelRpcName, cnt, data, sz); } + + +/// @brief add system call. +/// @param slot system call slot +/// @param slotFn, syscall slot. +DK_EXTERN void kernelAddSyscall(const int slot, void(*slotFn)(void* a0)) +{ + kernelCall("AddSyscall", slot, slotFn, 0); +}
\ No newline at end of file |
