aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/static_call.c
diff options
context:
space:
mode:
authorPeter Zijlstra <peterz@infradead.org>2020-08-18 15:57:48 +0200
committerIngo Molnar <mingo@kernel.org>2020-09-01 09:58:05 +0200
commit452cddbff74b6a15b9354505671011700fe03710 (patch)
tree75bd4702221b4ca983ef387cfd33f49262e050f0 /kernel/static_call.c
parentx86/alternatives: Teach text_poke_bp() to emulate RET (diff)
downloadlinux-dev-452cddbff74b6a15b9354505671011700fe03710.tar.xz
linux-dev-452cddbff74b6a15b9354505671011700fe03710.zip
static_call: Add static_call_cond()
Extend the static_call infrastructure to optimize the following common pattern: if (func_ptr) func_ptr(args...) For the trampoline (which is in effect a tail-call), we patch the JMP.d32 into a RET, which then directly consumes the trampoline call. For the in-line sites we replace the CALL with a NOP5. NOTE: this is 'obviously' limited to functions with a 'void' return type. NOTE: DEFINE_STATIC_COND_CALL() only requires a typename, as opposed to a full function. Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Signed-off-by: Ingo Molnar <mingo@kernel.org> Cc: Linus Torvalds <torvalds@linux-foundation.org> Link: https://lore.kernel.org/r/20200818135805.042977182@infradead.org
Diffstat (limited to 'kernel/static_call.c')
0 files changed, 0 insertions, 0 deletions