#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. * * 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 */ #include static inline __attribute__((always_inline)) void *zmalloc(size_t len) { return calloc(len, 1); } #define max_t(type, x, y) \ ({ \ type __max1 = (x); \ type __max2 = (y); \ __max1 > __max2 ? __max1: __max2; \ }) #define min_t(type, x, y) \ ({ \ type __min1 = (x); \ type __min2 = (y); \ __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__) */ #endif /* _LTTNG_UST_HELPER_H */