From owner-freebsd-threads@freebsd.org Wed Jan 27 00:31:50 2016 Return-Path: Delivered-To: freebsd-threads@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 9049EA46E5E for ; Wed, 27 Jan 2016 00:31:50 +0000 (UTC) (envelope-from gljennjohn@gmail.com) Received: from mailman.ysv.freebsd.org (mailman.ysv.freebsd.org [IPv6:2001:1900:2254:206a::50:5]) by mx1.freebsd.org (Postfix) with ESMTP id 6C0D28C6 for ; Wed, 27 Jan 2016 00:31:50 +0000 (UTC) (envelope-from gljennjohn@gmail.com) Received: by mailman.ysv.freebsd.org (Postfix) id 67F84A46E5A; Wed, 27 Jan 2016 00:31:50 +0000 (UTC) Delivered-To: threads@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 67249A46E58; Wed, 27 Jan 2016 00:31:50 +0000 (UTC) (envelope-from gljennjohn@gmail.com) Received: from mail-wm0-x22a.google.com (mail-wm0-x22a.google.com [IPv6:2a00:1450:400c:c09::22a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id EFA138C0; Wed, 27 Jan 2016 00:31:49 +0000 (UTC) (envelope-from gljennjohn@gmail.com) Received: by mail-wm0-x22a.google.com with SMTP id 123so128782531wmz.0; Tue, 26 Jan 2016 16:31:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=date:from:to:cc:subject:message-id:in-reply-to:references:reply-to :mime-version:content-type:content-transfer-encoding; bh=ZzH014obF/8i1r5IKZEJSesGYA6PlJd3h/jxXXAQRiE=; b=VgTQT4mGpKcuOX57pIdt8lTRUM0oqfjAUztGFqTuFtGi80I3S08Gn2VjeBeprn6ZLG SMNeVMaQRb3+kmV1I4tx/Csm7WiOW0l4yWz3ZXAU0oRMh2JjC61sxuCsref/SooY9Oed qsZkiM/IP6gXdHO1KXo/JtjRUgjL/aolkFO9lZEIWu23puhW+WxVyEgUQdRnQ8ey7HNL vSn2mqnEIvzpS1nG5hgpTY7r/tSbABdHyVPZOrVTB9uhawa9h1I7P4l/YSumVAJY34IX yqFD71jHtOsfn1qY9O68dWuuCN6h+fg5EySgIgmdE6GSw1vzEkkEjcc2QPV7Of3DJ06V aWPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:date:from:to:cc:subject:message-id:in-reply-to :references:reply-to:mime-version:content-type :content-transfer-encoding; bh=ZzH014obF/8i1r5IKZEJSesGYA6PlJd3h/jxXXAQRiE=; b=SMDL9iWAH5fe4lVjzRYxdctdSU+6bwHEYXAQlp8XJtlhskiApuuNpkeNtxrwgomB65 OKpeNITA16+FthKn919sfPdUYnDfgH6TeJb59C9GtCG45bmCRsPChxegj1YvTgYz9OcI IjbO9yw/IC8uZwBTXLKcLc5rdGs7Mp1bt82sfsRPZIeJwQ5ZtrweDn8F794dtlTL/B+R kX171V0qXcCV4wFNGTEpOdjew9I6NyLrsvg+XUL8hchiSILSGBZIWuPRxtCmjHjGNzNd oIZVTbrcgm/tzzRiFS7lO2EkD+LpX2wQwOkcl8pZbjYey7bNYDKO9eCVXVtjKaHulOL/ Qrhw== X-Gm-Message-State: AG10YOQTPiuXvZqBwx88dLE6GzGCttmExaEjTbKrqjxoegzyE8vauDzFu+azEyovnjDnmw== X-Received: by 10.28.212.9 with SMTP id l9mr28452579wmg.75.1453854708534; Tue, 26 Jan 2016 16:31:48 -0800 (PST) Received: from ernst.home (p4FCA7371.dip0.t-ipconnect.de. [79.202.115.113]) by smtp.gmail.com with ESMTPSA id e198sm5129102wmd.0.2016.01.26.16.31.46 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 26 Jan 2016 16:31:47 -0800 (PST) Date: Wed, 27 Jan 2016 01:31:45 +0100 From: Gary Jennejohn To: Daniel Eischen Cc: Luigi Rizzo , threads@freebsd.org, Boris Astardzhiev , "freebsd-net@freebsd.org" Subject: Re: Does FreeBSD have sendmmsg or recvmmsg system calls? Message-ID: <20160127013145.36f2aaef@ernst.home> In-Reply-To: References: <20160118140811.GW3942@kib.kiev.ua> <20160120073154.GB3942@kib.kiev.ua> <20160121093509.GK3942@kib.kiev.ua> <20160121233040.E1864@besplex.bde.org> <20160124050634.GS3942@kib.kiev.ua> <20160124100747.551f8e3f@ernst.home> <20160126134005.GD3942@kib.kiev.ua> <20160126182543.64050678@ernst.home> Reply-To: gljennjohn@gmail.com X-Mailer: Claws Mail 3.13.1 (GTK+ 2.24.29; amd64-portbld-freebsd11.0) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-BeenThere: freebsd-threads@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: Threading on FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 Jan 2016 00:31:50 -0000 On Tue, 26 Jan 2016 17:46:52 -0500 (EST) Daniel Eischen wrote: > On Tue, 26 Jan 2016, Gary Jennejohn wrote: > > > On Tue, 26 Jan 2016 09:06:39 -0800 > > Luigi Rizzo wrote: > > > >> On Tue, Jan 26, 2016 at 5:40 AM, Konstantin Belousov > >> wrote: > >>> On Mon, Jan 25, 2016 at 11:22:13AM +0200, Boris Astardzhiev wrote: > >>>> +ssize_t > >>>> +recvmmsg(int s, struct mmsghdr *__restrict msgvec, size_t vlen, int flags, > >>>> + const struct timespec *__restrict timeout) > >>>> +{ > >>>> + size_t i, rcvd; > >>>> + ssize_t ret; > >>>> + > >>>> + if (timeout != NULL) { > >>>> + fd_set fds; > >>>> + int res; > >>> Please move all local definitions to the beginning of the function. > >> > >> This style recommendation was from 30 years ago and is > >> bad programming practice, as it tends to complicate analysis > >> for the human and increase the chance of improper usage of > >> variables. > >> > >> We should move away from this for new code. > >> > > > > Really? I personally find having all variables grouped together > > much easier to understand. Stumbling across declarations in the > > middle of the code in a for-loop, for example, takes me by surprise. > > > > I also greatly dislike initializing variables in their declarations. > > > > Maybe I'm just old fashioned since I have been writing C-code for > > more than 30 years. > > +1 > > Probably should be discouraged, but allowed on a case-by-case > basis. One could argue that if you need to declaration blocks > in the middle of code, then that code is too complex and should > be broken out into a separate function. > Right. And code like this int func(void) { int baz, zot; [some more code] if (zot < 5) { int baz = 3; [more code] } [some more code] } is even worse. The compiler (clang) seems to consider this to merely be a reinitialization of baz, but a human might be confused. Something like for (int i = 0; i < 2; i++) is IMHO OK. -- Gary Jennejohn