From: Steffan Karger Date: Thu, 7 Jan 2016 09:15:16 +0000 (+0100) Subject: polarssl: optimize polar_ok() for non-errors X-Git-Tag: v2.4_alpha1~161 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3a39bf7dfe5a57fe8bc43c073b2a009bb6994e78;p=thirdparty%2Fopenvpn.git polarssl: optimize polar_ok() for non-errors Adding polar_ok() was a good plan for improving error reporting, but also added two function calls (one to polar_log_func_line() and one to polar_log_err()) for each function call wrapped with polar_ok(). Especially in the critical path, this is a waste of time. To avoid this overhead, add a simple static inline wrapper to reduce it to a single branch. v2 - use a static inline wrapper to prevent evaluating 'errval' twice in the macro. Signed-off-by: Steffan Karger Acked-by: Gert Doering Message-Id: <1452158116-17363-1-git-send-email-steffan.karger@fox-it.com> URL: http://article.gmane.org/gmane.network.openvpn.devel/10949 Signed-off-by: Gert Doering --- diff --git a/src/openvpn/crypto_polarssl.h b/src/openvpn/crypto_polarssl.h index bd0f8b865..94306eddc 100644 --- a/src/openvpn/crypto_polarssl.h +++ b/src/openvpn/crypto_polarssl.h @@ -115,6 +115,15 @@ bool polar_log_err(unsigned int flags, int errval, const char *prefix); bool polar_log_func_line(unsigned int flags, int errval, const char *func, int line); +/** Wraps polar_log_func_line() to prevent function calls for non-errors */ +static inline bool polar_log_func_line_lite(unsigned int flags, int errval, + const char *func, int line) { + if (errval) { + return polar_log_func_line (flags, errval, func, line); + } + return true; +} + /** * Check errval and log on error. * @@ -128,7 +137,7 @@ bool polar_log_func_line(unsigned int flags, int errval, const char *func, * @returns true if no errors are detected, false otherwise. */ #define polar_ok(errval) \ - polar_log_func_line(D_CRYPT_ERRORS, errval, __func__, __LINE__) + polar_log_func_line_lite(D_CRYPT_ERRORS, errval, __func__, __LINE__) #endif /* CRYPTO_POLARSSL_H_ */