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);