]> rtime.felk.cvut.cz Git - sojka/can-syscalls-examples.git/blobdiff - candump-recvmmsg.c
Add cansend examples
[sojka/can-syscalls-examples.git] / candump-recvmmsg.c
index 2b449936125079568c120e6dfeb7908fbb4b37fb..66408f8ddfcf8696681c0fbbc9085175bfed3e06 100644 (file)
@@ -21,9 +21,9 @@
 
 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;
@@ -46,8 +46,8 @@ int init_recvmmsg_socket(const char *dev)
        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;
        }
@@ -62,7 +62,7 @@ void can_recvmmsg(int sock)
 
        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[])
@@ -72,7 +72,7 @@ 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);