History

indirect_call_wrapper: extend indirect wrapper to support up to 4 calls

There are many places where 2 annotations are not enough. This patch adds INDIRECT_CALL_3 and INDIRECT_CALL_4 to cover such cases.

Brian Vazquez committed 6 years ago

Commit e678e9d1 parent 13fdc411 file · +12 −0Browse files

Showing the changes to include/linux (1 of 1 file). Show all

Unified · Split

include/linux/indirect_call_wrapper.h+12−0
@@ -23,6 +23,16 @@ · 22 unmodified lines
2323 likely(f == f2) ? f2(__VA_ARGS__) : \
2424 INDIRECT_CALL_1(f, f1, __VA_ARGS__); \
2525 })
26+#define INDIRECT_CALL_3(f, f3, f2, f1, ...) \
27+ ({ \
28+ likely(f == f3) ? f3(__VA_ARGS__) : \
29+ INDIRECT_CALL_2(f, f2, f1, __VA_ARGS__); \
30+ })
31+#define INDIRECT_CALL_4(f, f4, f3, f2, f1, ...) \
32+ ({ \
33+ likely(f == f4) ? f4(__VA_ARGS__) : \
34+ INDIRECT_CALL_3(f, f3, f2, f1, __VA_ARGS__); \
35+ })
2636
2737 #define INDIRECT_CALLABLE_DECLARE(f) f
2838 #define INDIRECT_CALLABLE_SCOPE
@@ -30,6 +40,8 @@ · 1 unmodified line
3040 #else
3141 #define INDIRECT_CALL_1(f, f1, ...) f(__VA_ARGS__)
3242 #define INDIRECT_CALL_2(f, f2, f1, ...) f(__VA_ARGS__)
43+#define INDIRECT_CALL_3(f, f3, f2, f1, ...) f(__VA_ARGS__)
44+#define INDIRECT_CALL_4(f, f4, f3, f2, f1, ...) f(__VA_ARGS__)
3345 #define INDIRECT_CALLABLE_DECLARE(f)
3446 #define INDIRECT_CALLABLE_SCOPE static
3547 #endif