/* StarPU --- Runtime system for heterogeneous multicore architectures.
 *
 * Copyright (C) 2010-2013,2015,2017                      CNRS
 * Copyright (C) 2009-2011,2014                           Université de Bordeaux
 * Copyright (C) 2011-2012                                Inria
 *
 * StarPU 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; either version 2.1 of the License, or (at
 * your option) any later version.
 *
 * StarPU 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 in COPYING.LGPL for more details.
 */

/*! \defgroup API_Toolbox Toolbox

\brief The following macros allow to make GCC extensions portable, and
to have a code which can be compiled with any C compiler.

\def STARPU_GNUC_PREREQ
\ingroup API_Toolbox
Return true (non-zero) if GCC version \p maj.\p min or later is being used (macro taken from glibc.)

\def STARPU_UNLIKELY
\ingroup API_Toolbox
When building with a GNU C Compiler, allow programmers to mark an expression as unlikely.

\def STARPU_LIKELY
\ingroup API_Toolbox
When building with a GNU C Compiler, allow programmers to mark an expression as likely.

\def STARPU_ATTRIBUTE_UNUSED
\ingroup API_Toolbox
When building with a GNU C Compiler, defined to __attribute__((unused))

\def STARPU_ATTRIBUTE_INTERNAL
\ingroup API_Toolbox
When building with a GNU C Compiler, defined to __attribute__((visibility ("internal")))

\def STARPU_ATTRIBUTE_MALLOC
\ingroup API_Toolbox
When building with a GNU C Compiler, defined to __attribute__((malloc))

\def STARPU_ATTRIBUTE_WARN_UNUSED_RESULT
\ingroup API_Toolbox
When building with a GNU C Compiler, defined to __attribute__((warn_unused_result))

\def STARPU_ATTRIBUTE_PURE
\ingroup API_Toolbox
When building with a GNU C Compiler, defined to __attribute__((pure))

\def STARPU_ATTRIBUTE_ALIGNED
\ingroup API_Toolbox
When building with a GNU C Compiler, defined to__attribute__((aligned(size)))

\def STARPU_WARN_UNUSED_RESULT
\ingroup API_Toolbox
When building with a GNU C Compiler, defined to__attribute__((__warn_unused_result__))

\def STARPU_POISON_PTR
\ingroup API_Toolbox
Define a value which can be used to mark pointers as invalid values.

\def STARPU_MIN
\ingroup API_Toolbox
Return the min of the two parameters.

\def STARPU_MAX
\ingroup API_Toolbox
Return the max of the two parameters.

\def STARPU_ASSERT
\ingroup API_Toolbox
Unless StarPU has been configured with the option \ref enable-fast
"--enable-fast", this macro will abort if the expression is false.

\def STARPU_ASSERT_MSG
\ingroup API_Toolbox
Unless StarPU has been configured with the option \ref enable-fast
"--enable-fast", this macro will abort if the expression is false. The
given message will be displayed.

\def STARPU_ABORT
\ingroup API_Toolbox
Abort the program.

\def STARPU_ABORT_MSG
\ingroup API_Toolbox
Abort the program, and display the given message.

\def STARPU_CHECK_RETURN_VALUE
\ingroup API_Toolbox
Abort the program (after displaying \p message) if \p err has a value which is not 0.

\def STARPU_CHECK_RETURN_VALUE_IS
\ingroup API_Toolbox
Abort the program (after displaying \p message) if \p err is different from \p value.

\def STARPU_RMB
\ingroup API_Toolbox
This macro can be used to do a synchronization.

\def STARPU_WMB
\ingroup API_Toolbox
This macro can be used to do a synchronization.

\fn int starpu_get_env_number(const char *str)
\ingroup API_Toolbox
Return the integer value of the environment variable named \p str.
Return 0 otherwise (the variable does not exist or has a non-integer
value).

*/