diff options
Diffstat (limited to 'src/os/unix/freebsd/ngx_rfork_thread.c')
-rw-r--r-- | src/os/unix/freebsd/ngx_rfork_thread.c | 64 |
1 files changed, 0 insertions, 64 deletions
diff --git a/src/os/unix/freebsd/ngx_rfork_thread.c b/src/os/unix/freebsd/ngx_rfork_thread.c deleted file mode 100644 index acd5ec6e2..000000000 --- a/src/os/unix/freebsd/ngx_rfork_thread.c +++ /dev/null @@ -1,64 +0,0 @@ - -#include <ngx_os_thread.h> - -char *ngx_stacks_start; -char *ngx_stacks_end; -size_t ngx_stack_size; - - -/* handle thread-safe errno */ -static int errno0; /* errno for main thread */ -static int *errnos; - -int *__error() -{ - ngx_tid_t tid = ngx_gettid(); - return tid ? &(errnos[ngx_gettid()]) : &errno0; -} - - -int ngx_create_thread(ngx_os_tid_t *tid, void *stack, - int (*func)(void *arg), void *arg, ngx_log_t log) -{ - int id, err; - - id = rfork_thread(RFPROC|RFMEM, stack, func, arg); - err = ngx_errno; - - if (id == -1) - ngx_log_error(NGX_LOG_ERR, log, err, - "ngx_create_os_thread: rfork failed"); - else - *tid = id; - - return err; -} - - -int ngx_create_thread_env(int n, size_t size, ngx_log_t log) -{ - char *addr; - - /* create thread stacks */ - addr = mmap(NULL, n * size, PROT_READ|PROT_WRITE, MAP_ANON, -1, NULL); - if (addr == MAP_FAILED) { - ngx_log_error(NGX_LOG_ERR, log, ngx_errno, - "ngx_create_os_thread_stacks: mmap failed"); - return -1; - } - - nxg_stacks_start = addr; - nxg_stacks_end = addr + n * size; - nxg_stack_size = size; - - /* create thread errno array */ - ngx_test_null(errnos, ngx_calloc(n * sizeof(int)), -1); - - /* create thread tid array */ - ngx_test_null(ngx_os_tids, ngx_calloc(n * sizeof(ngx_os_tid_t)), -1); - - /* allow spinlock in malloc() */ - __isthreaded = 1; - - return 0; -} |