Revision 533a8cf3
b/async.c | ||
---|---|---|
150 | 150 |
{ |
151 | 151 |
AioContext *ctx = (AioContext *) source; |
152 | 152 |
QEMUBH *bh; |
153 |
int deadline; |
|
153 | 154 |
|
155 |
/* We assume there is no timeout already supplied */ |
|
156 |
*timeout = -1; |
|
154 | 157 |
for (bh = ctx->first_bh; bh; bh = bh->next) { |
155 | 158 |
if (!bh->deleted && bh->scheduled) { |
156 | 159 |
if (bh->idle) { |
... | ... | |
166 | 169 |
} |
167 | 170 |
} |
168 | 171 |
|
172 |
deadline = qemu_timeout_ns_to_ms(timerlistgroup_deadline_ns(&ctx->tlg)); |
|
173 |
if (deadline == 0) { |
|
174 |
*timeout = 0; |
|
175 |
return true; |
|
176 |
} else { |
|
177 |
*timeout = qemu_soonest_timeout(*timeout, deadline); |
|
178 |
} |
|
179 |
|
|
169 | 180 |
return false; |
170 | 181 |
} |
171 | 182 |
|
... | ... | |
180 | 191 |
return true; |
181 | 192 |
} |
182 | 193 |
} |
183 |
return aio_pending(ctx); |
|
194 |
return aio_pending(ctx) || (timerlistgroup_deadline_ns(&ctx->tlg) == 0);
|
|
184 | 195 |
} |
185 | 196 |
|
186 | 197 |
static gboolean |
Also available in: Unified diff