#define dprintf(...)
#endif
-void preset_field_type_size(event_t *event_type,
- off_t offset_root, off_t offset_parent,
- enum field_status *fixed_root, enum field_status *fixed_parent,
- field_t *field);
-
/* Code printing */
void print_tabs(unsigned int tabs, FILE *fd)
fprintf(fd, "\t");
}
-/* Type size checking */
-/* Uses #error in the generated code to signal error and stop the compiler */
-int print_check(int fd);
-
-
/* print type.
*
* Copied from construct_types_and_fields in LTTV facility.c */
break;
case ARRAY:
assert(td->size >= 0);
- return has_type_fixed(((field_t*)td->fields.array[0])->type);
+ return has_type_fixed_size(((field_t*)td->fields.array[0])->type);
+ break;
+ case NONE:
+ printf("There is a type defined to NONE : bad.\n");
+ assert(0);
break;
}
+ return 0; //make gcc happy.
}
if(print_type_declaration(((field_t*)td->fields.array[0])->type,
fd, 0, basename, "")) return 1;
}
- fprintf(fd, "#define LTTNG_ARRAY_SIZE_%s %llu\n", basename,
+ fprintf(fd, "#define LTTNG_ARRAY_SIZE_%s %zu\n", basename,
td->size);
fprintf(fd, "typedef ");
if(print_type(((field_t*)td->fields.array[0])->type,
case OFF_T:
case ENUM:
fprintf(fd, "sizeof(");
- if(print_type(td->type,
- fd, 0, basename, "")) return 1;
+ if(print_type(td, fd, 0, basename, "")) return 1;
fprintf(fd, ")");
break;
case STRING:
fprintf(fd, "lttng_get_alignment_array_%s(obj->%s)", basename,
field_name);
break;
+ case NONE:
+ printf("error : type NONE unexpected\n");
+ return 1;
+ break;
}
return 0;
print_tabs(tabs, fd);
fprintf(fd, "size = ");
fprintf(fd, "sizeof(");
- if(print_type(td->type,
- fd, 0, basename, "")) return 1;
+ if(print_type(td, fd, 0, basename, "")) return 1;
fprintf(fd, ");\n");
print_tabs(tabs, fd);
fprintf(fd, "size += ltt_align(*to+*len, size) + size;");
break;
case STRING:
print_tabs(tabs, fd);
- fprintf(fd, "lttng_write_string_%s(buffer, to_base, to, from, len, obj->%s);\n");
+ fprintf(fd, "lttng_write_string_%s(buffer, to_base, to, from, len, obj->%s);\n", basename, field_name);
break;
case SEQUENCE:
print_tabs(tabs, fd);
fprintf(fd, "lttng_write_array_%s(buffer, to_base, to, from, len, obj->%s)", basename,
field_name);
break;
+ case NONE:
+ printf("Error : type NONE unexpected\n");
+ return 1;
+ break;
}
return 0;
fprintf(fd, "static inline size_t lttng_get_alignment_sequence_%s(\n",
basename);
print_tabs(2, fd);
- if(print_type(td->type, fd, 0, basename, "")) return 1;
+ if(print_type(td, fd, 0, basename, "")) return 1;
fprintf(fd, " *obj)\n");
fprintf(fd, "{\n");
print_tabs(1, fd);
print_tabs(1, fd);
fprintf(fd, "localign = ");
if(print_type_alignment(((field_t*)td->fields.array[0])->type,
- fd, 0, basename, field->name)) return 1;
+ fd, 0, basename, ((field_t*)td->fields.array[0])->name)) return 1;
fprintf(fd, ";\n");
print_tabs(1, fd);
fprintf(fd, "align = max(align, localign);\n");
print_tabs(1, fd);
fprintf(fd, "localign = ");
if(print_type_alignment(((field_t*)td->fields.array[1])->type,
- fd, 0, basename, field->name)) return 1;
+ fd, 0, basename, ((field_t*)td->fields.array[1])->name)) return 1;
fprintf(fd, ";\n");
print_tabs(1, fd);
fprintf(fd, "align = max(align, localign);\n");
fprintf(fd, "static inline size_t lttng_get_alignment_struct_%s(\n",
basename);
print_tabs(2, fd);
- if(print_type(td->type, fd, 0, basename, "")) return 1;
+ if(print_type(td, fd, 0, basename, "")) return 1;
fprintf(fd, " *obj)\n");
fprintf(fd, "{\n");
print_tabs(1, fd);
fprintf(fd, "static inline size_t lttng_get_alignment_union_%s(\n",
basename);
print_tabs(2, fd);
- if(print_type(td->type, fd, 0, basename, "")) return 1;
+ if(print_type(td, fd, 0, basename, "")) return 1;
fprintf(fd, " *obj)\n");
fprintf(fd, "{\n");
print_tabs(1, fd);
fprintf(fd, "static inline size_t lttng_get_alignment_array_%s(\n",
basename);
print_tabs(2, fd);
- if(print_type(td->type, fd, 0, basename, "")) return 1;
+ if(print_type(td, fd, 0, basename, "")) return 1;
fprintf(fd, " obj)\n");
fprintf(fd, "{\n");
print_tabs(1, fd);
fprintf(fd, "return \n");
if(print_type_alignment(((field_t*)td->fields.array[0])->type,
- fd, 0, basename, field->name)) return 1;
+ fd, 0, basename, ((field_t*)td->fields.array[0])->name)) return 1;
fprintf(fd, ";\n");
break;
default:
fprintf(fd, "}\n");
fprintf(fd, "\n");
+ return 0;
}
/* print type write function.
print_tabs(2, fd);
fprintf(fd, "size_t *len,\n");
print_tabs(2, fd);
- if(print_type(td->type, fd, 0, basename, "")) return 1;
+ if(print_type(td, fd, 0, basename, "")) return 1;
switch(td->type) {
case SEQUENCE:
print_tabs(1, fd);
fprintf(fd, "align = \n");
- if(print_type_alignment(td, fd, 0, basename, field->name)) return 1;
+ if(print_type_alignment(td, fd, 0, basename, field_name)) return 1;
fprintf(fd, ";\n");
fprintf(fd, "\n");
print_tabs(1, fd);
fprintf(fd, "\n");
print_tabs(1, fd);
fprintf(fd, "*len += sizeof(");
- if(print_type(td, fd, 0, basename, field->name)) return 1;
+ if(print_type(td, fd, 0, basename, field_name)) return 1;
fprintf(fd, ");\n");
} else {
/* The type contains nested variable size subtypes :
print_tabs(1, fd);
fprintf(fd, "size = sizeof(\n");
if(print_type_write(((field_t*)td->fields.array[0])->type,
- fd, 1, basename, field->name)) return 1;
+ fd, 1, basename, ((field_t*)td->fields.array[0])->name)) return 1;
fprintf(fd, ");\n");
print_tabs(1, fd);
fprintf(fd, "*to += ltt_align(*to, size);\n");
print_tabs(1, fd);
fprintf(fd, "size = sizeof(\n");
if(print_type_write(((field_t*)td->fields.array[1])->type,
- fd, 1, basename, field->name)) return 1;
+ fd, 1, basename, ((field_t*)td->fields.array[1])->name)) return 1;
fprintf(fd, ");\n");
print_tabs(1, fd);
fprintf(fd, "*to += ltt_align(*to, size);\n");
print_tabs(1, fd);
fprintf(fd, "for(unsigned int i=0; i<obj->len; i++) {\n");
if(print_type_write(((field_t*)td->fields.array[1])->type,
- fd, 2, basename, field->name)) return 1;
+ fd, 2, basename, ((field_t*)td->fields.array[1])->name)) return 1;
print_tabs(1, fd);
fprintf(fd, "}\n");
}
print_tabs(1, fd);
fprintf(fd, "for(unsigned int i=0; i<LTTNG_ARRAY_SIZE_%s; i++) {\n", basename);
if(print_type_write(((field_t*)td->fields.array[1])->type,
- fd, 2, basename, field->name)) return 1;
+ fd, 2, basename, ((field_t*)td->fields.array[1])->name)) return 1;
print_tabs(1, fd);
fprintf(fd, "}\n");
}
fprintf(fd, "\n");
for(unsigned int i=0;i<event->fields.position;i++){
- field_t *field = (field_t*)(td->fields.array[i]);
+ field_t *field = (field_t*)(event->fields.array[i]);
type_descriptor_t *type = field->type;
if(print_type_write(type,
fd, 1, basename, field->name)) return 1;
}
print_tabs(2, fd);
- fprintf(fp, "channel = ltt_get_channel_from_index(trace, index);\n");
+ fprintf(fd, "channel = ltt_get_channel_from_index(trace, index);\n");
print_tabs(2, fd);
fprintf(fd, "relayfs_buf = channel->rchan->buf[channel->rchan->buf->cpu];\n");
fprintf(fd, "\n");
/* write data : assume stack alignment is the same as struct alignment. */
for(unsigned int i=0;i<event->fields.position;i++){
- field_t *field = (field_t*)(td->fields.array[i]);
+ field_t *field = (field_t*)(event->fields.array[i]);
type_descriptor_t *type = field->type;
/* Set from */
print_tabs(3, fd);
- fprintf(fd, "from = %s;\n", f->name);
+ fprintf(fd, "from = %s;\n", field->name);
if(print_type_write(type,
fd, 2, basename, field->name)) return 1;
char *token;
parse_file_t in;
facility_t * fac = NULL;
- unsigned long checksum;
char buffer[BUFFER_SIZE];
int generated = FALSE;
//check if any namedType is not defined
checkNamedTypesImplemented(&fac->named_types);
- generateChecksum(fac->name, &checksum, &fac->events);
+ generateChecksum(fac->name, &fac->checksum, &fac->events);
generated = TRUE;
}
getLAnglebracket(in);
f->type = parseType(in,NULL, unnamed_types, named_types);
- /* Those will be set later by preset_field_type_size */
- f->fixed_root = FIELD_UNKNOWN;
- f->fixed_parent = FIELD_UNKNOWN;
- f->fixed_size = FIELD_UNKNOWN;
-
if(tag) {
getLAnglebracket(in);
getForwardslash(in);
getForwardslash(in);
getRAnglebracket(in); //<array size=n>
- getLAnglebracket(in); //<subtype>
+ //getLAnglebracket(in); //<subtype>
/* subfield */
f = (field_t *)memAlloc(sizeof(field_t));
sequence_push(&(t->fields),f);
//getForwardslash(in);
getRAnglebracket(in); //<sequence>
- getLAnglebracket(in); //<sequence size type>
+ //getLAnglebracket(in); //<sequence size type>
/* subfield */
f = (field_t *)memAlloc(sizeof(field_t));
sequence_push(&(t->fields),f);
parseFields(in, f, unnamed_types, named_types, 0);
- getLAnglebracket(in); //<subtype>
+ //getLAnglebracket(in); //<subtype>
/* subfield */
f = (field_t *)memAlloc(sizeof(field_t));
sequence_push(&(t->fields),f);
flag = 1;
break;
case ARRAY:
- sprintf(buf,"%llu", type->size);
+ sprintf(buf,"%zu", type->size);
str = appendString("array ",buf);
flag = 1;
break;
case SEQUENCE:
- sprintf(buf,"%llu", type->size);
+ sprintf(buf,"%zu", type->size);
str = appendString("sequence ",buf);
flag = 1;
break;
if(type->fmt) crc = partial_crc32(type->fmt,crc);
- if(type->type == ARRAY || type->type == SEQUENCE){
- crc = getTypeChecksum(crc,type->nested_type);
- }else if(type->type == STRUCT || type->type == UNION){
+ if(type->type == ARRAY){
+ crc = getTypeChecksum(crc,((field_t*)type->fields.array[0])->type);
+ } else if(type->type ==SEQUENCE) {
+ crc = getTypeChecksum(crc,((field_t*)type->fields.array[0])->type);
+ crc = getTypeChecksum(crc,((field_t*)type->fields.array[1])->type);
+ } else if(type->type == STRUCT || type->type == UNION){
for(pos =0; pos < type->fields.position; pos++){
fld = (field_t *) type->fields.array[pos];
crc = partial_crc32(fld->name,crc);