0
0
mirror of https://github.com/OpenVPN/openvpn.git synced 2024-09-20 12:02:28 +02:00

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 <steffan.karger@fox-it.com>
Acked-by: Gert Doering <gert@greenie.muc.de>
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 <gert@greenie.muc.de>
This commit is contained in:
Steffan Karger 2016-01-07 10:15:16 +01:00 committed by Gert Doering
parent aa416be950
commit 3a39bf7dfe

View File

@ -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_ */