Update reserved function names starting with one underscore, replacing them as follows: '_k_' with 'z_' '_K_' with 'Z_' '_handler_' with 'z_handl_' '_Cstart' with 'z_cstart' '_Swap' with 'z_swap' This renaming is done on both global and those static function names in kernel/include and include/. Other static function names in kernel/ are renamed by removing the leading underscore. Other function names not starting with any prefix listed above are renamed starting with a 'z_' or 'Z_' prefix. Function names starting with two or three leading underscores are not automatcally renamed since these names will collide with the variants with two or three leading underscores. Various generator scripts have also been updated as well as perf, linker and usb files. These are drivers/serial/uart_handlers.c include/linker/kobject-text.ld kernel/include/syscall_handler.h scripts/gen_kobject_list.py scripts/gen_syscall_header.py Signed-off-by: Patrik Flykt <patrik.flykt@intel.com>
130 lines
3.2 KiB
C
130 lines
3.2 KiB
C
/*
|
|
* Copyright (c) 2010-2014 Wind River Systems, Inc.
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#ifndef ZEPHYR_INCLUDE_TOOLCHAIN_COMMON_H_
|
|
#define ZEPHYR_INCLUDE_TOOLCHAIN_COMMON_H_
|
|
/**
|
|
* @file
|
|
* @brief Common toolchain abstraction
|
|
*
|
|
* Macros to abstract compiler capabilities (common to all toolchains).
|
|
*/
|
|
|
|
/* Abstract use of extern keyword for compatibility between C and C++ */
|
|
#ifdef __cplusplus
|
|
#define EXTERN_C extern "C"
|
|
#else
|
|
#define EXTERN_C extern
|
|
#endif
|
|
|
|
/* Use TASK_ENTRY_CPP to tag task entry points defined in C++ files. */
|
|
|
|
#ifdef __cplusplus
|
|
#define TASK_ENTRY_CPP extern "C"
|
|
#endif
|
|
|
|
/*
|
|
* Generate a reference to an external symbol.
|
|
* The reference indicates to the linker that the symbol is required
|
|
* by the module containing the reference and should be included
|
|
* in the image if the module is in the image.
|
|
*
|
|
* The assembler directive ".set" is used to define a local symbol.
|
|
* No memory is allocated, and the local symbol does not appear in
|
|
* the symbol table.
|
|
*/
|
|
|
|
#ifdef _ASMLANGUAGE
|
|
#define REQUIRES(sym) .set sym ## _Requires, sym
|
|
#else
|
|
#define REQUIRES(sym) __asm__ (".set " # sym "_Requires, " # sym "\n\t");
|
|
#endif
|
|
|
|
#ifdef _ASMLANGUAGE
|
|
#define SECTION .section
|
|
#endif
|
|
|
|
/*
|
|
* If the project is being built for speed (i.e. not for minimum size) then
|
|
* align functions and branches in executable sections to improve performance.
|
|
*/
|
|
|
|
#ifdef _ASMLANGUAGE
|
|
|
|
#if defined(CONFIG_X86) || defined(CONFIG_X86_64)
|
|
|
|
#ifdef PERF_OPT
|
|
#define PERFOPT_ALIGN .balign 16
|
|
#else
|
|
#define PERFOPT_ALIGN .balign 1
|
|
#endif
|
|
|
|
#elif defined(CONFIG_ARM)
|
|
|
|
#define PERFOPT_ALIGN .balign 4
|
|
|
|
#elif defined(CONFIG_ARC)
|
|
|
|
#define PERFOPT_ALIGN .balign 4
|
|
|
|
#elif defined(CONFIG_NIOS2) || defined(CONFIG_RISCV32) || \
|
|
defined(CONFIG_XTENSA)
|
|
#define PERFOPT_ALIGN .balign 4
|
|
|
|
#elif defined(CONFIG_ARCH_POSIX)
|
|
|
|
#else
|
|
|
|
#error Architecture unsupported
|
|
|
|
#endif
|
|
|
|
#define GC_SECTION(sym) SECTION .text.##sym, "ax"
|
|
|
|
#endif /* _ASMLANGUAGE */
|
|
|
|
/* force inlining a function */
|
|
|
|
#if !defined(_ASMLANGUAGE)
|
|
#define ALWAYS_INLINE inline __attribute__((always_inline))
|
|
#endif
|
|
|
|
#define Z_STRINGIFY(x) #x
|
|
#define STRINGIFY(s) Z_STRINGIFY(s)
|
|
|
|
/* concatenate the values of the arguments into one */
|
|
#define _DO_CONCAT(x, y) x ## y
|
|
#define _CONCAT(x, y) _DO_CONCAT(x, y)
|
|
|
|
/* Additionally used as a sentinel by gen_syscalls.py to identify what
|
|
* functions are system calls
|
|
*
|
|
* Note POSIX unit tests don't still generate the system call stubs, so
|
|
* until https://github.com/zephyrproject-rtos/zephyr/issues/5006 is
|
|
* fixed via possibly #4174, we introduce this hack -- which will
|
|
* disallow us to test system calls in POSIX unit testing (currently
|
|
* not used).
|
|
*/
|
|
#ifndef ZTEST_UNITTEST
|
|
#define __syscall static inline
|
|
#else
|
|
#define __syscall
|
|
#endif /* #ifndef ZTEST_UNITTEST */
|
|
|
|
#ifndef BUILD_ASSERT
|
|
/* compile-time assertion that makes the build fail */
|
|
#define BUILD_ASSERT(EXPR) \
|
|
enum _CONCAT(__build_assert_enum, __COUNTER__) { \
|
|
_CONCAT(__build_assert, __COUNTER__) = 1 / !!(EXPR) \
|
|
}
|
|
#endif
|
|
#ifndef BUILD_ASSERT_MSG
|
|
/* build assertion with message -- common implementation swallows message. */
|
|
#define BUILD_ASSERT_MSG(EXPR, MSG) BUILD_ASSERT(EXPR)
|
|
#endif
|
|
|
|
#endif /* ZEPHYR_INCLUDE_TOOLCHAIN_COMMON_H_ */
|