Lines Matching refs:msg

44 	struct ipc_message *msg = NULL;  in msg_get_empty()  local
47 msg = list_first_entry(&ipc->empty_list, struct ipc_message, in msg_get_empty()
49 list_del(&msg->list); in msg_get_empty()
52 return msg; in msg_get_empty()
56 struct ipc_message *msg, void *rx_data) in tx_wait_done() argument
62 ret = wait_event_timeout(msg->waitq, msg->complete, in tx_wait_done()
70 list_del(&msg->list); in tx_wait_done()
75 if (msg->rx_size) in tx_wait_done()
76 memcpy(rx_data, msg->rx_data, msg->rx_size); in tx_wait_done()
77 ret = msg->errno; in tx_wait_done()
80 list_add_tail(&msg->list, &ipc->empty_list); in tx_wait_done()
89 struct ipc_message *msg; in ipc_tx_message() local
94 msg = msg_get_empty(ipc); in ipc_tx_message()
95 if (msg == NULL) { in ipc_tx_message()
100 msg->header = header; in ipc_tx_message()
101 msg->tx_size = tx_bytes; in ipc_tx_message()
102 msg->rx_size = rx_bytes; in ipc_tx_message()
103 msg->wait = wait; in ipc_tx_message()
104 msg->errno = 0; in ipc_tx_message()
105 msg->pending = false; in ipc_tx_message()
106 msg->complete = false; in ipc_tx_message()
109 ipc->ops.tx_data_copy(msg, tx_data, tx_bytes); in ipc_tx_message()
111 list_add_tail(&msg->list, &ipc->tx_list); in ipc_tx_message()
117 return tx_wait_done(ipc, msg, rx_data); in ipc_tx_message()
126 ipc->msg = kzalloc(sizeof(struct ipc_message) * in msg_empty_list_init()
128 if (ipc->msg == NULL) in msg_empty_list_init()
132 init_waitqueue_head(&ipc->msg[i].waitq); in msg_empty_list_init()
133 list_add(&ipc->msg[i].list, &ipc->empty_list); in msg_empty_list_init()
143 struct ipc_message *msg; in ipc_tx_msgs() local
162 msg = list_first_entry(&ipc->tx_list, struct ipc_message, list); in ipc_tx_msgs()
163 list_move(&msg->list, &ipc->rx_list); in ipc_tx_msgs()
166 ipc->ops.tx_msg(ipc, msg); in ipc_tx_msgs()
190 struct ipc_message *msg; in sst_ipc_reply_find_msg() local
202 list_for_each_entry(msg, &ipc->rx_list, list) { in sst_ipc_reply_find_msg()
203 if ((msg->header & mask) == header) in sst_ipc_reply_find_msg()
204 return msg; in sst_ipc_reply_find_msg()
213 struct ipc_message *msg) in sst_ipc_tx_msg_reply_complete() argument
215 msg->complete = true; in sst_ipc_tx_msg_reply_complete()
217 if (!msg->wait) in sst_ipc_tx_msg_reply_complete()
218 list_add_tail(&msg->list, &ipc->empty_list); in sst_ipc_tx_msg_reply_complete()
220 wake_up(&msg->waitq); in sst_ipc_tx_msg_reply_complete()
226 struct ipc_message *msg, *tmp; in sst_ipc_drop_all() local
233 list_for_each_entry_safe(msg, tmp, &ipc->tx_list, list) { in sst_ipc_drop_all()
234 list_move(&msg->list, &ipc->empty_list); in sst_ipc_drop_all()
238 list_for_each_entry_safe(msg, tmp, &ipc->rx_list, list) { in sst_ipc_drop_all()
239 list_move(&msg->list, &ipc->empty_list); in sst_ipc_drop_all()
272 kfree(ipc->msg); in sst_ipc_init()
286 if (ipc->msg) in sst_ipc_fini()
287 kfree(ipc->msg); in sst_ipc_fini()