diff options
Diffstat (limited to 'dev/ddk/src/ddk_kernel_call.c')
| -rw-r--r-- | dev/ddk/src/ddk_kernel_call.c | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/dev/ddk/src/ddk_kernel_call.c b/dev/ddk/src/ddk_kernel_call.c index 10f31e18..95d2e577 100644 --- a/dev/ddk/src/ddk_kernel_call.c +++ b/dev/ddk/src/ddk_kernel_call.c @@ -1,36 +1,37 @@ /* ------------------------------------------- + DDK Copyright Amlal El Mahrouss. - Purpose: DDK Kernel call. + Author: Amlal El Mahrouss + Purpose: DDK kernel dispatch system. ------------------------------------------- */ -#include <DDKKit/ddk.h> +#include <DriverKit/ddk.h> #include <stdarg.h> /// @brief this is an internal call, do not use it. -DDK_EXTERN ATTRIBUTE(naked) void* ke_call_dispatch(const char* name, int32_t cnt, void* data, +DDK_EXTERN ATTRIBUTE(naked) void* __ke_call_dispatch(const char* name, int32_t cnt, void* data, size_t sz); -/// @brief Interupt Kernel and call it's RPC. +/// @brief Interrupt Kernel and call it's RPC. /// @param KernelRpcName RPC name /// @param cnt number of elements in **data** pointer. /// @param data data pointer. /// @param sz The size of the whole data pointer. /// @retval void* Kernel call was successful. /// @retval nil Kernel call failed, call KernelLastError(void) -DDK_EXTERN void* ke_call(const char* name, int32_t cnt, void* data, size_t sz) { - if (!name || *name == 0 || cnt == 0) return nil; - - return ke_call_dispatch(name, cnt, data, sz); +DDK_EXTERN void* ke_call_dispatch(const char* name, int32_t cnt, void* data, size_t sz) { + if (name == nil || *name == 0 || data == nil || cnt == 0) return nil; + return __ke_call_dispatch(name, cnt, data, sz); } /// @brief Add system call. /// @param slot system call slot /// @param slotFn, syscall slot. DDK_EXTERN void ke_set_syscall(const int slot, void (*slotFn)(void* a0)) { - ke_call("ke_set_syscall", slot, slotFn, 1); + ke_call_dispatch("ke_set_syscall", slot, slotFn, 1); } /// @brief Get a Kernel object. @@ -39,7 +40,7 @@ DDK_EXTERN void ke_set_syscall(const int slot, void (*slotFn)(void* a0)) { /// @return Object manifest. DDK_EXTERN struct DDK_OBJECT_MANIFEST* ke_get_obj(const int slot, const char* name) { struct DDK_OBJECT_MANIFEST* manifest = - (struct DDK_OBJECT_MANIFEST*) ke_call("cfkit_get_kobj", slot, (void*) name, 1); + (struct DDK_OBJECT_MANIFEST*) ke_call_dispatch("cfkit_get_kobj", slot, (void*) name, 1); if (!manifest) return nil; @@ -52,5 +53,5 @@ DDK_EXTERN struct DDK_OBJECT_MANIFEST* ke_get_obj(const int slot, const char* na /// @param ddk_pr pointer to a object's DDK_OBJECT_MANIFEST. /// @return property's object. DDK_EXTERN void* ke_set_obj(const int slot, const struct DDK_OBJECT_MANIFEST* ddk_pr) { - return ke_call("cfkit_set_kobj", slot, (void*) ddk_pr, 1); + return ke_call_dispatch("cfkit_set_kobj", slot, (void*) ddk_pr, 1); } |
