15#if defined(PROMEKI_PLATFORM_WINDOWS)
17# include <memoryapi.h>
18#elif defined(PROMEKI_PLATFORM_POSIX)
39 if(ptr ==
nullptr || size == 0)
return;
40#if defined(PROMEKI_PLATFORM_WINDOWS)
42#elif defined(PROMEKI_LIBC_GLIBC) && \
43 (PROMEKI_LIBC_GLIBC_VERSION_MAJOR > 2 || \
44 (PROMEKI_LIBC_GLIBC_VERSION_MAJOR == 2 && PROMEKI_LIBC_GLIBC_VERSION_MINOR >= 25))
46#elif defined(PROMEKI_PLATFORM_BSD)
49 volatile unsigned char *p =
static_cast<volatile unsigned char *
>(ptr);
50 while(size--) *p++ = 0;
65 if(ptr ==
nullptr || size == 0)
return Error::Ok;
66#if defined(PROMEKI_PLATFORM_WINDOWS)
69#elif defined(PROMEKI_PLATFORM_POSIX)
71# if defined(PROMEKI_PLATFORM_LINUX)
91 if(ptr ==
nullptr || size == 0)
return Error::Ok;
92#if defined(PROMEKI_PLATFORM_WINDOWS)
95#elif defined(PROMEKI_PLATFORM_POSIX)
96# if defined(PROMEKI_PLATFORM_LINUX)
Lightweight error code wrapper for the promeki library.
Definition error.h:39
static Error syserr()
Creates an Error from the last system error.
@ NotSupported
Operation is not supported.
Definition error.h:82
@ Ok
No error.
Definition error.h:51
Dynamic array container wrapping std::vector.
Definition list.h:40
PROMEKI_NAMESPACE_BEGIN void secureZero(void *ptr, size_t size)
Securely zeros a memory region, guaranteed not to be optimized away.
Definition securemem.h:38
#define PROMEKI_NAMESPACE_BEGIN
Starts a promeki namespace block.
Definition namespace.h:14
#define PROMEKI_NAMESPACE_END
Ends a promeki namespace block.
Definition namespace.h:19
Error secureUnlock(void *ptr, size_t size)
Unlocks a memory region previously locked with secureLock().
Definition securemem.h:90
Error secureLock(void *ptr, size_t size)
Locks a memory region into physical RAM, preventing it from being swapped to disk.
Definition securemem.h:64