laforge has submitted this change. (
https://gerrit.osmocom.org/c/libosmocore/+/27046 )
Change subject: core/utils.h: add OSMO_LIKELY / OSMO_UNLIKELY macros
......................................................................
core/utils.h: add OSMO_LIKELY / OSMO_UNLIKELY macros
These macros are built on top of the __builtin_expect() function [1],
which provides the compiler with branch prediction information.
Similar macros exist in the Linux kernel: likely() / unlikely().
[1]
https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html
Change-Id: I0b029654ba050f079eed4a0574a3fa8019677067
---
M include/osmocom/core/utils.h
1 file changed, 9 insertions(+), 0 deletions(-)
Approvals:
Jenkins Builder: Verified
pespin: Looks good to me, but someone else must approve
laforge: Looks good to me, approved
diff --git a/include/osmocom/core/utils.h b/include/osmocom/core/utils.h
index eda0e39..7625da1 100644
--- a/include/osmocom/core/utils.h
+++ b/include/osmocom/core/utils.h
@@ -38,6 +38,15 @@
/*! Copy a C-string into a sized buffer using sizeof to detect buffer's size */
#define OSMO_STRLCPY_ARRAY(array, src) osmo_strlcpy(array, src, sizeof(array))
+/*! Branch prediction optimizations */
+#if defined(__GNUC__)
+#define OSMO_LIKELY(exp) __builtin_expect(!!(exp), 1)
+#define OSMO_UNLIKELY(exp) __builtin_expect(!!(exp), 0)
+#else
+#define OSMO_LIKELY(exp) exp
+#define OSMO_UNLIKELY(exp) exp
+#endif
+
/*! A mapping between human-readable string and numeric value */
struct value_string {
uint32_t value; /*!< numeric value */
--
To view, visit
https://gerrit.osmocom.org/c/libosmocore/+/27046
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Change-Id: I0b029654ba050f079eed4a0574a3fa8019677067
Gerrit-Change-Number: 27046
Gerrit-PatchSet: 3
Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: merged