Mercurial > hg > nginx
comparison src/event/ngx_event.h @ 53:d1e42f1b8fd4
nginx-0.0.1-2003-01-27-00:08:14 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Sun, 26 Jan 2003 21:08:14 +0000 |
parents | b288069a8696 |
children | 27b628ef907e |
comparison
equal
deleted
inserted
replaced
52:9f2728644651 | 53:d1e42f1b8fd4 |
---|---|
54 | 54 |
55 unsigned active:1; | 55 unsigned active:1; |
56 unsigned ready:1; | 56 unsigned ready:1; |
57 unsigned timedout:1; | 57 unsigned timedout:1; |
58 unsigned blocked:1; | 58 unsigned blocked:1; |
59 unsigned timer_set:1; | |
59 | 60 |
60 unsigned process:1; | 61 unsigned process:1; |
61 unsigned read_discarded:1; | 62 unsigned read_discarded:1; |
62 | 63 |
63 unsigned unexpected_eof:1; | 64 unsigned unexpected_eof:1; |
66 unsigned deferred_accept:1; | 67 unsigned deferred_accept:1; |
67 #endif | 68 #endif |
68 #if (HAVE_KQUEUE) | 69 #if (HAVE_KQUEUE) |
69 unsigned eof:1; | 70 unsigned eof:1; |
70 int error; | 71 int error; |
72 #endif | |
73 | |
74 #if 0 | |
75 void *thr_ctx; /* event thread context if $(CC) doesn't | |
76 understand __thread declaration | |
77 and pthread_getspecific() is too costly */ | |
78 | |
79 #if (NGX_EVENT_T_PADDING) | |
80 int padding[NGX_EVENT_T_PADDING]; /* event should not cross | |
81 cache line in SMP */ | |
82 #endif | |
71 #endif | 83 #endif |
72 }; | 84 }; |
73 | 85 |
74 typedef enum { | 86 typedef enum { |
75 NGX_SELECT_EVENT = 0, | 87 NGX_SELECT_EVENT = 0, |
94 int (*write)(ngx_event_t *ev, char *buf, size_t size); | 106 int (*write)(ngx_event_t *ev, char *buf, size_t size); |
95 */ | 107 */ |
96 } ngx_event_actions_t; | 108 } ngx_event_actions_t; |
97 | 109 |
98 | 110 |
99 /* | 111 /* Event filter requires to read/write the whole data - |
100 NGX_LEVEL_EVENT (default) select, poll, /dev/poll, kqueue | 112 select, poll, /dev/poll, kqueue. */ |
101 requires to read whole data | 113 #define NGX_HAVE_LEVEL_EVENT 1 |
102 NGX_ONESHOT_EVENT select, poll, /dev/poll(*), kqueue, epoll(*) | 114 /* Event filter deleted after notification - select, poll, kqueue. |
103 (*) - additional syscall | 115 /dev/poll, epoll implemetned with additional syscall */ |
104 NGX_CLEAR_EVENT kqueue, epoll | 116 #define NGX_HAVE_ONESHOT_EVENT 2 |
105 NGX_AIO_EVENT overlapped, aio_read, aioread | 117 /* Event filter notify only changes - kqueue, epoll */ |
106 no need to add or delete events | 118 #define NGX_HAVE_CLEAR_EVENT 4 |
107 | 119 /* No nedd to add or delete event filters - overlapped, aio_read, aioread */ |
108 NGX_CLOSE_EVENT kqueue: kqueue deletes events for file that closed | 120 #define NGX_HAVE_AIO_EVENT 8 |
109 /dev/poll: need to flush events before closing | 121 |
110 */ | 122 /* Event filter is deleted before closing file. Has no meaning for select, poll. |
111 | 123 kqueue: kqueue deletes event filters for file that closed |
112 #define NGX_CLOSE_EVENT 1 | 124 so we need only to delete filters in user-level batch array |
125 /dev/poll: we need to flush POLLREMOVE event before closing file | |
126 epoll: ??? */ | |
127 #define NGX_CLOSE_EVENT 1 | |
128 | |
113 | 129 |
114 #if (HAVE_KQUEUE) | 130 #if (HAVE_KQUEUE) |
115 | 131 |
116 #define NGX_READ_EVENT EVFILT_READ | 132 #define NGX_READ_EVENT EVFILT_READ |
117 #define NGX_WRITE_EVENT EVFILT_WRITE | 133 #define NGX_WRITE_EVENT EVFILT_WRITE |
207 extern ngx_connection_t *ngx_connections; | 223 extern ngx_connection_t *ngx_connections; |
208 | 224 |
209 #if !(USE_KQUEUE) | 225 #if !(USE_KQUEUE) |
210 extern ngx_event_actions_t ngx_event_actions; | 226 extern ngx_event_actions_t ngx_event_actions; |
211 extern ngx_event_type_e ngx_event_type; | 227 extern ngx_event_type_e ngx_event_type; |
228 extern int ngx_event_flags; | |
212 #endif | 229 #endif |
213 | 230 |
214 | 231 |
215 void ngx_pre_thread(ngx_array_t *ls, ngx_pool_t *pool, ngx_log_t *log); | 232 void ngx_pre_thread(ngx_array_t *ls, ngx_pool_t *pool, ngx_log_t *log); |
216 void ngx_worker(ngx_log_t *log); | 233 void ngx_worker(ngx_log_t *log); |