#include #include #include #include #include #include #include #include #include #include #include #include #define TEST_NAME "CT_001" #define CHKANDJUMP(cond, ...) \ do { \ if (cond) { \ fprintf(stderr, " [NG] "); \ fprintf(stderr, __VA_ARGS__); \ fprintf(stderr, " failed\n"); \ goto fn_fail; \ } \ } while(0); #define OKNG(cond, ...) \ do { \ if (cond) { \ CHKANDJUMP(cond, __VA_ARGS__); \ } else { \ fprintf(stdout, " [OK] "); \ fprintf(stdout, __VA_ARGS__); \ fprintf(stdout, "\n"); \ } \ } while(0); #define SZ_MEM 4 * (1ULL << 10) #define TEST_VAL 0x1129 int main(int argc, char** argv) { void *mem, *attach; int rc = 0; int status; xpmem_segid_t segid; xpmem_apid_t apid; struct xpmem_addr addr; printf("*** %s start *******************************\n", TEST_NAME); mem = mmap(0, SZ_MEM, PROT_READ|PROT_WRITE, MAP_ANONYMOUS|MAP_PRIVATE, -1, 0); CHKANDJUMP(mem == NULL, "mmap"); memset(mem, 0, SZ_MEM); rc = xpmem_init(); CHKANDJUMP(rc != 0, "xpmem_init"); segid = xpmem_make(mem, SZ_MEM, XPMEM_PERMIT_MODE, (void*)0666); OKNG(segid == -1, "xpmem_make"); apid = xpmem_get(segid, XPMEM_RDWR, XPMEM_PERMIT_MODE, NULL); OKNG(apid == -1, "xpmem_get"); addr.apid = apid; addr.offset = 0; attach = xpmem_attach(addr, SZ_MEM, NULL); OKNG(attach == (void*)-1, "xpmem_attach"); //*((unsigned long*)attach) = TEST_VAL; rc = xpmem_detach(attach); OKNG(rc == -1, "xpmem_detach"); //OKNG(*((unsigned long*)mem) != TEST_VAL, "validate TEST_VAL"); rc = xpmem_remove(segid); OKNG(rc == -1, "xpmem_remove"); printf("*** %s PASSED\n\n", TEST_NAME); return 0; fn_fail: printf("*** %s FAILED\n\n", TEST_NAME); return -1; }