Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 2 Feb 2016 17:39:35 +0300
From:      Slawa Olhovchenkov <slw@zxy.spb.ru>
To:        Ian Lepore <ian@freebsd.org>
Cc:        Konstantin Belousov <kib@freebsd.org>, Mateusz Guzik <mjguzik@gmail.com>, freebsd-hackers@freebsd.org, Mateusz Guzik <mjg@freebsd.org>
Subject:   Re: [PATCH 1/2] fork: pass arguments to fork1 in a dedicated structure
Message-ID:  <20160202143935.GP88527@zxy.spb.ru>
In-Reply-To: <1454423299.11162.27.camel@freebsd.org>
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>

next in thread | previous in thread | raw e-mail | index | archive | help
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 <mjg@freebsd.org>
> > > 
> > > ---
> > >  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?



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20160202143935.GP88527>