Re: [PATCH 0/3] syscalls: clean up stub naming convention

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Apr 09, 2018 at 09:06:11AM +0200, Ingo Molnar wrote:
> 
> * Ingo Molnar <mingo@xxxxxxxxxx> wrote:
> 
> > 
> > * Dominik Brodowski <linux@xxxxxxxxxxxxxxxxxxxx> wrote:
> > 
> > > On Sun, Apr 08, 2018 at 10:35:50AM +0200, Ingo Molnar wrote:
> > > >   - _____sys_waitid()      # ridiculous number of underscores?
> > > >   - __sys_waitid()         # too generic sounding?
> > > 
> > > ... and we'd need to rename internal helpers in net/
> > > 
> > > >   - __inline_sys_waitid()  # too long?
> > > 
> > > sounds acceptable, though a bit long (especially for the compat case, though
> > > it doesn't really matter in the case of 
> > > __inline_compat_sys_sched_rr_get_interval)
> > 
> > So as per the previous mail this is not just an inline function, but an active 
> > type conversion wrapper that sign-extends 32-bit ints to longs, which is important 
> > on some 64-bit architectures.
> > 
> > And that's a really non-obvious property IMO, and the name should probably reflect 
> > _that_ non-obvious property, not the inlining property which is really just a 
> > small detail.
> > 
> > I.e. how about:
> > 
> > 	__se_sys_waitid()
> > 
> > ... where 'se' stands for sign-extended, with a comment in the macro that explains 
> > the prefix? (The historical abbreviation for sign extension is 'sext', which I 
> > think wouldn't really be suitable these days.)
> 
> Ok, so I got confused there: I think it's the do_sys_waitid() intermediate that
> is actually doing the sign-extension - and the inlined helper is what is in the 
> syscall definition body.
> 
> So it's all still somewhat of a confusing misnomer: the 'do' named function is 
> actually the sign-extension function variant - and the '_il' variant actually 
> 'does' the real work ...
> 
> I.e., old naming:
> 
> 810f08d0 t     kernel_waitid	# common C function (see kernel/exit.c)
> 
> <inline>     __il_sys_waitid	# inlined helper doing the actual work
> 				# (takes parameters as declared)
> 
> 810f1aa0 T   __do_sys_waitid	# C function calling inlined helper
> 				# (takes parameters of type long; casts
> 				#  them to the declared type)
> 
> 810f1aa0 T        sys_waitid	# alias to __do_sys_waitid() (taking
> 				# parameters as declared), to be included
> 				# in syscall table
> 
> 
> New suggested naming:
> 
> 810f08d0 t     kernel_waitid	# common C function (see kernel/exit.c)
> 
> <inline>     __do_sys_waitid	# inlined helper doing the actual work
> 				# (takes original parameters as declared)
> 
> 810f1aa0 T   __se_sys_waitid	# sign-extending C function calling inlined
> 				# helper (takes parameters of type long;
> 				# casts them to the declared type)
> 
> 810f1aa0 T        sys_waitid	# alias to __se_sys_waitid() (but taking
> 				# original parameters as declared), to be
> 				# included in syscall table
> 
> Agreed?

Yes.

Thanks,
	Dominik



[Index of Archives]     [Linux Kernel]     [Kernel Newbies]     [x86 Platform Driver]     [Netdev]     [Linux Wireless]     [Netfilter]     [Bugtraq]     [Linux Filesystems]     [Yosemite Discussion]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Device Mapper]

  Powered by Linux