X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=lib%2Fringbuffer%2Ffrontend_internal.h;h=88820f7e5c0c04d6b66255e38524c59b760e70a2;hb=1e36732678d7cc650940b4508031acf2f6ffcd1b;hp=32785853b721bb3a6d0aebedce45607bab8efb0b;hpb=aece661f429d4ca54cf1e47bacc556679c28f342;p=lttng-modules.git diff --git a/lib/ringbuffer/frontend_internal.h b/lib/ringbuffer/frontend_internal.h index 32785853..88820f7e 100644 --- a/lib/ringbuffer/frontend_internal.h +++ b/lib/ringbuffer/frontend_internal.h @@ -288,9 +288,9 @@ static inline void lib_ring_buffer_write_commit_counter(const struct lib_ring_buffer_config *config, struct lib_ring_buffer *buf, struct channel *chan, - unsigned long idx, unsigned long buf_offset, - unsigned long commit_count) + unsigned long commit_count, + struct commit_counters_hot *cc_hot) { unsigned long commit_seq_old; @@ -306,10 +306,9 @@ void lib_ring_buffer_write_commit_counter(const struct lib_ring_buffer_config *c if (unlikely(subbuf_offset(buf_offset - commit_count, chan))) return; - commit_seq_old = v_read(config, &buf->commit_hot[idx].seq); - while ((long) (commit_seq_old - commit_count) < 0) - commit_seq_old = v_cmpxchg(config, &buf->commit_hot[idx].seq, - commit_seq_old, commit_count); + commit_seq_old = v_read(config, &cc_hot->seq); + if (likely((long) (commit_seq_old - commit_count) < 0)) + v_set(config, &cc_hot->seq, commit_count); } extern int lib_ring_buffer_create(struct lib_ring_buffer *buf,