Cleanup: libringbuffer: remove duplicate shmp() invocations in slow paths
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mon, 19 Sep 2016 01:45:32 +0000 (21:45 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Sat, 24 Sep 2016 14:57:33 +0000 (10:57 -0400)
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
libringbuffer/ring_buffer_frontend.c

index accd5dc525fa5425f3806b57ecb68e0f97710fec..e631ae3dc36340c1af5427c75551f68310602379 100644 (file)
@@ -1609,6 +1609,7 @@ void lib_ring_buffer_switch_old_start(struct lttng_ust_lib_ring_buffer *buf,
        const struct lttng_ust_lib_ring_buffer_config *config = &chan->backend.config;
        unsigned long oldidx = subbuf_index(offsets->old, chan);
        unsigned long commit_count;
+       struct commit_counters_hot *cc_hot;
 
        config->cb.buffer_begin(buf, tsc, oldidx, handle);
 
@@ -1617,16 +1618,16 @@ void lib_ring_buffer_switch_old_start(struct lttng_ust_lib_ring_buffer *buf,
         * determine that the subbuffer is full.
         */
        cmm_smp_wmb();
+       cc_hot = shmp_index(handle, buf->commit_hot, oldidx);
        v_add(config, config->cb.subbuffer_header_size(),
-             &shmp_index(handle, buf->commit_hot, oldidx)->cc);
-       commit_count = v_read(config, &shmp_index(handle, buf->commit_hot, oldidx)->cc);
+             &cc_hot->cc);
+       commit_count = v_read(config, &cc_hot->cc);
        /* Check if the written buffer has to be delivered */
        lib_ring_buffer_check_deliver(config, buf, chan, offsets->old,
                                      commit_count, oldidx, handle, tsc);
        lib_ring_buffer_write_commit_counter(config, buf, chan,
                        offsets->old + config->cb.subbuffer_header_size(),
-                       commit_count, handle,
-                       shmp_index(handle, buf->commit_hot, oldidx));
+                       commit_count, handle, cc_hot);
 }
 
 /*
@@ -1647,6 +1648,7 @@ void lib_ring_buffer_switch_old_end(struct lttng_ust_lib_ring_buffer *buf,
        const struct lttng_ust_lib_ring_buffer_config *config = &chan->backend.config;
        unsigned long oldidx = subbuf_index(offsets->old - 1, chan);
        unsigned long commit_count, padding_size, data_size;
+       struct commit_counters_hot *cc_hot;
 
        data_size = subbuf_offset(offsets->old - 1, chan) + 1;
        padding_size = chan->backend.subbuf_size - data_size;
@@ -1658,13 +1660,14 @@ void lib_ring_buffer_switch_old_end(struct lttng_ust_lib_ring_buffer *buf,
         * determine that the subbuffer is full.
         */
        cmm_smp_wmb();
-       v_add(config, padding_size, &shmp_index(handle, buf->commit_hot, oldidx)->cc);
-       commit_count = v_read(config, &shmp_index(handle, buf->commit_hot, oldidx)->cc);
+       cc_hot = shmp_index(handle, buf->commit_hot, oldidx);
+       v_add(config, padding_size, &cc_hot->cc);
+       commit_count = v_read(config, &cc_hot->cc);
        lib_ring_buffer_check_deliver(config, buf, chan, offsets->old - 1,
                                      commit_count, oldidx, handle, tsc);
        lib_ring_buffer_write_commit_counter(config, buf, chan,
                        offsets->old + padding_size, commit_count, handle,
-                       shmp_index(handle, buf->commit_hot, oldidx));
+                       cc_hot);
 }
 
 /*
@@ -1684,6 +1687,7 @@ void lib_ring_buffer_switch_new_start(struct lttng_ust_lib_ring_buffer *buf,
        const struct lttng_ust_lib_ring_buffer_config *config = &chan->backend.config;
        unsigned long beginidx = subbuf_index(offsets->begin, chan);
        unsigned long commit_count;
+       struct commit_counters_hot *cc_hot;
 
        config->cb.buffer_begin(buf, tsc, beginidx, handle);
 
@@ -1694,14 +1698,14 @@ void lib_ring_buffer_switch_new_start(struct lttng_ust_lib_ring_buffer *buf,
        cmm_smp_wmb();
        v_add(config, config->cb.subbuffer_header_size(),
              &shmp_index(handle, buf->commit_hot, beginidx)->cc);
-       commit_count = v_read(config, &shmp_index(handle, buf->commit_hot, beginidx)->cc);
+       cc_hot = shmp_index(handle, buf->commit_hot, beginidx);
+       commit_count = v_read(config, &cc_hot->cc);
        /* Check if the written buffer has to be delivered */
        lib_ring_buffer_check_deliver(config, buf, chan, offsets->begin,
                                      commit_count, beginidx, handle, tsc);
        lib_ring_buffer_write_commit_counter(config, buf, chan,
                        offsets->begin + config->cb.subbuffer_header_size(),
-                       commit_count, handle,
-                       shmp_index(handle, buf->commit_hot, beginidx));
+                       commit_count, handle, cc_hot);
 }
 
 /*
This page took 0.02639 seconds and 4 git commands to generate.