41 lines
1.3 KiB
C
41 lines
1.3 KiB
C
////////////////////////////////////////////////////////////
|
|
//~ Memory allocation
|
|
|
|
//- Reserve
|
|
void *ReserveMemory(u64 size);
|
|
void ReleaseMemory(void *address);
|
|
|
|
//- Commit
|
|
void *CommitMemory(void *address, u64 size);
|
|
void DecommitMemory(void *address, u64 size);
|
|
|
|
//- Protect
|
|
void SetMemoryReadonly(void *address, u64 size);
|
|
void SetMemoryReadWrite(void *address, u64 size);
|
|
|
|
////////////////////////////////////////////////////////////
|
|
//~ Memory operations
|
|
|
|
//- Wrappers
|
|
#define ZeroStruct(ptr) ZeroBytes((ptr), sizeof(*(ptr)))
|
|
#define ZeroArray(a) Assert(IsArray(a)); ZeroBytes((a), sizeof((a)))
|
|
#define CopyStruct(ptr_dst, ptr_src) CopyBytes((ptr_dst), (ptr_src), sizeof(*(ptr_dst)))
|
|
#define EqStruct(p1, p2) EqBytes((p1), (p2), sizeof(*p1))
|
|
#define ZeroBytes(ptr, count) SetBytes((ptr), 0, (count))
|
|
#define EqBytes(p1, p2, n) (CmpBytes((p1), (p2), (n)) == 0)
|
|
|
|
#define CopyBytes(dst, src, count) memcpy(dst, src, count)
|
|
#define SetBytes(dst, c, count) memset(dst, c, count)
|
|
#define CmpBytes(p1, p2, count) memcmp(p1, p2, count)
|
|
|
|
////////////////////////////////////////////////////////////
|
|
//~ Crtlib stubs
|
|
|
|
#if CrtlibIsEnabled
|
|
# include <memory.h>
|
|
#else
|
|
void *memcpy(void *__restrict dst, const void *__restrict src, u64 n);
|
|
void *memset(void *dst, i32 c, u64 n);
|
|
i32 memcmp(const void *p1, const void *p2, u64 n);
|
|
#endif
|