mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 22:21:40 +00:00
binder: convert logging macros into functions
Converting binder_debug() and binder_user_error() macros into functions reduces the overall object size by 16936 bytes when cross-compiled with aarch64-linux-gnu-gcc 11.2.0: $ size drivers/android/binder.o.{old,new} text data bss dec hex filename 77935 6168 20264 104367 197af drivers/android/binder.o.old 65551 1616 20264 87431 15587 drivers/android/binder.o.new This is particularly beneficial to functions binder_transaction() and binder_thread_write() which repeatedly use these macros and are both part of the critical path for all binder transactions. $ nm --size vmlinux.{old,new} |grep ' binder_transaction$' 0000000000002f60 t binder_transaction 0000000000002358 t binder_transaction $ nm --size vmlinux.{old,new} |grep binder_thread_write 0000000000001c54 t binder_thread_write 00000000000014a8 t binder_thread_write Acked-by: Christian Brauner (Microsoft) <brauner@kernel.org> Acked-by: Todd Kjos <tkjos@google.com> Signed-off-by: Carlos Llamas <cmllamas@google.com> Link: https://lore.kernel.org/r/20220429235644.697372-5-cmllamas@google.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
d23386ed70
commit
06a3494ef6
@ -133,19 +133,36 @@ static int binder_set_stop_on_user_error(const char *val,
|
|||||||
module_param_call(stop_on_user_error, binder_set_stop_on_user_error,
|
module_param_call(stop_on_user_error, binder_set_stop_on_user_error,
|
||||||
param_get_int, &binder_stop_on_user_error, 0644);
|
param_get_int, &binder_stop_on_user_error, 0644);
|
||||||
|
|
||||||
#define binder_debug(mask, x...) \
|
static __printf(2, 3) void binder_debug(int mask, const char *format, ...)
|
||||||
do { \
|
{
|
||||||
if (binder_debug_mask & mask) \
|
struct va_format vaf;
|
||||||
pr_info_ratelimited(x); \
|
va_list args;
|
||||||
} while (0)
|
|
||||||
|
|
||||||
#define binder_user_error(x...) \
|
if (binder_debug_mask & mask) {
|
||||||
do { \
|
va_start(args, format);
|
||||||
if (binder_debug_mask & BINDER_DEBUG_USER_ERROR) \
|
vaf.va = &args;
|
||||||
pr_info_ratelimited(x); \
|
vaf.fmt = format;
|
||||||
if (binder_stop_on_user_error) \
|
pr_info_ratelimited("%pV", &vaf);
|
||||||
binder_stop_on_user_error = 2; \
|
va_end(args);
|
||||||
} while (0)
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static __printf(1, 2) void binder_user_error(const char *format, ...)
|
||||||
|
{
|
||||||
|
struct va_format vaf;
|
||||||
|
va_list args;
|
||||||
|
|
||||||
|
if (binder_debug_mask & BINDER_DEBUG_USER_ERROR) {
|
||||||
|
va_start(args, format);
|
||||||
|
vaf.va = &args;
|
||||||
|
vaf.fmt = format;
|
||||||
|
pr_info_ratelimited("%pV", &vaf);
|
||||||
|
va_end(args);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (binder_stop_on_user_error)
|
||||||
|
binder_stop_on_user_error = 2;
|
||||||
|
}
|
||||||
|
|
||||||
#define binder_set_extended_error(ee, _id, _command, _param) \
|
#define binder_set_extended_error(ee, _id, _command, _param) \
|
||||||
do { \
|
do { \
|
||||||
|
Loading…
Reference in New Issue
Block a user