X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=libust%2Fserialize.c;h=4c23e8dd02451d46d6b8de34c418d40e872bc9f3;hb=17bb07b445acdef0034194bdcebe113988a8db60;hp=011206afbe94dd7e0cdee20e9d2aae34e72627d6;hpb=83d5c36238fba656181d36faadac7e48a7eab118;p=ust.git diff --git a/libust/serialize.c b/libust/serialize.c index 011206a..4c23e8d 100644 --- a/libust/serialize.c +++ b/libust/serialize.c @@ -623,11 +623,11 @@ notrace void ltt_vtrace(const struct marker *mdata, void *probe_data, return; rcu_read_lock(); //ust// rcu_read_lock_sched_notrace(); -//ust// cpu = smp_processor_id(); cpu = ust_get_cpu(); -//ust// __get_cpu_var(ltt_nesting)++; - /* FIXME: should nesting be per-cpu? */ - ltt_nesting++; + + /* Force volatile access. */ + STORE_SHARED(ltt_nesting, LOAD_SHARED(ltt_nesting) + 1); + barrier(); pdata = (struct ltt_active_marker *)probe_data; eID = mdata->event_id; @@ -712,8 +712,10 @@ notrace void ltt_vtrace(const struct marker *mdata, void *probe_data, ltt_commit_slot(channel, buf, buf_offset, data_size, slot_size); DBG("just commited event (%s/%s) at offset %ld and size %zd", mdata->channel, mdata->name, buf_offset, slot_size); } -//ust// __get_cpu_var(ltt_nesting)--; - ltt_nesting--; + + barrier(); + STORE_SHARED(ltt_nesting, LOAD_SHARED(ltt_nesting) - 1); + rcu_read_unlock(); //ust// rcu_read_unlock_sched_notrace(); }