brintos

brintos / linux-shallow public Read only

0
0
Text · 2.0 KiB · 04b4bf6 Raw
76 lines · c
1/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */2/******************************************************************************3 *4 * Name: acgcc.h - GCC specific defines, etc.5 *6 * Copyright (C) 2000 - 2023, Intel Corp.7 *8 *****************************************************************************/9 10#ifndef __ACGCC_H__11#define __ACGCC_H__12 13#ifndef va_arg14#ifdef __KERNEL__15#include <linux/stdarg.h>16#else17#include <stdarg.h>18#endif /* __KERNEL__ */19#endif /* ! va_arg */20 21#define ACPI_INLINE             __inline__22 23/* Function name is used for debug output. Non-ANSI, compiler-dependent */24 25#define ACPI_GET_FUNCTION_NAME          __func__26 27/*28 * This macro is used to tag functions as "printf-like" because29 * some compilers (like GCC) can catch printf format string problems.30 */31#define ACPI_PRINTF_LIKE(c) __attribute__ ((__format__ (__printf__, c, c+1)))32 33/*34 * Some compilers complain about unused variables. Sometimes we don't want to35 * use all the variables (for example, _acpi_module_name). This allows us36 * to tell the compiler warning in a per-variable manner that a variable37 * is unused.38 */39#define ACPI_UNUSED_VAR __attribute__ ((unused))40 41/* GCC supports __VA_ARGS__ in macros */42 43#define COMPILER_VA_MACRO               144 45/* GCC supports native multiply/shift on 32-bit platforms */46 47#define ACPI_USE_NATIVE_MATH6448 49/* GCC did not support __has_attribute until 5.1. */50 51#ifndef __has_attribute52#define __has_attribute(x) 053#endif54 55/*56 * Explicitly mark intentional explicit fallthrough to silence57 * -Wimplicit-fallthrough in GCC 7.1+.58 */59 60#if __has_attribute(__fallthrough__)61#define ACPI_FALLTHROUGH __attribute__((__fallthrough__))62#endif63 64/*65 * Flexible array members are not allowed to be part of a union under66 * C99, but this is not for any technical reason. Work around the67 * limitation.68 */69#define ACPI_FLEX_ARRAY(TYPE, NAME)             \70        struct {                                \71                struct { } __Empty_ ## NAME;    \72                TYPE NAME[];                    \73        }74 75#endif				/* __ACGCC_H__ */76