* Christian Babeux ([email protected]) wrote:

Acked-by: Mathieu Desnoyers <[email protected]>

> 
> 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
> 

-- 
Mathieu Desnoyers
Operating System Efficiency R&D Consultant
EfficiOS Inc.
http://www.efficios.com

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

Reply via email to