Move to kernel style SPDX license identifiers
[babeltrace.git] / src / plugins / ctf / common / bfcr / bfcr.c
index 0d1ae5772745548c065bece5e99a16346b20c22a..9eb76dcb1b67e62020047f6e9b3f7e64fdf29a88 100644 (file)
@@ -1,30 +1,16 @@
 /*
- * Babeltrace - CTF binary field class reader (BFCR)
+ * SPDX-License-Identifier: MIT
  *
  * Copyright (c) 2015-2016 EfficiOS Inc. and Linux Foundation
  * Copyright (c) 2015-2016 Philippe Proulx <pproulx@efficios.com>
  *
- * 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.
- *
- * 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.
+ * Babeltrace - CTF binary field class reader (BFCR)
  */
 
-#define BT_LOG_TAG "PLUGIN-CTF-BFCR"
-#include "logging.h"
+#define BT_COMP_LOG_SELF_COMP (bfcr->self_comp)
+#define BT_LOG_OUTPUT_LEVEL (bfcr->log_level)
+#define BT_LOG_TAG "PLUGIN/CTF/BFCR"
+#include "logging/comp-logging.h"
 
 #include <stdlib.h>
 #include <stdint.h>
@@ -68,8 +54,12 @@ struct stack_entry {
        int64_t index;
 };
 
+struct bt_bfcr;
+
 /* Visit stack */
 struct stack {
+       struct bt_bfcr *bfcr;
+
        /* Entries (struct stack_entry) */
        GArray *entries;
 
@@ -89,7 +79,12 @@ enum bfcr_state {
 
 /* Binary class reader */
 struct bt_bfcr {
-       /* Bisit stack */
+       bt_logging_level log_level;
+
+       /* Weak */
+       bt_self_component *self_comp;
+
+       /* BFCR stack */
        struct stack *stack;
 
        /* Current basic field class */
@@ -105,8 +100,8 @@ struct bt_bfcr {
         * classes for which the common boundary is not the boundary of
         * a byte cannot have different byte orders.
         *
-        * This is set to -1 on reset and when the last basic field class
-        * was a string class.
+        * This is set to CTF_BYTE_ORDER_UNKNOWN on reset and when the last
+        * basic field class was a string class.
         */
        enum ctf_byte_order last_bo;
 
@@ -161,40 +156,41 @@ const char *bfcr_state_string(enum bfcr_state state)
 {
        switch (state) {
        case BFCR_STATE_NEXT_FIELD:
-               return "BFCR_STATE_NEXT_FIELD";
+               return "NEXT_FIELD";
        case BFCR_STATE_ALIGN_BASIC:
-               return "BFCR_STATE_ALIGN_BASIC";
+               return "ALIGN_BASIC";
        case BFCR_STATE_ALIGN_COMPOUND:
-               return "BFCR_STATE_ALIGN_COMPOUND";
+               return "ALIGN_COMPOUND";
        case BFCR_STATE_READ_BASIC_BEGIN:
-               return "BFCR_STATE_READ_BASIC_BEGIN";
+               return "READ_BASIC_BEGIN";
        case BFCR_STATE_READ_BASIC_CONTINUE:
-               return "BFCR_STATE_READ_BASIC_CONTINUE";
+               return "READ_BASIC_CONTINUE";
        case BFCR_STATE_DONE:
-               return "BFCR_STATE_DONE";
+               return "DONE";
        default:
                return "(unknown)";
        }
 }
 
 static
-struct stack *stack_new(void)
+struct stack *stack_new(struct bt_bfcr *bfcr)
 {
        struct stack *stack = NULL;
 
        stack = g_new0(struct stack, 1);
        if (!stack) {
-               BT_LOGE_STR("Failed to allocate one stack.");
+               BT_COMP_LOGE_STR("Failed to allocate one stack.");
                goto error;
        }
 
+       stack->bfcr = bfcr;
        stack->entries = g_array_new(FALSE, TRUE, sizeof(struct stack_entry));
        if (!stack->entries) {
-               BT_LOGE_STR("Failed to allocate a GArray.");
+               BT_COMP_LOGE_STR("Failed to allocate a GArray.");
                goto error;
        }
 
-       BT_LOGD("Created stack: addr=%p", stack);
+       BT_COMP_LOGD("Created stack: addr=%p", stack);
        return stack;
 
 error:
@@ -205,11 +201,14 @@ error:
 static
 void stack_destroy(struct stack *stack)
 {
+       struct bt_bfcr *bfcr;
+
        if (!stack) {
                return;
        }
 
-       BT_LOGD("Destroying stack: addr=%p", stack);
+       bfcr = stack->bfcr;
+       BT_COMP_LOGD("Destroying stack: addr=%p", stack);
 
        if (stack->entries) {
                g_array_free(stack->entries, TRUE);
@@ -223,10 +222,12 @@ int stack_push(struct stack *stack, struct ctf_field_class *base_class,
        size_t base_len)
 {
        struct stack_entry *entry;
+       struct bt_bfcr *bfcr;
 
-       BT_ASSERT(stack);
-       BT_ASSERT(base_class);
-       BT_LOGV("Pushing field class on stack: stack-addr=%p, "
+       BT_ASSERT_DBG(stack);
+       BT_ASSERT_DBG(base_class);
+       bfcr = stack->bfcr;
+       BT_COMP_LOGT("Pushing field class on stack: stack-addr=%p, "
                "fc-addr=%p, fc-type=%d, base-length=%zu, "
                "stack-size-before=%zu, stack-size-after=%zu",
                stack, base_class, base_class->type,
@@ -276,7 +277,7 @@ int64_t get_compound_field_class_length(struct bt_bfcr *bfcr,
                        bfcr->user.data);
                break;
        default:
-               abort();
+               bt_common_abort();
        }
 
        return length;
@@ -289,7 +290,7 @@ int stack_push_with_len(struct bt_bfcr *bfcr, struct ctf_field_class *base_class
        int64_t length = get_compound_field_class_length(bfcr, base_class);
 
        if (length < 0) {
-               BT_LOGW("Cannot get compound field class's field count: "
+               BT_COMP_LOGW("Cannot get compound field class's field count: "
                        "bfcr-addr=%p, fc-addr=%p, fc-type=%d",
                        bfcr, base_class, base_class->type);
                ret = BT_BFCR_STATUS_ERROR;
@@ -305,16 +306,19 @@ end:
 static inline
 unsigned int stack_size(struct stack *stack)
 {
-       BT_ASSERT(stack);
+       BT_ASSERT_DBG(stack);
        return stack->size;
 }
 
 static
 void stack_pop(struct stack *stack)
 {
-       BT_ASSERT(stack);
-       BT_ASSERT(stack_size(stack));
-       BT_LOGV("Popping from stack: "
+       struct bt_bfcr *bfcr;
+
+       BT_ASSERT_DBG(stack);
+       BT_ASSERT_DBG(stack_size(stack));
+       bfcr = stack->bfcr;
+       BT_COMP_LOGT("Popping from stack: "
                "stack-addr=%p, stack-size-before=%u, stack-size-after=%u",
                stack, stack->entries->len, stack->entries->len - 1);
        stack->size--;
@@ -329,15 +333,15 @@ bool stack_empty(struct stack *stack)
 static
 void stack_clear(struct stack *stack)
 {
-       BT_ASSERT(stack);
+       BT_ASSERT_DBG(stack);
        stack->size = 0;
 }
 
 static inline
 struct stack_entry *stack_top(struct stack *stack)
 {
-       BT_ASSERT(stack);
-       BT_ASSERT(stack_size(stack));
+       BT_ASSERT_DBG(stack);
+       BT_ASSERT_DBG(stack_size(stack));
        return &g_array_index(stack->entries, struct stack_entry,
                stack->size - 1);
 }
@@ -351,7 +355,7 @@ size_t available_bits(struct bt_bfcr *bfcr)
 static inline
 void consume_bits(struct bt_bfcr *bfcr, size_t incr)
 {
-       BT_LOGV("Advancing cursor: bfcr-addr=%p, cur-before=%zu, cur-after=%zu",
+       BT_COMP_LOGT("Advancing cursor: bfcr-addr=%p, cur-before=%zu, cur-after=%zu",
                bfcr, bfcr->buf.at, bfcr->buf.at + incr);
        bfcr->buf.at += incr;
 }
@@ -444,7 +448,7 @@ void stitch_set_from_remaining_buf(struct bt_bfcr *bfcr)
 }
 
 static inline
-void read_unsigned_bitfield(const uint8_t *buf, size_t at,
+void read_unsigned_bitfield(struct bt_bfcr *bfcr, const uint8_t *buf, size_t at,
                unsigned int field_size, enum ctf_byte_order bo,
                uint64_t *v)
 {
@@ -456,15 +460,15 @@ void read_unsigned_bitfield(const uint8_t *buf, size_t at,
                bt_bitfield_read_le(buf, uint8_t, at, field_size, v);
                break;
        default:
-               abort();
+               bt_common_abort();
        }
 
-       BT_LOGV("Read unsigned bit array: cur=%zu, size=%u, "
+       BT_COMP_LOGT("Read unsigned bit array: cur=%zu, size=%u, "
                "bo=%d, val=%" PRIu64, at, field_size, bo, *v);
 }
 
 static inline
-void read_signed_bitfield(const uint8_t *buf, size_t at,
+void read_signed_bitfield(struct bt_bfcr *bfcr, const uint8_t *buf, size_t at,
                unsigned int field_size, enum ctf_byte_order bo, int64_t *v)
 {
        switch (bo) {
@@ -475,10 +479,10 @@ void read_signed_bitfield(const uint8_t *buf, size_t at,
                bt_bitfield_read_le(buf, uint8_t, at, field_size, v);
                break;
        default:
-               abort();
+               bt_common_abort();
        }
 
-       BT_LOGV("Read signed bit array: cur=%zu, size=%u, "
+       BT_COMP_LOGT("Read signed bit array: cur=%zu, size=%u, "
                "bo=%d, val=%" PRId64, at, field_size, bo, *v);
 }
 
@@ -497,12 +501,12 @@ enum bt_bfcr_status validate_contiguous_bo(struct bt_bfcr *bfcr,
        }
 
        /* Always valid if last byte order is unknown */
-       if (bfcr->last_bo == -1) {
+       if (bfcr->last_bo == CTF_BYTE_ORDER_UNKNOWN) {
                goto end;
        }
 
        /* Always valid if next byte order is unknown */
-       if (next_bo == -1) {
+       if (next_bo == CTF_BYTE_ORDER_UNKNOWN) {
                goto end;
        }
 
@@ -524,7 +528,7 @@ enum bt_bfcr_status validate_contiguous_bo(struct bt_bfcr *bfcr,
 
 end:
        if (status < 0) {
-               BT_LOGW("Cannot read bit array: two different byte orders not at a byte boundary: "
+               BT_COMP_LOGW("Cannot read bit array: two different byte orders not at a byte boundary: "
                        "bfcr-addr=%p, last-bo=%d, next-bo=%d",
                        bfcr, bfcr->last_bo, next_bo);
        }
@@ -542,7 +546,7 @@ enum bt_bfcr_status read_basic_float_and_call_cb(struct bt_bfcr *bfcr,
        enum bt_bfcr_status status = BT_BFCR_STATUS_OK;
        struct ctf_field_class_float *fc = (void *) bfcr->cur_basic_field_class;
 
-       BT_ASSERT(fc);
+       BT_ASSERT_DBG(fc);
        field_size = fc->base.size;
        bo = fc->base.byte_order;
        bfcr->cur_bo = bo;
@@ -556,7 +560,7 @@ enum bt_bfcr_status read_basic_float_and_call_cb(struct bt_bfcr *bfcr,
                        float f;
                } f32;
 
-               read_unsigned_bitfield(buf, at, field_size, bo, &v);
+               read_unsigned_bitfield(bfcr, buf, at, field_size, bo, &v);
                f32.u = (uint32_t) v;
                dblval = (double) f32.f;
                break;
@@ -568,26 +572,26 @@ enum bt_bfcr_status read_basic_float_and_call_cb(struct bt_bfcr *bfcr,
                        double d;
                } f64;
 
-               read_unsigned_bitfield(buf, at, field_size, bo, &f64.u);
+               read_unsigned_bitfield(bfcr, buf, at, field_size, bo, &f64.u);
                dblval = f64.d;
                break;
        }
        default:
                /* Only 32-bit and 64-bit fields are supported currently */
-               abort();
+               bt_common_abort();
        }
 
-       BT_LOGV("Read floating point number value: bfcr=%p, cur=%zu, val=%f",
+       BT_COMP_LOGT("Read floating point number value: bfcr=%p, cur=%zu, val=%f",
                bfcr, at, dblval);
 
        if (bfcr->user.cbs.classes.floating_point) {
-               BT_LOGV("Calling user function (floating point number).");
+               BT_COMP_LOGT("Calling user function (floating point number).");
                status = bfcr->user.cbs.classes.floating_point(dblval,
                        bfcr->cur_basic_field_class, bfcr->user.data);
-               BT_LOGV("User function returned: status=%s",
+               BT_COMP_LOGT("User function returned: status=%s",
                        bt_bfcr_status_string(status));
                if (status != BT_BFCR_STATUS_OK) {
-                       BT_LOGW("User function failed: bfcr-addr=%p, status=%s",
+                       BT_COMP_LOGW("User function failed: bfcr-addr=%p, status=%s",
                                bfcr, bt_bfcr_status_string(status));
                }
        }
@@ -617,16 +621,16 @@ enum bt_bfcr_status read_basic_int_and_call_cb(struct bt_bfcr *bfcr,
        if (fc->is_signed) {
                int64_t v;
 
-               read_signed_bitfield(buf, at, field_size, bo, &v);
+               read_signed_bitfield(bfcr, buf, at, field_size, bo, &v);
 
                if (bfcr->user.cbs.classes.signed_int) {
-                       BT_LOGV("Calling user function (signed integer).");
+                       BT_COMP_LOGT("Calling user function (signed integer).");
                        status = bfcr->user.cbs.classes.signed_int(v,
                                bfcr->cur_basic_field_class, bfcr->user.data);
-                       BT_LOGV("User function returned: status=%s",
+                       BT_COMP_LOGT("User function returned: status=%s",
                                bt_bfcr_status_string(status));
                        if (status != BT_BFCR_STATUS_OK) {
-                               BT_LOGW("User function failed: "
+                               BT_COMP_LOGW("User function failed: "
                                        "bfcr-addr=%p, status=%s",
                                        bfcr, bt_bfcr_status_string(status));
                        }
@@ -634,16 +638,16 @@ enum bt_bfcr_status read_basic_int_and_call_cb(struct bt_bfcr *bfcr,
        } else {
                uint64_t v;
 
-               read_unsigned_bitfield(buf, at, field_size, bo, &v);
+               read_unsigned_bitfield(bfcr, buf, at, field_size, bo, &v);
 
                if (bfcr->user.cbs.classes.unsigned_int) {
-                       BT_LOGV("Calling user function (unsigned integer).");
+                       BT_COMP_LOGT("Calling user function (unsigned integer).");
                        status = bfcr->user.cbs.classes.unsigned_int(v,
                                bfcr->cur_basic_field_class, bfcr->user.data);
-                       BT_LOGV("User function returned: status=%s",
+                       BT_COMP_LOGT("User function returned: status=%s",
                                bt_bfcr_status_string(status));
                        if (status != BT_BFCR_STATUS_OK) {
-                               BT_LOGW("User function failed: "
+                               BT_COMP_LOGW("User function failed: "
                                        "bfcr-addr=%p, status=%s",
                                        bfcr, bt_bfcr_status_string(status));
                        }
@@ -664,14 +668,14 @@ enum bt_bfcr_status read_bit_array_class_and_call_continue(struct bt_bfcr *bfcr,
                (void *) bfcr->cur_basic_field_class;
 
        if (!at_least_one_bit_left(bfcr)) {
-               BT_LOGV("Reached end of data: bfcr-addr=%p", bfcr);
+               BT_COMP_LOGT("Reached end of data: bfcr-addr=%p", bfcr);
                status = BT_BFCR_STATUS_EOF;
                goto end;
        }
 
        available = available_bits(bfcr);
        needed_bits = fc->size - bfcr->stitch.at;
-       BT_LOGV("Continuing basic field decoding: "
+       BT_COMP_LOGT("Continuing basic field decoding: "
                "bfcr-addr=%p, field-size=%u, needed-size=%zu, "
                "available-size=%zu",
                bfcr, fc->size, needed_bits, available);
@@ -681,7 +685,7 @@ enum bt_bfcr_status read_bit_array_class_and_call_continue(struct bt_bfcr *bfcr,
                status = read_basic_and_call_cb(bfcr, bfcr->stitch.buf,
                        bfcr->stitch.offset);
                if (status != BT_BFCR_STATUS_OK) {
-                       BT_LOGW("Cannot read basic field: "
+                       BT_COMP_LOGW("Cannot read basic field: "
                                "bfcr-addr=%p, fc-addr=%p, status=%s",
                                bfcr, bfcr->cur_basic_field_class,
                                bt_bfcr_status_string(status));
@@ -701,7 +705,7 @@ enum bt_bfcr_status read_bit_array_class_and_call_continue(struct bt_bfcr *bfcr,
        }
 
        /* We are here; it means we don't have enough data to decode this */
-       BT_LOGV_STR("Not enough data to read the next basic field: appending to stitch buffer.");
+       BT_COMP_LOGT_STR("Not enough data to read the next basic field: appending to stitch buffer.");
        stitch_append_from_remaining_buf(bfcr);
        status = BT_BFCR_STATUS_EOF;
 
@@ -719,7 +723,7 @@ enum bt_bfcr_status read_bit_array_class_and_call_begin(struct bt_bfcr *bfcr,
                (void *) bfcr->cur_basic_field_class;
 
        if (!at_least_one_bit_left(bfcr)) {
-               BT_LOGV("Reached end of data: bfcr-addr=%p", bfcr);
+               BT_COMP_LOGT("Reached end of data: bfcr-addr=%p", bfcr);
                status = BT_BFCR_STATUS_EOF;
                goto end;
        }
@@ -734,11 +738,11 @@ enum bt_bfcr_status read_bit_array_class_and_call_begin(struct bt_bfcr *bfcr,
 
        if (fc->size <= available) {
                /* We have all the bits; decode and set now */
-               BT_ASSERT(bfcr->buf.addr);
+               BT_ASSERT_DBG(bfcr->buf.addr);
                status = read_basic_and_call_cb(bfcr, bfcr->buf.addr,
                        buf_at_from_addr(bfcr));
                if (status != BT_BFCR_STATUS_OK) {
-                       BT_LOGW("Cannot read basic field: "
+                       BT_COMP_LOGW("Cannot read basic field: "
                                "bfcr-addr=%p, fc-addr=%p, status=%s",
                                bfcr, bfcr->cur_basic_field_class,
                                bt_bfcr_status_string(status));
@@ -761,7 +765,7 @@ enum bt_bfcr_status read_bit_array_class_and_call_begin(struct bt_bfcr *bfcr,
        }
 
        /* We are here; it means we don't have enough data to decode this */
-       BT_LOGV_STR("Not enough data to read the next basic field: setting stitch buffer.");
+       BT_COMP_LOGT_STR("Not enough data to read the next basic field: setting stitch buffer.");
        stitch_set_from_remaining_buf(bfcr);
        bfcr->state = BFCR_STATE_READ_BASIC_CONTINUE;
        status = BT_BFCR_STATUS_EOF;
@@ -812,26 +816,26 @@ enum bt_bfcr_status read_basic_string_class_and_call(
        enum bt_bfcr_status status = BT_BFCR_STATUS_OK;
 
        if (!at_least_one_bit_left(bfcr)) {
-               BT_LOGV("Reached end of data: bfcr-addr=%p", bfcr);
+               BT_COMP_LOGT("Reached end of data: bfcr-addr=%p", bfcr);
                status = BT_BFCR_STATUS_EOF;
                goto end;
        }
 
-       BT_ASSERT(buf_at_from_addr(bfcr) % 8 == 0);
+       BT_ASSERT_DBG(buf_at_from_addr(bfcr) % 8 == 0);
        available_bytes = BITS_TO_BYTES_FLOOR(available_bits(bfcr));
        buf_at_bytes = BITS_TO_BYTES_FLOOR(buf_at_from_addr(bfcr));
-       BT_ASSERT(bfcr->buf.addr);
+       BT_ASSERT_DBG(bfcr->buf.addr);
        first_chr = &bfcr->buf.addr[buf_at_bytes];
        result = memchr(first_chr, '\0', available_bytes);
 
        if (begin && bfcr->user.cbs.classes.string_begin) {
-               BT_LOGV("Calling user function (string, beginning).");
+               BT_COMP_LOGT("Calling user function (string, beginning).");
                status = bfcr->user.cbs.classes.string_begin(
                        bfcr->cur_basic_field_class, bfcr->user.data);
-               BT_LOGV("User function returned: status=%s",
+               BT_COMP_LOGT("User function returned: status=%s",
                        bt_bfcr_status_string(status));
                if (status != BT_BFCR_STATUS_OK) {
-                       BT_LOGW("User function failed: bfcr-addr=%p, status=%s",
+                       BT_COMP_LOGW("User function failed: bfcr-addr=%p, status=%s",
                                bfcr, bt_bfcr_status_string(status));
                        goto end;
                }
@@ -840,15 +844,15 @@ enum bt_bfcr_status read_basic_string_class_and_call(
        if (!result) {
                /* No null character yet */
                if (bfcr->user.cbs.classes.string) {
-                       BT_LOGV("Calling user function (substring).");
+                       BT_COMP_LOGT("Calling user function (substring).");
                        status = bfcr->user.cbs.classes.string(
                                (const char *) first_chr,
                                available_bytes, bfcr->cur_basic_field_class,
                                bfcr->user.data);
-                       BT_LOGV("User function returned: status=%s",
+                       BT_COMP_LOGT("User function returned: status=%s",
                                bt_bfcr_status_string(status));
                        if (status != BT_BFCR_STATUS_OK) {
-                               BT_LOGW("User function failed: "
+                               BT_COMP_LOGW("User function failed: "
                                        "bfcr-addr=%p, status=%s",
                                        bfcr, bt_bfcr_status_string(status));
                                goto end;
@@ -863,15 +867,15 @@ enum bt_bfcr_status read_basic_string_class_and_call(
                size_t result_len = (size_t) (result - first_chr);
 
                if (bfcr->user.cbs.classes.string && result_len) {
-                       BT_LOGV("Calling user function (substring).");
+                       BT_COMP_LOGT("Calling user function (substring).");
                        status = bfcr->user.cbs.classes.string(
                                (const char *) first_chr,
                                result_len, bfcr->cur_basic_field_class,
                                bfcr->user.data);
-                       BT_LOGV("User function returned: status=%s",
+                       BT_COMP_LOGT("User function returned: status=%s",
                                bt_bfcr_status_string(status));
                        if (status != BT_BFCR_STATUS_OK) {
-                               BT_LOGW("User function failed: "
+                               BT_COMP_LOGW("User function failed: "
                                        "bfcr-addr=%p, status=%s",
                                        bfcr, bt_bfcr_status_string(status));
                                goto end;
@@ -879,13 +883,13 @@ enum bt_bfcr_status read_basic_string_class_and_call(
                }
 
                if (bfcr->user.cbs.classes.string_end) {
-                       BT_LOGV("Calling user function (string, end).");
+                       BT_COMP_LOGT("Calling user function (string, end).");
                        status = bfcr->user.cbs.classes.string_end(
                                bfcr->cur_basic_field_class, bfcr->user.data);
-                       BT_LOGV("User function returned: status=%s",
+                       BT_COMP_LOGT("User function returned: status=%s",
                                bt_bfcr_status_string(status));
                        if (status != BT_BFCR_STATUS_OK) {
-                               BT_LOGW("User function failed: "
+                               BT_COMP_LOGW("User function failed: "
                                        "bfcr-addr=%p, status=%s",
                                        bfcr, bt_bfcr_status_string(status));
                                goto end;
@@ -914,7 +918,7 @@ enum bt_bfcr_status read_basic_begin_state(struct bt_bfcr *bfcr)
 {
        enum bt_bfcr_status status;
 
-       BT_ASSERT(bfcr->cur_basic_field_class);
+       BT_ASSERT_DBG(bfcr->cur_basic_field_class);
 
        switch (bfcr->cur_basic_field_class->type) {
        case CTF_FIELD_CLASS_TYPE_INT:
@@ -928,7 +932,7 @@ enum bt_bfcr_status read_basic_begin_state(struct bt_bfcr *bfcr)
                status = read_basic_string_class_and_call(bfcr, true);
                break;
        default:
-               abort();
+               bt_common_abort();
        }
 
        return status;
@@ -939,7 +943,7 @@ enum bt_bfcr_status read_basic_continue_state(struct bt_bfcr *bfcr)
 {
        enum bt_bfcr_status status;
 
-       BT_ASSERT(bfcr->cur_basic_field_class);
+       BT_ASSERT_DBG(bfcr->cur_basic_field_class);
 
        switch (bfcr->cur_basic_field_class->type) {
        case CTF_FIELD_CLASS_TYPE_INT:
@@ -953,7 +957,7 @@ enum bt_bfcr_status read_basic_continue_state(struct bt_bfcr *bfcr)
                status = read_basic_string_class_and_call(bfcr, false);
                break;
        default:
-               abort();
+               bt_common_abort();
        }
 
        return status;
@@ -983,7 +987,7 @@ enum bt_bfcr_status align_class_state(struct bt_bfcr *bfcr,
         * 0 means "undefined" for variants; what we really want is 1
         * (always aligned)
         */
-       BT_ASSERT(field_alignment >= 1);
+       BT_ASSERT_DBG(field_alignment >= 1);
 
        /* Compute how many bits we need to skip */
        skip_bits = bits_to_skip_to_align_to(bfcr, (size_t) field_alignment);
@@ -1011,7 +1015,7 @@ enum bt_bfcr_status align_class_state(struct bt_bfcr *bfcr,
                goto end;
        } else {
                /* No: need more data */
-               BT_LOGV("Reached end of data when aligning: bfcr-addr=%p", bfcr);
+               BT_COMP_LOGT("Reached end of data when aligning: bfcr-addr=%p", bfcr);
                status = BT_BFCR_STATUS_EOF;
        }
 
@@ -1036,13 +1040,13 @@ enum bt_bfcr_status next_field_state(struct bt_bfcr *bfcr)
        /* Are we done with this base class? */
        while (top->index == top->base_len) {
                if (bfcr->user.cbs.classes.compound_end) {
-                       BT_LOGV("Calling user function (compound, end).");
+                       BT_COMP_LOGT("Calling user function (compound, end).");
                        status = bfcr->user.cbs.classes.compound_end(
                                top->base_class, bfcr->user.data);
-                       BT_LOGV("User function returned: status=%s",
+                       BT_COMP_LOGT("User function returned: status=%s",
                                bt_bfcr_status_string(status));
                        if (status != BT_BFCR_STATUS_OK) {
-                               BT_LOGW("User function failed: bfcr-addr=%p, status=%s",
+                               BT_COMP_LOGW("User function failed: bfcr-addr=%p, status=%s",
                                        bfcr, bt_bfcr_status_string(status));
                                goto end;
                        }
@@ -1086,7 +1090,7 @@ enum bt_bfcr_status next_field_state(struct bt_bfcr *bfcr)
        }
 
        if (!next_field_class) {
-               BT_LOGW("Cannot get the field class of the next field: "
+               BT_COMP_LOGW("Cannot get the field class of the next field: "
                        "bfcr-addr=%p, base-fc-addr=%p, base-fc-type=%d, "
                        "index=%" PRId64,
                        bfcr, top->base_class, top->base_class->type,
@@ -1097,13 +1101,13 @@ enum bt_bfcr_status next_field_state(struct bt_bfcr *bfcr)
 
        if (next_field_class->is_compound) {
                if (bfcr->user.cbs.classes.compound_begin) {
-                       BT_LOGV("Calling user function (compound, begin).");
+                       BT_COMP_LOGT("Calling user function (compound, begin).");
                        status = bfcr->user.cbs.classes.compound_begin(
                                next_field_class, bfcr->user.data);
-                       BT_LOGV("User function returned: status=%s",
+                       BT_COMP_LOGT("User function returned: status=%s",
                                bt_bfcr_status_string(status));
                        if (status != BT_BFCR_STATUS_OK) {
-                               BT_LOGW("User function failed: bfcr-addr=%p, status=%s",
+                               BT_COMP_LOGW("User function failed: bfcr-addr=%p, status=%s",
                                        bfcr, bt_bfcr_status_string(status));
                                goto end;
                        }
@@ -1120,7 +1124,7 @@ enum bt_bfcr_status next_field_state(struct bt_bfcr *bfcr)
                bfcr->state = BFCR_STATE_ALIGN_COMPOUND;
        } else {
                /* Replace current basic field class */
-               BT_LOGV("Replacing current basic field class: "
+               BT_COMP_LOGT("Replacing current basic field class: "
                        "bfcr-addr=%p, cur-basic-fc-addr=%p, "
                        "next-basic-fc-addr=%p",
                        bfcr, bfcr->cur_basic_field_class, next_field_class);
@@ -1139,7 +1143,7 @@ enum bt_bfcr_status handle_state(struct bt_bfcr *bfcr)
 {
        enum bt_bfcr_status status = BT_BFCR_STATUS_OK;
 
-       BT_LOGV("Handling state: bfcr-addr=%p, state=%s",
+       BT_COMP_LOGT("Handling state: bfcr-addr=%p, state=%s",
                bfcr, bfcr_state_string(bfcr->state));
 
        switch (bfcr->state) {
@@ -1164,26 +1168,31 @@ enum bt_bfcr_status handle_state(struct bt_bfcr *bfcr)
                break;
        }
 
-       BT_LOGV("Handled state: bfcr-addr=%p, status=%s",
+       BT_COMP_LOGT("Handled state: bfcr-addr=%p, status=%s",
                bfcr, bt_bfcr_status_string(status));
        return status;
 }
 
 BT_HIDDEN
-struct bt_bfcr *bt_bfcr_create(struct bt_bfcr_cbs cbs, void *data)
+struct bt_bfcr *bt_bfcr_create(struct bt_bfcr_cbs cbs, void *data,
+               bt_logging_level log_level, bt_self_component *self_comp)
 {
        struct bt_bfcr *bfcr;
 
-       BT_LOGD_STR("Creating binary field class reader (BFCR).");
+       BT_COMP_LOG_CUR_LVL(BT_LOG_DEBUG, log_level, self_comp,
+               "Creating binary field class reader (BFCR).");
        bfcr = g_new0(struct bt_bfcr, 1);
        if (!bfcr) {
-               BT_LOGE_STR("Failed to allocate one binary class reader.");
+               BT_COMP_LOG_CUR_LVL(BT_LOG_ERROR, log_level, self_comp,
+                       "Failed to allocate one binary class reader.");
                goto end;
        }
 
-       bfcr->stack = stack_new();
+       bfcr->log_level = log_level;
+       bfcr->self_comp = self_comp;
+       bfcr->stack = stack_new(bfcr);
        if (!bfcr->stack) {
-               BT_LOGE_STR("Cannot create BFCR's stack.");
+               BT_COMP_LOGE_STR("Cannot create BFCR's stack.");
                bt_bfcr_destroy(bfcr);
                bfcr = NULL;
                goto end;
@@ -1192,7 +1201,7 @@ struct bt_bfcr *bt_bfcr_create(struct bt_bfcr_cbs cbs, void *data)
        bfcr->state = BFCR_STATE_NEXT_FIELD;
        bfcr->user.cbs = cbs;
        bfcr->user.data = data;
-       BT_LOGD("Created BFCR: addr=%p", bfcr);
+       BT_COMP_LOGD("Created BFCR: addr=%p", bfcr);
 
 end:
        return bfcr;
@@ -1205,24 +1214,24 @@ void bt_bfcr_destroy(struct bt_bfcr *bfcr)
                stack_destroy(bfcr->stack);
        }
 
-       BT_LOGD("Destroying BFCR: addr=%p", bfcr);
+       BT_COMP_LOGD("Destroying BFCR: addr=%p", bfcr);
        g_free(bfcr);
 }
 
 static
 void reset(struct bt_bfcr *bfcr)
 {
-       BT_LOGD("Resetting BFCR: addr=%p", bfcr);
+       BT_COMP_LOGD("Resetting BFCR: addr=%p", bfcr);
        stack_clear(bfcr->stack);
        stitch_reset(bfcr);
        bfcr->buf.addr = NULL;
-       bfcr->last_bo = -1;
+       bfcr->last_bo = CTF_BYTE_ORDER_UNKNOWN;
 }
 
 static
 void update_packet_offset(struct bt_bfcr *bfcr)
 {
-       BT_LOGV("Updating packet offset for next call: "
+       BT_COMP_LOGT("Updating packet offset for next call: "
                "bfcr-addr=%p, cur-packet-offset=%zu, next-packet-offset=%zu",
                bfcr, bfcr->buf.packet_offset,
                bfcr->buf.packet_offset + bfcr->buf.at);
@@ -1235,8 +1244,8 @@ size_t bt_bfcr_start(struct bt_bfcr *bfcr,
        size_t offset, size_t packet_offset, size_t sz,
        enum bt_bfcr_status *status)
 {
-       BT_ASSERT(bfcr);
-       BT_ASSERT(BYTES_TO_BITS(sz) >= offset);
+       BT_ASSERT_DBG(bfcr);
+       BT_ASSERT_DBG(BYTES_TO_BITS(sz) >= offset);
        reset(bfcr);
        bfcr->buf.addr = buf;
        bfcr->buf.offset = offset;
@@ -1246,7 +1255,7 @@ size_t bt_bfcr_start(struct bt_bfcr *bfcr,
        bfcr->buf.sz = BYTES_TO_BITS(sz) - offset;
        *status = BT_BFCR_STATUS_OK;
 
-       BT_LOGV("Starting decoding: bfcr-addr=%p, fc-addr=%p, "
+       BT_COMP_LOGT("Starting decoding: bfcr-addr=%p, fc-addr=%p, "
                "buf-addr=%p, buf-size=%zu, offset=%zu, "
                "packet-offset=%zu",
                bfcr, cls, buf, sz, offset, packet_offset);
@@ -1257,13 +1266,13 @@ size_t bt_bfcr_start(struct bt_bfcr *bfcr,
                int stack_ret;
 
                if (bfcr->user.cbs.classes.compound_begin) {
-                       BT_LOGV("Calling user function (compound, begin).");
+                       BT_COMP_LOGT("Calling user function (compound, begin).");
                        *status = bfcr->user.cbs.classes.compound_begin(
                                cls, bfcr->user.data);
-                       BT_LOGV("User function returned: status=%s",
+                       BT_COMP_LOGT("User function returned: status=%s",
                                bt_bfcr_status_string(*status));
                        if (*status != BT_BFCR_STATUS_OK) {
-                               BT_LOGW("User function failed: bfcr-addr=%p, status=%s",
+                               BT_COMP_LOGW("User function failed: bfcr-addr=%p, status=%s",
                                        bfcr, bt_bfcr_status_string(*status));
                                goto end;
                        }
@@ -1284,7 +1293,7 @@ size_t bt_bfcr_start(struct bt_bfcr *bfcr,
        }
 
        /* Run the machine! */
-       BT_LOGV_STR("Running the state machine.");
+       BT_COMP_LOGT_STR("Running the state machine.");
 
        while (true) {
                *status = handle_state(bfcr);
@@ -1305,9 +1314,9 @@ BT_HIDDEN
 size_t bt_bfcr_continue(struct bt_bfcr *bfcr, const uint8_t *buf, size_t sz,
                enum bt_bfcr_status *status)
 {
-       BT_ASSERT(bfcr);
-       BT_ASSERT(buf);
-       BT_ASSERT(sz > 0);
+       BT_ASSERT_DBG(bfcr);
+       BT_ASSERT_DBG(buf);
+       BT_ASSERT_DBG(sz > 0);
        bfcr->buf.addr = buf;
        bfcr->buf.offset = 0;
        bfcr->buf.at = 0;
@@ -1315,11 +1324,11 @@ size_t bt_bfcr_continue(struct bt_bfcr *bfcr, const uint8_t *buf, size_t sz,
        bfcr->buf.sz = BYTES_TO_BITS(sz);
        *status = BT_BFCR_STATUS_OK;
 
-       BT_LOGV("Continuing decoding: bfcr-addr=%p, buf-addr=%p, buf-size=%zu",
+       BT_COMP_LOGT("Continuing decoding: bfcr-addr=%p, buf-addr=%p, buf-size=%zu",
                bfcr, buf, sz);
 
        /* Continue running the machine */
-       BT_LOGV_STR("Running the state machine.");
+       BT_COMP_LOGT_STR("Running the state machine.");
 
        while (true) {
                *status = handle_state(bfcr);
@@ -1338,7 +1347,7 @@ BT_HIDDEN
 void bt_bfcr_set_unsigned_int_cb(struct bt_bfcr *bfcr,
                bt_bfcr_unsigned_int_cb_func cb)
 {
-       BT_ASSERT(bfcr);
-       BT_ASSERT(cb);
+       BT_ASSERT_DBG(bfcr);
+       BT_ASSERT_DBG(cb);
        bfcr->user.cbs.classes.unsigned_int = cb;
 }
This page took 0.050567 seconds and 4 git commands to generate.