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