#include #include #include #include #include #include #include #include #include #include #include "basetype.h" #include "memalloc.h" int main(void){ i32 memdev_fd = -1; i32 memdev_fd_2 = -1; i32 memdev_map = -1; i32 i = 0, u=0; u32 * virtual1 = MAP_FAILED; u32 * virtual2 = MAP_FAILED; u32 pgsize = getpagesize(); const char *memdev = "/tmp/dev/memalloc"; const char *memmap ="/dev/mem"; u32 bus_address1 = 0, bus_address2 = 0; u32 size = 4096; memdev_fd = open(memdev, O_RDWR); if(memdev_fd == -1) { printf("Failed to open dev: %s\n", memdev); goto end1; } memdev_fd_2 = open(memdev, O_RDWR); if(memdev_fd_2 == -1) { printf("Failed to open dev: %s\n", memdev); goto end1; } memdev_map = open(memmap, O_RDWR); if(memdev_map == -1) { printf("Failed to open dev: %s\n", memmap); goto end1; } size = (size + pgsize) & (~(pgsize - 1)); printf("Hard reset\n", size); /*ioctl(memdev_fd, MEMALLOC_IOCHARDRESET, 0);*/ for(i=0; i<100; i++){ ioctl(memdev_fd, MEMALLOC_IOCXGETBUFFER, &bus_address1); printf("bus_address1 0x%08x\n", bus_address1); ioctl(memdev_fd_2, MEMALLOC_IOCXGETBUFFER, &bus_address2); printf("bus_address2 0x%08x\n", bus_address2); /* test write stuff in the mem are*/ if(bus_address1){ virtual1 = (u32 *) mmap(0, size, PROT_READ | PROT_WRITE, MAP_SHARED, memdev_map, bus_address1); printf("Virtual1 %08x\n", virtual1); } if(virtual1 != MAP_FAILED){ for(u=0; u