461
|
1
|
|
2 /*
|
|
3 * Copyright (C) Igor Sysoev
|
|
4 */
|
|
5
|
|
6
|
|
7 #include <ngx_config.h>
|
|
8 #include <ngx_core.h>
|
|
9
|
|
10
|
|
11 ngx_int_t ngx_threads_n;
|
|
12
|
|
13
|
|
14 static size_t stack_size;
|
|
15
|
|
16
|
563
|
17 ngx_err_t
|
|
18 ngx_create_thread(ngx_tid_t *tid,
|
|
19 ngx_thread_value_t (__stdcall *func)(void *arg), void *arg, ngx_log_t *log)
|
461
|
20 {
|
|
21 ngx_err_t err;
|
|
22
|
563
|
23 *tid = CreateThread(NULL, stack_size, func, arg, 0, NULL);
|
461
|
24
|
|
25 if (*tid != NULL) {
|
|
26 return 0;
|
|
27 }
|
|
28
|
|
29 err = ngx_errno;
|
|
30 ngx_log_error(NGX_LOG_ALERT, log, err, "CreateThread() failed");
|
|
31 return err;
|
|
32 }
|
|
33
|
|
34
|
563
|
35 ngx_int_t
|
|
36 ngx_init_threads(int n, size_t size, ngx_cycle_t *cycle)
|
461
|
37 {
|
|
38 stack_size = size;
|
|
39
|
|
40 return NGX_OK;
|
|
41 }
|
|
42
|
|
43
|
563
|
44 ngx_err_t
|
|
45 ngx_thread_key_create(ngx_tls_key_t *key)
|
461
|
46 {
|
|
47 *key = TlsAlloc();
|
|
48
|
|
49 if (*key == TLS_OUT_OF_INDEXES) {
|
|
50 return ngx_errno;
|
|
51 }
|
|
52
|
|
53 return 0;
|
|
54 }
|
|
55
|
|
56
|
563
|
57 ngx_err_t
|
|
58 ngx_thread_set_tls(ngx_tls_key_t *key, void *data)
|
461
|
59 {
|
|
60 if (TlsSetValue(*key, data) == 0) {
|
|
61 return ngx_errno;
|
|
62 }
|
|
63
|
|
64 return 0;
|
|
65 }
|
|
66
|
|
67
|
563
|
68 ngx_mutex_t *
|
|
69 ngx_mutex_init(ngx_log_t *log, ngx_uint_t flags)
|
461
|
70 {
|
|
71 return (ngx_mutex_t *) 1;
|
|
72 }
|
501
|
73
|
|
74
|
|
75 /* STUB */
|
|
76
|
563
|
77 void
|
501
|
78 ngx_mutex_lock(ngx_mutex_t *m) {
|
563
|
79 return;
|
501
|
80 }
|
|
81
|
|
82
|
563
|
83
|
501
|
84 ngx_int_t
|
|
85 ngx_mutex_trylock(ngx_mutex_t *m) {
|
|
86 return NGX_OK;
|
|
87 }
|
|
88
|
563
|
89
|
|
90 void
|
|
91 ngx_mutex_unlock(ngx_mutex_t *m) {
|
|
92 return;
|
|
93 }
|
|
94
|
501
|
95 /**/
|