implement cu_memtest for cheacking if memory is zeroed

This commit is contained in:
mykola2312 2022-05-03 08:56:47 +03:00
parent 3c0de35e2c
commit 0067951bdf
3 changed files with 24 additions and 0 deletions

18
cutil.c
View file

@ -24,3 +24,21 @@ void cutil_init()
void cutil_exit() void cutil_exit()
{ {
} }
const void* cu_memtest(const void* mem, uint size)
{
unsigned i;
for (i = 0; i < size / sizeof(uword); i++)
{
if (*(uword*)mem) return mem;
*(uword*)mem++;
}
for (i = 0; i < size % sizeof(uword); i++)
{
if (*(uint8_t*)mem) return mem;
*(uint8_t*)mem++;
}
return NULL;
}

View file

@ -21,4 +21,6 @@ extern void* (*cu_memmove)(void*,const void*,size_t);
void cutil_init(); void cutil_init();
void cutil_exit(); void cutil_exit();
const void* cu_memtest(const void* mem, uint size);
#endif #endif

4
test.c
View file

@ -101,6 +101,10 @@ int main()
printf("[cutil]\n"); printf("[cutil]\n");
printf("cutil_arch\t%u\n", CU_ARCH); printf("cutil_arch\t%u\n", CU_ARCH);
uint64_t val1 = 0;
printf("val1\t%u\tcu_memtest\t%p\n", val1, cu_memtest(&val1, sizeof(val1)));
char val2[] = {0,0,0,1,0,0,0,0,0,0,4,0,0};
printf("val2\tcu_memtest\t%p\n", cu_memtest(val2, sizeof(val2)));
printf("[endian]\n"); printf("[endian]\n");
printf("cutil_endian\t%u\n", cu_endian); printf("cutil_endian\t%u\n", cu_endian);