char *name = NULL;
unsigned int field_count = 1;
+ name_begin = fmt;
for (; *fmt ; ++fmt) {
switch (*fmt) {
case '#':
}
break;
case ' ':
- if (!name_end) {
+ if (!name_end && name_begin) {
name_end = fmt;
if (name)
g_free(name);
}
break; /* Skip white spaces */
default:
- if (!name) {
+ if (!name_begin) {
name_begin = fmt;
name_end = NULL;
}
info->fields = g_array_sized_new(FALSE, TRUE,
sizeof(struct marker_field), DEFAULT_FIELDS_NUM);
format_parse(format, info);
+ return 0;
}
int marker_format_event(LttTrace *trace, GQuark name, const char *format)
info = g_hash_table_lookup(trace->markers_hash, (gconstpointer)name);
if (!info)
- g_error("Got marker format %s, but marker name %s has no ID yet. "
+ g_error("Got marker format \"%s\", but marker name \"%s\" has no ID yet. "
"Kernel issue.",
format, name);
for (; info != NULL; info = info->next) {
info->format = g_new(char, strlen(format)+1);
strcpy(info->format, format);
if (marker_parse_format(format, info))
- g_error("Error parsing marker format %s for marker %s", format,
+ g_error("Error parsing marker format \"%s\" for marker \"%s\"", format,
g_quark_to_string(name));
}
+ return 0;
}
int marker_id_event(LttTrace *trace, GQuark name, guint16 id,
uint8_t size_t_size, uint8_t alignment)
{
struct marker_info *info, *head;
+ int found = 0;
if (trace->markers->len < id)
trace->markers = g_array_set_size(trace->markers, id+1);
if (!head)
g_hash_table_insert(trace->markers_hash, (gpointer)name, info);
else {
- g_hash_table_replace(trace->markers_hash, (gpointer)name, info);
- info->next = head;
+ struct marker_info *iter;
+ for (iter = head; iter != NULL; iter = iter->next)
+ if (iter->name == name)
+ found = 1;
+ if (!found) {
+ g_hash_table_replace(trace->markers_hash, (gpointer)name, info);
+ info->next = head;
+ }
}
+ return 0;
}
int allocate_marker_data(LttTrace *trace)