socket libc backend misses recvmsg()

Martin Pohlack mp26 at os.inf.tu-dresden.de
Fri Mar 27 19:59:43 CET 2009


Hi Alexander,

Alexander Valitov wrote:
[...]

> Are there any chances that the function will be implemented? Any 'when'?
> If it's difficult why not to temporarily add recvmsg() that uses recvfrom().

I am not anymore working on DROPS and gave up maintainership of L4VFS.
Maybe the current maintainers can comment regarding above questions.

> Maybe ignoring msg_control field in msghdr struct. Something like this:
> 
> int recvmsg(int s, struct msghdr *msg, int flags)
> {
>   int i;
>   int byteCnt;
>   int ret;
> 
>   byteCnt = 0;
>   for( i = 0 ; i < msg->msg_iovlen ; i++ )
>   {
>     if( ret = recvfrom( s,
>                         msg->msg_iov[i].iov_base,
>                         msg->msg_iov[i].iov_len,
>                         flags,
>                         (struct sockaddr *) msg->msg_name,
>                         &(msg->msg_namelen) ) < 0 )
>       return byteCnt;
>     byteCnt += ret;
>   }
>   return byteCnt;
> }

There already is a similar hack in L4VFS for readv:

  l4vfs/lib/libc_backends/io/vector_io.c

However, if your proposed workaround works for you, just use it :-).

Cheers,
Martin




More information about the l4-hackers mailing list