diff options
-rw-r--r-- | testcases/kernel/syscalls/sendmmsg/sendmmsg01.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/testcases/kernel/syscalls/sendmmsg/sendmmsg01.c b/testcases/kernel/syscalls/sendmmsg/sendmmsg01.c index d1bdf40a1..ce100b2ee 100644 --- a/testcases/kernel/syscalls/sendmmsg/sendmmsg01.c +++ b/testcases/kernel/syscalls/sendmmsg/sendmmsg01.c @@ -5,6 +5,7 @@ #define _GNU_SOURCE #include <netinet/ip.h> +#include <semaphore.h> #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -18,6 +19,8 @@ #define BUFSIZE 16 #define VLEN 2 +static sem_t send_sem; + static void *sender_thread(LTP_ATTRIBUTE_UNUSED void *arg) { struct sockaddr_in addr; @@ -50,6 +53,8 @@ static void *sender_thread(LTP_ATTRIBUTE_UNUSED void *arg) msg[1].msg_hdr.msg_iov = &msg2; msg[1].msg_hdr.msg_iovlen = 1; + sem_wait(&send_sem); + retval = sendmmsg(send_sockfd, msg, 2, 0); if (retval < 0) tst_brk(TFAIL|TTERRNO, "sendmmsg failed"); @@ -74,6 +79,8 @@ static void *receiver_thread(LTP_ATTRIBUTE_UNUSED void *arg) addr.sin_port = htons(1234); SAFE_BIND(receive_sockfd, (struct sockaddr *)&addr, sizeof(addr)); + sem_post(&send_sem); + memset(msgs, 0, sizeof(msgs)); for (i = 0; i < VLEN; i++) { iovecs[i].iov_base = bufs[i]; @@ -112,6 +119,8 @@ static void run(void) pthread_t sender; pthread_t receiver; + sem_init(&send_sem, 0, 0); + SAFE_PTHREAD_CREATE(&sender, NULL, sender_thread, NULL); SAFE_PTHREAD_CREATE(&receiver, NULL, receiver_thread, NULL); SAFE_PTHREAD_JOIN(sender, NULL); |