Re: [RFC PATCH v2 1/3] getcpu_cache system call: cache CPU number of running thread
From: Heiko Carstens
Date: Thu Jan 28 2016 - 06:13:07 EST
On Wed, Jan 27, 2016 at 10:47:37PM +0000, Mathieu Desnoyers wrote:
> ----- On Jan 27, 2016, at 5:11 PM, Josh Triplett josh@xxxxxxxxxxxxxxxx wrote:
>
> > On Wed, Jan 27, 2016 at 09:34:35PM +0000, Mathieu Desnoyers wrote:
> >> ----- On Jan 27, 2016, at 12:37 PM, Thomas Gleixner tglx@xxxxxxxxxxxxx wrote:
> >>
> >> > On Wed, 27 Jan 2016, Thomas Gleixner wrote:
> >> >
> >> >> On Wed, 27 Jan 2016, Mathieu Desnoyers wrote:
> >> >> > ----- On Jan 27, 2016, at 12:22 PM, Thomas Gleixner tglx@xxxxxxxxxxxxx wrote:
> >> >> > Sounds fair. What is the recommended typing for "ptr" then ?
> >> >> > uint32_t ** or uint32_t * ?
> >> >> >
> >> >> > It would be expected to pass a "uint32_t *" for the set
> >> >> > operation, but the "get" operation requires a "uint32_t **".
> >> >>
> >> >> Well, you can't change the types depending on the opcode, so you need to stick
> >> >> with **.
> >> >
> >> > Alternatively you make it:
> >> >
> >> > (opcode, *newptr, **oldptr, flags);
> >>
> >> I'm tempted to stick to (opcode, **ptr, flags), because
> >> other syscalls that have "*newptr", "**oldptr"
> >> typically have them because they save the current state
> >> into oldptr, and set the new state, which is really
> >> not the case here. To eliminate any risk of confusion,
> >> I am tempted to keep a single "**ptr".
> >>
> >> Unless someone has a better idea...
> >
> > Either that or you could define it as "void *" and interpret it based on
> > flags, but that seems unfortunate; let's not imitate ioctl-style
> > typeless parameters. I'd stick with the double pointer and the current
> > behavior.
>
> Allright, will do! Thanks for the feedback :)
Please don't forget that you also need to implement compat handling since
the size of the pointer that is being pointed to is only four bytes for
compat tasks.