MCPcopy Create free account
hub / github.com/1a1a11a/libCacheSim / parse_opt

Function parse_opt

libCacheSim/bin/cachesim/cli_parser.c:104–191  ·  view source on GitHub ↗

PARSER. Field 2 in ARGP. Order of parameters: KEY, ARG, STATE. */

Source from the content-addressed store, hash-verified

102 Order of parameters: KEY, ARG, STATE.
103*/
104static error_t parse_opt(int key, char *arg, struct argp_state *state) {
105 struct arguments *arguments = state->input;
106
107 switch (key) {
108 case OPTION_NUM_THREAD:
109 arguments->n_thread = atoi(arg);
110 if (arguments->n_thread == 0 || arguments->n_thread == -1) {
111 arguments->n_thread = n_cores();
112 }
113 break;
114 case OPTION_TRACE_TYPE_PARAMS:
115 arguments->trace_type_params = arg;
116 break;
117 case OPTION_EVICTION_PARAMS:
118 arguments->eviction_params = strdup(arg);
119 replace_char(arguments->eviction_params, ';', ',');
120 replace_char(arguments->eviction_params, '_', '-');
121 break;
122 case OPTION_ADMISSION_ALGO:
123 arguments->admission_algo = arg;
124 break;
125 case OPTION_PREFETCH_ALGO:
126 arguments->prefetch_algo = arg;
127 break;
128 case OPTION_ADMISSION_PARAMS:
129 arguments->admission_params = strdup(arg);
130 replace_char(arguments->admission_params, ';', ',');
131 replace_char(arguments->admission_params, '_', '-');
132 break;
133 case OPTION_PREFETCH_PARAMS:
134 arguments->prefetch_params = strdup(arg);
135 replace_char(arguments->prefetch_params, ';', ',');
136 replace_char(arguments->prefetch_params, '_', '-');
137 break;
138 case OPTION_OUTPUT_PATH:
139 strncpy(arguments->ofilepath, arg, OFILEPATH_LEN - 1);
140 arguments->ofilepath[OFILEPATH_LEN - 1] = '\0';
141 break;
142 case OPTION_NUM_REQ:
143 arguments->n_req = atoi(arg);
144 break;
145 case OPTION_VERBOSE:
146 arguments->verbose = is_true(arg) ? true : false;
147 break;
148 case OPTION_USE_TTL:
149 arguments->use_ttl = is_true(arg) ? true : false;
150 break;
151 case OPTION_REPORT_INTERVAL:
152 arguments->report_interval = atol(arg);
153 break;
154 case OPTION_SAMPLE_RATIO:
155 arguments->sample_ratio = atof(arg);
156 if (arguments->sample_ratio < 0 || arguments->sample_ratio > 1) {
157 ERROR("sample ratio should be in (0, 1]\n");
158 }
159 break;
160 case OPTION_IGNORE_OBJ_SIZE:
161 arguments->ignore_obj_size = is_true(arg) ? true : false;

Callers

nothing calls this directly

Calls 5

atoiFunction · 0.85
n_coresFunction · 0.85
replace_charFunction · 0.85
is_trueFunction · 0.85
atofFunction · 0.85

Tested by

no test coverage detected