Signed-off-by: Christian Babeux <[email protected]>
---
 src/lib/lttng-ctl/filter-ast.h                 |  1 +
 src/lib/lttng-ctl/filter-parser.y              |  5 +++++
 src/lib/lttng-ctl/filter-visitor-generate-ir.c | 12 ++++++++++++
 3 files changed, 18 insertions(+)

diff --git a/src/lib/lttng-ctl/filter-ast.h b/src/lib/lttng-ctl/filter-ast.h
index 97793c0..1767164 100644
--- a/src/lib/lttng-ctl/filter-ast.h
+++ b/src/lib/lttng-ctl/filter-ast.h
@@ -91,6 +91,7 @@ enum unary_op_type {
        AST_UNARY_PLUS,
        AST_UNARY_MINUS,
        AST_UNARY_NOT,
+       AST_UNARY_BIN_NOT,
 };
 
 enum ast_link_type {
diff --git a/src/lib/lttng-ctl/filter-parser.y 
b/src/lib/lttng-ctl/filter-parser.y
index 4ee1d9a..d3be4be 100644
--- a/src/lib/lttng-ctl/filter-parser.y
+++ b/src/lib/lttng-ctl/filter-parser.y
@@ -481,6 +481,11 @@ unary_operator
                        $$ = make_node(parser_ctx, NODE_UNARY_OP);
                        $$->u.unary_op.type = AST_UNARY_NOT;
                }
+       | NOT_BIN
+               {
+                       $$ = make_node(parser_ctx, NODE_UNARY_OP);
+                       $$->u.unary_op.type = AST_UNARY_BIN_NOT;
+               }
        ;
 
 multiplicative_expression
diff --git a/src/lib/lttng-ctl/filter-visitor-generate-ir.c 
b/src/lib/lttng-ctl/filter-visitor-generate-ir.c
index 899713e..d23372f 100644
--- a/src/lib/lttng-ctl/filter-visitor-generate-ir.c
+++ b/src/lib/lttng-ctl/filter-visitor-generate-ir.c
@@ -652,6 +652,8 @@ static
 struct ir_op *make_unary_op(struct filter_parser_ctx *ctx,
                struct filter_node *node, enum ir_side side)
 {
+       const char *op_str = "?";
+
        switch (node->u.unary_op.type) {
        case AST_UNARY_UNKNOWN:
        default:
@@ -703,7 +705,17 @@ struct ir_op *make_unary_op(struct filter_parser_ctx *ctx,
                }
                return op;
        }
+       case AST_UNARY_BIN_NOT:
+       {
+               op_str = "~";
+               goto error_not_supported;
+       }
        }
+
+error_not_supported:
+       fprintf(stderr, "[error] %s: unary operation '%s' not supported\n",
+               __func__, op_str);
+       return NULL;
 }
 
 static
-- 
1.7.11.4


_______________________________________________
lttng-dev mailing list
[email protected]
http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev

Reply via email to