diff --git a/src/backends/backends.c b/src/backends/backends.c index 02a17bcf8..fc0597f77 100644 --- a/src/backends/backends.c +++ b/src/backends/backends.c @@ -19,6 +19,8 @@ #include "execution/background_workers.h" #include "execution/execution_contexts/modelRun_ctx.h" +RAI_LoadedBackends RAI_backends = {0}; + static bool _ValidateFuncExists(RedisModuleCtx *ctx, void *func_ptr, const char *func_name, const char *backend_name, const char *path) { if (func_ptr == NULL) { diff --git a/src/backends/backends.h b/src/backends/backends.h index 6cb8b2ef3..4f664f31d 100644 --- a/src/backends/backends.h +++ b/src/backends/backends.h @@ -100,7 +100,7 @@ typedef struct RAI_LoadedBackends { RAI_LoadedBackend onnx; } RAI_LoadedBackends; -RAI_LoadedBackends RAI_backends; +extern RAI_LoadedBackends RAI_backends; int RAI_LoadBackend(RedisModuleCtx *ctx, int backend, const char *path); diff --git a/src/backends/backends_api.h b/src/backends/backends_api.h index 7d7919f27..3333dc038 100644 --- a/src/backends/backends_api.h +++ b/src/backends/backends_api.h @@ -3,12 +3,12 @@ #include #include "redismodule.h" -#ifdef BACKENDS_API_EXTERN -#define BACKENDS_API extern +#ifdef BACKENDS_API_MAIN +#define BACKENDS_API #endif #ifndef BACKENDS_API -#define BACKENDS_API +#define BACKENDS_API extern #endif typedef struct RAI_Tensor RAI_Tensor; diff --git a/src/backends/onnx_timeout.c b/src/backends/onnx_timeout.c index f015011bc..9c4e3e47f 100644 --- a/src/backends/onnx_timeout.c +++ b/src/backends/onnx_timeout.c @@ -7,6 +7,8 @@ #include "redis_ai_objects/stats.h" #include "backends_api.h" +OnnxGlobalRunSessions *onnx_global_run_sessions = NULL; + int RAI_InitGlobalRunSessionsORT() { onnx_global_run_sessions = RedisModule_Alloc(sizeof(OnnxGlobalRunSessions)); diff --git a/src/backends/onnx_timeout.h b/src/backends/onnx_timeout.h index 63935fe83..f357cb4fb 100644 --- a/src/backends/onnx_timeout.h +++ b/src/backends/onnx_timeout.h @@ -35,7 +35,7 @@ typedef struct OnnxGlobalRunSessions { pthread_rwlock_t rwlock; } OnnxGlobalRunSessions; -OnnxGlobalRunSessions *onnx_global_run_sessions; +extern OnnxGlobalRunSessions *onnx_global_run_sessions; /** * @brief This is called whenever Onnx backend is loaded. It creates the global diff --git a/src/backends/onnxruntime.c b/src/backends/onnxruntime.c index aee7a42d6..62f0324fa 100644 --- a/src/backends/onnxruntime.c +++ b/src/backends/onnxruntime.c @@ -1,4 +1,5 @@ #define REDISMODULE_MAIN +#define BACKENDS_API_MAIN #include #include "backends/util.h" #include diff --git a/src/backends/tflite.c b/src/backends/tflite.c index 7ae2d1021..839994820 100644 --- a/src/backends/tflite.c +++ b/src/backends/tflite.c @@ -1,10 +1,14 @@ #define REDISMODULE_MAIN +#define BACKENDS_API_MAIN #include "backends/util.h" #include "backends/tflite.h" #include "util/arr.h" #include "libtflite_c/tflite_c.h" #include "redis_ai_objects/tensor.h" + +RAI_LoadedBackends RAI_backends = {0}; + int RAI_InitBackendTFLite(int (*get_api_fn)(const char *, void *)) { get_api_fn("RedisModule_Alloc", ((void **)&RedisModule_Alloc)); get_api_fn("RedisModule_Calloc", ((void **)&RedisModule_Calloc)); diff --git a/src/execution/DAG/dag.c b/src/execution/DAG/dag.c index aac10a04f..30466438c 100644 --- a/src/execution/DAG/dag.c +++ b/src/execution/DAG/dag.c @@ -32,7 +32,6 @@ #include #include -#include "redisai.h" #include "rmutil/args.h" #include "rmutil/alloc.h" #include "util/arr.h" diff --git a/src/execution/run_queue_info.c b/src/execution/run_queue_info.c index 7ef559da6..0e06dfd89 100644 --- a/src/execution/run_queue_info.c +++ b/src/execution/run_queue_info.c @@ -3,6 +3,8 @@ #include "backends/backends.h" #include "background_workers.h" +AI_dict *RunQueues = NULL; + RunQueueInfo *RunQueue_Create(const char *device_str) { size_t device_str_len = strlen(device_str); diff --git a/src/execution/run_queue_info.h b/src/execution/run_queue_info.h index da898a267..4de42c467 100644 --- a/src/execution/run_queue_info.h +++ b/src/execution/run_queue_info.h @@ -11,7 +11,7 @@ #include "queue.h" #include "dictionaries.h" -AI_dict *RunQueues; +extern AI_dict *RunQueues; typedef struct RunQueueInfo { pthread_mutex_t run_queue_mutex; diff --git a/src/redis_ai_objects/stats.c b/src/redis_ai_objects/stats.c index eaa51de23..dbdaa444b 100644 --- a/src/redis_ai_objects/stats.c +++ b/src/redis_ai_objects/stats.c @@ -11,6 +11,8 @@ #include "stats.h" #include "util/string_utils.h" +AI_dict *run_stats = NULL; + long long ustime(void) { struct timeval tv; long long ust; diff --git a/src/redis_ai_objects/stats.h b/src/redis_ai_objects/stats.h index 27edea14e..c089b4711 100644 --- a/src/redis_ai_objects/stats.h +++ b/src/redis_ai_objects/stats.h @@ -25,7 +25,7 @@ struct RedisAI_RunStats { long long nerrors; }; -AI_dict *run_stats; +extern AI_dict *run_stats; long long ustime(void); mstime_t mstime(void); diff --git a/src/redis_ai_objects/tensor.c b/src/redis_ai_objects/tensor.c index 8a8643223..eb4fb156e 100644 --- a/src/redis_ai_objects/tensor.c +++ b/src/redis_ai_objects/tensor.c @@ -14,7 +14,6 @@ #include "tensor.h" #include "err.h" #include "arr.h" -#include "redisai.h" #include "version.h" #include "tensor_struct.h" #include "rmutil/alloc.h" diff --git a/src/redisai.c b/src/redisai.c index 79d60e69e..40244c831 100644 --- a/src/redisai.c +++ b/src/redisai.c @@ -4,6 +4,7 @@ #endif #define REDISMODULE_MAIN +#define REDISAI_MAIN #include "redismodule.h" #include "redis_ai_objects/tensor.h" #include "execution/command_parser.h" diff --git a/src/redisai.h b/src/redisai.h index 9804263eb..a97b0e413 100644 --- a/src/redisai.h +++ b/src/redisai.h @@ -6,12 +6,12 @@ #define REDISAI_LLAPI_VERSION 1 #define MODULE_API_FUNC(x) (*x) -#ifdef REDISAI_EXTERN -#define REDISAI_API extern +#ifdef REDISAI_MAIN +#define REDISAI_API #endif #ifndef REDISAI_API -#define REDISAI_API +#define REDISAI_API extern #endif #ifndef REDISAI_H_INCLUDE