diff options
| author | Greg Kroah-Hartman <greg@kroah.com> | 2004-10-18 18:03:51 -0700 |
|---|---|---|
| committer | Greg Kroah-Hartman <greg@kroah.com> | 2004-10-18 18:03:51 -0700 |
| commit | bffe01870598b7a0a77073e25ee94e026bc98e6b (patch) | |
| tree | f5f5b65fec1239b18a4c2634807ff5d7e5729de9 /include/linux/percpu.h | |
| parent | 23aebb6f8755121394ef088d84a7fa483b444aa9 (diff) | |
| parent | a4946826c30c56a5830326552a395c5b6afc13ef (diff) | |
merge
Diffstat (limited to 'include/linux/percpu.h')
| -rw-r--r-- | include/linux/percpu.h | 26 |
1 files changed, 2 insertions, 24 deletions
diff --git a/include/linux/percpu.h b/include/linux/percpu.h index 6aedd71cc02c..5451eb1e781d 100644 --- a/include/linux/percpu.h +++ b/include/linux/percpu.h @@ -24,8 +24,8 @@ struct percpu_data { /* * Use this to get to a cpu's version of the per-cpu object allocated using - * alloc_percpu. If you want to get "this cpu's version", maybe you want - * to use get_cpu_ptr... + * alloc_percpu. Non-atomic access to the current CPU's version should + * probably be combined with get_cpu()/put_cpu(). */ #define per_cpu_ptr(ptr, cpu) \ ({ \ @@ -58,26 +58,4 @@ static inline void free_percpu(const void *ptr) #define alloc_percpu(type) \ ((type *)(__alloc_percpu(sizeof(type), __alignof__(type)))) -/* - * Use these with alloc_percpu. If - * 1. You want to operate on memory allocated by alloc_percpu (dereference - * and read/modify/write) AND - * 2. You want "this cpu's version" of the object AND - * 3. You want to do this safely since: - * a. On multiprocessors, you don't want to switch between cpus after - * you've read the current processor id due to preemption -- this would - * take away the implicit advantage to not have any kind of traditional - * serialization for per-cpu data - * b. On uniprocessors, you don't want another kernel thread messing - * up with the same per-cpu data due to preemption - * - * So, Use get_cpu_ptr to disable preemption and get pointer to the - * local cpu version of the per-cpu object. Use put_cpu_ptr to enable - * preemption. Operations on per-cpu data between get_ and put_ is - * then considered to be safe. And ofcourse, "Thou shalt not sleep between - * get_cpu_ptr and put_cpu_ptr" - */ -#define get_cpu_ptr(ptr) per_cpu_ptr(ptr, get_cpu()) -#define put_cpu_ptr(ptr) put_cpu() - #endif /* __LINUX_PERCPU_H */ |
