#include #include #include #include #include "barectf.h" static uint64_t get_clock(void* data) { struct timespec ts; clock_gettime(CLOCK_MONOTONIC, &ts); return ts.tv_sec * 1000000000UL + ts.tv_nsec; } enum state_t { NEW, TERMINATED, READY, RUNNING, WAITING, }; static void simple(uint8_t* buf, size_t sz) { /* initialize barectf context */ struct barectf_ctx ctx; struct barectf_ctx* pctx = &ctx; barectf_init(pctx, buf, sz, get_clock, NULL); /* open packet */ printf("barectf_open_packet(): %d\n", barectf_open_packet(pctx)); /* record events */ printf("barectf_trace_simple_uint32(): %d\n", barectf_trace_simple_uint32(pctx, 20150101)); printf("barectf_trace_simple_int16(): %d\n", barectf_trace_simple_int16(pctx, -2999)); printf("barectf_trace_simple_float(): %d\n", barectf_trace_simple_float(pctx, 23.57)); printf("barectf_trace_simple_string(): %d\n", barectf_trace_simple_string(pctx, "Hello, World!")); printf("barectf_trace_simple_enum(): %d\n", barectf_trace_simple_enum(pctx, RUNNING)); printf("barectf_trace_a_few_fields(): %d\n", barectf_trace_a_few_fields(pctx, -1, 301, -3.14159, "Hello again!", NEW)); printf("barectf_trace_bit_packed_integers(): %d\n", barectf_trace_bit_packed_integers(pctx, 1, -1, 3, -2, 2, 7, 23, -55, 232)); /* close packet with 3 discarded events */ barectf_close_packet(pctx, 3); } static void write_packet(const char* filename, const uint8_t* buf, size_t sz) { FILE* fh = fopen(filename, "wb"); if (!fh) { return; } fwrite(buf, 1, sz, fh); fclose(fh); } int main(void) { puts("simple barectf example!"); const size_t buf_sz = 128; uint8_t* buf = malloc(buf_sz); if (!buf) { return 1; } simple(buf, buf_sz); write_packet("ctf/stream_0", buf, buf_sz); free(buf); return 0; }