1010
1111#include <ucm/bistro/bistro.h>
1212#include <ucs/datastruct/list.h>
13+ #include <ucs/sys/preprocessor.h>
1314#include <ucs/type/status.h>
1415#include <pthread.h>
1516
@@ -30,7 +31,7 @@ extern pthread_t volatile ucm_reloc_get_orig_thread;
3031#define _UCM_DEFINE_REPLACE_FUNC (_over_name , _ucm_name , _rettype , _fail_val , ...) \
3132 \
3233 /* Define a symbol which goes to the replacement - in case we are loaded first */ \
33- _rettype _over_name(UCM_FUNC_DEFINE_ARGS (__VA_ARGS__)) \
34+ _rettype _over_name(UCS_FUNC_DEFINE_ARGS (__VA_ARGS__)) \
3435 { \
3536 _rettype res; \
3637 UCM_BISTRO_PROLOGUE; \
@@ -39,7 +40,7 @@ extern pthread_t volatile ucm_reloc_get_orig_thread;
3940 if (ucs_unlikely(ucm_reloc_get_orig_thread == pthread_self())) { \
4041 return (_rettype)_fail_val; \
4142 } \
42- res = _ucm_name(UCM_FUNC_PASS_ARGS (__VA_ARGS__)); \
43+ res = _ucm_name(UCS_FUNC_PASS_ARGS (__VA_ARGS__)); \
4344 UCM_BISTRO_EPILOGUE; \
4445 return res; \
4546 }
@@ -48,11 +49,12 @@ extern pthread_t volatile ucm_reloc_get_orig_thread;
4849 _UCM_DEFINE_DLSYM_FUNC(_name, ucm_orig_##_name, ucm_override_##_name, \
4950 _rettype, __VA_ARGS__)
5051
52+
5153#define _UCM_DEFINE_DLSYM_FUNC (_name , _orig_name , _over_name , _rettype , ...) \
52- _rettype _over_name(UCM_FUNC_DEFINE_ARGS (__VA_ARGS__)); \
54+ _rettype _over_name(UCS_FUNC_DEFINE_ARGS (__VA_ARGS__)); \
5355 \
5456 /* Call the original function using dlsym(RTLD_NEXT) */ \
55- _rettype _orig_name (UCM_FUNC_DEFINE_ARGS (__VA_ARGS__ )) \
57+ _rettype _orig_name (UCS_FUNC_DEFINE_ARGS (__VA_ARGS__ )) \
5658 { \
5759 typedef _rettype (* func_ptr_t ) (__VA_ARGS__ ); \
5860 static func_ptr_t orig_func_ptr = NULL ; \
@@ -67,7 +69,7 @@ extern pthread_t volatile ucm_reloc_get_orig_thread;
6769 ucm_reloc_get_orig_thread = (pthread_t )- 1 ; \
6870 pthread_mutex_unlock (& ucm_reloc_get_orig_lock ); \
6971 } \
70- return orig_func_ptr (UCM_FUNC_PASS_ARGS (__VA_ARGS__ )); \
72+ return orig_func_ptr (UCS_FUNC_PASS_ARGS (__VA_ARGS__ )); \
7173 }
7274
7375#define UCM_DEFINE_REPLACE_DLSYM_FUNC (_name , _rettype , _fail_val , ...) \
@@ -87,58 +89,33 @@ extern pthread_t volatile ucm_reloc_get_orig_thread;
8789 _UCM_DEFINE_DLSYM_FUNC(_name, ucm_orig_##_name##_dlsym, \
8890 ucm_override_##_name, _rettype, __VA_ARGS__) \
8991 \
90- _rettype (*ucm_orig_##_name)(UCM_FUNC_DEFINE_ARGS (__VA_ARGS__)) = \
92+ _rettype (*ucm_orig_##_name)(UCS_FUNC_DEFINE_ARGS (__VA_ARGS__)) = \
9193 ucm_orig_##_name##_dlsym; \
9294 \
9395 _UCM_DEFINE_REPLACE_FUNC(ucm_override_##_name, ucm_##_name, \
9496 _rettype, _fail_val, __VA_ARGS__)
9597
9698#define UCM_DEFINE_SYSCALL_FUNC (_name , _rettype , _syscall_id , ...) \
9799 /* Call syscall */ \
98- _rettype ucm_orig_##_name(UCM_FUNC_DEFINE_ARGS (__VA_ARGS__)) \
100+ _rettype ucm_orig_##_name(UCS_FUNC_DEFINE_ARGS (__VA_ARGS__)) \
99101 { \
100- return (_rettype)syscall(_syscall_id, UCM_FUNC_PASS_ARGS (__VA_ARGS__)); \
102+ return (_rettype)syscall(_syscall_id, UCS_FUNC_PASS_ARGS (__VA_ARGS__)); \
101103 }
102104
103105#if UCM_BISTRO_HOOKS
104106# define UCM_DEFINE_SELECT_FUNC (_name , _rettype , _syscall_id , ...) \
105107 _UCM_DEFINE_DLSYM_FUNC(_name, ucm_orig_##_name##_dlsym, \
106108 ucm_override_##_name, _rettype, __VA_ARGS__) \
107109 UCM_DEFINE_SYSCALL_FUNC(_name##_syscall, _rettype, _syscall_id, __VA_ARGS__) \
108- _rettype ucm_orig_##_name(UCM_FUNC_DEFINE_ARGS (__VA_ARGS__)) \
110+ _rettype ucm_orig_##_name(UCS_FUNC_DEFINE_ARGS (__VA_ARGS__)) \
109111 { \
110112 return (ucm_mmap_hook_mode() == UCM_MMAP_HOOK_BISTRO) ? \
111- ucm_orig_##_name##_syscall(UCM_FUNC_PASS_ARGS (__VA_ARGS__)) : \
112- ucm_orig_##_name##_dlsym(UCM_FUNC_PASS_ARGS (__VA_ARGS__)); \
113+ ucm_orig_##_name##_syscall(UCS_FUNC_PASS_ARGS (__VA_ARGS__)) : \
114+ ucm_orig_##_name##_dlsym(UCS_FUNC_PASS_ARGS (__VA_ARGS__)); \
113115 }
114116#else
115117# define UCM_DEFINE_SELECT_FUNC (_name , _rettype , _syscall_id , ...) \
116118 UCM_DEFINE_DLSYM_FUNC(_name, _rettype, __VA_ARGS__)
117119#endif
118120
119- /*
120- * Define argument list with given types.
121- */
122- #define UCM_FUNC_DEFINE_ARGS (...) \
123- UCS_PP_FOREACH_SEP(_UCM_FUNC_ARG_DEFINE, _, \
124- UCS_PP_ZIP((UCS_PP_SEQ(UCS_PP_NUM_ARGS(__VA_ARGS__))), \
125- (__VA_ARGS__)))
126-
127- /*
128- * Pass auto-generated arguments to a function call.
129- */
130- #define UCM_FUNC_PASS_ARGS (...) \
131- UCS_PP_FOREACH_SEP(_UCM_FUNC_ARG_PASS, _, UCS_PP_SEQ(UCS_PP_NUM_ARGS(__VA_ARGS__)))
132-
133-
134- /*
135- * Helpers
136- */
137- #define _UCM_FUNC_ARG_DEFINE (_ , _bundle ) \
138- __UCM_FUNC_ARG_DEFINE(_, UCS_PP_TUPLE_0 _bundle, UCS_PP_TUPLE_1 _bundle)
139- #define __UCM_FUNC_ARG_DEFINE (_ , _index , _type ) \
140- _type UCS_PP_TOKENPASTE(arg, _index)
141- #define _UCM_FUNC_ARG_PASS (_ , _index ) \
142- UCS_PP_TOKENPASTE(arg, _index)
143-
144121#endif
0 commit comments