risc-v-tlm/tests/C/malloc_test/malloc_test.c

64 lines
1.3 KiB
C

#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define BUFFER_SIZE (512)
int main(void) {
uint16_t *buffA, *buffB;
bool test_ok = true;
uint8_t *buffC;
printf("Malloc Test\n");
printf("buffA: %p\n", (void *) buffA);
printf("buffB: %p\n", (void *) buffB);
printf("buffC: %p\n", (void *) buffC);
buffA = malloc(BUFFER_SIZE * sizeof(uint16_t));
buffB = malloc(BUFFER_SIZE * sizeof(uint16_t));
printf("buffA: %p\n", (void *) buffA);
printf("buffB: %p\n", (void *) buffB);
printf("buffC: %p\n", (void *) buffC);
if ( (buffA == NULL ) || (buffB == NULL) ) {
printf("Error malloc\n");
}
for(int i=0;i<BUFFER_SIZE;i++) {
buffA[i] = i;
}
memcpy(buffB, buffA, BUFFER_SIZE * sizeof(uint16_t));
for(int i=0;i<BUFFER_SIZE;i++) {
if (buffA[i] != buffB[i]) {
printf("Error at postion %d\n", i);
test_ok = false;
break;
}
}
free(buffA);
free(buffB);
printf("buffA: %p\n", (void *) buffA);
printf("buffB: %p\n", (void *) buffB);
printf("buffC: %p\n", (void *) buffC);
/* buffC should reuse address previously used by buffA (?) */
buffC = malloc(512);
printf("buffC: %p\n", (void *) buffC);
if (test_ok == true) {
printf("Test were OK\n");
}
asm volatile ("ecall");
return 0;
}