(ctx *mm.AIOContext, t *kernel.Task, haveDeadline bool, deadline ktime.Time)
| 161 | } |
| 162 | |
| 163 | func waitForRequest(ctx *mm.AIOContext, t *kernel.Task, haveDeadline bool, deadline ktime.Time) (any, error) { |
| 164 | for { |
| 165 | if v, ok := ctx.PopRequest(); ok { |
| 166 | // Request was readily available. Just return it. |
| 167 | return v, nil |
| 168 | } |
| 169 | |
| 170 | // Need to wait for request completion. |
| 171 | done := ctx.WaitChannel() |
| 172 | if done == nil { |
| 173 | // Context has been destroyed. |
| 174 | return nil, linuxerr.EINVAL |
| 175 | } |
| 176 | if err := t.BlockWithDeadline(done, haveDeadline, deadline); err != nil { |
| 177 | return nil, err |
| 178 | } |
| 179 | } |
| 180 | } |
| 181 | |
| 182 | // memoryFor returns appropriate memory for the given callback. |
| 183 | func memoryFor(t *kernel.Task, cb *linux.IOCallback) (usermem.IOSequence, error) { |
no test coverage detected
searching dependent graphs…