Lines Matching refs:filter

19 #include <linux/filter.h>
252 static inline void init_trace_uprobe_filter(struct trace_uprobe_filter *filter)
254 rwlock_init(&filter->rwlock);
255 filter->nr_systemwide = 0;
256 INIT_LIST_HEAD(&filter->perf_events);
259 static inline bool uprobe_filter_is_empty(struct trace_uprobe_filter *filter)
261 return !filter->nr_systemwide && list_empty(&filter->perf_events);
348 init_trace_uprobe_filter(tu->tp.event->filter);
1085 static int trace_uprobe_enable(struct trace_uprobe *tu, filter_func_t filter)
1089 tu->consumer.filter = filter;
1109 WARN_ON(!uprobe_filter_is_empty(tu->tp.event->filter));
1121 struct trace_event_file *file, filter_func_t filter)
1149 WARN_ON(!uprobe_filter_is_empty(tu->tp.event->filter));
1159 ret = trace_uprobe_enable(tu, filter);
1229 __uprobe_perf_filter(struct trace_uprobe_filter *filter, struct mm_struct *mm)
1233 list_for_each_entry(event, &filter->perf_events, hw.tp_list) {
1242 trace_uprobe_filter_event(struct trace_uprobe_filter *filter,
1245 return __uprobe_perf_filter(filter, event->hw.target->mm);
1248 static bool trace_uprobe_filter_remove(struct trace_uprobe_filter *filter,
1253 write_lock(&filter->rwlock);
1256 done = filter->nr_systemwide ||
1258 trace_uprobe_filter_event(filter, event);
1260 filter->nr_systemwide--;
1261 done = filter->nr_systemwide;
1263 write_unlock(&filter->rwlock);
1268 /* This returns true if the filter always covers target mm */
1269 static bool trace_uprobe_filter_add(struct trace_uprobe_filter *filter,
1274 write_lock(&filter->rwlock);
1284 done = filter->nr_systemwide ||
1286 trace_uprobe_filter_event(filter, event);
1287 list_add(&event->hw.tp_list, &filter->perf_events);
1289 done = filter->nr_systemwide;
1290 filter->nr_systemwide++;
1292 write_unlock(&filter->rwlock);
1309 if (trace_uprobe_filter_remove(tu->tp.event->filter, event))
1333 if (trace_uprobe_filter_add(tu->tp.event->filter, event))
1350 struct trace_uprobe_filter *filter;
1355 filter = tu->tp.event->filter;
1359 * filter->rwlock below, if the uprobe has system-wide consumer
1361 if (READ_ONCE(filter->nr_systemwide))
1364 read_lock(&filter->rwlock);
1365 ret = __uprobe_perf_filter(filter, mm);
1366 read_unlock(&filter->rwlock);