struct mmsghdr msgs[MMSG_MAX];
struct iovec iovecs[MMSG_MAX];
-char bufs[MMSG_MAX][sizeof(struct can_frame)];
+struct can_frame cf[MMSG_MAX];
-int init_recvmmsg_socket(const char *dev)
+int init_recvmmsg(const char *dev)
{
int sock;
struct sockaddr_can addr;
memset(msgs, 0, sizeof(msgs));
memset(iovecs, 0, sizeof(iovecs));
for (i = 0; i < MMSG_MAX; i++) {
- iovecs[i].iov_base = bufs[i];
- iovecs[i].iov_len = sizeof(struct can_frame);
+ iovecs[i].iov_base = &cf[i];
+ iovecs[i].iov_len = sizeof(cf[i]);
msgs[i].msg_hdr.msg_iov = &iovecs[i];
msgs[i].msg_hdr.msg_iovlen = 1;
}
printf("Received %d CAN frames in one system call\n", received);
for (i = 0; i < received; i++)
- print_can_frame((struct can_frame*)bufs[i]);
+ print_can_frame(&cf[i]);
}
int main(int argc, char *argv[])
dev = candump_parse_args(argc, argv);
- sock = init_recvmmsg_socket(dev);
+ sock = init_recvmmsg(dev);
while (1)
can_recvmmsg(sock);