1 /* Copyright (c) 2008, Sandia National Laboratories */
7 #include <lwk/liblwk.h>
9 static void pmem_api_test(void);
10 static void aspace_api_test(void);
13 main(int argc, char *argv[], char *envp[])
18 printf("Hello, world!\n");
20 printf("Arguments:\n");
21 for (i = 0; i < argc; i++)
22 printf(" argv[%d] = %s\n", i, argv[i]);
24 printf("Environment Variables:\n");
25 for (i = 0; envp[i] != NULL; i++)
26 printf(" envp[%d] = %s\n", i, envp[i]);
31 printf("Spinning forever...\n");
38 struct pmem_region query, result;
39 unsigned long bytes_umem = 0;
42 printf("TEST BEGIN: Physical Memory Management\n");
45 query.end = ULONG_MAX;
46 pmem_region_unset_all(&query);
48 printf(" Physical Memory Map:\n");
49 while ((status = pmem_query(&query, &result)) == 0) {
50 printf(" [%#016lx, %#016lx) %-11s\n",
54 ? pmem_type_to_string(result.type)
58 if (result.type == PMEM_TYPE_UMEM)
59 bytes_umem += (result.end - result.start);
61 query.start = result.end;
64 if (status != -ENOENT) {
65 printf("ERROR: pmem_query() status=%d\n", status);
68 printf(" Total User-Level Managed Memory: %lu bytes\n", bytes_umem);
70 printf("TEST END: Physical Memory Management\n");
79 printf("TEST BEGIN: Address Space Management\n");
81 if ((status = aspace_get_myid(&my_id)) != 0)
82 printf("ERROR: aspace_get_myid() status=%d\n", status);
84 printf(" My address space ID is %u\n", my_id);
86 printf(" Creating a new aspace: ");
88 status = aspace_create(ANY_ID, "TEST-ASPACE", &new_id);
90 printf("\nERROR: aspace_create() status=%d\n", status);
92 printf("id=%u\n", new_id);
94 printf(" Using SMARTMAP to map myself into aspace %u\n", new_id);
95 status = aspace_smartmap(my_id, new_id, SMARTMAP_ALIGN, SMARTMAP_ALIGN);
96 if (status) printf("ERROR: aspace_smartmap() status=%d\n", status);
98 aspace_dump2console(new_id);
100 status = aspace_unsmartmap(my_id, new_id);
101 if (status) printf("ERROR: aspace_unsmartmap() status=%d\n", status);
103 printf(" Destroying a aspace %u: ", new_id);
104 status = aspace_destroy(new_id);
106 printf("ERROR: aspace_destroy() status=%d\n", status);
110 printf("TEST END: Address Space Management\n");