print_tabs(1, fd);
}
fprintf(fd, "u64 tsc;\n");
- print_tabs(1, fd);
- fprintf(fd, "size_t before_hdr_pad, after_hdr_pad, header_size;\n");
fprintf(fd, "\n");
if(!event->force) {
print_tabs(2, fd);
fprintf(fd, "buffer = ltt_reserve_slot(trace, channel, &transport_data,\n");
print_tabs(3, fd);
- fprintf(fd, "reserve_size, &slot_size, &tsc,\n");
- print_tabs(3, fd);
- fprintf(fd, "&before_hdr_pad, &after_hdr_pad, &header_size);\n");
+ fprintf(fd, "reserve_size, &slot_size, &tsc);\n");
/* If error, return */
print_tabs(2, fd);
fprintf(fd, "if (!buffer)\n");
/* Write event header */
if(strcmp("compact", fac->name) != 0) {
print_tabs(2, fd);
- fprintf(fd, "ltt_write_event_header(trace, channel, buffer,\n");
+ fprintf(fd, "buffer = ltt_write_event_header(trace, channel, buffer,\n");
print_tabs(3, fd);
fprintf(fd, "ltt_facility_%s_%X, event_%s_%s,\n", fac->name, fac->checksum,
fac->name, event->name);
print_tabs(3, fd);
- fprintf(fd, "reserve_size, before_hdr_pad, tsc);\n");
+ fprintf(fd, "reserve_size, tsc);\n");
} else {
print_tabs(2, fd);
- fprintf(fd, "ltt_write_compact_header(trace, channel, buffer,\n");
+ fprintf(fd, "buffer = ltt_write_compact_header(trace, channel, buffer,\n");
print_tabs(3, fd);
fprintf(fd, "ltt_facility_%s_%X, event_%s_%s,\n", fac->name, fac->checksum,
fac->name, event->name);
print_tabs(3, fd);
- fprintf(fd, "reserve_size, before_hdr_pad, tsc, compact_data);\n");
+ if(event->compact_data) {
+ assert(event->fields.position > 0);
+ field_t *field = (field_t*)(event->fields.array[0]);
+ fprintf(fd, "reserve_size, tsc, lttng_param_%s);\n",
+ field->name);
+ } else
+ fprintf(fd, "reserve_size, tsc, 0);\n");
}
- print_tabs(2, fd);
- fprintf(fd, "*to_base += before_hdr_pad + after_hdr_pad + header_size;\n");
- fprintf(fd, "\n");
/* write data. */
for(unsigned int i=0;i<event->fields.position;i++){
field_t *field = (field_t*)(event->fields.array[i]);
type_descriptor_t *type = field->type;
-
+
+ /* First param is compacted in the header */
+ if(event->compact_data && i == 0)
+ continue;
/* Set from */
print_tabs(2, fd);
switch(type->type) {
}
fprintf(fd, "uint64_t tsc;\n");
print_tabs(1, fd);
- fprintf(fd, "size_t before_hdr_pad, after_hdr_pad, header_size;\n");
- fprintf(fd, "\n");
print_tabs(1, fd);
fprintf(fd, "if (!trace) {\n");
print_tabs(2, fd);
fprintf(fd, "buffer = ltt_reserve_slot(trace, ltt_buf,\n");
print_tabs(3, fd);
- fprintf(fd, "reserve_size, &slot_size, &tsc,\n");
- print_tabs(3, fd);
- fprintf(fd, "&before_hdr_pad, &after_hdr_pad, &header_size);\n");
+ fprintf(fd, "reserve_size, &slot_size, &tsc);\n");
/* If error, return */
print_tabs(2, fd);
fprintf(fd, "if (!buffer)\n");
/* Write event header */
print_tabs(2, fd);
- fprintf(fd, "ltt_write_event_header(trace, ltt_buf, buffer,\n");
+ fprintf(fd, "buffer = ltt_write_event_header(trace, ltt_buf, buffer,\n");
print_tabs(3, fd);
fprintf(fd, "ltt_facility_%s_%X, event_%s_%s,\n", fac->name, fac->checksum,
fac->name, event->name);
print_tabs(3, fd);
- fprintf(fd, "reserve_size, before_hdr_pad, tsc);\n");
- print_tabs(2, fd);
- fprintf(fd, "*to_base += before_hdr_pad + after_hdr_pad + header_size;\n");
- fprintf(fd, "\n");
+ fprintf(fd, "reserve_size, tsc);\n");
/* write data. */
fprintf(fd,"ltt_facility_t\tltt_facility_%s;\n", fac->name);
fprintf(fd,"ltt_facility_t\tltt_facility_%s_%X;\n\n",
fac->name, fac->checksum);
+ fprintf(fd,"extern unsigned int ltt_get_channel_index_%s(u8 eID);\n\n",
+ fac->name);
fprintf(fd,"#define LTT_FACILITY_SYMBOL\t\tltt_facility_%s\n",
fac->name);
fac->name);
fprintf(fd,"#define LTT_FACILITY_ALIGNMENT\t\t%u\n\n",
fac->align);
+ fprintf(fd,"#define LTT_FACILITY_SELECT\t\tltt_get_channel_index_%s\n\n",
+ fac->name);
fprintf(fd, "#endif //CONFIG_LTT\n\n");
fprintf(fd, "#endif //_LTT_FACILITY_LOADER_%s_H_\n", fac->capname);
fprintf(fd, "\t.checksum = LTT_FACILITY_CHECKSUM,\n");
fprintf(fd, "\t.symbol = SYMBOL_STRING(LTT_FACILITY_SYMBOL),\n");
fprintf(fd, "\t.alignment = LTT_FACILITY_ALIGNMENT,\n");
+ fprintf(fd, "\t.select = LTT_FACILITY_SELECT,\n");
fprintf(fd, "};\n");
fprintf(fd, "\n");
fprintf(fd, "static int __init facility_init(void)\n");