| 468 | } |
| 469 | |
| 470 | static rt_ssize_t virtio_gpu_write(rt_device_t dev, rt_off_t pos, const void *buffer, rt_size_t size) |
| 471 | { |
| 472 | struct virtio_gpu_device *virtio_gpu_dev = (struct virtio_gpu_device *)dev; |
| 473 | |
| 474 | if (virtio_gpu_dev->framebuffer == RT_NULL || pos + size >= virtio_gpu_dev->smem_len) |
| 475 | { |
| 476 | return 0; |
| 477 | } |
| 478 | |
| 479 | rt_mutex_take(&virtio_gpu_dev->rw_mutex, RT_WAITING_FOREVER); |
| 480 | |
| 481 | rt_memcpy((rt_uint8_t *)virtio_gpu_dev->framebuffer + pos, buffer, size); |
| 482 | |
| 483 | rt_mutex_release(&virtio_gpu_dev->rw_mutex); |
| 484 | |
| 485 | return size; |
| 486 | } |
| 487 | |
| 488 | static rt_err_t virtio_gpu_control(rt_device_t dev, int cmd, void *args) |
| 489 | { |
nothing calls this directly
no test coverage detected