Don't call the noop version of ltt_write_commit_counter
[ust.git] / libust / buffers.c
index 12753c1961345f4430779ef8d1a69f48ce2aaf21..849cad7ad9326031cf7a42ef0a086f60d8b3300b 100644 (file)
@@ -307,8 +307,9 @@ static void ltt_buffer_begin(struct ust_buffer *buf,
                                subbuf_idx * buf->chan->subbuf_size);
 
        header->cycle_count_begin = tsc;
-       header->lost_size = 0xFFFFFFFF; /* for debugging */
-       header->buf_size = buf->chan->subbuf_size;
+       header->data_size = 0xFFFFFFFF; /* for recognizing crashed buffers */
+       header->sb_size = 0xFFFFFFFF; /* for recognizing crashed buffers */
+       /* FIXME: add memory barrier? */
        ltt_write_trace_header(channel->trace, header);
 }
 
@@ -323,9 +324,10 @@ static notrace void ltt_buffer_end(struct ust_buffer *buf,
                (struct ltt_subbuffer_header *)
                        ust_buffers_offset_address(buf,
                                subbuf_idx * buf->chan->subbuf_size);
+       u32 data_size = SUBBUF_OFFSET(offset - 1, buf->chan) + 1;
 
-       header->lost_size = SUBBUF_OFFSET((buf->chan->subbuf_size - offset),
-                               buf->chan);
+       header->data_size = data_size;
+       header->sb_size = PAGE_ALIGN(data_size);
        header->cycle_count_end = tsc;
        header->events_lost = local_read(&buf->events_lost);
        header->subbuf_corrupt = local_read(&buf->corrupted_subbuffers);
@@ -346,10 +348,10 @@ static notrace void ltt_buf_unfull(struct ust_buffer *buf,
  * architecture does not reorder writes.  This should eventually be provided by
  * a separate architecture-specific infrastructure.
  */
-static void remote_mb(void *info)
-{
-       smp_mb();
-}
+//ust// static void remote_mb(void *info)
+//ust// {
+//ust//        smp_mb();
+//ust// }
 
 int ust_buffers_get_subbuf(struct ust_buffer *buf, long *consumed)
 {
@@ -545,20 +547,20 @@ int ust_buffers_put_subbuf(struct ust_buffer *buf, unsigned long uconsumed_old)
 //ust//        }
 //ust// }
 
-static void ust_buffers_print_written(struct ust_channel *chan,
-               long cons_off, unsigned int cpu)
-{
-       struct ust_buffer *buf = chan->buf[cpu];
-       long cons_idx, events_count;
-
-       cons_idx = SUBBUF_INDEX(cons_off, chan);
-       events_count = local_read(&buf->commit_count[cons_idx].events);
-
-       if (events_count)
-               printk(KERN_INFO
-                       "channel %s: %lu events written (cpu %u, index %lu)\n",
-                       chan->channel_name, events_count, cpu, cons_idx);
-}
+//ust// static void ust_buffers_print_written(struct ust_channel *chan,
+//ust//                long cons_off, unsigned int cpu)
+//ust// {
+//ust//        struct ust_buffer *buf = chan->buf[cpu];
+//ust//        long cons_idx, events_count;
+//ust//
+//ust//        cons_idx = SUBBUF_INDEX(cons_off, chan);
+//ust//        events_count = local_read(&buf->commit_count[cons_idx].events);
+//ust//
+//ust//        if (events_count)
+//ust//                printk(KERN_INFO
+//ust//                        "channel %s: %lu events written (cpu %u, index %lu)\n",
+//ust//                        chan->channel_name, events_count, cpu, cons_idx);
+//ust// }
 
 static void ltt_relay_print_subbuffer_errors(
                struct ust_channel *channel,
@@ -604,9 +606,9 @@ static void ltt_relay_print_errors(struct ust_trace *trace,
        if (!channel)
                return;
 
-       for (cons_off = 0; cons_off < rchan->alloc_size;
-            cons_off = SUBBUF_ALIGN(cons_off, rchan))
-               ust_buffers_print_written(ltt_chan, cons_off, cpu);
+//ust//        for (cons_off = 0; cons_off < rchan->alloc_size;
+//ust//             cons_off = SUBBUF_ALIGN(cons_off, rchan))
+//ust//                ust_buffers_print_written(ltt_chan, cons_off, cpu);
        for (cons_off = atomic_long_read(&ltt_buf->consumed);
                        (SUBBUF_TRUNC(local_read(&ltt_buf->offset),
                                      channel)
@@ -729,6 +731,7 @@ static int ust_buffers_init_buffer(struct ust_trace *trace,
 //ust//        if(!ltt_buf->commit_seq) {
 //ust//                return -1;
 //ust//        }
+       memset(buf->commit_seq, 0, sizeof(buf->commit_seq[0]) * n_subbufs);
 
        /* FIXME: decrementally destroy on error */
 
@@ -1356,7 +1359,7 @@ static void ltt_reserve_switch_old_subbuf(
                  &buf->commit_count[oldidx].cc);
        commit_count = local_read(&buf->commit_count[oldidx].cc);
        ltt_check_deliver(chan, buf, offsets->old - 1, commit_count, oldidx);
-       ltt_write_commit_counter(buf, oldidx,
+       ltt_write_commit_counter(chan, buf, oldidx,
                offsets->old, commit_count, padding_size);
 }
 
@@ -1387,7 +1390,7 @@ static void ltt_reserve_switch_new_subbuf(
        commit_count = local_read(&buf->commit_count[beginidx].cc);
        /* Check if the written buffer has to be delivered */
        ltt_check_deliver(chan, buf, offsets->begin, commit_count, beginidx);
-       ltt_write_commit_counter(buf, beginidx,
+       ltt_write_commit_counter(chan, buf, beginidx,
                offsets->begin, commit_count, ltt_subbuffer_header_size());
 }
 
@@ -1433,7 +1436,7 @@ static void ltt_reserve_end_switch_current(
        commit_count = local_read(&buf->commit_count[endidx].cc);
        ltt_check_deliver(chan, buf,
                offsets->end - 1, commit_count, endidx);
-       ltt_write_commit_counter(buf, endidx,
+       ltt_write_commit_counter(chan, buf, endidx,
                offsets->end, commit_count, padding_size);
 }
 
@@ -1518,6 +1521,7 @@ void ltt_force_switch_lockless_slow(struct ust_buffer *buf,
 
        offsets.size = 0;
 
+       DBG("Switching (forced) %s_%d", chan->channel_name, buf->cpu);
        /*
         * Perform retryable operations.
         */
@@ -1735,6 +1739,7 @@ int ltt_reserve_slot_lockless_slow(struct ust_trace *trace,
        if (unlikely(offsets.end_switch_old)) {
 //ust//                ltt_clear_noref_flag(chan, buf, SUBBUF_INDEX(offsets.old - 1, chan));
                ltt_reserve_switch_old_subbuf(chan, buf, &offsets, tsc);
+               DBG("Switching %s_%d", chan->channel_name, cpu);
        }
 
        /*
This page took 0.02508 seconds and 4 git commands to generate.