| Function report | 
| Source Code: kernel\trace\trace_events_hist.c | Create Date:2022-07-28 12:30:54 | 
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick | 
| home page | Tree | 
| Annotation kernel can get tool activity | Download SCCT | Chinese | 
Name:parse_expr
Proto:static struct hist_field *parse_expr(struct hist_trigger_data *hist_data, struct trace_event_file *file, char *str, unsigned long flags, char *var_name, unsigned int level)
Type:struct hist_field
Parameter:
| Type | Parameter | Name | 
|---|---|---|
| struct hist_trigger_data * | hist_data | |
| struct trace_event_file * | file | |
| char * | str | |
| unsigned long | flags | |
| char * | var_name | |
| unsigned int | level | 
| 3058 | If level > 3 Then | 
| 3063 | field_op = contains_operator(str) | 
| 3065 | If field_op == FIELD_OP_NONE Then Return parse_atom(hist_data, file, str, & flags, var_name) | 
| 3068 | If field_op == FIELD_OP_UNARY_MINUS Then Return parse_unary(hist_data, file, str, flags, var_name, ++level) | 
| 3072 | Case field_op == FIELD_OP_MINUS | 
| 3073 | sep = "-" | 
| 3074 | Break | 
| 3075 | Case field_op == FIELD_OP_PLUS | 
| 3076 | sep = "+" | 
| 3077 | Break | 
| 3078 | Default | 
| 3079 | Go to free | 
| 3083 | If Not operand1_str || Not str Then Go to free | 
| 3086 | operand_flags = 0 | 
| 3087 | operand1 = parse_atom(hist_data, file, operand1_str, & operand_flags, NULL) | 
| 3096 | operand_flags = 0 | 
| 3097 | operand2 = parse_expr(hist_data, file, str, operand_flags, NULL, ++level) | 
| 3104 | ret = check_expr_operands(tr, operand1, operand2) | 
| 3108 | flags |= HIST_FIELD_FL_EXPR | 
| 3110 | flags |= flags & (HIST_FIELD_FL_TIMESTAMP | HIST_FIELD_FL_TIMESTAMP_USECS) | 
| 3114 | If Not expr Then | 
| 3119 | read_once = true | 
| 3120 | read_once = true | 
| 3125 | * The name field is used for EXPR and VAR_REF fields. VAR * fields contain the variable name in var.name. = expr_str(expr, 0) | 
| 3126 | type = kstrdup(type, GFP_KERNEL) | 
| 3127 | If Not type Then | 
| 3129 | Go to free | 
| 3133 | Case field_op == FIELD_OP_MINUS | 
| 3134 | fn = hist_field_minus | 
| 3135 | Break | 
| 3136 | Case field_op == FIELD_OP_PLUS | 
| 3137 | fn = hist_field_plus | 
| 3138 | Break | 
| 3139 | Default | 
| 3144 | Return expr | 
| 3145 | free : | 
| 3146 | destroy_hist_field(operand1, 0) | 
| 3147 | destroy_hist_field(operand2, 0) | 
| 3148 | destroy_hist_field(expr, 0) | 
| Name | Describe | 
|---|---|
| parse_unary | |
| parse_expr | |
| __create_val_field | |
| create_key_field | 
| Source code conversion tool public plug-in interface | X | 
|---|---|
| Support c/c++/esqlc/java Oracle/Informix/Mysql Plug-in can realize: logical Report Code generation and batch code conversion |