| 1316 | } |
| 1317 | |
| 1318 | int virtio_console_write_data(VIRTIODevice *s, const uint8_t *buf, int buf_len) |
| 1319 | { |
| 1320 | int queue_idx = 0; |
| 1321 | QueueState *qs = &s->queue[queue_idx]; |
| 1322 | int desc_idx; |
| 1323 | uint16_t avail_idx; |
| 1324 | |
| 1325 | if (!qs->ready) |
| 1326 | return 0; |
| 1327 | avail_idx = virtio_read16(s, qs->avail_addr + 2); |
| 1328 | if (qs->last_avail_idx == avail_idx) |
| 1329 | return 0; |
| 1330 | desc_idx = virtio_read16(s, qs->avail_addr + 4 + |
| 1331 | (qs->last_avail_idx & (qs->num - 1)) * 2); |
| 1332 | memcpy_to_queue(s, queue_idx, desc_idx, 0, buf, buf_len); |
| 1333 | virtio_consume_desc(s, queue_idx, desc_idx, buf_len); |
| 1334 | qs->last_avail_idx++; |
| 1335 | return buf_len; |
| 1336 | } |
| 1337 | |
| 1338 | /* send a resize event */ |
| 1339 | void virtio_console_resize_event(VIRTIODevice *s, int width, int height) |
no test coverage detected