return -EINVAL;
nr_fields = desc->nr_fields;
for (i = 0; i < nr_fields; i++) {
+ if (fields[i].u.ext.nofilter) {
+ continue;
+ }
if (!strcmp(fields[i].name, field_name)) {
field = &fields[i];
break;
switch (fields[i].type.atype) {
case atype_integer:
case atype_enum:
+ case atype_enum_nestable:
field_offset += sizeof(int64_t);
break;
case atype_array:
+ case atype_array_nestable:
case atype_sequence:
+ case atype_sequence_nestable:
field_offset += sizeof(unsigned long);
field_offset += sizeof(void *);
break;
switch (field->type.atype) {
case atype_integer:
case atype_enum:
+ case atype_enum_nestable:
op->op = FILTER_OP_LOAD_FIELD_REF_S64;
break;
case atype_array:
+ case atype_array_nestable:
case atype_sequence:
+ case atype_sequence_nestable:
op->op = FILTER_OP_LOAD_FIELD_REF_SEQUENCE;
break;
case atype_string:
switch (ctx_field->event_field.type.atype) {
case atype_integer:
case atype_enum:
+ case atype_enum_nestable:
op->op = FILTER_OP_GET_CONTEXT_REF_S64;
break;
/* Sequence and array supported as string */
case atype_string:
case atype_array:
+ case atype_array_nestable:
case atype_sequence:
+ case atype_sequence_nestable:
op->op = FILTER_OP_GET_CONTEXT_REF_STRING;
break;
case atype_float:
/*
* Insert at specified priority (seqnum) in increasing
- * order.
+ * order. If there already is a bytecode of the same priority,
+ * insert the new bytecode right after it.
*/
cds_list_for_each_entry_reverse(runtime,
&event->bytecode_runtime_head, node) {
- if (runtime->bc->bc.seqnum < bc->bc.seqnum) {
+ if (runtime->bc->bc.seqnum <= bc->bc.seqnum) {
/* insert here */
insert_loc = &runtime->node;
goto add_within;