diff options
| author | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-08-31 10:47:14 +0200 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-08-31 10:47:14 +0200 |
| commit | 2c4b02249ec4355a73b826909ab1889e45871faf (patch) | |
| tree | a904b374c7a738dd3dcb0a580e5667714b72682a /dev/DDK | |
| parent | d65e85588388bf8c2e0dc8f6b106947110c0e815 (diff) | |
Saving progress on User scheduler implementation.
+ Working on RISC-V, ARM64, POWER64 HALs, to be able to distribute
mulitple versions of the product.
Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev/DDK')
| -rw-r--r-- | dev/DDK/DispatchKernelCall.S | 12 | ||||
| -rw-r--r-- | dev/DDK/KernelAlloc.c | 10 | ||||
| -rw-r--r-- | dev/DDK/KernelCall.c | 34 | ||||
| -rw-r--r-- | dev/DDK/KernelCxxRt.cxx | 8 | ||||
| -rw-r--r-- | dev/DDK/KernelDev.c | 8 | ||||
| -rw-r--r-- | dev/DDK/KernelDev.h | 14 | ||||
| -rw-r--r-- | dev/DDK/KernelPrint.c | 10 | ||||
| -rw-r--r-- | dev/DDK/KernelPrint.h | 4 | ||||
| -rw-r--r-- | dev/DDK/KernelStd.h | 20 | ||||
| -rw-r--r-- | dev/DDK/KernelString.c | 4 | ||||
| -rw-r--r-- | dev/DDK/KernelString.h | 6 | ||||
| -rw-r--r-- | dev/DDK/ReadMe.md | 2 |
12 files changed, 66 insertions, 66 deletions
diff --git a/dev/DDK/DispatchKernelCall.S b/dev/DDK/DispatchKernelCall.S index b6ce8004..ef1886b9 100644 --- a/dev/DDK/DispatchKernelCall.S +++ b/dev/DDK/DispatchKernelCall.S @@ -3,32 +3,32 @@ compiler: gnu */ -.globl __kernelCallDispatch +.globl __KernelCallDispatch .text /* Really simple function, takes our va-list, - and brings it to the trap handler in the kernel. */ + and brings it to the trap handler in the Kernel. */ #ifdef __DDK_AMD64__ /* args rcx, rdx, r8, r9 */ -__kernelCallDispatch: +__KernelCallDispatch: int $0x33 ret #elif defined(__DDK_POWER64__) /* args r8, r9, r10, r11 */ -__kernelCallDispatch: +__KernelCallDispatch: /* There is no specific interrupt request id for a system call in POWER. */ sc blr #elif defined(__DDK_ARM64__) -/* args x0, x8, x9, x10, x11 is kept to tell that this is a kernel call */ -__kernelCallDispatch: +/* args x0, x8, x9, x10, x11 is kept to tell that this is a Kernel call */ +__KernelCallDispatch: /* There is no specific interrupt request id for a system call in ARM64 as well. */ mov x11, #0x33 svc #0 diff --git a/dev/DDK/KernelAlloc.c b/dev/DDK/KernelAlloc.c index 56dfd6a4..cb79b538 100644 --- a/dev/DDK/KernelAlloc.c +++ b/dev/DDK/KernelAlloc.c @@ -9,15 +9,15 @@ #include <DDK/KernelStd.h> /** - \brief Allocates a new heap on the kernel's side. + \brief Allocates a new heap on the Kernel's side. \param sz the size of the heap block. \return the newly allocated pointer. */ -DK_EXTERN void* kernelAlloc(size_t sz) +DK_EXTERN void* KernelAlloc(size_t sz) { if (!sz) ++sz; - void* ptr = kernelCall("NewHeap", 1, &sz, sizeof(size_t)); + void* ptr = KernelCall("NewHeap", 1, &sz, sizeof(size_t)); return ptr; } @@ -26,9 +26,9 @@ DK_EXTERN void* kernelAlloc(size_t sz) \brief Frees a pointer from the heap. \param ptr the pointer to free. */ -DK_EXTERN void kernelFree(void* ptr) +DK_EXTERN void KernelFree(void* ptr) { if (!ptr) return; - kernelCall("DeleteHeap", 1, ptr, 0); + KernelCall("DeleteHeap", 1, ptr, 0); } diff --git a/dev/DDK/KernelCall.c b/dev/DDK/KernelCall.c index 8c890579..31e67620 100644 --- a/dev/DDK/KernelCall.c +++ b/dev/DDK/KernelCall.c @@ -2,7 +2,7 @@ Copyright ZKA Technologies. - Purpose: DDK kernel call. + Purpose: DDK Kernel call. ------------------------------------------- */ @@ -10,46 +10,46 @@ #include <stdarg.h> /// @brief this is an internal call, do not use it. -DK_EXTERN __attribute__((naked)) void* __kernelCallDispatch(const char* name, int32_t cnt, void* data, size_t sz); +DK_EXTERN __attribute__((naked)) void* __KernelCallDispatch(const char* name, int32_t cnt, void* data, size_t sz); -/// @brief Interupt kernel -/// @param kernelRpcName RPC name +/// @brief Interupt Kernel +/// @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) -DK_EXTERN void* kernelCall(const char* kernelRpcName, int32_t cnt, void* data, size_t sz) +/// @retval void* Kernel call was successful. +/// @retval nil Kernel call failed, call KernelLastError(void) +DK_EXTERN void* KernelCall(const char* KernelRpcName, int32_t cnt, void* data, size_t sz) { - if (!kernelRpcName || cnt == 0) + if (!KernelRpcName || cnt == 0) return nil; - return __kernelCallDispatch(kernelRpcName, cnt, data, sz); + return __KernelCallDispatch(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)) +DK_EXTERN void KernelAddSyscall(const int slot, void (*slotFn)(void* a0)) { - kernelCall("AddSyscall", slot, slotFn, 1); + KernelCall("AddSyscall", slot, slotFn, 1); } -/// @brief Get a kernel property. +/// @brief Get a Kernel property. /// @param slot property id (always 0) /// @param name the prperty's name. /// @return property's object. -DK_EXTERN void* kernelGetProperty(const int slot, const char* name) +DK_EXTERN void* KernelGetProperty(const int slot, const char* name) { - return kernelCall("GetProperty", slot, name, 1); + return KernelCall("GetProperty", slot, name, 1); } -/// @brief Set a kernel property. +/// @brief Set a Kernel property. /// @param slot property id (always 0) /// @param name the property's name. /// @param ddk_pr pointer to a property's DDK_PROPERTY_RECORD. /// @return property's object. -DK_EXTERN void* kernelSetProperty(const int slot, const struct DDK_PROPERTY_RECORD* ddk_pr) +DK_EXTERN void* KernelSetProperty(const int slot, const struct DDK_PROPERTY_RECORD* ddk_pr) { - return kernelCall("SetProperty", slot, ddk_pr, 1); + return KernelCall("SetProperty", slot, ddk_pr, 1); } diff --git a/dev/DDK/KernelCxxRt.cxx b/dev/DDK/KernelCxxRt.cxx index 5122ba40..3029caa1 100644 --- a/dev/DDK/KernelCxxRt.cxx +++ b/dev/DDK/KernelCxxRt.cxx @@ -10,20 +10,20 @@ void* operator new(size_t sz) { - return kernelAlloc(sz); + return KernelAlloc(sz); } void operator delete(void* ptr) { - kernelFree(ptr); + KernelFree(ptr); } void* operator new[](size_t sz) { - return kernelAlloc(sz); + return KernelAlloc(sz); } void operator delete[](void* ptr) { - kernelFree(ptr); + KernelFree(ptr); } diff --git a/dev/DDK/KernelDev.c b/dev/DDK/KernelDev.c index df61e35d..78703961 100644 --- a/dev/DDK/KernelDev.c +++ b/dev/DDK/KernelDev.c @@ -10,20 +10,20 @@ #include <DDK/KernelString.h> /// @brief Open a new binary device from path. -DK_EXTERN kernelDeviceRef kernelOpenDevice(const char* devicePath) +DK_EXTERN KERNEL_DEVICE_PTR KernelOpenDevice(const char* devicePath) { if (!devicePath) return nil; - return kernelCall("OpenDevice", 1, (void*)devicePath, kernelStringLength(devicePath)); + return KernelCall("OpenDevice", 1, (void*)devicePath, KernelStringLength(devicePath)); } /// @brief Close any device. /// @param device valid device. -DK_EXTERN void kernelCloseDevice(kernelDeviceRef device) +DK_EXTERN void KernelCloseDevice(KERNEL_DEVICE_PTR device) { if (!device) return; - kernelCall("CloseDevice", 1, device, sizeof(kernelDevice)); + KernelCall("CloseDevice", 1, device, sizeof(KERNEL_DEVICE)); } diff --git a/dev/DDK/KernelDev.h b/dev/DDK/KernelDev.h index c2328d40..ce7b1a2d 100644 --- a/dev/DDK/KernelDev.h +++ b/dev/DDK/KernelDev.h @@ -10,23 +10,23 @@ #include <DDK/KernelStd.h> -struct _kernelDevice; +struct _KERNEL_DEVICE; /// @brief Kernel Device driver. -typedef struct _kernelDevice +typedef struct _KERNEL_DEVICE { char name[255]; // the device name. Could be /./DEVICE_NAME/ void* (*read)(void* arg, int len); // read from device. void (*write)(void* arg, int len); void (*wait)(void); // write to device. - struct _kernelDevice* (*open)(const char* path); // open device. - void (*close)(struct _kernelDevice* dev); // close device. -} kernelDevice, *kernelDeviceRef; + struct _KERNEL_DEVICE* (*open)(const char* path); // open device. + void (*close)(struct _KERNEL_DEVICE* dev); // close device. +} KERNEL_DEVICE, *KERNEL_DEVICE_PTR; /// @brief Open a new device from path. /// @param devicePath the device's path. -DK_EXTERN kernelDeviceRef kernelOpenDevice(const char* devicePath); +DK_EXTERN KERNEL_DEVICE_PTR KernelOpenDevice(const char* devicePath); /// @brief Close any device. /// @param device valid device. -DK_EXTERN void kernelCloseDevice(kernelDeviceRef device); +DK_EXTERN void KernelCloseDevice(KERNEL_DEVICE_PTR device); diff --git a/dev/DDK/KernelPrint.c b/dev/DDK/KernelPrint.c index a885ddd4..7eb893d0 100644 --- a/dev/DDK/KernelPrint.c +++ b/dev/DDK/KernelPrint.c @@ -8,18 +8,18 @@ #include <DDK/KernelPrint.h> -DK_EXTERN void kernelPrintChar(const char ch) +DK_EXTERN void KernelPrintChar(const char ch) { char assembled[2] = {0}; assembled[0] = ch; assembled[1] = 0; - kernelCall("WriteCharacter", 1, assembled, 1); + KernelCall("WriteCharacter", 1, assembled, 1); } /// @brief print string to UART. /// @param message UART to transmit. -DK_EXTERN void kernelPrintStr(const char* message) +DK_EXTERN void KernelPrintStr(const char* message) { if (!message) return; @@ -27,11 +27,11 @@ DK_EXTERN void kernelPrintStr(const char* message) return; size_t index = 0; - size_t len = kernelStringLength(message); + size_t len = KernelStringLength(message); while (index < len) { - kernelPrintChar(message[index]); + KernelPrintChar(message[index]); ++index; } } diff --git a/dev/DDK/KernelPrint.h b/dev/DDK/KernelPrint.h index d3c2c523..88244c94 100644 --- a/dev/DDK/KernelPrint.h +++ b/dev/DDK/KernelPrint.h @@ -11,8 +11,8 @@ #include <DDK/KernelString.h> /// @brief print character into UART. -DK_EXTERN void kernelPrintChar(const char ch); +DK_EXTERN void KernelPrintChar(const char ch); /// @brief print string to UART. /// @param message string to transmit to UART. -DK_EXTERN void kernelPrintStr(const char* message); +DK_EXTERN void KernelPrintStr(const char* message); diff --git a/dev/DDK/KernelStd.h b/dev/DDK/KernelStd.h index 0436469e..d5350c8e 100644 --- a/dev/DDK/KernelStd.h +++ b/dev/DDK/KernelStd.h @@ -44,41 +44,41 @@ struct DDK_STATUS_STRUCT DK_FINAL void* s_object; }; -/// @brief Call kernel (interrupt 0x33) -/// @param kernelRpcName +/// @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* dat, size_t sz); +DK_EXTERN void* KernelCall(const char* KernelRpcName, int32_t cnt, void* dat, size_t 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)); +DK_EXTERN void KernelAddSyscall(const int slot, void (*slotFn)(void* a0)); /// @brief allocate heap ptr. /// @param sz size of ptr. /// @return the pointer allocated or **nil**. -DK_EXTERN void* kernelAlloc(size_t sz); +DK_EXTERN void* KernelAlloc(size_t sz); /// @brief free heap ptr. /// @param pointer to free -DK_EXTERN void kernelFree(void*); +DK_EXTERN void KernelFree(void*); -/// @brief Get a kernel property. +/// @brief Get a Kernel property. /// @param slot property id (always 0) /// @param name the property's name. /// @return property's object. -DK_EXTERN void* kernelGetProperty(const int slot, const char* name); +DK_EXTERN void* KernelGetProperty(const int slot, const char* name); -/// @brief Set a kernel property. +/// @brief Set a Kernel property. /// @param slot property id (always 0) /// @param name the property's name. /// @param ddk_pr pointer to a property's DDK_PROPERTY_RECORD. /// @return property's object. -DK_EXTERN void* kernelSetProperty(const int slot, const struct DDK_PROPERTY_RECORD* ddk_pr); +DK_EXTERN void* KernelSetProperty(const int slot, const struct DDK_PROPERTY_RECORD* ddk_pr); /// @brief The highest API version of the DDK. DK_EXTERN int32_t c_api_version_highest; diff --git a/dev/DDK/KernelString.c b/dev/DDK/KernelString.c index 63157ec2..21395e9f 100644 --- a/dev/DDK/KernelString.c +++ b/dev/DDK/KernelString.c @@ -8,7 +8,7 @@ #include <DDK/KernelString.h> -DK_EXTERN size_t kernelStringLength(const char* in) +DK_EXTERN size_t KernelStringLength(const char* in) { if (in == nil) return 0; @@ -25,7 +25,7 @@ DK_EXTERN size_t kernelStringLength(const char* in) return index; } -DK_EXTERN int kernelStringCopy(char* dst, const char* src, size_t len) +DK_EXTERN int KernelStringCopy(char* dst, const char* src, size_t len) { size_t index = 0; diff --git a/dev/DDK/KernelString.h b/dev/DDK/KernelString.h index 02d2c067..8a02713a 100644 --- a/dev/DDK/KernelString.h +++ b/dev/DDK/KernelString.h @@ -11,7 +11,7 @@ #include <DDK/KernelStd.h> /// @brief DDK equivalent of POSIX's string.h -/// @file kernelString.h +/// @file KernelString.h -DK_EXTERN size_t kernelStringLength(const char* in); -DK_EXTERN int kernelStringCopy(char* dst, const char* src, size_t len); +DK_EXTERN size_t KernelStringLength(const char* in); +DK_EXTERN int KernelStringCopy(char* dst, const char* src, size_t len); diff --git a/dev/DDK/ReadMe.md b/dev/DDK/ReadMe.md index 41e39d83..48e35ef2 100644 --- a/dev/DDK/ReadMe.md +++ b/dev/DDK/ReadMe.md @@ -1,6 +1,6 @@ # ZKA's Device Driver Kit. -A kit used to write kernel HALs, using the NDK compiler suite. +A kit used to write Kernel HALs, using the NDK compiler suite. ## How to use it |
