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

Function skip_n_req

libCacheSim/traceReader/reader.c:456–484  ·  view source on GitHub ↗

* skip the next following N elements in the trace, * @param reader * @param N * @return the number of elements that are actually skipped */

Source from the content-addressed store, hash-verified

454 * @return the number of elements that are actually skipped
455 */
456int skip_n_req(reader_t *reader, const int N) {
457 int count = N;
458 char **buf = &reader->line_buf;
459 size_t *buf_size_ptr = &reader->line_buf_size;
460
461 if (reader->trace_format == TXT_TRACE_FORMAT) {
462 for (int i = 0; i < N; i++) {
463 if (getline(buf, buf_size_ptr, reader->file) == -1) {
464 WARN("try to skip %d requests, but only %d requests left\n", N, i);
465 return i;
466 }
467 }
468 } else if (reader->trace_format == BINARY_TRACE_FORMAT) {
469 if (reader->mmap_offset + N * reader->item_size <= reader->file_size) {
470 reader->mmap_offset = reader->mmap_offset + N * reader->item_size;
471 } else {
472 count = (reader->file_size - reader->mmap_offset) / reader->item_size;
473 reader->mmap_offset = reader->file_size;
474 WARN("try to skip %d requests, but only %d requests left\n", N, count);
475 }
476 } else {
477 ERROR("unknown trace format %d\n", reader->trace_format);
478 abort();
479 }
480
481 VERBOSE("skip %d requests\n", count);
482
483 return count;
484}
485
486void reset_reader(reader_t *const reader) {
487 /* rewind the reader back to beginning */

Callers 4

test_reader_more1Function · 0.85

Calls

no outgoing calls

Tested by 1

test_reader_more1Function · 0.68