Lines Matching full:task
74 static void tdx_generate_quote_cleanup(TdxGenerateQuoteTask *task) in tdx_generate_quote_cleanup() argument
76 timer_del(&task->timer); in tdx_generate_quote_cleanup()
78 g_source_remove(task->watch); in tdx_generate_quote_cleanup()
79 qio_channel_close(QIO_CHANNEL(task->sioc), NULL); in tdx_generate_quote_cleanup()
80 object_unref(OBJECT(task->sioc)); in tdx_generate_quote_cleanup()
82 task->completion(task); in tdx_generate_quote_cleanup()
88 TdxGenerateQuoteTask *task = opaque; in tdx_get_quote_read() local
92 ret = qio_channel_read(ioc, task->receive_buf + task->receive_buf_received, in tdx_get_quote_read()
93 task->payload_len - task->receive_buf_received, &err); in tdx_get_quote_read()
99 task->status_code = TDX_VP_GET_QUOTE_ERROR; in tdx_get_quote_read()
106 task->status_code = TDX_VP_GET_QUOTE_ERROR; in tdx_get_quote_read()
110 task->receive_buf_received += ret; in tdx_get_quote_read()
111 if (task->receive_buf_received >= HEADER_SIZE) { in tdx_get_quote_read()
112 uint32_t len = decode_header(task->receive_buf, in tdx_get_quote_read()
113 task->receive_buf_received); in tdx_get_quote_read()
115 len > (task->payload_len - HEADER_SIZE)) { in tdx_get_quote_read()
117 len, (task->payload_len - HEADER_SIZE)); in tdx_get_quote_read()
118 task->status_code = TDX_VP_GET_QUOTE_ERROR; in tdx_get_quote_read()
123 task->payload_len = HEADER_SIZE + len; in tdx_get_quote_read()
124 task->receive_buf = g_renew(char, in tdx_get_quote_read()
125 task->receive_buf, in tdx_get_quote_read()
126 task->payload_len); in tdx_get_quote_read()
129 if (task->receive_buf_received >= (sizeof(qgs_msg_header_t) + HEADER_SIZE)) { in tdx_get_quote_read()
130 qgs_msg_header_t *hdr = (qgs_msg_header_t *)(task->receive_buf + HEADER_SIZE); in tdx_get_quote_read()
136 task->status_code = TDX_VP_GET_QUOTE_ERROR; in tdx_get_quote_read()
142 task->status_code = TDX_VP_GET_QUOTE_ERROR; in tdx_get_quote_read()
145 if (hdr->size > (task->payload_len - HEADER_SIZE)) { in tdx_get_quote_read()
147 hdr->size, task->payload_len); in tdx_get_quote_read()
148 task->status_code = TDX_VP_GET_QUOTE_ERROR; in tdx_get_quote_read()
154 task->status_code = TDX_VP_GET_QUOTE_ERROR; in tdx_get_quote_read()
158 if (task->receive_buf_received >= (sizeof(qgs_msg_get_quote_resp_t) + HEADER_SIZE)) { in tdx_get_quote_read()
159 … qgs_msg_get_quote_resp_t *msg = (qgs_msg_get_quote_resp_t *)(task->receive_buf + HEADER_SIZE); in tdx_get_quote_read()
163 task->status_code = TDX_VP_GET_QUOTE_ERROR; in tdx_get_quote_read()
167 if ((task->payload_len - HEADER_SIZE - sizeof(qgs_msg_get_quote_resp_t)) != in tdx_get_quote_read()
171 (task->payload_len - sizeof(qgs_msg_get_quote_resp_t))); in tdx_get_quote_read()
172 task->status_code = TDX_VP_GET_QUOTE_ERROR; in tdx_get_quote_read()
177 if (task->receive_buf_received == task->payload_len) { in tdx_get_quote_read()
179 memmove(task->receive_buf, in tdx_get_quote_read()
180 task->receive_buf + strip, in tdx_get_quote_read()
181 task->receive_buf_received - strip); in tdx_get_quote_read()
182 task->receive_buf_received -= strip; in tdx_get_quote_read()
183 task->status_code = TDX_VP_GET_QUOTE_SUCCESS; in tdx_get_quote_read()
190 tdx_generate_quote_cleanup(task); in tdx_get_quote_read()
197 TdxGenerateQuoteTask *task = opaque; in tdx_send_report() local
201 ret = qio_channel_write(ioc, task->send_data + task->send_data_sent, in tdx_send_report()
202 task->send_data_size - task->send_data_sent, &err); in tdx_send_report()
208 task->status_code = TDX_VP_GET_QUOTE_ERROR; in tdx_send_report()
209 tdx_generate_quote_cleanup(task); in tdx_send_report()
213 task->send_data_sent += ret; in tdx_send_report()
215 if (task->send_data_sent == task->send_data_size) { in tdx_send_report()
216 task->watch = qio_channel_add_watch(QIO_CHANNEL(task->sioc), G_IO_IN, in tdx_send_report()
217 tdx_get_quote_read, task, NULL); in tdx_send_report()
229 TdxGenerateQuoteTask *task = opaque; in tdx_quote_generator_connected() local
236 task->status_code = TDX_VP_GET_QUOTE_QGS_UNAVAILABLE; in tdx_quote_generator_connected()
237 tdx_generate_quote_cleanup(task); in tdx_quote_generator_connected()
241 task->watch = qio_channel_add_watch(QIO_CHANNEL(task->sioc), G_IO_OUT, in tdx_quote_generator_connected()
242 tdx_send_report, task, NULL); in tdx_quote_generator_connected()
249 TdxGenerateQuoteTask *task = opaque; in getquote_expired() local
251 task->status_code = TDX_VP_GET_QUOTE_ERROR; in getquote_expired()
252 tdx_generate_quote_cleanup(task); in getquote_expired()
255 static void setup_get_quote_timer(TdxGenerateQuoteTask *task) in setup_get_quote_timer() argument
259 timer_init_ms(&task->timer, QEMU_CLOCK_VIRTUAL, getquote_expired, task); in setup_get_quote_timer()
261 timer_mod(&task->timer, time + TRANSACTION_TIMEOUT); in setup_get_quote_timer()
264 void tdx_generate_quote(TdxGenerateQuoteTask *task, in tdx_generate_quote() argument
274 msg.header.size = sizeof(msg) + task->send_data_size; in tdx_generate_quote()
276 msg.report_size = task->send_data_size; in tdx_generate_quote()
280 task->send_data = g_renew(char, in tdx_generate_quote()
281 task->send_data, in tdx_generate_quote()
282 task->send_data_size + sizeof(msg) + HEADER_SIZE); in tdx_generate_quote()
283 memmove(task->send_data + sizeof(msg) + HEADER_SIZE, in tdx_generate_quote()
284 task->send_data, in tdx_generate_quote()
285 task->send_data_size); in tdx_generate_quote()
286 memcpy(task->send_data + HEADER_SIZE, in tdx_generate_quote()
289 encode_header(task->send_data, HEADER_SIZE, task->send_data_size + sizeof(msg)); in tdx_generate_quote()
290 task->send_data_size += sizeof(msg) + HEADER_SIZE; in tdx_generate_quote()
293 task->sioc = sioc; in tdx_generate_quote()
295 setup_get_quote_timer(task); in tdx_generate_quote()
298 tdx_quote_generator_connected, task, in tdx_generate_quote()