Lines Matching refs:req

60 static void sclp_suspend_req_cb(struct sclp_req *req, void *data)  in sclp_suspend_req_cb()  argument
228 struct sclp_req *req; in __sclp_req_queue_find_next_timeout() local
230 list_for_each_entry(req, &sclp_req_queue, list) { in __sclp_req_queue_find_next_timeout()
231 if (!req->queue_expires) in __sclp_req_queue_find_next_timeout()
234 (time_before(req->queue_expires, expires_next))) in __sclp_req_queue_find_next_timeout()
235 expires_next = req->queue_expires; in __sclp_req_queue_find_next_timeout()
246 struct sclp_req *req; in __sclp_req_queue_remove_expired_req() local
251 list_for_each_entry(req, &sclp_req_queue, list) { in __sclp_req_queue_remove_expired_req()
252 if (!req->queue_expires) in __sclp_req_queue_remove_expired_req()
254 if (time_before_eq(req->queue_expires, now)) { in __sclp_req_queue_remove_expired_req()
255 if (req->status == SCLP_REQ_QUEUED) { in __sclp_req_queue_remove_expired_req()
256 req->status = SCLP_REQ_QUEUED_TIMEOUT; in __sclp_req_queue_remove_expired_req()
257 list_del(&req->list); in __sclp_req_queue_remove_expired_req()
262 req = NULL; in __sclp_req_queue_remove_expired_req()
265 return req; in __sclp_req_queue_remove_expired_req()
276 struct sclp_req *req; in sclp_req_queue_timeout() local
279 req = __sclp_req_queue_remove_expired_req(); in sclp_req_queue_timeout()
280 if (req && req->callback) in sclp_req_queue_timeout()
281 req->callback(req, req->callback_data); in sclp_req_queue_timeout()
282 } while (req); in sclp_req_queue_timeout()
295 __sclp_start_request(struct sclp_req *req) in __sclp_start_request() argument
302 rc = sclp_service_call(req->command, req->sccb); in __sclp_start_request()
303 req->start_count++; in __sclp_start_request()
307 req->status = SCLP_REQ_RUNNING; in __sclp_start_request()
319 req->status = SCLP_REQ_FAILED; in __sclp_start_request()
327 struct sclp_req *req; in sclp_process_queue() local
338 req = list_entry(sclp_req_queue.next, struct sclp_req, list); in sclp_process_queue()
339 if (!req->sccb) in sclp_process_queue()
341 rc = __sclp_start_request(req); in sclp_process_queue()
345 if (req->start_count > 1) { in sclp_process_queue()
354 list_del(&req->list); in sclp_process_queue()
355 if (req->callback) { in sclp_process_queue()
357 req->callback(req, req->callback_data); in sclp_process_queue()
364 static int __sclp_can_add_request(struct sclp_req *req) in __sclp_can_add_request() argument
366 if (req == &sclp_suspend_req || req == &sclp_init_req) in __sclp_can_add_request()
379 sclp_add_request(struct sclp_req *req) in sclp_add_request() argument
385 if (!__sclp_can_add_request(req)) { in sclp_add_request()
389 req->status = SCLP_REQ_QUEUED; in sclp_add_request()
390 req->start_count = 0; in sclp_add_request()
391 list_add_tail(&req->list, &sclp_req_queue); in sclp_add_request()
393 if (req->queue_timeout) { in sclp_add_request()
394 req->queue_expires = jiffies + req->queue_timeout * HZ; in sclp_add_request()
396 time_after(sclp_queue_timer.expires, req->queue_expires)) in sclp_add_request()
397 mod_timer(&sclp_queue_timer, req->queue_expires); in sclp_add_request()
399 req->queue_expires = 0; in sclp_add_request()
402 req->list.prev == &sclp_req_queue) { in sclp_add_request()
403 if (!req->sccb) { in sclp_add_request()
404 list_del(&req->list); in sclp_add_request()
408 rc = __sclp_start_request(req); in sclp_add_request()
410 list_del(&req->list); in sclp_add_request()
461 sclp_read_cb(struct sclp_req *req, void *data) in sclp_read_cb() argument
466 sccb = (struct sccb_header *) req->sccb; in sclp_read_cb()
467 if (req->status == SCLP_REQ_DONE && (sccb->response_code == 0x20 || in sclp_read_cb()
499 struct sclp_req *req; in __sclp_find_req() local
502 req = list_entry(l, struct sclp_req, list); in __sclp_find_req()
503 if (sccb == (u32) (addr_t) req->sccb) in __sclp_find_req()
504 return req; in __sclp_find_req()
515 struct sclp_req *req; in sclp_interrupt_handler() local
526 req = __sclp_find_req(finished_sccb); in sclp_interrupt_handler()
527 if (req) { in sclp_interrupt_handler()
529 list_del(&req->list); in sclp_interrupt_handler()
530 req->status = SCLP_REQ_DONE; in sclp_interrupt_handler()
531 if (req->callback) { in sclp_interrupt_handler()
533 req->callback(req, req->callback_data); in sclp_interrupt_handler()