X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=plugins%2Fctf%2Ffs-src%2Fmetadata.c;h=75043dc17842ba7e1563a91e6979e1249ac84365;hb=68b66a256a54d32992dfefeaad11eea88b7df234;hp=e949374d6320dbfa2005961ae111eaa32df05c2f;hpb=44c440bc5fe8219cc17d1b786d91fd83c4c9860a;p=babeltrace.git diff --git a/plugins/ctf/fs-src/metadata.c b/plugins/ctf/fs-src/metadata.c index e949374d..75043dc1 100644 --- a/plugins/ctf/fs-src/metadata.c +++ b/plugins/ctf/fs-src/metadata.c @@ -27,11 +27,11 @@ #include #include #include -#include +#include #include -#include -#include -#include +#include +#include +#include #include "fs.h" #include "file.h" @@ -86,7 +86,10 @@ end: return file; } -int ctf_fs_metadata_set_trace(struct ctf_fs_trace *ctf_fs_trace, +BT_HIDDEN +int ctf_fs_metadata_set_trace_class( + bt_self_component_source *self_comp, + struct ctf_fs_trace *ctf_fs_trace, struct ctf_fs_metadata_config *config) { int ret = 0; @@ -103,9 +106,8 @@ int ctf_fs_metadata_set_trace(struct ctf_fs_trace *ctf_fs_trace, goto end; } - ctf_fs_trace->metadata->decoder = ctf_metadata_decoder_create( - config ? &decoder_config : NULL, - ctf_fs_trace->name->str); + ctf_fs_trace->metadata->decoder = ctf_metadata_decoder_create(self_comp, + config ? &decoder_config : NULL); if (!ctf_fs_trace->metadata->decoder) { BT_LOGE("Cannot create metadata decoder object"); ret = -1; @@ -119,9 +121,10 @@ int ctf_fs_metadata_set_trace(struct ctf_fs_trace *ctf_fs_trace, goto end; } - ctf_fs_trace->metadata->trace = ctf_metadata_decoder_get_ir_trace( - ctf_fs_trace->metadata->decoder); - BT_ASSERT(ctf_fs_trace->metadata->trace); + ctf_fs_trace->metadata->trace_class = + ctf_metadata_decoder_get_ir_trace_class( + ctf_fs_trace->metadata->decoder); + BT_ASSERT(!self_comp || ctf_fs_trace->metadata->trace_class); ctf_fs_trace->metadata->tc = ctf_metadata_decoder_borrow_ctf_trace_class( ctf_fs_trace->metadata->decoder); @@ -132,20 +135,22 @@ end: return ret; } +BT_HIDDEN int ctf_fs_metadata_init(struct ctf_fs_metadata *metadata) { /* Nothing to initialize for the moment. */ return 0; } +BT_HIDDEN void ctf_fs_metadata_fini(struct ctf_fs_metadata *metadata) { if (metadata->text) { free(metadata->text); } - if (metadata->trace) { - BT_PUT(metadata->trace); + if (metadata->trace_class) { + BT_TRACE_CLASS_PUT_REF_AND_RESET(metadata->trace_class); } if (metadata->decoder) {