Lines Matching refs:msgs
225 static void task_msgs_reset(struct mpp_task_msgs *msgs) in task_msgs_reset() argument
227 list_del_init(&msgs->list); in task_msgs_reset()
229 msgs->flags = 0; in task_msgs_reset()
230 msgs->req_cnt = 0; in task_msgs_reset()
231 msgs->set_cnt = 0; in task_msgs_reset()
232 msgs->poll_cnt = 0; in task_msgs_reset()
235 static void task_msgs_init(struct mpp_task_msgs *msgs, struct mpp_session *session) in task_msgs_init() argument
237 INIT_LIST_HEAD(&msgs->list); in task_msgs_init()
239 msgs->session = session; in task_msgs_init()
240 msgs->queue = NULL; in task_msgs_init()
241 msgs->task = NULL; in task_msgs_init()
242 msgs->mpp = NULL; in task_msgs_init()
244 msgs->ext_fd = -1; in task_msgs_init()
246 task_msgs_reset(msgs); in task_msgs_init()
252 struct mpp_task_msgs *msgs; in get_task_msgs() local
255 msgs = list_first_entry_or_null(&session->list_msgs_idle, in get_task_msgs()
257 if (msgs) { in get_task_msgs()
258 list_move_tail(&msgs->list_session, &session->list_msgs); in get_task_msgs()
261 return msgs; in get_task_msgs()
265 msgs = kzalloc(sizeof(*msgs), GFP_KERNEL); in get_task_msgs()
266 task_msgs_init(msgs, session); in get_task_msgs()
267 INIT_LIST_HEAD(&msgs->list_session); in get_task_msgs()
270 list_move_tail(&msgs->list_session, &session->list_msgs); in get_task_msgs()
277 return msgs; in get_task_msgs()
280 static void put_task_msgs(struct mpp_task_msgs *msgs) in put_task_msgs() argument
282 struct mpp_session *session = msgs->session; in put_task_msgs()
290 if (msgs->ext_fd >= 0) { in put_task_msgs()
291 fdput(msgs->f); in put_task_msgs()
292 msgs->ext_fd = -1; in put_task_msgs()
295 task_msgs_reset(msgs); in put_task_msgs()
298 list_move_tail(&msgs->list_session, &session->list_msgs_idle); in put_task_msgs()
304 struct mpp_task_msgs *msgs, *n; in clear_task_msgs() local
310 list_for_each_entry_safe(msgs, n, &session->list_msgs, list_session) in clear_task_msgs()
311 list_move_tail(&msgs->list_session, &list_to_free); in clear_task_msgs()
313 list_for_each_entry_safe(msgs, n, &session->list_msgs_idle, list_session) in clear_task_msgs()
314 list_move_tail(&msgs->list_session, &list_to_free); in clear_task_msgs()
318 list_for_each_entry_safe(msgs, n, &list_to_free, list_session) in clear_task_msgs()
319 kfree(msgs); in clear_task_msgs()
609 struct mpp_task_msgs *msgs) in mpp_process_task_default() argument
627 task = mpp->dev_ops->alloc_task(session, msgs); in mpp_process_task_default()
653 msgs->queue = mpp->queue; in mpp_process_task_default()
654 msgs->task = task; in mpp_process_task_default()
655 msgs->mpp = mpp; in mpp_process_task_default()
670 struct mpp_task_msgs *msgs) in mpp_process_task() argument
673 return session->process_task(session, msgs); in mpp_process_task()
911 struct mpp_task_msgs *msgs) in mpp_wait_result_default() argument
930 ret = mpp->dev_ops->result(mpp, task, msgs); in mpp_wait_result_default()
949 struct mpp_task_msgs *msgs) in mpp_wait_result() argument
952 return session->wait_result(session, msgs); in mpp_wait_result()
1178 struct mpp_task_msgs *msgs) in mpp_process_request() argument
1303 msgs->flags |= req->flags; in mpp_process_request()
1304 msgs->set_cnt++; in mpp_process_request()
1307 msgs->flags |= req->flags; in mpp_process_request()
1308 msgs->poll_cnt++; in mpp_process_request()
1309 msgs->poll_req = NULL; in mpp_process_request()
1312 if (msgs->poll_cnt || msgs->poll_req) in mpp_process_request()
1315 msgs->flags |= req->flags; in mpp_process_request()
1316 msgs->poll_cnt++; in mpp_process_request()
1319 if (!msgs->poll_req) in mpp_process_request()
1320 msgs->poll_req = req; in mpp_process_request()
1322 msgs->poll_req = NULL; in mpp_process_request()
1427 static void task_msgs_add(struct mpp_task_msgs *msgs, struct list_head *head) in task_msgs_add() argument
1429 struct mpp_session *session = msgs->session; in task_msgs_add()
1433 if (msgs->set_cnt) { in task_msgs_add()
1435 session->msg_flags = msgs->flags; in task_msgs_add()
1436 ret = mpp_process_task(session, msgs); in task_msgs_add()
1440 INIT_LIST_HEAD(&msgs->list); in task_msgs_add()
1441 list_add_tail(&msgs->list, head); in task_msgs_add()
1443 put_task_msgs(msgs); in task_msgs_add()
1452 struct mpp_task_msgs *msgs = NULL; in mpp_collect_msgs() local
1509 if (msgs) { in mpp_collect_msgs()
1510 if (msgs->req_cnt) in mpp_collect_msgs()
1511 task_msgs_add(msgs, head); in mpp_collect_msgs()
1513 put_task_msgs(msgs); in mpp_collect_msgs()
1515 msgs = NULL; in mpp_collect_msgs()
1520 msgs = get_task_msgs(session); in mpp_collect_msgs()
1523 msgs->ext_fd = bat_msg.fd; in mpp_collect_msgs()
1525 msgs->f = f; in mpp_collect_msgs()
1538 if (!msgs) in mpp_collect_msgs()
1539 msgs = get_task_msgs(session); in mpp_collect_msgs()
1541 if (!msgs) { in mpp_collect_msgs()
1547 if (msgs->req_cnt >= MPP_MAX_MSG_NUM) { in mpp_collect_msgs()
1549 session->index, msgs->req_cnt, MPP_MAX_MSG_NUM); in mpp_collect_msgs()
1553 req = &msgs->reqs[msgs->req_cnt++]; in mpp_collect_msgs()
1560 ret = mpp_process_request(session, session->srv, req, msgs); in mpp_collect_msgs()
1570 task_msgs_add(msgs, head); in mpp_collect_msgs()
1571 msgs = NULL; in mpp_collect_msgs()
1578 struct mpp_task_msgs *msgs, *n; in mpp_msgs_trigger() local
1583 list_for_each_entry_safe(msgs, n, msgs_list, list) { in mpp_msgs_trigger()
1588 if (!msgs->set_cnt || !msgs->queue) in mpp_msgs_trigger()
1591 mpp = msgs->mpp; in mpp_msgs_trigger()
1592 task = msgs->task; in mpp_msgs_trigger()
1593 queue = msgs->queue; in mpp_msgs_trigger()
1623 struct mpp_task_msgs *msgs, *n; in mpp_msgs_wait() local
1626 list_for_each_entry_safe(msgs, n, msgs_list, list) { in mpp_msgs_wait()
1627 struct mpp_session *session = msgs->session; in mpp_msgs_wait()
1629 if (msgs->poll_cnt) { in mpp_msgs_wait()
1630 int ret = mpp_wait_result(session, msgs); in mpp_msgs_wait()
1638 put_task_msgs(msgs); in mpp_msgs_wait()