From d723e9056812fdee222f1156f45f7a43393c5863 Mon Sep 17 00:00:00 2001 From: Mathieu Desnoyers Date: Sun, 25 Sep 2016 10:46:44 -0400 Subject: [PATCH] Performance: mark ring buffer do_copy callers always inline The underlying copy operation is more efficient if the size is a constant, which only happens if this function is inlined in the caller. Otherwise, we end up calling memcpy for each field. Force inlining for performance reasons for: - lib_ring_buffer_do_strcpy, - lib_ring_buffer_do_strcpy_from_user_inatomic, - lib_ring_buffer_copy_from_user_inatomic. Signed-off-by: Mathieu Desnoyers --- lib/ringbuffer/backend.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/ringbuffer/backend.h b/lib/ringbuffer/backend.h index 449d6635..b362a04a 100644 --- a/lib/ringbuffer/backend.h +++ b/lib/ringbuffer/backend.h @@ -168,7 +168,7 @@ void lib_ring_buffer_memset(const struct lib_ring_buffer_config *config, * terminating character is found in @src. Returns the number of bytes * copied. Does *not* terminate @dest with NULL terminating character. */ -static inline +static inline __attribute__((always_inline)) size_t lib_ring_buffer_do_strcpy(const struct lib_ring_buffer_config *config, char *dest, const char *src, size_t len) { @@ -199,7 +199,7 @@ size_t lib_ring_buffer_do_strcpy(const struct lib_ring_buffer_config *config, * directly without having the src pointer checked with access_ok() * previously. */ -static inline +static inline __attribute__((always_inline)) size_t lib_ring_buffer_do_strcpy_from_user_inatomic(const struct lib_ring_buffer_config *config, char *dest, const char __user *src, size_t len) { @@ -297,7 +297,7 @@ void lib_ring_buffer_strcpy(const struct lib_ring_buffer_config *config, * (_ring_buffer_write_from_user_inatomic) if copy is crossing a page boundary. * Disable the page fault handler to ensure we never try to take the mmap_sem. */ -static inline +static inline __attribute__((always_inline)) void lib_ring_buffer_copy_from_user_inatomic(const struct lib_ring_buffer_config *config, struct lib_ring_buffer_ctx *ctx, const void __user *src, size_t len) -- 2.34.1