X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=lib%2Ftrace-collection.c;h=213ece5c07c2f85c40b36e5f7d95baa8cc5da050;hb=c1870f576149d488615883a7cfd12eddf78bd46a;hp=9b60986f5018e98c54e870c471cf498d36d79839;hpb=bb919dd077169b5ee049ba3fc82f8555648cb22e;p=babeltrace.git diff --git a/lib/trace-collection.c b/lib/trace-collection.c index 9b60986f..213ece5c 100644 --- a/lib/trace-collection.c +++ b/lib/trace-collection.c @@ -16,6 +16,14 @@ * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. */ #include #include @@ -45,7 +53,7 @@ static void check_clock_match(gpointer key, gpointer value, gpointer user_data) * by clock name. */ clock_b = g_hash_table_lookup(match->clocks, - (gpointer) (unsigned long) clock_a->name); + GUINT_TO_POINTER(clock_a->name)); if (clock_b) { match->clock_match = clock_b; return; @@ -56,7 +64,7 @@ static void check_clock_match(gpointer key, gpointer value, gpointer user_data) * clocks. */ clock_b = g_hash_table_lookup(match->clocks, - (gpointer) (unsigned long) clock_a->uuid); + GUINT_TO_POINTER(clock_a->uuid)); if (clock_b) { match->clock_match = clock_b; return; @@ -64,19 +72,6 @@ static void check_clock_match(gpointer key, gpointer value, gpointer user_data) } } -/* - * Note: if using a frequency different from 1GHz for clock->offset, it - * is recommended to express the seconds in offset_s, otherwise there - * will be a loss of precision caused by the limited size of the double - * mantissa. - */ -static -uint64_t clock_offset_ns(struct ctf_clock *clock) -{ - return clock->offset_s * 1000000000ULL - + clock_cycles_to_ns(clock, clock->offset); -} - static void clock_add(gpointer key, gpointer value, gpointer user_data) { struct clock_match *clock_match = user_data; @@ -92,7 +87,7 @@ static void clock_add(gpointer key, gpointer value, gpointer user_data) struct ctf_clock *tc_clock; tc_clock = g_hash_table_lookup(tc_clocks, - (gpointer) (unsigned long) v); + GUINT_TO_POINTER(v)); if (!tc_clock) { /* * For now we only support CTF that has one @@ -110,7 +105,7 @@ static void clock_add(gpointer key, gpointer value, gpointer user_data) clock_match->tc->offset_first; } g_hash_table_insert(tc_clocks, - (gpointer) (unsigned long) v, + GUINT_TO_POINTER(v), value); } else if (!t_clock->absolute) { int64_t diff_ns; @@ -147,17 +142,14 @@ static void clock_add(gpointer key, gpointer value, gpointer user_data) * correlate this trace with at least one other clock in the trace and * convert the index from cycles to real time. */ -int trace_collection_add(struct trace_collection *tc, - struct trace_descriptor *td) +int bt_trace_collection_add(struct trace_collection *tc, + struct bt_trace_descriptor *trace) { - struct ctf_trace *trace; - - if (!tc || !td) + if (!tc || !trace) return -EINVAL; - trace = container_of(td, struct ctf_trace, parent); - g_ptr_array_add(tc->array, td); - trace->collection = tc; + if (!trace->clocks) + return 0; if (tc->array->len > 1) { struct clock_match clock_match = { @@ -179,6 +171,9 @@ int trace_collection_add(struct trace_collection *tc, } } + g_ptr_array_add(tc->array, trace); + trace->collection = tc; + { struct clock_match clock_match = { .clocks = tc->clocks, @@ -200,8 +195,8 @@ error: return -EPERM; } -int trace_collection_remove(struct trace_collection *tc, - struct trace_descriptor *td) +int bt_trace_collection_remove(struct trace_collection *tc, + struct bt_trace_descriptor *td) { if (!tc || !td) return -EINVAL; @@ -214,7 +209,7 @@ int trace_collection_remove(struct trace_collection *tc, } -void init_trace_collection(struct trace_collection *tc) +void bt_init_trace_collection(struct trace_collection *tc) { assert(tc); tc->array = g_ptr_array_new(); @@ -226,10 +221,10 @@ void init_trace_collection(struct trace_collection *tc) } /* - * finalize_trace_collection() closes the opened traces for read + * bt_finalize_trace_collection() closes the opened traces for read * and free the memory allocated for trace collection */ -void finalize_trace_collection(struct trace_collection *tc) +void bt_finalize_trace_collection(struct trace_collection *tc) { assert(tc); g_ptr_array_free(tc->array, TRUE);