Messages in this thread Patch in this message | | | Date | Tue, 10 Nov 2020 11:39:09 +0100 | From | Peter Zijlstra <> | Subject | Re: [RFC PATCH 4/7] preempt/dynamic: Provide cond_resched() and might_resched() static calls |
| |
On Tue, Nov 10, 2020 at 01:56:06AM +0100, Frederic Weisbecker wrote:
> +#ifdef CONFIG_PREEMPT_DYNAMIC > +DEFINE_STATIC_CALL(cond_resched, __static_call_return0); > +EXPORT_STATIC_CALL(cond_resched); > + > +DEFINE_STATIC_CALL(might_resched, __static_call_return0); > +EXPORT_STATIC_CALL(might_resched); > #endif
I suppose we want the below and change the above to use EXPORT_STATIC_CALL_TRAMP().
--- Subject: static_call: EXPORT_STATIC_CALL_TRAMP() From: Peter Zijlstra <peterz@infradead.org> Date: Tue Nov 10 11:37:48 CET 2020
For when we want to allow modules to call the static_call() but not change it.
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> --- include/linux/static_call.h | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-)
--- a/include/linux/static_call.h +++ b/include/linux/static_call.h @@ -160,13 +160,19 @@ extern int static_call_text_reserved(voi #define static_call_cond(name) (void)__static_call(name) +#define EXPORT_STATIC_CALL_TRAMP(name) \ + EXPORT_SYMBOL(STATIC_CALL_TRAMP(name)) + #define EXPORT_STATIC_CALL(name) \ EXPORT_SYMBOL(STATIC_CALL_KEY(name)); \ - EXPORT_SYMBOL(STATIC_CALL_TRAMP(name)) + EXPORT_STATIC_CALL_TRAMP(name) + +#define EXPORT_STATIC_CALL_TRAMP_GPL(name) \ + EXPORT_SYMBOL_GPL(STATIC_CALL_TRAMP(name)) #define EXPORT_STATIC_CALL_GPL(name) \ EXPORT_SYMBOL_GPL(STATIC_CALL_KEY(name)); \ - EXPORT_SYMBOL_GPL(STATIC_CALL_TRAMP(name)) + EXPORT_STATIC_CALL_TRAMP_GPL(name) #elif defined(CONFIG_HAVE_STATIC_CALL) @@ -206,13 +212,19 @@ static inline int static_call_text_reser return 0; } +#define EXPORT_STATIC_CALL_TRAMP(name) \ + EXPORT_SYMBOL(STATIC_CALL_TRAMP(name)) + #define EXPORT_STATIC_CALL(name) \ EXPORT_SYMBOL(STATIC_CALL_KEY(name)); \ - EXPORT_SYMBOL(STATIC_CALL_TRAMP(name)) + EXPORT_STATIC_CALL_TRAMP(name) + +#define EXPORT_STATIC_CALL_TRAMP_GPL(name) \ + EXPORT_SYMBOL_GPL(STATIC_CALL_TRAMP(name)) #define EXPORT_STATIC_CALL_GPL(name) \ EXPORT_SYMBOL_GPL(STATIC_CALL_KEY(name)); \ - EXPORT_SYMBOL_GPL(STATIC_CALL_TRAMP(name)) + EXPORT_STATIC_CALL_TRAMP_GPL(name) #else /* Generic implementation */ @@ -269,6 +281,9 @@ static inline int static_call_text_reser return 0; } +#define EXPORT_STATIC_CALL_TRAMP(name) +#define EXPORT_STATIC_CALL_TRAMP_GPL(name) + #define EXPORT_STATIC_CALL(name) EXPORT_SYMBOL(STATIC_CALL_KEY(name)) #define EXPORT_STATIC_CALL_GPL(name) EXPORT_SYMBOL_GPL(STATIC_CALL_KEY(name))
| |