STATIC_CALL_KEY
__static_call_update(&STATIC_CALL_KEY(name), \
WRITE_ONCE(STATIC_CALL_KEY(name).func, _func); \
__stringify(.global STATIC_CALL_KEY(xen_hypercall);)
.sc_key = &STATIC_CALL_KEY(_name), \
((typeof(STATIC_CALL_TRAMP(name))*)(STATIC_CALL_KEY(name).func))
__static_call_update(&STATIC_CALL_KEY(name), \
#define static_call_query(name) (READ_ONCE(STATIC_CALL_KEY(name).func))
struct static_call_key STATIC_CALL_KEY(name) = { \
struct static_call_key STATIC_CALL_KEY(name) = { \
struct static_call_key STATIC_CALL_KEY(name) = { \
EXPORT_SYMBOL(STATIC_CALL_KEY(name)); \
EXPORT_SYMBOL_GPL(STATIC_CALL_KEY(name)); \
struct static_call_key STATIC_CALL_KEY(name) = { \
struct static_call_key STATIC_CALL_KEY(name) = { \
struct static_call_key STATIC_CALL_KEY(name) = { \
EXPORT_SYMBOL(STATIC_CALL_KEY(name)); \
EXPORT_SYMBOL_GPL(STATIC_CALL_KEY(name)); \
struct static_call_key STATIC_CALL_KEY(name) = { \
void *func = READ_ONCE(STATIC_CALL_KEY(name).func); \
#define EXPORT_STATIC_CALL(name) EXPORT_SYMBOL(STATIC_CALL_KEY(name))
#define EXPORT_STATIC_CALL_GPL(name) EXPORT_SYMBOL_GPL(STATIC_CALL_KEY(name))
((typeof(STATIC_CALL_TRAMP(name))*)(STATIC_CALL_KEY(name).func))
#define STATIC_CALL_KEY_STR(name) __stringify(STATIC_CALL_KEY(name))
extern struct static_call_key STATIC_CALL_KEY(name); \
__ADDRESSABLE(STATIC_CALL_KEY(name))
extern struct static_call_key STATIC_CALL_KEY(tp_func_##_name); \
.static_call_key = &STATIC_CALL_KEY(tp_func_##_name), \
.key = &STATIC_CALL_KEY(LSM_STATIC_CALL(NAME, NUM)), \
((typeof(STATIC_CALL_TRAMP(name))*)(STATIC_CALL_KEY(name).func))
#define STATIC_CALL_KEY_STR(name) __stringify(STATIC_CALL_KEY(name))
extern struct static_call_key STATIC_CALL_KEY(name); \
__ADDRESSABLE(STATIC_CALL_KEY(name))