| 909 | ****************************************************************************/ |
| 910 | |
| 911 | static int rpmsgdev_read_handler(FAR struct rpmsg_endpoint *ept, |
| 912 | FAR void *data, size_t len, |
| 913 | uint32_t src, FAR void *priv) |
| 914 | { |
| 915 | FAR struct rpmsgdev_header_s *header = data; |
| 916 | FAR struct rpmsgdev_cookie_s *cookie = |
| 917 | (FAR struct rpmsgdev_cookie_s *)(uintptr_t)header->cookie; |
| 918 | FAR struct rpmsgdev_read_s *rsp = data; |
| 919 | FAR struct iovec *read = cookie->data; |
| 920 | |
| 921 | cookie->result = header->result; |
| 922 | if (cookie->result > 0) |
| 923 | { |
| 924 | memcpy(read->iov_base + read->iov_len, rsp->buf, cookie->result); |
| 925 | read->iov_len += cookie->result; |
| 926 | } |
| 927 | |
| 928 | if (header->command == RPMSGDEV_READ_NOFRAG || |
| 929 | cookie->result <= 0 || read->iov_len >= rsp->count) |
| 930 | { |
| 931 | rpmsg_post(ept, &cookie->sem); |
| 932 | } |
| 933 | |
| 934 | return 0; |
| 935 | } |
| 936 | |
| 937 | /**************************************************************************** |
| 938 | * Name: rpmsgdev_ioctl_handler |
nothing calls this directly
no test coverage detected