X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;ds=sidebyside;f=formats%2Fctf%2Fevents-private.h;h=c47fd7d85deaf5372a7adaf2fc3200e4461ca161;hb=f3985ab106d89d8e764c1a8dd0c8bda09b755d10;hp=bc1dfbd98f3767a77fd41552ad27531b2b2f1c38;hpb=c34ea0fad3f9900c3b97efa229d221927422dacf;p=babeltrace.git diff --git a/formats/ctf/events-private.h b/formats/ctf/events-private.h index bc1dfbd9..c47fd7d8 100644 --- a/formats/ctf/events-private.h +++ b/formats/ctf/events-private.h @@ -20,36 +20,35 @@ * * 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 #include +#include 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 timestamp) +int64_t ctf_get_real_timestamp(struct ctf_stream_definition *stream, + uint64_t ts_cycles) { - uint64_t ts_nsec; + int64_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; + struct trace_collection *tc = trace->parent.collection; + int64_t tc_offset; + + if (tc->clock_use_offset_avg) + tc_offset = tc->single_clock_offset_avg; + else + tc_offset = clock_offset_ns(trace->parent.single_clock); - ts_nsec = ctf_get_timestamp_raw(stream, timestamp); + ts_nsec = clock_cycles_to_ns(stream->current_clock, ts_cycles); ts_nsec += tc_offset; /* Add offset */ return ts_nsec; }