Annotation of embedaddon/nginx/src/core/ngx_open_file_cache.h, revision 1.1
1.1 ! misho 1:
! 2: /*
! 3: * Copyright (C) Igor Sysoev
! 4: * Copyright (C) Nginx, Inc.
! 5: */
! 6:
! 7:
! 8: #include <ngx_config.h>
! 9: #include <ngx_core.h>
! 10:
! 11:
! 12: #ifndef _NGX_OPEN_FILE_CACHE_H_INCLUDED_
! 13: #define _NGX_OPEN_FILE_CACHE_H_INCLUDED_
! 14:
! 15:
! 16: #define NGX_OPEN_FILE_DIRECTIO_OFF NGX_MAX_OFF_T_VALUE
! 17:
! 18:
! 19: typedef struct {
! 20: ngx_fd_t fd;
! 21: ngx_file_uniq_t uniq;
! 22: time_t mtime;
! 23: off_t size;
! 24: off_t fs_size;
! 25: off_t directio;
! 26: size_t read_ahead;
! 27:
! 28: ngx_err_t err;
! 29: char *failed;
! 30:
! 31: time_t valid;
! 32:
! 33: ngx_uint_t min_uses;
! 34:
! 35: #if (NGX_HAVE_OPENAT)
! 36: size_t disable_symlinks_from;
! 37: unsigned disable_symlinks:2;
! 38: #endif
! 39:
! 40: unsigned test_dir:1;
! 41: unsigned test_only:1;
! 42: unsigned log:1;
! 43: unsigned errors:1;
! 44: unsigned events:1;
! 45:
! 46: unsigned is_dir:1;
! 47: unsigned is_file:1;
! 48: unsigned is_link:1;
! 49: unsigned is_exec:1;
! 50: unsigned is_directio:1;
! 51: } ngx_open_file_info_t;
! 52:
! 53:
! 54: typedef struct ngx_cached_open_file_s ngx_cached_open_file_t;
! 55:
! 56: struct ngx_cached_open_file_s {
! 57: ngx_rbtree_node_t node;
! 58: ngx_queue_t queue;
! 59:
! 60: u_char *name;
! 61: time_t created;
! 62: time_t accessed;
! 63:
! 64: ngx_fd_t fd;
! 65: ngx_file_uniq_t uniq;
! 66: time_t mtime;
! 67: off_t size;
! 68: ngx_err_t err;
! 69:
! 70: uint32_t uses;
! 71:
! 72: #if (NGX_HAVE_OPENAT)
! 73: size_t disable_symlinks_from;
! 74: unsigned disable_symlinks:2;
! 75: #endif
! 76:
! 77: unsigned count:24;
! 78: unsigned close:1;
! 79: unsigned use_event:1;
! 80:
! 81: unsigned is_dir:1;
! 82: unsigned is_file:1;
! 83: unsigned is_link:1;
! 84: unsigned is_exec:1;
! 85: unsigned is_directio:1;
! 86:
! 87: ngx_event_t *event;
! 88: };
! 89:
! 90:
! 91: typedef struct {
! 92: ngx_rbtree_t rbtree;
! 93: ngx_rbtree_node_t sentinel;
! 94: ngx_queue_t expire_queue;
! 95:
! 96: ngx_uint_t current;
! 97: ngx_uint_t max;
! 98: time_t inactive;
! 99: } ngx_open_file_cache_t;
! 100:
! 101:
! 102: typedef struct {
! 103: ngx_open_file_cache_t *cache;
! 104: ngx_cached_open_file_t *file;
! 105: ngx_uint_t min_uses;
! 106: ngx_log_t *log;
! 107: } ngx_open_file_cache_cleanup_t;
! 108:
! 109:
! 110: typedef struct {
! 111:
! 112: /* ngx_connection_t stub to allow use c->fd as event ident */
! 113: void *data;
! 114: ngx_event_t *read;
! 115: ngx_event_t *write;
! 116: ngx_fd_t fd;
! 117:
! 118: ngx_cached_open_file_t *file;
! 119: ngx_open_file_cache_t *cache;
! 120: } ngx_open_file_cache_event_t;
! 121:
! 122:
! 123: ngx_open_file_cache_t *ngx_open_file_cache_init(ngx_pool_t *pool,
! 124: ngx_uint_t max, time_t inactive);
! 125: ngx_int_t ngx_open_cached_file(ngx_open_file_cache_t *cache, ngx_str_t *name,
! 126: ngx_open_file_info_t *of, ngx_pool_t *pool);
! 127:
! 128:
! 129: #endif /* _NGX_OPEN_FILE_CACHE_H_INCLUDED_ */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>