Does FreeBSD have sendmmsg or recvmmsg system calls?

Gary Jennejohn gljennjohn at gmail.com
Sun Jan 24 09:07:52 UTC 2016


On Sun, 24 Jan 2016 07:06:34 +0200
Konstantin Belousov <kostikbel at gmail.com> wrote:

[delete irrelevant parts of the patch]

> > +	rcvd = 1;
> > +	for (i = rcvd; i < vlen; i++) {  
> i = rcvd = 1; ... i++, rcvd++ ?
> 
> > +		ret = __sys_recvmsg(s, &msgvec[i].msg_hdr, flags);
> > +		if (ret == -1) {
> > +			if (rcvd != 0) {
> > +				/* We've received messages. Let caller know. */

> > +				return (rcvd);
> > +			}
> > +			return (ret);
> > +		}
> > +

This seems wrong.  rcvd is initialized to 1 so that the check for
rcvd != 0 can never be false.  We already successfully called
__sys_recvmsg() just above the loop, so why not simplify the
code by doing

	if (ret == -1)
		return (rcvd);

-- 
Gary Jennejohn (gj@)


More information about the freebsd-threads mailing list