From b12df65abbf3dbb4dd730fc5b9fbb5ef3d2ec84d Mon Sep 17 00:00:00 2001 From: Vyacheslav Cherkashin Date: Thu, 3 Oct 2013 17:57:29 +0400 Subject: [PATCH] [IMPROVE] add US filter for events Change-Id: I3ae13a254dc26d104986aeba3f1fcb611f80cd8a Signed-off-by: Vyacheslav Cherkashin --- us_manager/us_manager.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/us_manager/us_manager.c b/us_manager/us_manager.c index e8ee608..267cb17 100644 --- a/us_manager/us_manager.c +++ b/us_manager/us_manager.c @@ -27,11 +27,13 @@ #include "pf/pf_group.h" #include "sspt/sspt_proc.h" #include "helper.h" +#include /* FIXME: move /un/init_msg() elsewhere and remove this include */ #include /* for /un/init_msg() */ + static DEFINE_MUTEX(mutex_inst); static int flag_inst = 0; @@ -98,10 +100,52 @@ unlock: } EXPORT_SYMBOL_GPL(usm_start); + + + + +/* ============================================================================ + * === US_FILTER === + * ============================================================================ + */ +static int us_filter(struct task_struct *task) +{ + return !!sspt_proc_get_by_task(task); +} + +static struct ev_filter ev_us_filter = { + .name = "traced_process_only", + .filter = us_filter +}; + +static int init_us_filter(void) +{ + int ret; + + ret = event_filter_register(&ev_us_filter); + if (ret) + return ret; + + return event_filter_set(ev_us_filter.name); +} + +static void exit_us_filter(void) +{ + event_filter_unregister(&ev_us_filter); +} + + + + + static int __init init_us_manager(void) { int ret; + ret = init_us_filter(); + if (ret) + return ret; + init_msg(32*1024); ret = init_helper(); @@ -120,6 +164,7 @@ static void __exit exit_us_manager(void) uninit_msg(); uninit_helper(); + exit_us_filter(); } module_init(init_us_manager); -- 2.7.4