goto error;
}
- ret = babeltrace_uuid_generate(clock->uuid);
+ ret = bt_uuid_generate(clock->uuid);
if (ret) {
goto error;
}
return ret;
}
-uint64_t bt_ctf_clock_get_offset_s(struct bt_ctf_clock *clock)
+int bt_ctf_clock_get_offset_s(struct bt_ctf_clock *clock, int64_t *offset_s)
{
- uint64_t ret = -1ULL;
+ int ret = 0;
- if (!clock) {
+ if (!clock || !offset_s) {
+ ret = -1;
goto end;
}
- ret = clock->offset_s;
+ *offset_s = clock->offset_s;
end:
return ret;
}
-int bt_ctf_clock_set_offset_s(struct bt_ctf_clock *clock, uint64_t offset_s)
+int bt_ctf_clock_set_offset_s(struct bt_ctf_clock *clock, int64_t offset_s)
{
int ret = 0;
return ret;
}
-uint64_t bt_ctf_clock_get_offset(struct bt_ctf_clock *clock)
+int bt_ctf_clock_get_offset(struct bt_ctf_clock *clock, int64_t *offset)
{
- uint64_t ret = -1ULL;
+ int ret = 0;
- if (!clock) {
+ if (!clock || !offset) {
+ ret = -1;
goto end;
}
- ret = clock->offset;
+ *offset = clock->offset;
end:
return ret;
}
-int bt_ctf_clock_set_offset(struct bt_ctf_clock *clock, uint64_t offset)
+int bt_ctf_clock_set_offset(struct bt_ctf_clock *clock, int64_t offset)
{
int ret = 0;
return ret;
}
-uint64_t bt_ctf_clock_get_time(struct bt_ctf_clock *clock)
+int bt_ctf_clock_get_time(struct bt_ctf_clock *clock, int64_t *time)
+{
+ int ret = 0;
+
+ if (!clock || !time) {
+ ret = -1;
+ goto end;
+ }
+
+ /* Common case where cycles are actually nanoseconds */
+ if (clock->frequency == 1000000000) {
+ *time = (int64_t) clock->value;
+ } else {
+ *time = (int64_t) ((1e9 * (double) clock->value) /
+ (double) clock->frequency);
+ }
+
+end:
+ return ret;
+}
+
+int bt_ctf_clock_set_time(struct bt_ctf_clock *clock, int64_t time)
+{
+ int ret = 0;
+
+ /* Timestamps are strictly monotonic */
+ if (!clock) {
+ ret = -1;
+ goto end;
+ }
+
+ /* Common case where cycles are actually nanoseconds */
+ if (clock->frequency == 1000000000) {
+ clock->value = time;
+ goto end;
+ }
+
+ ret = bt_ctf_clock_set_value(clock,
+ (uint64_t) (((double) time * (double) clock->frequency) / 1e9));
+
+end:
+ return ret;
+}
+
+uint64_t bt_ctf_clock_get_value(struct bt_ctf_clock *clock)
{
uint64_t ret = -1ULL;
goto end;
}
- ret = clock->time;
+ ret = clock->value;
end:
return ret;
}
-int bt_ctf_clock_set_time(struct bt_ctf_clock *clock, uint64_t time)
+int bt_ctf_clock_set_value(struct bt_ctf_clock *clock, uint64_t value)
{
int ret = 0;
/* Timestamps are strictly monotonic */
- if (!clock || time < clock->time) {
+ if (!clock || value < clock->value) {
ret = -1;
goto end;
}
- clock->time = time;
+ clock->value = value;
end:
return ret;
}