| 450 | } |
| 451 | |
| 452 | static rt_ssize_t virtio_gpu_read(rt_device_t dev, rt_off_t pos, void *buffer, rt_size_t size) |
| 453 | { |
| 454 | struct virtio_gpu_device *virtio_gpu_dev = (struct virtio_gpu_device *)dev; |
| 455 | |
| 456 | if (virtio_gpu_dev->framebuffer == RT_NULL || pos + size >= virtio_gpu_dev->smem_len) |
| 457 | { |
| 458 | return 0; |
| 459 | } |
| 460 | |
| 461 | rt_mutex_take(&virtio_gpu_dev->rw_mutex, RT_WAITING_FOREVER); |
| 462 | |
| 463 | rt_memcpy(buffer, (rt_uint8_t *)virtio_gpu_dev->framebuffer + pos, size); |
| 464 | |
| 465 | rt_mutex_release(&virtio_gpu_dev->rw_mutex); |
| 466 | |
| 467 | return size; |
| 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 | { |
nothing calls this directly
no test coverage detected