more APIs

This commit is contained in:
InoriRus
2022-04-13 20:36:34 +10:00
parent 1d43b81773
commit 08b0a87225
134 changed files with 49099 additions and 96 deletions
+37
View File
@@ -0,0 +1,37 @@
#ifndef INCLUDE_KYTY_CORE_MSPACE_H_
#define INCLUDE_KYTY_CORE_MSPACE_H_
#include "Kyty/Core/Common.h"
namespace Kyty::Core {
using mspace_t = void*;
using mspace_dbg_callback_t = void (*)(mspace_t, size_t, size_t);
struct MSpaceSize
{
size_t max_system_size;
size_t current_system_size;
size_t max_inuse_size;
size_t current_inuse_size;
};
mspace_t MSpaceCreate(const char* name, void* base, size_t capacity, bool thread_safe, mspace_dbg_callback_t dbg_callback);
bool MSpaceDestroy(mspace_t msp);
void* MSpaceMalloc(mspace_t msp, size_t size);
bool MSpaceFree(mspace_t msp, void* ptr);
void* MSpaceRealloc(mspace_t msp, void* ptr, size_t size);
void* MSpaceCalloc(mspace_t msp, size_t nelem, size_t size);
void* MSpaceAlignedAlloc(mspace_t msp, size_t alignment, size_t size);
void* MSpaceMemalign(mspace_t msp, size_t boundary, size_t size);
void* MSpaceReallocalign(mspace_t msp, void* ptr, size_t boundary, size_t size);
bool MSpacePosixMemalign(mspace_t msp, void** ptr, size_t boundary, size_t size);
size_t MSpaceMallocUsableSize(void* ptr);
bool MSpaceMallocStats(mspace_t msp, MSpaceSize* mmsize);
bool MSpaceMallocStatsFast(mspace_t msp, MSpaceSize* mmsize);
bool MSpaceIsHeapEmpty(mspace_t msp);
} // namespace Kyty::Core
#endif /* INCLUDE_KYTY_CORE_MSPACE_H_ */
+54
View File
@@ -0,0 +1,54 @@
#ifndef UNIT_TEST_INCLUDE_UNITTEST_H_
#define UNIT_TEST_INCLUDE_UNITTEST_H_
#include "Kyty/Core/Common.h" // IWYU pragma: export
#include "Kyty/Core/MemoryAlloc.h" // IWYU pragma: keep
#include "Kyty/Core/Subsystems.h"
#include "gtest/gtest-message.h" // IWYU pragma: export
#include "gtest/gtest-test-part.h" // IWYU pragma: export
#include "gtest/gtest.h" // IWYU pragma: export
#include <memory> // IWYU pragma: export
namespace Kyty::UnitTest {
bool unit_test_all();
KYTY_SUBSYSTEM_DEFINE(UnitTest);
#define UT_MEM_CHECK_INIT() int test_ms = Core::mem_new_state();
#define UT_MEM_CHECK() \
if (!HasFailure()) \
{ \
Core::MemStats test_mem_stat = {test_ms, 0, 0}; \
Core::mem_get_stat(&test_mem_stat); \
size_t ut_total_allocated = test_mem_stat.total_allocated; \
uint32_t ut_blocks_num = test_mem_stat.blocks_num; \
if (ut_total_allocated != 0U || ut_blocks_num != 0U) Core::mem_print(test_ms); \
EXPECT_EQ(ut_total_allocated, 0U); \
EXPECT_EQ(ut_blocks_num, 0U); \
}
#define UT_NAMESPACE(name) \
namespace Kyty { \
namespace UnitTest { \
namespace name {
#define UT_BEGIN(name) \
namespace Kyty { \
namespace UnitTest { \
KYTY_FORCE_LINK_THIS(UnitTest##name); \
namespace name {
#define UT_END() \
} \
} \
}
#define UT_LINK(test) KYTY_FORCE_LINK_THAT(UnitTest##test);
} // namespace Kyty::UnitTest
#endif /* UNIT_TEST_INCLUDE_UNITTEST_H_ */