| |
| /* |
| * Copyright (C) Igor Sysoev |
| */ |
| |
| |
| #include <ngx_config.h> |
| #include <ngx_core.h> |
| |
| |
| ngx_int_t ngx_threads_n; |
| |
| |
| static size_t stack_size; |
| |
| |
| ngx_err_t ngx_create_thread(ngx_tid_t *tid, void* (*func)(void *arg), void *arg, |
| ngx_log_t *log) |
| { |
| ngx_err_t err; |
| |
| *tid = CreateThread(NULL, stack_size, |
| (LPTHREAD_START_ROUTINE) func, arg, 0, NULL); |
| |
| if (*tid != NULL) { |
| return 0; |
| } |
| |
| err = ngx_errno; |
| ngx_log_error(NGX_LOG_ALERT, log, err, "CreateThread() failed"); |
| return err; |
| } |
| |
| |
| ngx_int_t ngx_init_threads(int n, size_t size, ngx_cycle_t *cycle) |
| { |
| stack_size = size; |
| |
| return NGX_OK; |
| } |
| |
| |
| ngx_err_t ngx_thread_key_create(ngx_tls_key_t *key) |
| { |
| *key = TlsAlloc(); |
| |
| if (*key == TLS_OUT_OF_INDEXES) { |
| return ngx_errno; |
| } |
| |
| return 0; |
| } |
| |
| |
| ngx_err_t ngx_thread_set_tls(ngx_tls_key_t *key, void *data) |
| { |
| if (TlsSetValue(*key, data) == 0) { |
| return ngx_errno; |
| } |
| |
| return 0; |
| } |
| |
| |
| ngx_mutex_t *ngx_mutex_init(ngx_log_t *log, ngx_uint_t flags) |
| { |
| return (ngx_mutex_t *) 1; |
| } |