Welcome! Log In Create A New Profile

Advanced

[nginx] Modules compatibility: compatibility with NGX_THREADS.

Maxim Dounin
October 10, 2016 12:52PM
details: http://hg.nginx.org/nginx/rev/adc2414856b1
branches:
changeset: 6733:adc2414856b1
user: Maxim Dounin <mdounin@mdounin.ru>
date: Mon Oct 10 18:44:17 2016 +0300
description:
Modules compatibility: compatibility with NGX_THREADS.

With this change it is now possible to load modules compiled without
the "--with-threads" configure option into nginx binary compiled with it,
and vice versa (if a module does not use thread-specific functions),
assuming both use the "--with-compat" option.

diffstat:

src/core/ngx_buf.h | 4 +---
src/core/ngx_connection.h | 2 +-
src/core/ngx_core.h | 27 ++++++++++++---------------
src/core/ngx_file.h | 2 +-
src/core/ngx_module.h | 2 +-
src/event/ngx_event_pipe.h | 2 +-
src/http/ngx_http_cache.h | 2 +-
src/http/ngx_http_core_module.h | 4 +++-
8 files changed, 21 insertions(+), 24 deletions(-)

diffs (141 lines):

diff --git a/src/core/ngx_buf.h b/src/core/ngx_buf.h
--- a/src/core/ngx_buf.h
+++ b/src/core/ngx_buf.h
@@ -88,9 +88,7 @@ struct ngx_output_chain_ctx_s {
unsigned unaligned:1;
unsigned need_in_memory:1;
unsigned need_in_temp:1;
-#if (NGX_HAVE_FILE_AIO || NGX_THREADS)
unsigned aio:1;
-#endif

#if (NGX_HAVE_FILE_AIO)
ngx_output_chain_aio_pt aio_handler;
@@ -99,7 +97,7 @@ struct ngx_output_chain_ctx_s {
#endif
#endif

-#if (NGX_THREADS)
+#if (NGX_THREADS || NGX_COMPAT)
ngx_int_t (*thread_handler)(ngx_thread_task_t *task,
ngx_file_t *file);
ngx_thread_task_t *thread_task;
diff --git a/src/core/ngx_connection.h b/src/core/ngx_connection.h
--- a/src/core/ngx_connection.h
+++ b/src/core/ngx_connection.h
@@ -186,7 +186,7 @@ struct ngx_connection_s {
unsigned busy_count:2;
#endif

-#if (NGX_THREADS)
+#if (NGX_THREADS || NGX_COMPAT)
ngx_thread_task_t *sendfile_task;
#endif
};
diff --git a/src/core/ngx_core.h b/src/core/ngx_core.h
--- a/src/core/ngx_core.h
+++ b/src/core/ngx_core.h
@@ -12,22 +12,19 @@
#include <ngx_config.h>


-typedef struct ngx_module_s ngx_module_t;
-typedef struct ngx_conf_s ngx_conf_t;
-typedef struct ngx_cycle_s ngx_cycle_t;
-typedef struct ngx_pool_s ngx_pool_t;
-typedef struct ngx_chain_s ngx_chain_t;
-typedef struct ngx_log_s ngx_log_t;
-typedef struct ngx_open_file_s ngx_open_file_t;
-typedef struct ngx_command_s ngx_command_t;
-typedef struct ngx_file_s ngx_file_t;
-typedef struct ngx_event_s ngx_event_t;
-typedef struct ngx_event_aio_s ngx_event_aio_t;
-typedef struct ngx_connection_s ngx_connection_t;
-
-#if (NGX_THREADS)
+typedef struct ngx_module_s ngx_module_t;
+typedef struct ngx_conf_s ngx_conf_t;
+typedef struct ngx_cycle_s ngx_cycle_t;
+typedef struct ngx_pool_s ngx_pool_t;
+typedef struct ngx_chain_s ngx_chain_t;
+typedef struct ngx_log_s ngx_log_t;
+typedef struct ngx_open_file_s ngx_open_file_t;
+typedef struct ngx_command_s ngx_command_t;
+typedef struct ngx_file_s ngx_file_t;
+typedef struct ngx_event_s ngx_event_t;
+typedef struct ngx_event_aio_s ngx_event_aio_t;
+typedef struct ngx_connection_s ngx_connection_t;
typedef struct ngx_thread_task_s ngx_thread_task_t;
-#endif

typedef void (*ngx_event_handler_pt)(ngx_event_t *ev);
typedef void (*ngx_connection_handler_pt)(ngx_connection_t *c);
diff --git a/src/core/ngx_file.h b/src/core/ngx_file.h
--- a/src/core/ngx_file.h
+++ b/src/core/ngx_file.h
@@ -23,7 +23,7 @@ struct ngx_file_s {

ngx_log_t *log;

-#if (NGX_THREADS)
+#if (NGX_THREADS || NGX_COMPAT)
ngx_int_t (*thread_handler)(ngx_thread_task_t *task,
ngx_file_t *file);
void *thread_ctx;
diff --git a/src/core/ngx_module.h b/src/core/ngx_module.h
--- a/src/core/ngx_module.h
+++ b/src/core/ngx_module.h
@@ -127,7 +127,7 @@
#define NGX_MODULE_SIGNATURE_21 "0"
#endif

-#if (NGX_THREADS)
+#if (NGX_THREADS || NGX_COMPAT)
#define NGX_MODULE_SIGNATURE_22 "1"
#else
#define NGX_MODULE_SIGNATURE_22 "0"
diff --git a/src/event/ngx_event_pipe.h b/src/event/ngx_event_pipe.h
--- a/src/event/ngx_event_pipe.h
+++ b/src/event/ngx_event_pipe.h
@@ -47,7 +47,7 @@ struct ngx_event_pipe_s {
ngx_event_pipe_output_filter_pt output_filter;
void *output_ctx;

-#if (NGX_THREADS)
+#if (NGX_THREADS || NGX_COMPAT)
ngx_int_t (*thread_handler)(ngx_thread_task_t *task,
ngx_file_t *file);
void *thread_ctx;
diff --git a/src/http/ngx_http_cache.h b/src/http/ngx_http_cache.h
--- a/src/http/ngx_http_cache.h
+++ b/src/http/ngx_http_cache.h
@@ -93,7 +93,7 @@ struct ngx_http_cache_s {
ngx_http_file_cache_t *file_cache;
ngx_http_file_cache_node_t *node;

-#if (NGX_THREADS)
+#if (NGX_THREADS || NGX_COMPAT)
ngx_thread_task_t *thread_task;
#endif

diff --git a/src/http/ngx_http_core_module.h b/src/http/ngx_http_core_module.h
--- a/src/http/ngx_http_core_module.h
+++ b/src/http/ngx_http_core_module.h
@@ -15,6 +15,8 @@

#if (NGX_THREADS)
#include <ngx_thread_pool.h>
+#elif (NGX_COMPAT)
+typedef struct ngx_thread_pool_s ngx_thread_pool_t;
#endif


@@ -409,7 +411,7 @@ struct ngx_http_core_loc_conf_s {
#endif
#endif

-#if (NGX_THREADS)
+#if (NGX_THREADS || NGX_COMPAT)
ngx_thread_pool_t *thread_pool;
ngx_http_complex_value_t *thread_pool_value;
#endif

_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel
Subject Author Views Posted

[nginx] Modules compatibility: compatibility with NGX_THREADS.

Maxim Dounin 432 October 10, 2016 12:52PM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 148
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready