- return;
-
-error:
- fprintf(stderr, "[error] Out of packet bounds when writing packet header\n");
- abort();
-}
-
-static
-void write_packet_context(struct ctf_stream_pos *pos)
-{
- struct ctf_stream_pos dummy;
-
- /* content_size */
- ctf_dummy_pos(pos, &dummy);
- if (!ctf_align_pos(&dummy, sizeof(uint64_t) * CHAR_BIT))
- goto error;
- if (!ctf_move_pos(&dummy, sizeof(uint64_t) * CHAR_BIT))
- goto error;
- assert(!ctf_pos_packet(&dummy));
-
- if (!ctf_align_pos(pos, sizeof(uint64_t) * CHAR_BIT))
- goto error;
- *(uint64_t *) ctf_get_pos_addr(pos) = ~0ULL; /* Not known yet */
- pos->content_size_loc = (uint64_t *) ctf_get_pos_addr(pos);
- if (!ctf_move_pos(pos, sizeof(uint64_t) * CHAR_BIT))
- goto error;
-
- /* packet_size */
- ctf_dummy_pos(pos, &dummy);
- if (!ctf_align_pos(&dummy, sizeof(uint64_t) * CHAR_BIT))
- goto error;
- if (!ctf_move_pos(&dummy, sizeof(uint64_t) * CHAR_BIT))
- goto error;
- assert(!ctf_pos_packet(&dummy));
-
- if (!ctf_align_pos(pos, sizeof(uint64_t) * CHAR_BIT))
- goto error;
- *(uint64_t *) ctf_get_pos_addr(pos) = pos->packet_size;
- if (!ctf_move_pos(pos, sizeof(uint64_t) * CHAR_BIT))
- goto error;
- return;
-
-error:
- fprintf(stderr, "[error] Out of packet bounds when writing packet context\n");
- abort();
-}
-
-static
-void write_event_header(struct ctf_stream_pos *pos, char *line,
- char **tline, size_t len, size_t *tlen,
- uint64_t *ts)
-{
- if (!s_timestamp)
- return;
-
- /* Only need to be executed on first pass (dummy) */
- if (pos->dummy) {
- int has_timestamp = 0;
- unsigned long sec, usec, msec;
- unsigned int year, mon, mday, hour, min;
-
- /* Extract time from input line */
- if (sscanf(line, "[%lu.%lu] ", &sec, &usec) == 2) {
- *ts = (uint64_t) sec * USEC_PER_SEC + (uint64_t) usec;
- /*
- * Default CTF clock has 1GHz frequency. Convert
- * from usec to nsec.
- */
- *ts *= NSEC_PER_USEC;
- has_timestamp = 1;
- } else if (sscanf(line, "[%u-%u-%u %u:%u:%lu.%lu] ",
- &year, &mon, &mday, &hour, &min,
- &sec, &msec) == 7) {
- time_t ep_sec;
- struct tm ti;
-
- memset(&ti, 0, sizeof(ti));
- ti.tm_year = year - 1900; /* from 1900 */
- ti.tm_mon = mon - 1; /* 0 to 11 */
- ti.tm_mday = mday;
- ti.tm_hour = hour;
- ti.tm_min = min;
- ti.tm_sec = sec;
-
- ep_sec = bt_timegm(&ti);
- if (ep_sec != (time_t) -1) {
- *ts = (uint64_t) ep_sec * NSEC_PER_SEC
- + (uint64_t) msec * NSEC_PER_MSEC;
- }
- has_timestamp = 1;
- }
- if (has_timestamp) {
- *tline = strchr(line, ']');
- assert(*tline);
- (*tline)++;
- if ((*tline)[0] == ' ') {
- (*tline)++;
- }
- *tlen = len + line - *tline;
- }