]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/blame - include/linux/static_call_types.h
static_call: Add inline static call infrastructure
[mirror_ubuntu-jammy-kernel.git] / include / linux / static_call_types.h
CommitLineData
115284d8
JP
1/* SPDX-License-Identifier: GPL-2.0 */
2#ifndef _STATIC_CALL_TYPES_H
3#define _STATIC_CALL_TYPES_H
4
9183c3f9 5#include <linux/types.h>
115284d8
JP
6#include <linux/stringify.h>
7
8#define STATIC_CALL_KEY_PREFIX __SCK__
9183c3f9
JP
9#define STATIC_CALL_KEY_PREFIX_STR __stringify(STATIC_CALL_KEY_PREFIX)
10#define STATIC_CALL_KEY_PREFIX_LEN (sizeof(STATIC_CALL_KEY_PREFIX_STR) - 1)
115284d8
JP
11#define STATIC_CALL_KEY(name) __PASTE(STATIC_CALL_KEY_PREFIX, name)
12
13#define STATIC_CALL_TRAMP_PREFIX __SCT__
14#define STATIC_CALL_TRAMP_PREFIX_STR __stringify(STATIC_CALL_TRAMP_PREFIX)
9183c3f9 15#define STATIC_CALL_TRAMP_PREFIX_LEN (sizeof(STATIC_CALL_TRAMP_PREFIX_STR) - 1)
115284d8
JP
16#define STATIC_CALL_TRAMP(name) __PASTE(STATIC_CALL_TRAMP_PREFIX, name)
17#define STATIC_CALL_TRAMP_STR(name) __stringify(STATIC_CALL_TRAMP(name))
18
9183c3f9
JP
19/*
20 * The static call site table needs to be created by external tooling (objtool
21 * or a compiler plugin).
22 */
23struct static_call_site {
24 s32 addr;
25 s32 key;
26};
27
115284d8 28#endif /* _STATIC_CALL_TYPES_H */