X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=include%2Fhelper.h;h=e529ba08bc5f2bd0e101e8dbdf5228eba62dd39d;hb=c0c0989ab70574e09b2f7e8b48c2da6af664a849;hp=b9448e3324febca1f1923b6ef01c53532529d36c;hpb=415dfaf718b209207bf492a5f9afa571f76d789c;p=lttng-ust.git diff --git a/include/helper.h b/include/helper.h index b9448e33..e529ba08 100644 --- a/include/helper.h +++ b/include/helper.h @@ -1,24 +1,12 @@ -#ifndef _LTTNG_UST_HELPER_H -#define _LTTNG_UST_HELPER_H - /* - * Copyright (C) 2011 Mathieu Desnoyers - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; version 2.1 of - * the License. + * SPDX-License-Identifier: LGPL-2.1-only * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Copyright (C) 2011 Mathieu Desnoyers */ +#ifndef _LTTNG_UST_HELPER_H +#define _LTTNG_UST_HELPER_H + #include static inline __attribute__((always_inline)) @@ -41,4 +29,29 @@ void *zmalloc(size_t len) __min1 <= __min2 ? __min1: __min2; \ }) +#define LTTNG_ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) + +/* + * Use of __builtin_return_address(0) sometimes seems to cause stack + * corruption on 32-bit PowerPC. Disable this feature on that + * architecture for now by always using the NULL value for the ip + * context. + */ +#if defined(__PPC__) && !defined(__PPC64__) +#define LTTNG_UST_CALLER_IP() NULL +#else /* #if defined(__PPC__) && !defined(__PPC64__) */ +#define LTTNG_UST_CALLER_IP() __builtin_return_address(0) +#endif /* #else #if defined(__PPC__) && !defined(__PPC64__) */ + +/* + * LTTNG_HIDDEN: set the hidden attribute for internal functions + * On Windows, symbols are local unless explicitly exported, + * see https://gcc.gnu.org/wiki/Visibility + */ +#if defined(_WIN32) || defined(__CYGWIN__) +#define LTTNG_HIDDEN +#else +#define LTTNG_HIDDEN __attribute__((visibility("hidden"))) +#endif + #endif /* _LTTNG_UST_HELPER_H */