* http://www.efficios.com/ctf
*/
+#include <stdbool.h>
#include <stdlib.h>
#include <stdint.h>
#include <limits.h>
#include "common/mmap-align.h"
#include <babeltrace2/types.h>
#include "common/assert.h"
+#include "common/macros.h"
#include "compat/bitfield.h"
#include <glib.h>
/* Stream file's path (for debugging) */
GString *path;
+
+ /* Serializer's log level */
+ int log_level;
};
/*
* This function opens the file `path` for writing.
*/
BT_HIDDEN
-int bt_ctfser_init(struct bt_ctfser *ctfser, const char *path);
+int bt_ctfser_init(struct bt_ctfser *ctfser, const char *path,
+ int log_level);
/*
* Finalizes a CTF serializer.
uint8_t *_bt_ctfser_get_addr(struct bt_ctfser *ctfser)
{
/* Only makes sense to get the address after aligning on byte */
- BT_ASSERT(ctfser->offset_in_cur_packet_bits % 8 == 0);
+ BT_ASSERT_DBG(ctfser->offset_in_cur_packet_bits % 8 == 0);
return ((uint8_t *) mmap_align_addr(ctfser->base_mma)) +
ctfser->mmap_base_offset + _bt_ctfser_offset_bytes(ctfser);
}
{
bool has_space_left = true;
- if (unlikely((ctfser->offset_in_cur_packet_bits + size_bits >
+ if (G_UNLIKELY((ctfser->offset_in_cur_packet_bits + size_bits >
_bt_ctfser_cur_packet_size_bits(ctfser)))) {
has_space_left = false;
goto end;
}
- if (unlikely(size_bits > UINT64_MAX - ctfser->offset_in_cur_packet_bits)) {
+ if (G_UNLIKELY(size_bits > UINT64_MAX - ctfser->offset_in_cur_packet_bits)) {
has_space_left = false;
goto end;
}
static inline
void _bt_ctfser_incr_offset(struct bt_ctfser *ctfser, uint64_t size_bits)
{
- BT_ASSERT(_bt_ctfser_has_space_left(ctfser, size_bits));
+ BT_ASSERT_DBG(_bt_ctfser_has_space_left(ctfser, size_bits));
ctfser->offset_in_cur_packet_bits += size_bits;
}
int ret = 0;
uint64_t align_size_bits;
- BT_ASSERT(alignment_bits > 0);
+ BT_ASSERT_DBG(alignment_bits > 0);
align_size_bits = ALIGN(ctfser->offset_in_cur_packet_bits,
alignment_bits) - ctfser->offset_in_cur_packet_bits;
- if (unlikely(!_bt_ctfser_has_space_left(ctfser, align_size_bits))) {
+ if (G_UNLIKELY(!_bt_ctfser_has_space_left(ctfser, align_size_bits))) {
ret = _bt_ctfser_increase_cur_packet_size(ctfser);
- if (unlikely(ret)) {
+ if (G_UNLIKELY(ret)) {
goto end;
}
}
/* Reverse byte order? */
bool rbo = byte_order != BYTE_ORDER;
- BT_ASSERT(size_bits % 8 == 0);
- BT_ASSERT(_bt_ctfser_has_space_left(ctfser, size_bits));
+ BT_ASSERT_DBG(size_bits % 8 == 0);
+ BT_ASSERT_DBG(_bt_ctfser_has_space_left(ctfser, size_bits));
switch (size_bits) {
case 8:
break;
}
default:
- abort();
+ bt_common_abort();
}
_bt_ctfser_incr_offset(ctfser, size_bits);
/* Reverse byte order? */
bool rbo = byte_order != BYTE_ORDER;
- BT_ASSERT(size_bits % 8 == 0);
- BT_ASSERT(_bt_ctfser_has_space_left(ctfser, size_bits));
+ BT_ASSERT_DBG(size_bits % 8 == 0);
+ BT_ASSERT_DBG(_bt_ctfser_has_space_left(ctfser, size_bits));
switch (size_bits) {
case 8:
break;
}
default:
- abort();
+ bt_common_abort();
}
_bt_ctfser_incr_offset(ctfser, size_bits);
{
int ret;
- BT_ASSERT(alignment_bits % 8 == 0);
+ BT_ASSERT_DBG(alignment_bits % 8 == 0);
ret = bt_ctfser_align_offset_in_current_packet(ctfser, alignment_bits);
- if (unlikely(ret)) {
+ if (G_UNLIKELY(ret)) {
goto end;
}
- if (unlikely(!_bt_ctfser_has_space_left(ctfser, size_bits))) {
+ if (G_UNLIKELY(!_bt_ctfser_has_space_left(ctfser, size_bits))) {
ret = _bt_ctfser_increase_cur_packet_size(ctfser);
- if (unlikely(ret)) {
+ if (G_UNLIKELY(ret)) {
goto end;
}
}
ret = _bt_ctfser_write_byte_aligned_unsigned_int_no_align(ctfser, value,
size_bits, byte_order);
- if (unlikely(ret)) {
+ if (G_UNLIKELY(ret)) {
goto end;
}
{
int ret;
- BT_ASSERT(alignment_bits % 8 == 0);
+ BT_ASSERT_DBG(alignment_bits % 8 == 0);
ret = bt_ctfser_align_offset_in_current_packet(ctfser, alignment_bits);
- if (unlikely(ret)) {
+ if (G_UNLIKELY(ret)) {
goto end;
}
- if (unlikely(!_bt_ctfser_has_space_left(ctfser, size_bits))) {
+ if (G_UNLIKELY(!_bt_ctfser_has_space_left(ctfser, size_bits))) {
ret = _bt_ctfser_increase_cur_packet_size(ctfser);
- if (unlikely(ret)) {
+ if (G_UNLIKELY(ret)) {
goto end;
}
}
ret = _bt_ctfser_write_byte_aligned_signed_int_no_align(ctfser, value,
size_bits, byte_order);
- if (unlikely(ret)) {
+ if (G_UNLIKELY(ret)) {
goto end;
}
int ret = 0;
ret = bt_ctfser_align_offset_in_current_packet(ctfser, alignment_bits);
- if (unlikely(ret)) {
+ if (G_UNLIKELY(ret)) {
goto end;
}
- if (unlikely(!_bt_ctfser_has_space_left(ctfser, size_bits))) {
+ if (G_UNLIKELY(!_bt_ctfser_has_space_left(ctfser, size_bits))) {
ret = _bt_ctfser_increase_cur_packet_size(ctfser);
- if (unlikely(ret)) {
+ if (G_UNLIKELY(ret)) {
goto end;
}
}
int ret = 0;
ret = bt_ctfser_align_offset_in_current_packet(ctfser, alignment_bits);
- if (unlikely(ret)) {
+ if (G_UNLIKELY(ret)) {
goto end;
}
- if (unlikely(!_bt_ctfser_has_space_left(ctfser, size_bits))) {
+ if (G_UNLIKELY(!_bt_ctfser_has_space_left(ctfser, size_bits))) {
ret = _bt_ctfser_increase_cur_packet_size(ctfser);
- if (unlikely(ret)) {
+ if (G_UNLIKELY(ret)) {
goto end;
}
}
{
union u64f {
uint64_t u;
- float f;
+ double d;
} u64f;
- u64f.f = value;
+ u64f.d = value;
return bt_ctfser_write_unsigned_int(ctfser, u64f.u, alignment_bits,
64, byte_order);
}
const char *at = value;
ret = bt_ctfser_align_offset_in_current_packet(ctfser, 8);
- if (unlikely(ret)) {
+ if (G_UNLIKELY(ret)) {
goto end;
}
while (true) {
- if (unlikely(!_bt_ctfser_has_space_left(ctfser, 8))) {
+ if (G_UNLIKELY(!_bt_ctfser_has_space_left(ctfser, 8))) {
ret = _bt_ctfser_increase_cur_packet_size(ctfser);
- if (unlikely(ret)) {
+ if (G_UNLIKELY(ret)) {
goto end;
}
}
memcpy(_bt_ctfser_get_addr(ctfser), at, sizeof(*at));
_bt_ctfser_incr_offset(ctfser, 8);
- if (unlikely(*at == '\0')) {
+ if (G_UNLIKELY(*at == '\0')) {
break;
}
void bt_ctfser_set_offset_in_current_packet_bits(struct bt_ctfser *ctfser,
uint64_t offset_bits)
{
- BT_ASSERT(offset_bits <= _bt_ctfser_cur_packet_size_bits(ctfser));
+ BT_ASSERT_DBG(offset_bits <= _bt_ctfser_cur_packet_size_bits(ctfser));
ctfser->offset_in_cur_packet_bits = offset_bits;
}