MCPcopy Create free account
hub / github.com/F-Stack/f-stack / ngx_devpoll_init

Function ngx_devpoll_init

app/nginx-1.28.0/src/event/modules/ngx_devpoll_module.c:117–191  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

115
116
117static ngx_int_t
118ngx_devpoll_init(ngx_cycle_t *cycle, ngx_msec_t timer)
119{
120 size_t n;
121 ngx_devpoll_conf_t *dpcf;
122
123 dpcf = ngx_event_get_conf(cycle->conf_ctx, ngx_devpoll_module);
124
125 if (dp == -1) {
126 dp = open("/dev/poll", O_RDWR);
127
128 if (dp == -1) {
129 ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
130 "open(/dev/poll) failed");
131 return NGX_ERROR;
132 }
133 }
134
135 if (max_changes < dpcf->changes) {
136 if (nchanges) {
137 n = nchanges * sizeof(struct pollfd);
138 if (write(dp, change_list, n) != (ssize_t) n) {
139 ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
140 "write(/dev/poll) failed");
141 return NGX_ERROR;
142 }
143
144 nchanges = 0;
145 }
146
147 if (change_list) {
148 ngx_free(change_list);
149 }
150
151 change_list = ngx_alloc(sizeof(struct pollfd) * dpcf->changes,
152 cycle->log);
153 if (change_list == NULL) {
154 return NGX_ERROR;
155 }
156
157 if (change_index) {
158 ngx_free(change_index);
159 }
160
161 change_index = ngx_alloc(sizeof(ngx_event_t *) * dpcf->changes,
162 cycle->log);
163 if (change_index == NULL) {
164 return NGX_ERROR;
165 }
166 }
167
168 max_changes = dpcf->changes;
169
170 if (nevents < dpcf->events) {
171 if (event_list) {
172 ngx_free(event_list);
173 }
174

Callers

nothing calls this directly

Calls 3

ngx_log_errorFunction · 0.85
writeFunction · 0.70
ngx_allocFunction · 0.50

Tested by

no test coverage detected