summaryrefslogtreecommitdiffhomepage
path: root/DDK/KernelStd.h
blob: aef1785f0637d24981b9fbc7fa060df0713cac2e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/* -------------------------------------------

	Copyright ZKA Technologies

	Purpose: Kernel Definitions.

------------------------------------------- */

#pragma once

#if defined(__cplusplus)
#define DK_EXTERN extern "C"
#define nil		  nullptr
#else
#define DK_EXTERN extern
#define nil		  ((void*)0)
#endif // defined(__cplusplus)

#include <stdint.h>
#include <stddef.h>

/// @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);

/// @brief add system call.
/// @param slot system call slot
/// @param slotFn, syscall slot.
DK_EXTERN void kernelAddSyscall(const int slot, void (*slotFn)(void* a0));

/// @brief allocate ptr.
/// @param sz size of ptr.
/// @return the pointer allocated or **nil**.
DK_EXTERN void* kernelAlloc(size_t sz);

/// @brief allocate ptr.
/// @param pointer to free
DK_EXTERN void kernelFree(void*);