From owner-freebsd-hackers@freebsd.org Tue Feb 2 14:39:39 2016 Return-Path: Delivered-To: freebsd-hackers@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 8182AA99A5F for ; Tue, 2 Feb 2016 14:39:39 +0000 (UTC) (envelope-from slw@zxy.spb.ru) Received: from zxy.spb.ru (zxy.spb.ru [195.70.199.98]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4176D14B9; Tue, 2 Feb 2016 14:39:39 +0000 (UTC) (envelope-from slw@zxy.spb.ru) Received: from slw by zxy.spb.ru with local (Exim 4.86 (FreeBSD)) (envelope-from ) id 1aQc7D-000GUF-6S; Tue, 02 Feb 2016 17:39:35 +0300 Date: Tue, 2 Feb 2016 17:39:35 +0300 From: Slawa Olhovchenkov To: Ian Lepore Cc: Konstantin Belousov , Mateusz Guzik , freebsd-hackers@freebsd.org, Mateusz Guzik Subject: Re: [PATCH 1/2] fork: pass arguments to fork1 in a dedicated structure Message-ID: <20160202143935.GP88527@zxy.spb.ru> References: <20160201103632.GL91220@kib.kiev.ua> <1454386069-29657-1-git-send-email-mjguzik@gmail.com> <1454386069-29657-2-git-send-email-mjguzik@gmail.com> <20160202131145.GT91220@kib.kiev.ua> <1454423299.11162.27.camel@freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1454423299.11162.27.camel@freebsd.org> User-Agent: Mutt/1.5.24 (2015-08-30) X-SA-Exim-Connect-IP: X-SA-Exim-Mail-From: slw@zxy.spb.ru X-SA-Exim-Scanned: No (on zxy.spb.ru); SAEximRunCond expanded to false X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 Feb 2016 14:39:39 -0000 On Tue, Feb 02, 2016 at 07:28:19AM -0700, Ian Lepore wrote: > On Tue, 2016-02-02 at 15:11 +0200, Konstantin Belousov wrote: > > On Tue, Feb 02, 2016 at 05:07:48AM +0100, Mateusz Guzik wrote: > > > From: Mateusz Guzik > > > > > > --- > > > sys/compat/cloudabi/cloudabi_proc.c | 7 +++++- > > > sys/compat/linux/linux_fork.c | 17 ++++++++++---- > > > sys/kern/init_main.c | 6 +++-- > > > sys/kern/kern_fork.c | 46 +++++++++++++++++++++++++ > > > ------------ > > > sys/kern/kern_kthread.c | 7 ++++-- > > > sys/sys/proc.h | 12 ++++++++-- > > > 6 files changed, 68 insertions(+), 27 deletions(-) > > > > > > diff --git a/sys/compat/cloudabi/cloudabi_proc.c > > > b/sys/compat/cloudabi/cloudabi_proc.c > > > index d917337..010efca 100644 > > > --- a/sys/compat/cloudabi/cloudabi_proc.c > > > +++ b/sys/compat/cloudabi/cloudabi_proc.c > > > @@ -75,12 +75,17 @@ int > > > cloudabi_sys_proc_fork(struct thread *td, > > > struct cloudabi_sys_proc_fork_args *uap) > > > { > > > + struct fork_req fr = {}; > > > struct filecaps fcaps = {}; > > > struct proc *p2; > > > int error, fd; > > > > > > cap_rights_init(&fcaps.fc_rights, CAP_FSTAT, CAP_EVENT); > > > - error = fork1(td, RFFDG | RFPROC | RFPROCDESC, 0, &p2, > > > &fd, 0, &fcaps); > > > + fr.fr_flags = RFFDG | RFPROC | RFPROCDESC; > > > + fr.fr_procp = &p2; > > > + fr.fr_pd_fd = &fd; > > > + fr.fr_pd_fcaps = &fcaps; > > > + error = fork1(td, &fr); > > > if (error != 0) > > > return (error); > > The patch is fine. > > > > Would be great to not use initializer in declaration, i.e. use > > bzero() > > instead of c99 designated initializers. > > This would be a better suggestion if the compiler recognized and > optimized bzero() with inline code like it does for those forbidden > assignments. > > Or, to put it more basically: it's the 21st century, can't we please > please please start using the tools we've got properly instead of > slavishly following some silly rules from 1985? struct fork_req fr = { .fr_flags = RFFDG | RFPROC | RFPROCDESC, .fr_procp = &p2, .fr_pd_fd = &fd, .fr_pd_fcaps = &fcaps }; Like this?