Sort vector now just has the exact size it is told to have.
How dumping affects this value is none of its business and
is now taken care of by the higher layer.
Change-Id: I058a5ec9e412234a1b0b8958f8e9d2bdad5574ec
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
};
void sort_vector_init(struct sort_vector *logs);
-int sort_vector_finalize(struct sort_vector *logs, unsigned int dump_size);
+int sort_vector_finalize(struct sort_vector *logs);
void sort_vector_free(struct sort_vector *logs);
dlogutil_entry_s *sort_vector_back(struct sort_vector *logs);
int sort_vector_enlarge(struct sort_vector *logs);
CHECK_PARAM(config);
if (entry_count == 0)
return TIZEN_ERROR_INVALID_PARAMETER;
- static_assert(DLOGUTIL_MODE_CONTINUOUS == 0, "DLOGUTIL_MODE_CONTINUOUS is not 0");
config->mode = DLOGUTIL_MODE_DUMP;
config->dump_size = entry_count;
: 0
;
state->logs.sort_by = sort_by;
+
+ if (config->mode == DLOGUTIL_MODE_DUMP && state->logs_dump != DLOGUTIL_MAX_DUMP_SIZE)
+ state->logs.size = state->logs_dump + 1;
+
clock_gettime(get_proper_clock(sort_by), &state->logs.start);
- if (!sort_vector_finalize(&state->logs, state->logs_dump))
+ if (!sort_vector_finalize(&state->logs))
return -ENOMEM;
state->enabled = calloc(fd_count, sizeof *state->enabled);
logs->old_logs_dumped = 0;
}
-int sort_vector_finalize(struct sort_vector *logs, unsigned int dump_size)
+int sort_vector_finalize(struct sort_vector *logs)
{
assert(logs);
- if (dump_size != DLOGUTIL_MAX_DUMP_SIZE && dump_size != DLOGUTIL_MODE_CONTINUOUS)
- logs->size = dump_size + 1; // +1 so that `-t 1` works (buffer must have capacity at least 2)
-
logs->size = clamp_int(logs->size, 0, MAX_SORT_BUFFER_SIZE);
logs->timeout = clamp_int(logs->timeout, 0, MAX_SORT_TIMEOUT);
sv.sort_by = DLOGUTIL_SORT_SENT_MONO;
sv.timeout = 60;
sv.size = DEFAULT_SORT_BUFFER_SIZE;
- sort_vector_finalize(&sv, 0);
+ sort_vector_finalize(&sv);
assert(sort_vector_time_span(&sv) == 0);
for (int i = 0; i < 10; ++i) {
sv.sort_by = DLOGUTIL_SORT_SENT_MONO;
sv.timeout = 60;
sv.size = DEFAULT_SORT_BUFFER_SIZE;
- sort_vector_finalize(&sv, 0);
+ sort_vector_finalize(&sv);
assert(sort_vector_time_span(&sv) == 0);
struct fd_ops test_ops = {
sv.sort_by = DLOGUTIL_SORT_SENT_MONO;
sv.timeout = 60;
sv.size = DEFAULT_SORT_BUFFER_SIZE;
- sort_vector_finalize(&sv, 0);
+ sort_vector_finalize(&sv);
assert(sort_vector_time_span(&sv) == 0);
for (int i = 0; i < 10; ++i) {
sv.size = 99;
fail_calloc = true;
- assert(sort_vector_finalize(&sv, 6) == 0);
+ assert(sort_vector_finalize(&sv) == 0);
fail_calloc = false;
}
struct log_config conf = { .begin = NULL, .last = NULL};
sort_vector_apply_config(&sv, &conf);
- sv.size = 99;
+ sv.size = 2;
sv.sort_by = DLOGUTIL_SORT_SENT_MONO;
dlogutil_entry_s log;
log.sec_sent_mono = 0;
log.nsec_sent_mono = -1;
- sort_vector_finalize(&sv, 6);
+ sort_vector_finalize(&sv);
sort_vector_push(&sv, &log);
assert(sort_vector_time_span(&sv) == -1);
}
struct log_config conf = { .begin = NULL, .last = NULL};
sort_vector_apply_config(&sv, &conf);
- sv.size = 10;
+ sv.size = 4;
sv.sort_by = DLOGUTIL_SORT_SENT_MONO;
dlogutil_entry_s log_A = {
.pid = 789,
};
- sort_vector_finalize(&sv, 6);
+ sort_vector_finalize(&sv);
sort_vector_push(&sv, &log_A);
sort_vector_push(&sv, &log_B);
sort_vector_push(&sv, &log_C);
struct log_config conf = { .begin = NULL, .last = NULL};
sort_vector_apply_config(&sv, &conf);
- sv.size = 10;
+ sv.size = 5;
sv.sort_by = DLOGUTIL_SORT_SENT_MONO;
dlogutil_entry_s log_A = {
.pid = 848,
};
- sort_vector_finalize(&sv, 6);
+ sort_vector_finalize(&sv);
sort_vector_push(&sv, &log_A);
sort_vector_push(&sv, &log_B);
sort_vector_push(&sv, &log_C);
sort_vector_apply_config(&sv, (struct log_config *) 0xC0B0L);
- // size == 0 and no dumping shouldn't allocate any buffer at all
+ // size == 0 shouldn't allocate any buffer at all
sv.size = 0;
- sort_vector_finalize(&sv, 0);
+ sort_vector_finalize(&sv);
assert(!sv.data);
assert(!sv.size);
- /* the buffer should be just large enough to fit the dumpees,
- * i.e. #dumpees + 1 extra slot for operations, regardless of
- * how large the requested size was */
- sv.size = 99;
- sort_vector_finalize(&sv, 6);
- assert(sv.size == 7);
- assert(sv.data);
-
- free(sv.data);
- sv.data = NULL;
- sv.size = 3;
- sort_vector_finalize(&sv, 6);
- assert(sv.size == 7);
+ sv.size = 7;
+ sort_vector_finalize(&sv);
assert(sv.data);
// sorting correctness checks
nseconds = 0;
sort_vector_apply_config(&sv, &conf);
- sv.size = 10;
+ sv.size = 2;
sv.sort_by = DLOGUTIL_SORT_SENT_MONO;
dlogutil_entry_s log_A = {
.nsec_sent_mono = 0,
};
- sort_vector_finalize(&sv, 6);
+ sort_vector_finalize(&sv);
sort_vector_push(&sv, &log_A);
assert((unsigned long) (sort_vector_time_span(&sv)) == time_span);
}