mirror of https://gerrit.osmocom.org/libosmocore
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
This commit is contained in:
parent
1790f1763a
commit
e59e839dd9
|
@ -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 */
|
||||
|
|
Loading…
Reference in New Issue