|
30 | 30 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
31 | 31 | */
|
32 | 32 |
|
33 |
| -/* |
34 |
| - * pmem_config.c - Demonstrates the use of several |
35 |
| - * configuration functions within |
36 |
| - * libmemkind. |
37 |
| - */ |
| 33 | +/* |
| 34 | + * pmem_config.c - demonstrate configuration functions |
| 35 | + */ |
38 | 36 |
|
39 | 37 | #include <memkind.h>
|
40 | 38 |
|
|
44 | 42 |
|
45 | 43 | #define PMEM_MAX_SIZE (1024 * 1024 * 32)
|
46 | 44 |
|
47 |
| -static char path[PATH_MAX] = "pmemfs//"; |
| 45 | +char path[PATH_MAX] = "/daxfs"; |
48 | 46 |
|
49 |
| -static void print_err_message(int err) |
| 47 | +void memkind_fatal(int err) |
50 | 48 | {
|
51 |
| - char error_message[MEMKIND_ERROR_MESSAGE_SIZE]; |
52 |
| - memkind_error_message(err, error_message, |
53 |
| - MEMKIND_ERROR_MESSAGE_SIZE); |
54 |
| - fprintf(stderr, "%s\n", error_message); |
| 49 | + char error_message[MEMKIND_ERROR_MESSAGE_SIZE]; |
| 50 | + |
| 51 | + memkind_error_message(err, error_message, |
| 52 | + MEMKIND_ERROR_MESSAGE_SIZE); |
| 53 | + fprintf(stderr, "%s\n", error_message); |
| 54 | + exit(1); |
55 | 55 | }
|
56 | 56 |
|
57 | 57 | int main(int argc, char *argv[])
|
58 | 58 | {
|
59 |
| - struct memkind *pmem_kind = NULL; |
60 |
| - int err = 0; |
61 |
| - |
62 |
| - if (argc > 2) { |
63 |
| - fprintf(stderr, |
64 |
| - "Usage: %s [pmem_kind_dir_path]\n", |
65 |
| - argv[0]); |
66 |
| - return 1; |
67 |
| - } else if (argc == 2 && |
68 |
| - (realpath(argv[1], path) == NULL)) { |
69 |
| - fprintf(stderr, |
70 |
| - "Incorrect pmem_kind_dir_path %s\n", |
71 |
| - argv[1]); |
72 |
| - return 1; |
73 |
| - } |
74 |
| - |
75 |
| - fprintf(stdout, |
76 |
| - "This example shows how to use custom " |
77 |
| - "configuration to create pmem kind." |
78 |
| - "\nPMEM kind directory: %s\n", path); |
79 |
| - |
80 |
| - struct memkind_config *test_cfg = |
81 |
| - memkind_config_new(); |
82 |
| - if (!test_cfg) { |
83 |
| - fprintf(stderr, |
84 |
| - "Unable to create memkind cfg.\n"); |
85 |
| - return 1; |
86 |
| - } |
87 |
| - |
88 |
| - memkind_config_set_path(test_cfg, path); |
89 |
| - memkind_config_set_size(test_cfg, PMEM_MAX_SIZE); |
90 |
| - memkind_config_set_memory_usage_policy(test_cfg, |
91 |
| - MEMKIND_MEM_USAGE_POLICY_CONSERVATIVE); |
92 |
| - |
93 |
| - |
94 |
| - // Create PMEM partition with the configuration |
95 |
| - err = memkind_create_pmem_with_config(test_cfg, |
96 |
| - &pmem_kind); |
97 |
| - if (err) { |
98 |
| - print_err_message(err); |
99 |
| - return 1; |
100 |
| - } |
101 |
| - |
102 |
| - err = memkind_destroy_kind(pmem_kind); |
103 |
| - if (err) { |
104 |
| - print_err_message(err); |
105 |
| - return 1; |
106 |
| - } |
107 |
| - |
108 |
| - memkind_config_delete(test_cfg); |
109 |
| - |
110 |
| - fprintf(stdout, |
111 |
| - "PMEM kind and configuration was successfully" |
112 |
| - " created and destroyed.\n"); |
113 |
| - |
114 |
| - return 0; |
| 59 | + struct memkind *pmem_kind; |
| 60 | + int err; |
| 61 | + |
| 62 | + if (argc > 2) { |
| 63 | + fprintf(stderr, |
| 64 | + "Usage: %s [pmem_kind_dir_path]\n", |
| 65 | + argv[0]); |
| 66 | + exit(1); |
| 67 | + } else if (argc == 2 && |
| 68 | + (realpath(argv[1], path) == NULL)) { |
| 69 | + perror(argv[1]); |
| 70 | + exit(1); |
| 71 | + } |
| 72 | + |
| 73 | + struct memkind_config *test_cfg = |
| 74 | + memkind_config_new(); |
| 75 | + if (test_cfg == NULL) { |
| 76 | + fprintf(stderr, |
| 77 | + "memkind_config_new: out of memory\n"); |
| 78 | + exit(1); |
| 79 | + } |
| 80 | + |
| 81 | + memkind_config_set_path(test_cfg, path); |
| 82 | + memkind_config_set_size(test_cfg, PMEM_MAX_SIZE); |
| 83 | + memkind_config_set_memory_usage_policy(test_cfg, |
| 84 | + MEMKIND_MEM_USAGE_POLICY_CONSERVATIVE); |
| 85 | + |
| 86 | + // Create PMEM partition with the configuration |
| 87 | + err = memkind_create_pmem_with_config(test_cfg, |
| 88 | + &pmem_kind); |
| 89 | + if (err) { |
| 90 | + memkind_fatal(err); |
| 91 | + } |
| 92 | + |
| 93 | + err = memkind_destroy_kind(pmem_kind); |
| 94 | + if (err) { |
| 95 | + memkind_fatal(err); |
| 96 | + } |
| 97 | + |
| 98 | + memkind_config_delete(test_cfg); |
| 99 | + |
| 100 | + exit(0); |
115 | 101 | }
|
0 commit comments