Move to kernel style SPDX license identifiers
[babeltrace.git] / src / lib / trace-ir / clock-snapshot.h
CommitLineData
c057dea0 1/*
0235b0db 2 * SPDX-License-Identifier: MIT
c057dea0 3 *
0235b0db 4 * Copyright 2017-2018 Philippe Proulx <pproulx@efficios.com>
c057dea0
PP
5 */
6
0235b0db
MJ
7#ifndef BABELTRACE_TRACE_IR_CLOCK_SNAPSHOT_INTERNAL_H
8#define BABELTRACE_TRACE_IR_CLOCK_SNAPSHOT_INTERNAL_H
9
91d81473 10#include "common/macros.h"
578e048b 11#include "lib/object.h"
c057dea0
PP
12#include <stdbool.h>
13#include <stdint.h>
14
578e048b
MJ
15#include "clock-class.h"
16#include "utils.h"
17
50842bdc 18struct bt_clock_class;
c057dea0 19
605e1019 20struct bt_clock_snapshot {
c057dea0 21 struct bt_object base;
50842bdc 22 struct bt_clock_class *clock_class;
44c440bc
PP
23 uint64_t value_cycles;
24 bool ns_from_origin_overflows;
25 int64_t ns_from_origin;
312c056a 26 bool is_set;
c057dea0
PP
27};
28
312c056a 29static inline
605e1019 30void bt_clock_snapshot_set(struct bt_clock_snapshot *clock_snapshot)
312c056a 31{
98b15851 32 BT_ASSERT_DBG(clock_snapshot);
605e1019 33 clock_snapshot->is_set = true;
312c056a
PP
34}
35
36static inline
605e1019 37void bt_clock_snapshot_reset(struct bt_clock_snapshot *clock_snapshot)
312c056a 38{
98b15851 39 BT_ASSERT_DBG(clock_snapshot);
605e1019 40 clock_snapshot->is_set = false;
312c056a
PP
41}
42
312c056a 43static inline
605e1019 44void set_ns_from_origin(struct bt_clock_snapshot *clock_snapshot)
312c056a 45{
0f2d58c9
PP
46 if (bt_util_ns_from_origin_clock_class(clock_snapshot->clock_class,
47 clock_snapshot->value_cycles,
605e1019
PP
48 &clock_snapshot->ns_from_origin)) {
49 clock_snapshot->ns_from_origin_overflows = true;
e22b45d0 50 }
e22b45d0
PP
51}
52
53static inline
605e1019 54void bt_clock_snapshot_set_raw_value(struct bt_clock_snapshot *clock_snapshot,
e22b45d0
PP
55 uint64_t cycles)
56{
98b15851 57 BT_ASSERT_DBG(clock_snapshot);
605e1019
PP
58 clock_snapshot->value_cycles = cycles;
59 set_ns_from_origin(clock_snapshot);
60 bt_clock_snapshot_set(clock_snapshot);
e22b45d0
PP
61}
62
44c440bc 63BT_HIDDEN
605e1019 64void bt_clock_snapshot_destroy(struct bt_clock_snapshot *clock_snapshot);
44c440bc
PP
65
66BT_HIDDEN
605e1019 67struct bt_clock_snapshot *bt_clock_snapshot_new(struct bt_clock_class *clock_class);
312c056a
PP
68
69BT_HIDDEN
605e1019 70struct bt_clock_snapshot *bt_clock_snapshot_create(
312c056a
PP
71 struct bt_clock_class *clock_class);
72
73BT_HIDDEN
605e1019 74void bt_clock_snapshot_recycle(struct bt_clock_snapshot *clock_snapshot);
312c056a 75
605e1019 76#endif /* BABELTRACE_TRACE_IR_CLOCK_SNAPSHOT_INTERNAL_H */
This page took 0.066525 seconds and 4 git commands to generate.