Lines Matching refs:batch
83 MppDevBatTask *batch; member
190 static void batch_reset(MppDevBatTask *batch) in batch_reset() argument
192 mpp_assert(list_empty(&batch->link_tasks)); in batch_reset()
194 batch->fill_cnt = 0; in batch_reset()
195 batch->fill_full = 0; in batch_reset()
196 batch->fill_timeout = 0; in batch_reset()
197 batch->poll_cnt = 0; in batch_reset()
198 batch->send_req_cnt = 0; in batch_reset()
199 batch->wait_req_cnt = 0; in batch_reset()
204 MppDevBatTask *batch = (MppDevBatTask *)mpp_mem_pool_get_f(server->batch_pool); in batch_add() local
206 mpp_assert(batch); in batch_add()
207 if (!batch) in batch_add()
208 return batch; in batch_add()
210 INIT_LIST_HEAD(&batch->link_server); in batch_add()
211 INIT_LIST_HEAD(&batch->link_tasks); in batch_add()
213 batch->send_reqs = (MppReqV1 *)(batch + 1); in batch_add()
214 batch->wait_reqs = batch->send_reqs + in batch_add()
216 batch->bat_cmd = (MppDevBatCmd *)(batch->wait_reqs + in batch_add()
219 batch_reset(batch); in batch_add()
220 list_add_tail(&batch->link_server, &server->list_batch_free); in batch_add()
224 return batch; in batch_add()
227 void batch_del(MppDevBatServ *server, MppDevBatTask *batch) in batch_del() argument
229 mpp_assert(batch); in batch_del()
230 mpp_assert(batch->fill_cnt == 0); in batch_del()
231 mpp_assert(list_empty(&batch->link_tasks)); in batch_del()
233 list_del_init(&batch->link_server); in batch_del()
235 mpp_mem_pool_put_f(server->batch_pool, batch); in batch_del()
240 void batch_send(MppDevBatServ *server, MppDevBatTask *batch) in batch_send() argument
244 mpp_assert(batch->send_req_cnt); in batch_send()
246 ret = mpp_service_ioctl_request(server->server_fd, batch->send_reqs); in batch_send()
251 mpp_serv_dbg_flow("batch %d -> send failed\n", batch->batch_id); in batch_send()
254 list_del_init(&batch->link_server); in batch_send()
255 list_add_tail(&batch->link_server, &server->list_batch); in batch_send()
258 mpp_serv_dbg_flow("batch %d -> send %d for %s\n", batch->batch_id, in batch_send()
259 batch->fill_cnt, batch->fill_timeout ? "timeout" : "ready"); in batch_send()
268 MppDevBatTask *batch; in process_task() local
278 batch = list_first_entry_or_null(&server->list_batch, MppDevBatTask, link_server); in process_task()
279 if (!batch) in process_task()
282 mpp_assert(batch->wait_req_cnt); in process_task()
283 ret = mpp_service_ioctl_request(server->server_fd, batch->wait_reqs); in process_task()
287 list_for_each_entry_safe(task, n, &batch->link_tasks, MppDevTask, link_batch) { in process_task()
289 MppDevBatCmd *cmd = batch->bat_cmd + batch_slot_id; in process_task()
300 batch->batch_id, task->batch_slot_id, task->task_id); in process_task()
306 task->batch = NULL; in process_task()
309 batch->batch_id, task->batch_slot_id, session->client); in process_task()
317 batch->poll_cnt++; in process_task()
322 mpp_serv_dbg_flow("batch %d fill %d poll %d\n", batch->batch_id, in process_task()
323 batch->fill_cnt, batch->poll_cnt); in process_task()
325 if (batch->poll_cnt == batch->fill_cnt) { in process_task()
326 mpp_serv_dbg_flow("batch %d poll done\n", batch->batch_id); in process_task()
327 list_del_init(&batch->link_server); in process_task()
328 list_add_tail(&batch->link_server, &server->list_batch_free); in process_task()
332 batch_reset(batch); in process_task()
333 batch = NULL; in process_task()
337 mpp_log_f("batch %d poll ret %d errno %d %s", batch->batch_id, in process_task()
377 batch = list_first_entry_or_null(&server->list_batch_free, MppDevBatTask, link_server); in process_task()
378 mpp_assert(batch); in process_task()
379 if (!batch) { in process_task()
385 if (batch->fill_cnt) in process_task()
386 batch_send(server, batch); in process_task()
400 batch = list_first_entry_or_null(&server->list_batch_free, MppDevBatTask, link_server); in process_task()
401 mpp_assert(batch); in process_task()
413 if (!batch->fill_cnt) in process_task()
414 batch->batch_id = server->batch_id++; in process_task()
416 task->batch = batch; in process_task()
417 task->batch_slot_id = batch->fill_cnt++; in process_task()
419 list_add_tail(&task->link_batch, &batch->link_tasks); in process_task()
420 if (batch->fill_cnt >= server->max_task_in_batch) in process_task()
421 batch->fill_full = 1; in process_task()
427 bat_cmd = batch->bat_cmd + task->batch_slot_id; in process_task()
434 req = &batch->send_reqs[batch->send_req_cnt++]; in process_task()
445 batch->send_reqs[batch->send_req_cnt++] = task->req[i]; in process_task()
448 mpp_assert(batch->send_req_cnt <= server->max_task_in_batch * MAX_REQ_NUM); in process_task()
451 req = &batch->wait_reqs[batch->wait_req_cnt++]; in process_task()
458 req = &batch->wait_reqs[batch->wait_req_cnt++]; in process_task()
466 batch->batch_id, task->batch_slot_id, session->client, in process_task()
469 if (batch->fill_full) { in process_task()
470 list_del_init(&batch->link_server); in process_task()
471 list_add_tail(&batch->link_server, &server->list_batch); in process_task()
473 batch->batch_id, batch->fill_cnt); in process_task()
474 batch_send(server, batch); in process_task()
475 batch = NULL; in process_task()
634 MppDevBatTask *batch, *n; in bat_server_put() local
657 list_for_each_entry_safe(batch, n, &server->list_batch_free, MppDevBatTask, link_server) { in bat_server_put()
658 batch_del(server, batch); in bat_server_put()
720 task->batch = NULL; in server_attach()