summaryrefslogtreecommitdiff
path: root/src/plugins/HPMHooking.h
diff options
context:
space:
mode:
authorIbrahim Zidan <brahem@aotsw.com>2019-04-18 14:43:03 +0200
committerIbrahim Zidan <brahem@aotsw.com>2019-04-18 17:01:57 +0200
commit4779a6137745f9ccad897b767ecfc9ff3bf5082e (patch)
treed815e24ae32ac7d5892188a91f5c36e7e388135a /src/plugins/HPMHooking.h
parent4fcd9b9a3891f3538ecd8a073c3f0e1c5eb85f55 (diff)
downloadhercules-4779a6137745f9ccad897b767ecfc9ff3bf5082e.tar.gz
hercules-4779a6137745f9ccad897b767ecfc9ff3bf5082e.tar.bz2
hercules-4779a6137745f9ccad897b767ecfc9ff3bf5082e.tar.xz
hercules-4779a6137745f9ccad897b767ecfc9ff3bf5082e.zip
Restore the ability for HPM Hooks to hook to private interfaces
- Starting from 5db7c799055c6ae9c4463f6cf4c88a35597d5d31 the ability to hook to private interfaces was removed, this commit restores this ability by introducing two new macros specifically for this. - addHookPrePriv to add a pre-hook for private interface member - addHookPostPriv to add a post-hook for private interface member Signed-off-by: Ibrahim Zidan <brahem@aotsw.com>
Diffstat (limited to 'src/plugins/HPMHooking.h')
-rw-r--r--src/plugins/HPMHooking.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/plugins/HPMHooking.h b/src/plugins/HPMHooking.h
index 44970863c..f94dccac4 100644
--- a/src/plugins/HPMHooking.h
+++ b/src/plugins/HPMHooking.h
@@ -50,11 +50,21 @@ HPExport struct HPMHooking_interface HPMHooking_s;
HPMi->hooking->AddHook(HOOK_TYPE_PRE, #ifname "->" #funcname, (hook), HPMi->pid) \
)
+#define addHookPrePriv(ifname, funcname, hook) ( \
+ (void)((HPMHOOK_pre_PRIV__ ## ifname ## _ ## funcname)0 == (hook)), \
+ HPMi->hooking->AddHook(HOOK_TYPE_PRE, #ifname "->p->" #funcname, (hook), HPMi->pid) \
+ )
+
#define addHookPost(ifname, funcname, hook) ( \
(void)((HPMHOOK_post_ ## ifname ## _ ## funcname)0 == (hook)), \
HPMi->hooking->AddHook(HOOK_TYPE_POST, #ifname "->" #funcname, (hook), HPMi->pid) \
)
+#define addHookPostPriv(ifname, funcname, hook) ( \
+ (void)((HPMHOOK_post_PRIV__ ## ifname ## _ ## funcname)0 == (hook)), \
+ HPMi->hooking->AddHook(HOOK_TYPE_POST, #ifname "->p->" #funcname, (hook), HPMi->pid) \
+ )
+
/* need better names ;/ */
/* will not run the original function after pre-hook processing is complete (other hooks will run) */
#define hookStop() (HPMi->hooking->HookStop(__func__,HPMi->pid))