Mercurial > hg > nginx-vendor-1-0
comparison src/event/ngx_event.h @ 332:3a91bfeffaba NGINX_0_6_10
nginx 0.6.10
*) Feature: the "open_file_cache", "open_file_cache_retest", and
"open_file_cache_errors" directives.
*) Bugfix: socket leak; bug appeared in 0.6.7.
*) Bugfix: a charset set by the "charset" directive was not appended to
the "Content-Type" header set by $r->send_http_header().
*) Bugfix: a segmentation fault might occur in worker process if
/dev/poll method was used.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Mon, 03 Sep 2007 00:00:00 +0400 |
parents | f7cd062ee035 |
children | 583decdb82a4 |
comparison
equal
deleted
inserted
replaced
331:b69d5e83bf82 | 332:3a91bfeffaba |
---|---|
39 | 39 |
40 unsigned write:1; | 40 unsigned write:1; |
41 | 41 |
42 unsigned accept:1; | 42 unsigned accept:1; |
43 | 43 |
44 /* used to detect the stale events in kqueue, rt signals and epoll */ | 44 /* used to detect the stale events in kqueue, rtsig, and epoll */ |
45 unsigned instance:1; | 45 unsigned instance:1; |
46 | 46 |
47 /* | 47 /* |
48 * the event was passed or would be passed to a kernel; | 48 * the event was passed or would be passed to a kernel; |
49 * in aio mode - operation was posted. | 49 * in aio mode - operation was posted. |
245 * kqueue in FreeBSD 4.1-4.2 has no NOTE_LOWAT so we need a separate flag. | 245 * kqueue in FreeBSD 4.1-4.2 has no NOTE_LOWAT so we need a separate flag. |
246 */ | 246 */ |
247 #define NGX_USE_LOWAT_EVENT 0x00000010 | 247 #define NGX_USE_LOWAT_EVENT 0x00000010 |
248 | 248 |
249 /* | 249 /* |
250 * The event filter requires to do i/o operation until EAGAIN: | 250 * The event filter requires to do i/o operation until EAGAIN: epoll, rtsig. |
251 * epoll, rt signals. | |
252 */ | 251 */ |
253 #define NGX_USE_GREEDY_EVENT 0x00000020 | 252 #define NGX_USE_GREEDY_EVENT 0x00000020 |
254 | 253 |
255 /* | 254 /* |
256 * The event filter is epoll. | 255 * The event filter is epoll. |
257 */ | 256 */ |
258 #define NGX_USE_EPOLL_EVENT 0x00000040 | 257 #define NGX_USE_EPOLL_EVENT 0x00000040 |
259 | 258 |
260 /* | 259 /* |
261 * No need to add or delete the event filters: rt signals. | 260 * No need to add or delete the event filters: rtsig. |
262 */ | 261 */ |
263 #define NGX_USE_RTSIG_EVENT 0x00000080 | 262 #define NGX_USE_RTSIG_EVENT 0x00000080 |
264 | 263 |
265 /* | 264 /* |
266 * No need to add or delete the event filters: overlapped, aio_read, | 265 * No need to add or delete the event filters: overlapped, aio_read, |
274 */ | 273 */ |
275 #define NGX_USE_IOCP_EVENT 0x00000200 | 274 #define NGX_USE_IOCP_EVENT 0x00000200 |
276 | 275 |
277 /* | 276 /* |
278 * The event filter has no opaque data and requires file descriptors table: | 277 * The event filter has no opaque data and requires file descriptors table: |
279 * poll, /dev/poll, rt signals. | 278 * poll, /dev/poll, rtsig. |
280 */ | 279 */ |
281 #define NGX_USE_FD_EVENT 0x00000400 | 280 #define NGX_USE_FD_EVENT 0x00000400 |
282 | 281 |
283 /* | 282 /* |
284 * The event module handles periodic or absolute timer event by itself: | 283 * The event module handles periodic or absolute timer event by itself: |
285 * kqueue in FreeBSD 4.4 and NetBSD 2.0, Solaris 10's event ports. | 284 * kqueue in FreeBSD 4.4, NetBSD 2.0, and MacOSX 10.4, Solaris 10's event ports. |
286 */ | 285 */ |
287 #define NGX_USE_TIMER_EVENT 0x00000800 | 286 #define NGX_USE_TIMER_EVENT 0x00000800 |
288 | 287 |
289 /* | 288 /* |
290 * All event filters on file descriptor are deleted after a notification: | 289 * All event filters on file descriptor are deleted after a notification: |
291 * Solaris 10's event ports. | 290 * Solaris 10's event ports. |
292 */ | 291 */ |
293 #define NGX_USE_EVENTPORT_EVENT 0x00001000 | 292 #define NGX_USE_EVENTPORT_EVENT 0x00001000 |
294 | 293 |
295 | 294 /* |
296 | 295 * The event filter support vnode notifications: kqueue. |
297 /* | 296 */ |
298 * The event filter is deleted before the closing file. | 297 #define NGX_USE_VNODE_EVENT 0x00002000 |
299 * Has no meaning for select, poll, kqueue, epoll. | 298 |
300 * /dev/poll: we need to flush POLLREMOVE event before closing file | 299 |
301 */ | 300 /* |
302 | 301 * The event filter is deleted just before the closing file. |
302 * Has no meaning for select and poll. | |
303 * kqueue, epoll, rtsig, eventport: allows to avoid explicit delete, | |
304 * because filter automatically is deleted | |
305 * on file close, | |
306 * | |
307 * /dev/poll: we need to flush POLLREMOVE event | |
308 * before closing file. | |
309 */ | |
303 #define NGX_CLOSE_EVENT 1 | 310 #define NGX_CLOSE_EVENT 1 |
311 | |
312 /* | |
313 * disable temporarily event filter, this may avoid locks | |
314 * in kernel malloc()/free(): kqueue. | |
315 */ | |
304 #define NGX_DISABLE_EVENT 2 | 316 #define NGX_DISABLE_EVENT 2 |
317 | |
318 /* | |
319 * event must be passed to kernel right now, do not wait until batch processing. | |
320 */ | |
321 #define NGX_FLUSH_EVENT 4 | |
305 | 322 |
306 | 323 |
307 /* these flags have a meaning only for kqueue */ | 324 /* these flags have a meaning only for kqueue */ |
308 #define NGX_LOWAT_EVENT 0 | 325 #define NGX_LOWAT_EVENT 0 |
309 #define NGX_VNODE_EVENT 0 | 326 #define NGX_VNODE_EVENT 0 |
316 | 333 |
317 #undef NGX_VNODE_EVENT | 334 #undef NGX_VNODE_EVENT |
318 #define NGX_VNODE_EVENT EVFILT_VNODE | 335 #define NGX_VNODE_EVENT EVFILT_VNODE |
319 | 336 |
320 /* | 337 /* |
321 * NGX_CLOSE_EVENT and NGX_LOWAT_EVENT are the module flags and they would | 338 * NGX_CLOSE_EVENT, NGX_LOWAT_EVENT, and NGX_FLUSH_EVENT are the module flags |
322 * not go into a kernel so we need to choose the value that would not interfere | 339 * and they must not go into a kernel so we need to choose the value |
323 * with any existent and future kqueue flags. kqueue has such values - | 340 * that must not interfere with any existent and future kqueue flags. |
324 * EV_FLAG1, EV_EOF and EV_ERROR. They are reserved and cleared on a kernel | 341 * kqueue has such values - EV_FLAG1, EV_EOF, and EV_ERROR: |
325 * entrance. | 342 * they are reserved and cleared on a kernel entrance. |
326 */ | 343 */ |
327 #undef NGX_CLOSE_EVENT | 344 #undef NGX_CLOSE_EVENT |
328 #define NGX_CLOSE_EVENT EV_EOF | 345 #define NGX_CLOSE_EVENT EV_EOF |
329 | 346 |
330 #undef NGX_LOWAT_EVENT | 347 #undef NGX_LOWAT_EVENT |
331 #define NGX_LOWAT_EVENT EV_FLAG1 | 348 #define NGX_LOWAT_EVENT EV_FLAG1 |
349 | |
350 #undef NGX_FLUSH_EVENT | |
351 #define NGX_FLUSH_EVENT EV_ERROR | |
332 | 352 |
333 #define NGX_LEVEL_EVENT 0 | 353 #define NGX_LEVEL_EVENT 0 |
334 #define NGX_ONESHOT_EVENT EV_ONESHOT | 354 #define NGX_ONESHOT_EVENT EV_ONESHOT |
335 #define NGX_CLEAR_EVENT EV_CLEAR | 355 #define NGX_CLEAR_EVENT EV_CLEAR |
336 | 356 |