Re: [PATCH 0/3] syscalls: clean up stub naming convention
From: Ingo Molnar
Date: Mon Apr 09 2018 - 03:06:20 EST
* 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?
Thanks,
Ingo