Messages in this thread | | | Date | Tue, 26 Jan 2010 03:35:43 +0100 | From | Frederic Weisbecker <> | Subject | Re: [PATCH 7/8] percpu: add __percpu sparse annotations to hw_breakpoint |
| |
On Tue, Jan 26, 2010 at 11:34:40AM +0900, Tejun Heo wrote: > On 01/26/2010 11:22 AM, Frederic Weisbecker wrote: > >> What about this? It doesn't use direct cast to scalar but should > >> create a pointer type to kernel space datas: > >> > >> > >> #define kernel_space_t(var) \ > >> (typeof(var) __kernel __force) > > > > > > Should be typeof(*var) > > > >> > >> #define SHIFT_PERCPU_PTR(__p, __offset) ({ \ > >> __verify_pcpu_ptr((__p)); \ > >> RELOC_HIDE((typeof(*(kernel_space_t(var)) __kernel __force *)(__p), (__offset)); \ > >> }) > > Can you balance ()'s here too?
#define kernel_space_t(var) \ (typeof(*(var)) __kernel __force)
/* Weird cast keeps both GCC and sparse happy. */ #define SHIFT_PERCPU_PTR(__p, __offset) ({ \ __verify_pcpu_ptr((__p)); \ RELOC_HIDE((typeof(*(kernel_space_t(__p))) __kernel __force *)(__p), (__offset)); \ })
#define per_cpu(var, cpu) \ (*SHIFT_PERCPU_PTR(&(var), per_cpu_offset(cpu)));
No guarantee that will build. I should pull your tree and install sparse (yeah, shame on me, I've never installed it).
| |