Use weak __thread declarations in parlib-compat (XCC)
[akaros.git] / tools / compilers / gcc-glibc / glibc-2.19-akaros / sysdeps / akaros / recvmsg.c
1 /* Copyright (c) 2015 Google Inc.
2  * Barret Rhoden <brho@cs.berkeley.edu>
3  * See LICENSE for details.
4  *
5  * recvmsg(), on top of recvfrom(). */
6
7 #include <sys/types.h>
8 #include <sys/socket.h>
9 #include <errno.h>
10
11 /* In recvfrom.c */
12 extern ssize_t __recvfrom_iov(int fd, const struct iovec *iov, int iovcnt,
13                               int flags, __SOCKADDR_ARG from,
14                               socklen_t * __restrict fromlen);
15
16 /* Receive a message as described by MSG from socket FD.  Returns the number of
17  * bytes read or -1 for errors.  */
18 ssize_t __recvmsg(int fd, struct msghdr *msg, int flags)
19 {
20         ssize_t ret;
21
22         ret = __recvfrom_iov(fd, msg->msg_iov, msg->msg_iovlen,
23                              flags, msg->msg_name, &msg->msg_namelen);
24         if (ret == -1)
25                 return ret;
26         /* On successful calls, there's extra info we can return via *msg */
27         msg->msg_controllen = 0;
28         msg->msg_flags = 0;
29         return ret;
30 }
31 weak_alias(__recvmsg, recvmsg)