From: Luca Boccassi Date: Tue, 21 Apr 2020 16:23:21 +0000 (+0100) Subject: core: add log_get_max_level check optimization in log_unit_full X-Git-Tag: v246-rc1~535^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c5bc2c01eef4d3defb58245960065a063f5f75cf;p=thirdparty%2Fsystemd.git core: add log_get_max_level check optimization in log_unit_full Just as log_full already does, check if the log level would result in logging immediately in the macro in order to avoid doing unnecessary work that adds up in hot spots. --- diff --git a/src/core/unit.h b/src/core/unit.h index 2e103f7ab29..e38871a97c0 100644 --- a/src/core/unit.h +++ b/src/core/unit.h @@ -883,8 +883,9 @@ int unit_can_clean(Unit *u, ExecCleanMask *ret_mask); #define log_unit_full(unit, level, error, ...) \ ({ \ const Unit *_u = (unit); \ - _u ? log_object_internal(level, error, PROJECT_FILE, __LINE__, __func__, _u->manager->unit_log_field, _u->id, _u->manager->invocation_log_field, _u->invocation_id_string, ##__VA_ARGS__) : \ - log_internal(level, error, PROJECT_FILE, __LINE__, __func__, ##__VA_ARGS__); \ + (log_get_max_level() < LOG_PRI(level)) ? -ERRNO_VALUE(error) : \ + _u ? log_object_internal(level, error, PROJECT_FILE, __LINE__, __func__, _u->manager->unit_log_field, _u->id, _u->manager->invocation_log_field, _u->invocation_id_string, ##__VA_ARGS__) : \ + log_internal(level, error, PROJECT_FILE, __LINE__, __func__, ##__VA_ARGS__); \ }) #define log_unit_debug(unit, ...) log_unit_full(unit, LOG_DEBUG, 0, ##__VA_ARGS__)