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

Function lcs_read_one_req

libCacheSim/traceReader/customizedReader/lcs.c:128–188  ·  view source on GitHub ↗

read one request from trace file return 0 if success, 1 if error

Source from the content-addressed store, hash-verified

126// read one request from trace file
127// return 0 if success, 1 if error
128int lcs_read_one_req(reader_t *reader, request_t *req) {
129 char *record = read_bytes(reader, reader->item_size);
130
131 if (record == NULL) {
132 req->valid = FALSE;
133 return 1;
134 }
135
136 if (reader->lcs_ver == 1) {
137 lcs_req_v1_t *req_v1 = (lcs_req_v1_t *)record;
138 req->clock_time = req_v1->clock_time;
139 req->obj_id = req_v1->obj_id;
140 req->obj_size = req_v1->obj_size;
141 req->next_access_vtime = req_v1->next_access_vtime;
142 } else if (reader->lcs_ver == 2) {
143 lcs_req_v2_t *req_v2 = (lcs_req_v2_t *)record;
144 req->clock_time = req_v2->clock_time;
145 req->obj_id = req_v2->obj_id;
146 req->obj_size = req_v2->obj_size;
147 req->next_access_vtime = req_v2->next_access_vtime;
148 req->tenant_id = req_v2->tenant;
149 req->op = req_v2->op;
150 } else if (reader->lcs_ver == 3) {
151 lcs_req_v3_t *req_v3 = (lcs_req_v3_t *)record;
152 req->clock_time = req_v3->clock_time;
153 req->obj_id = req_v3->obj_id;
154 req->obj_size = req_v3->obj_size;
155 req->next_access_vtime = req_v3->next_access_vtime;
156 req->tenant_id = req_v3->tenant;
157 req->op = req_v3->op;
158 req->ttl = req_v3->ttl;
159 } else if (reader->lcs_ver >= 4 && reader->lcs_ver <= 8) {
160 lcs_req_v3_t *req_v3 = (lcs_req_v3_t *)record;
161 req->clock_time = req_v3->clock_time;
162 req->obj_id = req_v3->obj_id;
163 req->obj_size = req_v3->obj_size;
164 req->next_access_vtime = req_v3->next_access_vtime;
165 req->tenant_id = req_v3->tenant;
166 req->op = req_v3->op;
167 req->ttl = req_v3->ttl;
168
169 int n_features = LCS_VER_TO_N_FEATURES[reader->lcs_ver];
170 int32_t *features = (int32_t *)(record + sizeof(lcs_req_v3_t));
171 req->n_features = n_features;
172 for (int i = 0; i < n_features; i++) {
173 req->features[i] = *(int32_t *)(features + i * sizeof(int32_t));
174 }
175 } else {
176 ERROR("invalid lcs version %ld\n", (unsigned long)reader->lcs_ver);
177 return 1;
178 }
179
180 if (req->next_access_vtime == -1 || req->next_access_vtime == INT64_MAX) {
181 req->next_access_vtime = MAX_REUSE_DISTANCE;
182 }
183
184 if (req->obj_size == 0 && reader->ignore_size_zero_req && reader->read_direction == READ_FORWARD) {
185 return lcs_read_one_req(reader, req);

Callers 1

read_one_reqFunction · 0.85

Calls 1

read_bytesFunction · 0.85

Tested by

no test coverage detected