~lttng/lttng-ust/lttng-ust

« back to all changes in this revision

Viewing changes to src/common/ringbuffer/frontend_api.h

  • Committer: Mathieu Desnoyers
  • Date: 2024-05-03 19:32:50 UTC
  • Revision ID: git-v1:373ea80ac0db5072e995140f1dbdbf4f0b1bdaad
Rename "tsc" to "timestamp"

Naming timestamps "TSC" or "tsc" is an historical artefact dating from
the implementation of libringbuffer, where the initial intent was to use
the x86 "rdtsc" instruction directly, which ended up not being what was
done in reality.

Rename uses of "TSC" and "tsc" to "timestamp" to clarify things and
don't require reviewers to be fluent in x86 instruction set.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I8e7e2ad9cd2d2427485fc6adbc340fccde14ca2f

Show diffs side-by-side

added added

removed removed

Lines of Context:
82
82
        *o_begin = v_read(config, &buf->offset);
83
83
        *o_old = *o_begin;
84
84
 
85
 
        ctx_private->tsc = lib_ring_buffer_clock_read(chan);
86
 
        if ((int64_t) ctx_private->tsc == -EIO)
 
85
        ctx_private->timestamp = lib_ring_buffer_clock_read(chan);
 
86
        if ((int64_t) ctx_private->timestamp == -EIO)
87
87
                return 1;
88
88
 
89
89
        /*
93
93
         */
94
94
        //prefetch(&buf->commit_hot[subbuf_index(*o_begin, chan)]);
95
95
 
96
 
        if (last_tsc_overflow(config, buf, ctx_private->tsc))
97
 
                ctx_private->rflags |= RING_BUFFER_RFLAG_FULL_TSC;
 
96
        if (last_timestamp_overflow(config, buf, ctx_private->timestamp))
 
97
                ctx_private->rflags |= RING_BUFFER_RFLAG_FULL_TIMESTAMP;
98
98
 
99
99
        if (caa_unlikely(subbuf_offset(*o_begin, chan) == 0))
100
100
                return 1;
130
130
 * @ctx: ring buffer context. (input and output) Must be already initialized.
131
131
 *
132
132
 * Atomic wait-free slot reservation. The reserved space starts at the context
133
 
 * "pre_offset". Its length is "slot_size". The associated time-stamp is "tsc".
 
133
 * "pre_offset". Its length is "slot_size". The associated time-stamp is
 
134
 * "timestamp".
134
135
 *
135
136
 * Return :
136
137
 *  0 on success.
179
180
                goto slow_path;
180
181
 
181
182
        /*
182
 
         * Atomically update last_tsc. This update races against concurrent
183
 
         * atomic updates, but the race will always cause supplementary full TSC
184
 
         * record headers, never the opposite (missing a full TSC record header
185
 
         * when it would be needed).
 
183
         * Atomically update last_timestamp. This update races against concurrent
 
184
         * atomic updates, but the race will always cause supplementary full
 
185
         * timestamp record headers, never the opposite (missing a full
 
186
         * timestamp record header when it would be needed).
186
187
         */
187
 
        save_last_tsc(config, buf, ctx_private->tsc);
 
188
        save_last_timestamp(config, buf, ctx_private->timestamp);
188
189
 
189
190
        /*
190
191
         * Push the reader if necessary
317
318
 
318
319
        /*
319
320
         * We need to ensure that if the cmpxchg succeeds and discards the
320
 
         * record, the next record will record a full TSC, because it cannot
321
 
         * rely on the last_tsc associated with the discarded record to detect
322
 
         * overflows. The only way to ensure this is to set the last_tsc to 0
323
 
         * (assuming no 64-bit TSC overflow), which forces to write a 64-bit
 
321
         * record, the next record will record a full timestamp, because it cannot
 
322
         * rely on the last_timestamp associated with the discarded record to detect
 
323
         * overflows. The only way to ensure this is to set the last_timestamp to 0
 
324
         * (assuming no 64-bit timestamp overflow), which forces to write a 64-bit
324
325
         * timestamp in the next record.
325
326
         *
326
 
         * Note: if discard fails, we must leave the TSC in the record header.
327
 
         * It is needed to keep track of TSC overflows for the following
 
327
         * Note: if discard fails, we must leave the timestamp in the record header.
 
328
         * It is needed to keep track of timestamp overflows for the following
328
329
         * records.
329
330
         */
330
 
        save_last_tsc(config, buf, 0ULL);
 
331
        save_last_timestamp(config, buf, 0ULL);
331
332
 
332
333
        if (caa_likely(v_cmpxchg(config, &buf->offset, end_offset, ctx_private->pre_offset)
333
334
                   != end_offset))