From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail138.messagelabs.com (mail138.messagelabs.com [216.82.249.35]) by kanga.kvack.org (Postfix) with ESMTP id 4EB3C8D0040 for ; Fri, 1 Apr 2011 10:47:22 -0400 (EDT) Received: from d23relay03.au.ibm.com (d23relay03.au.ibm.com [202.81.31.245]) by e23smtp01.au.ibm.com (8.14.4/8.13.1) with ESMTP id p31EhPgY023129 for ; Sat, 2 Apr 2011 01:43:25 +1100 Received: from d23av01.au.ibm.com (d23av01.au.ibm.com [9.190.234.96]) by d23relay03.au.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p31ElIVj1552410 for ; Sat, 2 Apr 2011 01:47:18 +1100 Received: from d23av01.au.ibm.com (loopback [127.0.0.1]) by d23av01.au.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p31ElHWW016736 for ; Sat, 2 Apr 2011 01:47:18 +1100 From: Srikar Dronamraju Date: Fri, 01 Apr 2011 20:07:37 +0530 Message-Id: <20110401143737.15455.30181.sendpatchset@localhost6.localdomain6> In-Reply-To: <20110401143223.15455.19844.sendpatchset@localhost6.localdomain6> References: <20110401143223.15455.19844.sendpatchset@localhost6.localdomain6> Subject: [PATCH v3 2.6.39-rc1-tip 26/26] 26: uprobes: filter chain Sender: owner-linux-mm@kvack.org List-ID: To: Peter Zijlstra , Ingo Molnar Cc: Steven Rostedt , Srikar Dronamraju , Linux-mm , Arnaldo Carvalho de Melo , Linus Torvalds , Masami Hiramatsu , Ananth N Mavinakayanahalli , Christoph Hellwig , Andi Kleen , Thomas Gleixner , Jonathan Corbet , Oleg Nesterov , Andrew Morton , Jim Keniston , Roland McGrath , SystemTap , LKML Loops through the filters callbacks of currently registered consumers to see if any consumer is interested in tracing this task. Signed-off-by: Srikar Dronamraju --- kernel/uprobes.c | 17 +++++++++++++++++ 1 files changed, 17 insertions(+), 0 deletions(-) diff --git a/kernel/uprobes.c b/kernel/uprobes.c index c950f13..62ccb56 100644 --- a/kernel/uprobes.c +++ b/kernel/uprobes.c @@ -450,6 +450,23 @@ static void handler_chain(struct uprobe *uprobe, struct pt_regs *regs) up_read(&uprobe->consumer_rwsem); } +static bool filter_chain(struct uprobe *uprobe, struct task_struct *t) +{ + struct uprobe_consumer *consumer; + bool ret = false; + + down_read(&uprobe->consumer_rwsem); + for (consumer = uprobe->consumers; consumer; + consumer = consumer->next) { + if (!consumer->filter || consumer->filter(consumer, t)) { + ret = true; + break; + } + } + up_read(&uprobe->consumer_rwsem); + return ret; +} + static void add_consumer(struct uprobe *uprobe, struct uprobe_consumer *consumer) { -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: email@kvack.org