Messages in this thread | | | Date | Wed, 27 Jan 2016 18:22:04 +0100 (CET) | From | Thomas Gleixner <> | Subject | Re: [RFC PATCH v2 1/3] getcpu_cache system call: cache CPU number of running thread |
| |
On Wed, 27 Jan 2016, Mathieu Desnoyers wrote: > +/* > + * sys_getcpu_cache - setup getcpu cache for caller thread > + */ > +SYSCALL_DEFINE2(getcpu_cache, int32_t __user **, cpu_cachep, int, flags) > +{ > + int32_t __user *cpu_cache; > + > + if (unlikely(flags)) > + return -EINVAL; > + /* Check if cpu_cache is already registered. */ > + if (current->cpu_cache) { > + if (put_user(current->cpu_cache, cpu_cachep)) > + return -EFAULT; > + return 0; > + }
This is really odd. How is the caller supposed to differentiate between:
1) Get the installed cpucache pointer
2) Set the cpucache pointer
We really want clearly seperated functionality here.
getcpu_cache(ptr, GET_CACHEP);
and
getcpu_cache(ptr, SET_CACHEP);
Returns -EBUSY if current->cpu_cache is already set, except we allow replacing the pointer.
Thanks,
tglx
| |