Annotation of embedaddon/nginx/src/event/ngx_event_busy_lock.h, revision 1.1.1.1
1.1 misho 1:
2: /*
3: * Copyright (C) Igor Sysoev
4: * Copyright (C) Nginx, Inc.
5: */
6:
7:
8: #ifndef _NGX_EVENT_BUSY_LOCK_H_INCLUDED_
9: #define _NGX_EVENT_BUSY_LOCK_H_INCLUDED_
10:
11:
12: #include <ngx_config.h>
13: #include <ngx_core.h>
14: #include <ngx_event.h>
15:
16: typedef struct ngx_event_busy_lock_ctx_s ngx_event_busy_lock_ctx_t;
17:
18: struct ngx_event_busy_lock_ctx_s {
19: ngx_event_t *event;
20: ngx_event_handler_pt handler;
21: void *data;
22: ngx_msec_t timer;
23:
24: unsigned locked:1;
25: unsigned waiting:1;
26: unsigned cache_updated:1;
27:
28: char *md5;
29: ngx_int_t slot;
30:
31: ngx_event_busy_lock_ctx_t *next;
32: };
33:
34:
35: typedef struct {
36: u_char *md5_mask;
37: char *md5;
38: ngx_uint_t cacheable;
39:
40: ngx_uint_t busy;
41: ngx_uint_t max_busy;
42:
43: ngx_uint_t waiting;
44: ngx_uint_t max_waiting;
45:
46: ngx_event_busy_lock_ctx_t *events;
47: ngx_event_busy_lock_ctx_t *last;
48:
49: #if (NGX_THREADS)
50: ngx_mutex_t *mutex;
51: #endif
52: } ngx_event_busy_lock_t;
53:
54:
55: ngx_int_t ngx_event_busy_lock(ngx_event_busy_lock_t *bl,
56: ngx_event_busy_lock_ctx_t *ctx);
57: ngx_int_t ngx_event_busy_lock_cacheable(ngx_event_busy_lock_t *bl,
58: ngx_event_busy_lock_ctx_t *ctx);
59: void ngx_event_busy_unlock(ngx_event_busy_lock_t *bl,
60: ngx_event_busy_lock_ctx_t *ctx);
61: void ngx_event_busy_lock_cancel(ngx_event_busy_lock_t *bl,
62: ngx_event_busy_lock_ctx_t *ctx);
63:
64:
65: #endif /* _NGX_EVENT_BUSY_LOCK_H_INCLUDED_ */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>