mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-10-31 08:44:41 +00:00 
			
		
		
		
	tracing: Allow NOT to filter AND and OR clauses
Add support to allow not "!" for and (&&) and (||). That is: !(field1 == X && field2 == Y) Where the value of the full clause will be notted. Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
This commit is contained in:
		
							parent
							
								
									e12c09cf30
								
							
						
					
					
						commit
						eabb8980a9
					
				
					 1 changed files with 5 additions and 4 deletions
				
			
		|  | @ -489,9 +489,10 @@ static int process_ops(struct filter_pred *preds, | |||
| 		if (!WARN_ON_ONCE(!pred->fn)) | ||||
| 			match = pred->fn(pred, rec); | ||||
| 		if (!!match == type) | ||||
| 			return match; | ||||
| 			break; | ||||
| 	} | ||||
| 	return match; | ||||
| 	/* If not of not match is equal to not of not, then it is a match */ | ||||
| 	return !!match == !op->not; | ||||
| } | ||||
| 
 | ||||
| struct filter_match_preds_data { | ||||
|  | @ -740,10 +741,10 @@ static int filter_set_pred(struct event_filter *filter, | |||
| 		 * then this op can be folded. | ||||
| 		 */ | ||||
| 		if (left->index & FILTER_PRED_FOLD && | ||||
| 		    (left->op == dest->op || | ||||
| 		    ((left->op == dest->op && !left->not) || | ||||
| 		     left->left == FILTER_PRED_INVALID) && | ||||
| 		    right->index & FILTER_PRED_FOLD && | ||||
| 		    (right->op == dest->op || | ||||
| 		    ((right->op == dest->op && !right->not) || | ||||
| 		     right->left == FILTER_PRED_INVALID)) | ||||
| 			dest->index |= FILTER_PRED_FOLD; | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Steven Rostedt (Red Hat)
						Steven Rostedt (Red Hat)