*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
*/
#include <babeltrace/ctf/events.h>
#include <babeltrace/ctf-ir/metadata.h>
+#include <babeltrace/clock-internal.h>
static inline
-uint64_t ctf_get_timestamp_raw(struct ctf_stream *stream,
- uint64_t timestamp)
-{
- uint64_t ts_nsec;
-
- if (stream->current_clock->freq == 1000000000ULL) {
- ts_nsec = timestamp;
- } else {
- ts_nsec = (uint64_t) ((double) timestamp * 1000000000.0
- / (double) stream->current_clock->freq);
- }
- return ts_nsec;
-}
-
-static inline
-uint64_t ctf_get_timestamp(struct ctf_stream *stream,
+uint64_t ctf_get_real_timestamp(struct ctf_stream_definition *stream,
uint64_t timestamp)
{
uint64_t ts_nsec;
struct ctf_trace *trace = stream->stream_class->trace;
struct trace_collection *tc = trace->collection;
- uint64_t tc_offset = tc->single_clock_offset_avg;
+ uint64_t tc_offset;
+
+ if (tc->clock_use_offset_avg)
+ tc_offset = tc->single_clock_offset_avg;
+ else
+ tc_offset = trace->single_clock->offset;
- ts_nsec = ctf_get_timestamp_raw(stream, timestamp);
+ ts_nsec = clock_cycles_to_ns(stream->current_clock, timestamp);
ts_nsec += tc_offset; /* Add offset */
return ts_nsec;
}