From ac78b26324a348ebdd108de0c022729b671549fb Mon Sep 17 00:00:00 2001 From: Maxim Dounin Date: Fri, 18 Mar 2016 06:43:52 +0300 Subject: Threads: task pointer stored in ngx_file_t. This simplifies the interface of the ngx_thread_read() function. Additionally, most of the thread operations now explicitly set file->thread_task, file->thread_handler and file->thread_ctx, to facilitate use of thread operations in other places. (Potential problems remain with sendfile in threads though - it uses file->thread_handler as set in ngx_output_chain(), and it should not be overwritten to an incompatible one.) In collaboration with Valentin Bartenev. --- src/os/unix/ngx_files.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/os/unix/ngx_files.c') diff --git a/src/os/unix/ngx_files.c b/src/os/unix/ngx_files.c index 77ed0c0a4..13b9e3f0b 100644 --- a/src/os/unix/ngx_files.c +++ b/src/os/unix/ngx_files.c @@ -88,8 +88,8 @@ typedef struct { ssize_t -ngx_thread_read(ngx_thread_task_t **taskp, ngx_file_t *file, u_char *buf, - size_t size, off_t offset, ngx_pool_t *pool) +ngx_thread_read(ngx_file_t *file, u_char *buf, size_t size, off_t offset, + ngx_pool_t *pool) { ngx_thread_task_t *task; ngx_thread_read_ctx_t *ctx; @@ -98,7 +98,7 @@ ngx_thread_read(ngx_thread_task_t **taskp, ngx_file_t *file, u_char *buf, "thread read: %d, %p, %uz, %O", file->fd, buf, size, offset); - task = *taskp; + task = file->thread_task; if (task == NULL) { task = ngx_thread_task_alloc(pool, sizeof(ngx_thread_read_ctx_t)); @@ -108,7 +108,7 @@ ngx_thread_read(ngx_thread_task_t **taskp, ngx_file_t *file, u_char *buf, task->handler = ngx_thread_read_handler; - *taskp = task; + file->thread_task = task; } ctx = task->ctx; -- cgit v1.2.3