X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=src%2Fplugins%2Fctf%2Fcommon%2Fmetadata%2Fctf-meta-validate.c;h=da5c95c27ec0908361be5a7bf55dffc91882d7fb;hb=516bf0a77e025cfccce2fa400b757e94dc0bf1d8;hp=99a73208a6a788fd0a4519478a4843ee743195ee;hpb=91d8147391efdc4d42cc4e1c171a65c0372a008f;p=babeltrace.git diff --git a/src/plugins/ctf/common/metadata/ctf-meta-validate.c b/src/plugins/ctf/common/metadata/ctf-meta-validate.c index 99a73208..da5c95c2 100644 --- a/src/plugins/ctf/common/metadata/ctf-meta-validate.c +++ b/src/plugins/ctf/common/metadata/ctf-meta-validate.c @@ -1,19 +1,14 @@ /* - * Copyright 2018 - Philippe Proulx + * SPDX-License-Identifier: MIT * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. + * Copyright 2018 Philippe Proulx */ -#define BT_LOG_TAG "PLUGIN-CTF-METADATA-META-VALIDATE" -#include "logging.h" +#define BT_COMP_LOG_SELF_COMP (log_cfg->self_comp) +#define BT_COMP_LOG_SELF_COMP_CLASS (log_cfg->self_comp_class) +#define BT_LOG_OUTPUT_LEVEL (log_cfg->log_level) +#define BT_LOG_TAG "PLUGIN/CTF/META/VALIDATE" +#include "logging/comp-logging.h" #include #include "common/macros.h" @@ -24,9 +19,11 @@ #include #include "ctf-meta-visitors.h" +#include "logging.h" static -int validate_stream_class(struct ctf_stream_class *sc) +int validate_stream_class(struct ctf_stream_class *sc, + struct meta_log_config *log_cfg) { int ret = 0; struct ctf_field_class_int *int_fc; @@ -41,7 +38,7 @@ int validate_stream_class(struct ctf_stream_class *sc) if (fc) { if (fc->type != CTF_FIELD_CLASS_TYPE_INT && fc->type != CTF_FIELD_CLASS_TYPE_ENUM) { - BT_LOGE_STR("Invalid packet context field class: " + _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Invalid packet context field class: " "`timestamp_begin` member is not an integer field class."); goto invalid; } @@ -49,7 +46,7 @@ int validate_stream_class(struct ctf_stream_class *sc) int_fc = (void *) fc; if (int_fc->is_signed) { - BT_LOGE_STR("Invalid packet context field class: " + _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Invalid packet context field class: " "`timestamp_begin` member is signed."); goto invalid; } @@ -60,7 +57,7 @@ int validate_stream_class(struct ctf_stream_class *sc) if (fc) { if (fc->type != CTF_FIELD_CLASS_TYPE_INT && fc->type != CTF_FIELD_CLASS_TYPE_ENUM) { - BT_LOGE_STR("Invalid packet context field class: " + _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Invalid packet context field class: " "`timestamp_end` member is not an integer field class."); goto invalid; } @@ -68,7 +65,7 @@ int validate_stream_class(struct ctf_stream_class *sc) int_fc = (void *) fc; if (int_fc->is_signed) { - BT_LOGE_STR("Invalid packet context field class: " + _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Invalid packet context field class: " "`timestamp_end` member is signed."); goto invalid; } @@ -79,7 +76,7 @@ int validate_stream_class(struct ctf_stream_class *sc) if (fc) { if (fc->type != CTF_FIELD_CLASS_TYPE_INT && fc->type != CTF_FIELD_CLASS_TYPE_ENUM) { - BT_LOGE_STR("Invalid packet context field class: " + _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Invalid packet context field class: " "`events_discarded` member is not an integer field class."); goto invalid; } @@ -87,7 +84,7 @@ int validate_stream_class(struct ctf_stream_class *sc) int_fc = (void *) fc; if (int_fc->is_signed) { - BT_LOGE_STR("Invalid packet context field class: " + _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Invalid packet context field class: " "`events_discarded` member is signed."); goto invalid; } @@ -98,7 +95,7 @@ int validate_stream_class(struct ctf_stream_class *sc) if (fc) { if (fc->type != CTF_FIELD_CLASS_TYPE_INT && fc->type != CTF_FIELD_CLASS_TYPE_ENUM) { - BT_LOGE_STR("Invalid packet context field class: " + _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Invalid packet context field class: " "`packet_seq_num` member is not an integer field class."); goto invalid; } @@ -106,7 +103,7 @@ int validate_stream_class(struct ctf_stream_class *sc) int_fc = (void *) fc; if (int_fc->is_signed) { - BT_LOGE_STR("Invalid packet context field class: " + _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Invalid packet context field class: " "`packet_seq_num` member is signed."); goto invalid; } @@ -117,7 +114,7 @@ int validate_stream_class(struct ctf_stream_class *sc) if (fc) { if (fc->type != CTF_FIELD_CLASS_TYPE_INT && fc->type != CTF_FIELD_CLASS_TYPE_ENUM) { - BT_LOGE_STR("Invalid packet context field class: " + _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Invalid packet context field class: " "`packet_size` member is not an integer field class."); goto invalid; } @@ -125,7 +122,7 @@ int validate_stream_class(struct ctf_stream_class *sc) int_fc = (void *) fc; if (int_fc->is_signed) { - BT_LOGE_STR("Invalid packet context field class: " + _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Invalid packet context field class: " "`packet_size` member is signed."); goto invalid; } @@ -136,7 +133,7 @@ int validate_stream_class(struct ctf_stream_class *sc) if (fc) { if (fc->type != CTF_FIELD_CLASS_TYPE_INT && fc->type != CTF_FIELD_CLASS_TYPE_ENUM) { - BT_LOGE_STR("Invalid packet context field class: " + _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Invalid packet context field class: " "`content_size` member is not an integer field class."); goto invalid; } @@ -144,7 +141,7 @@ int validate_stream_class(struct ctf_stream_class *sc) int_fc = (void *) fc; if (int_fc->is_signed) { - BT_LOGE_STR("Invalid packet context field class: " + _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Invalid packet context field class: " "`content_size` member is signed."); goto invalid; } @@ -155,7 +152,7 @@ int validate_stream_class(struct ctf_stream_class *sc) if (fc) { if (fc->type != CTF_FIELD_CLASS_TYPE_INT && fc->type != CTF_FIELD_CLASS_TYPE_ENUM) { - BT_LOGE_STR("Invalid event header field class: " + _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Invalid event header field class: " "`id` member is not an integer field class."); goto invalid; } @@ -163,13 +160,13 @@ int validate_stream_class(struct ctf_stream_class *sc) int_fc = (void *) fc; if (int_fc->is_signed) { - BT_LOGE_STR("Invalid event header field class: " + _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Invalid event header field class: " "`id` member is signed."); goto invalid; } } else { if (sc->event_classes->len > 1) { - BT_LOGE_STR("Invalid event header field class: " + _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Invalid event header field class: " "missing `id` member as there's " "more than one event class."); goto invalid; @@ -186,7 +183,8 @@ end: } BT_HIDDEN -int ctf_trace_class_validate(struct ctf_trace_class *ctf_tc) +int ctf_trace_class_validate(struct ctf_trace_class *ctf_tc, + struct meta_log_config *log_cfg) { int ret = 0; struct ctf_field_class_int *int_fc; @@ -204,14 +202,14 @@ int ctf_trace_class_validate(struct ctf_trace_class *ctf_tc) 0); if (named_fc->fc != fc) { - BT_LOGE_STR("Invalid packet header field class: " + _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Invalid packet header field class: " "`magic` member is not the first member."); goto invalid; } if (fc->type != CTF_FIELD_CLASS_TYPE_INT && fc->type != CTF_FIELD_CLASS_TYPE_ENUM) { - BT_LOGE_STR("Invalid packet header field class: " + _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Invalid packet header field class: " "`magic` member is not an integer field class."); goto invalid; } @@ -219,13 +217,13 @@ int ctf_trace_class_validate(struct ctf_trace_class *ctf_tc) int_fc = (void *) fc; if (int_fc->is_signed) { - BT_LOGE_STR("Invalid packet header field class: " + _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Invalid packet header field class: " "`magic` member is signed."); goto invalid; } if (int_fc->base.size != 32) { - BT_LOGE_STR("Invalid packet header field class: " + _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Invalid packet header field class: " "`magic` member is not 32-bit."); goto invalid; } @@ -236,7 +234,7 @@ int ctf_trace_class_validate(struct ctf_trace_class *ctf_tc) if (fc) { if (fc->type != CTF_FIELD_CLASS_TYPE_INT && fc->type != CTF_FIELD_CLASS_TYPE_ENUM) { - BT_LOGE_STR("Invalid packet header field class: " + _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Invalid packet header field class: " "`stream_id` member is not an integer field class."); goto invalid; } @@ -244,13 +242,13 @@ int ctf_trace_class_validate(struct ctf_trace_class *ctf_tc) int_fc = (void *) fc; if (int_fc->is_signed) { - BT_LOGE_STR("Invalid packet header field class: " + _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Invalid packet header field class: " "`stream_id` member is signed."); goto invalid; } } else { if (ctf_tc->stream_classes->len > 1) { - BT_LOGE_STR("Invalid packet header field class: " + _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Invalid packet header field class: " "missing `stream_id` member as there's " "more than one stream class."); goto invalid; @@ -263,7 +261,7 @@ int ctf_trace_class_validate(struct ctf_trace_class *ctf_tc) if (fc) { if (fc->type != CTF_FIELD_CLASS_TYPE_INT && fc->type != CTF_FIELD_CLASS_TYPE_ENUM) { - BT_LOGE_STR("Invalid packet header field class: " + _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Invalid packet header field class: " "`stream_instance_id` member is not an integer field class."); goto invalid; } @@ -271,7 +269,7 @@ int ctf_trace_class_validate(struct ctf_trace_class *ctf_tc) int_fc = (void *) fc; if (int_fc->is_signed) { - BT_LOGE_STR("Invalid packet header field class: " + _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Invalid packet header field class: " "`stream_instance_id` member is signed."); goto invalid; } @@ -283,7 +281,7 @@ int ctf_trace_class_validate(struct ctf_trace_class *ctf_tc) struct ctf_field_class_array *array_fc = (void *) fc; if (fc->type != CTF_FIELD_CLASS_TYPE_ARRAY) { - BT_LOGE_STR("Invalid packet header field class: " + _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Invalid packet header field class: " "`uuid` member is not an array field class."); goto invalid; } @@ -291,13 +289,13 @@ int ctf_trace_class_validate(struct ctf_trace_class *ctf_tc) array_fc = (void *) fc; if (array_fc->length != 16) { - BT_LOGE_STR("Invalid packet header field class: " + _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Invalid packet header field class: " "`uuid` member is not a 16-element array field class."); goto invalid; } if (array_fc->base.elem_fc->type != CTF_FIELD_CLASS_TYPE_INT) { - BT_LOGE_STR("Invalid packet header field class: " + _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Invalid packet header field class: " "`uuid` member's element field class is not " "an integer field class."); goto invalid; @@ -306,21 +304,21 @@ int ctf_trace_class_validate(struct ctf_trace_class *ctf_tc) int_fc = (void *) array_fc->base.elem_fc; if (int_fc->is_signed) { - BT_LOGE_STR("Invalid packet header field class: " + _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Invalid packet header field class: " "`uuid` member's element field class " "is a signed integer field class."); goto invalid; } if (int_fc->base.size != 8) { - BT_LOGE_STR("Invalid packet header field class: " + _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Invalid packet header field class: " "`uuid` member's element field class " "is not an 8-bit integer field class."); goto invalid; } if (int_fc->base.base.alignment != 8) { - BT_LOGE_STR("Invalid packet header field class: " + _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Invalid packet header field class: " "`uuid` member's element field class's " "alignment is not 8."); goto invalid; @@ -332,9 +330,9 @@ int ctf_trace_class_validate(struct ctf_trace_class *ctf_tc) struct ctf_stream_class *sc = ctf_tc->stream_classes->pdata[i]; - ret = validate_stream_class(sc); + ret = validate_stream_class(sc, log_cfg); if (ret) { - BT_LOGE("Invalid stream class: sc-id=%" PRIu64, sc->id); + _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Invalid stream class: sc-id=%" PRIu64, sc->id); goto invalid; } }